diff --git a/Cargo.toml b/Cargo.toml index ae1f141..0f86474 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,4 +39,5 @@ byteorder = "1" enum-utils = "0.1.2" derive_more = { version = "0.99.3", features = ["display"]} thiserror = "1.0.15" +ages-prs = "0.1" diff --git a/data/quests.toml b/data/quests.toml new file mode 100644 index 0000000..485ca28 --- /dev/null +++ b/data/quests.toml @@ -0,0 +1,30 @@ +[Extermination] +list_order = 1 +description = "I am a description" + +[[Extermination.quests]] +bin = "q058-ret-bb.bin" +dat = "q058-ret-bb.dat" + +[[Extermination.quests]] +bin = "q059-ret-bb.bin" +dat = "q059-ret-bb.dat" + + +[Retrieval] +list_order = 2 +description = "find some shit" + +[[Retrieval.quests]] +bin = "q101-ext-bb.bin" +dat = "q101-ext-bb.dat" + +[[Retrieval.quests]] +bin = "q102-ext-bb.bin" +dat = "q102-ext-bb.dat" +#drop_table = "q102-drops" + +[[Retrieval.quests]] +bin = "q233-ext-bb.bin" +dat = "q233-ext-bb.dat" +#drop_table = "q102-drops" \ No newline at end of file diff --git a/data/quests/b001-bb.bin b/data/quests/b001-bb.bin new file mode 100755 index 0000000..4fd7b26 Binary files /dev/null and b/data/quests/b001-bb.bin differ diff --git a/data/quests/b001-bb.dat b/data/quests/b001-bb.dat new file mode 100755 index 0000000..673a262 Binary files /dev/null and b/data/quests/b001-bb.dat differ diff --git a/data/quests/b001-dc.bin b/data/quests/b001-dc.bin new file mode 100755 index 0000000..436c9d6 Binary files /dev/null and b/data/quests/b001-dc.bin differ diff --git a/data/quests/b001-dc.dat b/data/quests/b001-dc.dat new file mode 100755 index 0000000..673a262 Binary files /dev/null and b/data/quests/b001-dc.dat differ diff --git a/data/quests/b001-gc.bin b/data/quests/b001-gc.bin new file mode 100755 index 0000000..c5b2f8c Binary files /dev/null and b/data/quests/b001-gc.bin differ diff --git a/data/quests/b001-gc.dat b/data/quests/b001-gc.dat new file mode 100755 index 0000000..673a262 Binary files /dev/null and b/data/quests/b001-gc.dat differ diff --git a/data/quests/b001-pc.bin b/data/quests/b001-pc.bin new file mode 100755 index 0000000..4913c94 Binary files /dev/null and b/data/quests/b001-pc.bin differ diff --git a/data/quests/b001-pc.dat b/data/quests/b001-pc.dat new file mode 100755 index 0000000..253405d Binary files /dev/null and b/data/quests/b001-pc.dat differ diff --git a/data/quests/b002-bb.bin b/data/quests/b002-bb.bin new file mode 100755 index 0000000..eddead3 Binary files /dev/null and b/data/quests/b002-bb.bin differ diff --git a/data/quests/b002-bb.dat b/data/quests/b002-bb.dat new file mode 100755 index 0000000..8e9a7dc Binary files /dev/null and b/data/quests/b002-bb.dat differ diff --git a/data/quests/b002-dc.bin b/data/quests/b002-dc.bin new file mode 100755 index 0000000..875f634 Binary files /dev/null and b/data/quests/b002-dc.bin differ diff --git a/data/quests/b002-dc.dat b/data/quests/b002-dc.dat new file mode 100755 index 0000000..1292543 Binary files /dev/null and b/data/quests/b002-dc.dat differ diff --git a/data/quests/b002-gc.bin b/data/quests/b002-gc.bin new file mode 100755 index 0000000..8c1e040 Binary files /dev/null and b/data/quests/b002-gc.bin differ diff --git a/data/quests/b002-gc.dat b/data/quests/b002-gc.dat new file mode 100755 index 0000000..8e9a7dc Binary files /dev/null and b/data/quests/b002-gc.dat differ diff --git a/data/quests/b002-pc.bin b/data/quests/b002-pc.bin new file mode 100755 index 0000000..9c71fe8 Binary files /dev/null and b/data/quests/b002-pc.bin differ diff --git a/data/quests/b002-pc.dat b/data/quests/b002-pc.dat new file mode 100755 index 0000000..cdd4315 Binary files /dev/null and b/data/quests/b002-pc.dat differ diff --git a/data/quests/b003-bb.bin b/data/quests/b003-bb.bin new file mode 100755 index 0000000..aff67c7 Binary files /dev/null and b/data/quests/b003-bb.bin differ diff --git a/data/quests/b003-bb.dat b/data/quests/b003-bb.dat new file mode 100755 index 0000000..a6bd3c6 Binary files /dev/null and b/data/quests/b003-bb.dat differ diff --git a/data/quests/b003-dc.bin b/data/quests/b003-dc.bin new file mode 100755 index 0000000..117eff7 Binary files /dev/null and b/data/quests/b003-dc.bin differ diff --git a/data/quests/b003-dc.dat b/data/quests/b003-dc.dat new file mode 100755 index 0000000..a6bd3c6 Binary files /dev/null and b/data/quests/b003-dc.dat differ diff --git a/data/quests/b003-gc.bin b/data/quests/b003-gc.bin new file mode 100755 index 0000000..22c6419 Binary files /dev/null and b/data/quests/b003-gc.bin differ diff --git a/data/quests/b003-gc.dat b/data/quests/b003-gc.dat new file mode 100755 index 0000000..a6bd3c6 Binary files /dev/null and b/data/quests/b003-gc.dat differ diff --git a/data/quests/b003-pc.bin b/data/quests/b003-pc.bin new file mode 100755 index 0000000..b1b7a3e Binary files /dev/null and b/data/quests/b003-pc.bin differ diff --git a/data/quests/b003-pc.dat b/data/quests/b003-pc.dat new file mode 100755 index 0000000..faed944 Binary files /dev/null and b/data/quests/b003-pc.dat differ diff --git a/data/quests/b004-bb.bin b/data/quests/b004-bb.bin new file mode 100755 index 0000000..794361d Binary files /dev/null and b/data/quests/b004-bb.bin differ diff --git a/data/quests/b004-bb.dat b/data/quests/b004-bb.dat new file mode 100755 index 0000000..e838ab7 Binary files /dev/null and b/data/quests/b004-bb.dat differ diff --git a/data/quests/b004-dc.bin b/data/quests/b004-dc.bin new file mode 100755 index 0000000..ebed6ea Binary files /dev/null and b/data/quests/b004-dc.bin differ diff --git a/data/quests/b004-dc.dat b/data/quests/b004-dc.dat new file mode 100755 index 0000000..e838ab7 Binary files /dev/null and b/data/quests/b004-dc.dat differ diff --git a/data/quests/b004-gc.bin b/data/quests/b004-gc.bin new file mode 100755 index 0000000..b04ce3e Binary files /dev/null and b/data/quests/b004-gc.bin differ diff --git a/data/quests/b004-gc.dat b/data/quests/b004-gc.dat new file mode 100755 index 0000000..e838ab7 Binary files /dev/null and b/data/quests/b004-gc.dat differ diff --git a/data/quests/b004-pc.bin b/data/quests/b004-pc.bin new file mode 100755 index 0000000..ce27f11 Binary files /dev/null and b/data/quests/b004-pc.bin differ diff --git a/data/quests/b004-pc.dat b/data/quests/b004-pc.dat new file mode 100755 index 0000000..e838ab7 Binary files /dev/null and b/data/quests/b004-pc.dat differ diff --git a/data/quests/b005-bb.bin b/data/quests/b005-bb.bin new file mode 100755 index 0000000..04c8635 Binary files /dev/null and b/data/quests/b005-bb.bin differ diff --git a/data/quests/b005-bb.dat b/data/quests/b005-bb.dat new file mode 100755 index 0000000..9be76bc Binary files /dev/null and b/data/quests/b005-bb.dat differ diff --git a/data/quests/b005-dc.bin b/data/quests/b005-dc.bin new file mode 100755 index 0000000..a00b981 Binary files /dev/null and b/data/quests/b005-dc.bin differ diff --git a/data/quests/b005-dc.dat b/data/quests/b005-dc.dat new file mode 100755 index 0000000..9be76bc Binary files /dev/null and b/data/quests/b005-dc.dat differ diff --git a/data/quests/b005-gc.bin b/data/quests/b005-gc.bin new file mode 100755 index 0000000..247e8eb Binary files /dev/null and b/data/quests/b005-gc.bin differ diff --git a/data/quests/b005-gc.dat b/data/quests/b005-gc.dat new file mode 100755 index 0000000..9be76bc Binary files /dev/null and b/data/quests/b005-gc.dat differ diff --git a/data/quests/b005-pc.bin b/data/quests/b005-pc.bin new file mode 100755 index 0000000..f191275 Binary files /dev/null and b/data/quests/b005-pc.bin differ diff --git a/data/quests/b005-pc.dat b/data/quests/b005-pc.dat new file mode 100755 index 0000000..9be76bc Binary files /dev/null and b/data/quests/b005-pc.dat differ diff --git a/data/quests/b006-bb.bin b/data/quests/b006-bb.bin new file mode 100755 index 0000000..3f05c27 Binary files /dev/null and b/data/quests/b006-bb.bin differ diff --git a/data/quests/b006-bb.dat b/data/quests/b006-bb.dat new file mode 100755 index 0000000..a9c6bb0 Binary files /dev/null and b/data/quests/b006-bb.dat differ diff --git a/data/quests/b006-dc.bin b/data/quests/b006-dc.bin new file mode 100755 index 0000000..0e730c7 Binary files /dev/null and b/data/quests/b006-dc.bin differ diff --git a/data/quests/b006-dc.dat b/data/quests/b006-dc.dat new file mode 100755 index 0000000..a9c6bb0 Binary files /dev/null and b/data/quests/b006-dc.dat differ diff --git a/data/quests/b006-gc.bin b/data/quests/b006-gc.bin new file mode 100755 index 0000000..76ab7f5 Binary files /dev/null and b/data/quests/b006-gc.bin differ diff --git a/data/quests/b006-gc.dat b/data/quests/b006-gc.dat new file mode 100755 index 0000000..a9c6bb0 Binary files /dev/null and b/data/quests/b006-gc.dat differ diff --git a/data/quests/b006-pc.bin b/data/quests/b006-pc.bin new file mode 100755 index 0000000..84f435a Binary files /dev/null and b/data/quests/b006-pc.bin differ diff --git a/data/quests/b006-pc.dat b/data/quests/b006-pc.dat new file mode 100755 index 0000000..a9c6bb0 Binary files /dev/null and b/data/quests/b006-pc.dat differ diff --git a/data/quests/b007-bb.bin b/data/quests/b007-bb.bin new file mode 100755 index 0000000..608ab8e Binary files /dev/null and b/data/quests/b007-bb.bin differ diff --git a/data/quests/b007-bb.dat b/data/quests/b007-bb.dat new file mode 100755 index 0000000..0e78972 Binary files /dev/null and b/data/quests/b007-bb.dat differ diff --git a/data/quests/b007-dc.bin b/data/quests/b007-dc.bin new file mode 100755 index 0000000..4516742 Binary files /dev/null and b/data/quests/b007-dc.bin differ diff --git a/data/quests/b007-dc.dat b/data/quests/b007-dc.dat new file mode 100755 index 0000000..0e78972 Binary files /dev/null and b/data/quests/b007-dc.dat differ diff --git a/data/quests/b007-gc.bin b/data/quests/b007-gc.bin new file mode 100755 index 0000000..969db18 Binary files /dev/null and b/data/quests/b007-gc.bin differ diff --git a/data/quests/b007-gc.dat b/data/quests/b007-gc.dat new file mode 100755 index 0000000..0e78972 Binary files /dev/null and b/data/quests/b007-gc.dat differ diff --git a/data/quests/b007-pc.bin b/data/quests/b007-pc.bin new file mode 100755 index 0000000..2d208a5 Binary files /dev/null and b/data/quests/b007-pc.bin differ diff --git a/data/quests/b007-pc.dat b/data/quests/b007-pc.dat new file mode 100755 index 0000000..0e78972 Binary files /dev/null and b/data/quests/b007-pc.dat differ diff --git a/data/quests/b008-bb.bin b/data/quests/b008-bb.bin new file mode 100755 index 0000000..88b0f1c Binary files /dev/null and b/data/quests/b008-bb.bin differ diff --git a/data/quests/b008-bb.dat b/data/quests/b008-bb.dat new file mode 100755 index 0000000..4a55919 Binary files /dev/null and b/data/quests/b008-bb.dat differ diff --git a/data/quests/b008-dc.bin b/data/quests/b008-dc.bin new file mode 100755 index 0000000..aee2be1 Binary files /dev/null and b/data/quests/b008-dc.bin differ diff --git a/data/quests/b008-dc.dat b/data/quests/b008-dc.dat new file mode 100755 index 0000000..4a55919 Binary files /dev/null and b/data/quests/b008-dc.dat differ diff --git a/data/quests/b008-gc.bin b/data/quests/b008-gc.bin new file mode 100755 index 0000000..c616847 Binary files /dev/null and b/data/quests/b008-gc.bin differ diff --git a/data/quests/b008-gc.dat b/data/quests/b008-gc.dat new file mode 100755 index 0000000..4a55919 Binary files /dev/null and b/data/quests/b008-gc.dat differ diff --git a/data/quests/b008-pc.bin b/data/quests/b008-pc.bin new file mode 100755 index 0000000..24106e7 Binary files /dev/null and b/data/quests/b008-pc.bin differ diff --git a/data/quests/b008-pc.dat b/data/quests/b008-pc.dat new file mode 100755 index 0000000..4a55919 Binary files /dev/null and b/data/quests/b008-pc.dat differ diff --git a/data/quests/c101-bb.bin b/data/quests/c101-bb.bin new file mode 100755 index 0000000..d37a8d6 Binary files /dev/null and b/data/quests/c101-bb.bin differ diff --git a/data/quests/c101-bb.dat b/data/quests/c101-bb.dat new file mode 100755 index 0000000..f022c75 Binary files /dev/null and b/data/quests/c101-bb.dat differ diff --git a/data/quests/c101-dc.bin b/data/quests/c101-dc.bin new file mode 100755 index 0000000..86d0649 Binary files /dev/null and b/data/quests/c101-dc.bin differ diff --git a/data/quests/c101-dc.dat b/data/quests/c101-dc.dat new file mode 100755 index 0000000..da32cc9 Binary files /dev/null and b/data/quests/c101-dc.dat differ diff --git a/data/quests/c101-gc.bin b/data/quests/c101-gc.bin new file mode 100755 index 0000000..6844de9 Binary files /dev/null and b/data/quests/c101-gc.bin differ diff --git a/data/quests/c101-gc.dat b/data/quests/c101-gc.dat new file mode 100755 index 0000000..da32cc9 Binary files /dev/null and b/data/quests/c101-gc.dat differ diff --git a/data/quests/c101-pc.bin b/data/quests/c101-pc.bin new file mode 100755 index 0000000..57aa3e3 Binary files /dev/null and b/data/quests/c101-pc.bin differ diff --git a/data/quests/c101-pc.dat b/data/quests/c101-pc.dat new file mode 100755 index 0000000..da32cc9 Binary files /dev/null and b/data/quests/c101-pc.dat differ diff --git a/data/quests/c102-bb.bin b/data/quests/c102-bb.bin new file mode 100755 index 0000000..54c5eb1 Binary files /dev/null and b/data/quests/c102-bb.bin differ diff --git a/data/quests/c102-bb.dat b/data/quests/c102-bb.dat new file mode 100755 index 0000000..3d34142 Binary files /dev/null and b/data/quests/c102-bb.dat differ diff --git a/data/quests/c102-dc.bin b/data/quests/c102-dc.bin new file mode 100755 index 0000000..eedd5c9 Binary files /dev/null and b/data/quests/c102-dc.bin differ diff --git a/data/quests/c102-dc.dat b/data/quests/c102-dc.dat new file mode 100755 index 0000000..bfe05e0 Binary files /dev/null and b/data/quests/c102-dc.dat differ diff --git a/data/quests/c102-gc.bin b/data/quests/c102-gc.bin new file mode 100755 index 0000000..387a61a Binary files /dev/null and b/data/quests/c102-gc.bin differ diff --git a/data/quests/c102-gc.dat b/data/quests/c102-gc.dat new file mode 100755 index 0000000..bfe05e0 Binary files /dev/null and b/data/quests/c102-gc.dat differ diff --git a/data/quests/c102-pc.bin b/data/quests/c102-pc.bin new file mode 100755 index 0000000..29f5a42 Binary files /dev/null and b/data/quests/c102-pc.bin differ diff --git a/data/quests/c102-pc.dat b/data/quests/c102-pc.dat new file mode 100755 index 0000000..bfe05e0 Binary files /dev/null and b/data/quests/c102-pc.dat differ diff --git a/data/quests/c103-bb.bin b/data/quests/c103-bb.bin new file mode 100755 index 0000000..daffdbb Binary files /dev/null and b/data/quests/c103-bb.bin differ diff --git a/data/quests/c103-bb.dat b/data/quests/c103-bb.dat new file mode 100755 index 0000000..a576342 Binary files /dev/null and b/data/quests/c103-bb.dat differ diff --git a/data/quests/c103-dc.bin b/data/quests/c103-dc.bin new file mode 100755 index 0000000..cfad890 Binary files /dev/null and b/data/quests/c103-dc.bin differ diff --git a/data/quests/c103-dc.dat b/data/quests/c103-dc.dat new file mode 100755 index 0000000..9e0aa60 Binary files /dev/null and b/data/quests/c103-dc.dat differ diff --git a/data/quests/c103-gc.bin b/data/quests/c103-gc.bin new file mode 100755 index 0000000..86a5346 Binary files /dev/null and b/data/quests/c103-gc.bin differ diff --git a/data/quests/c103-gc.dat b/data/quests/c103-gc.dat new file mode 100755 index 0000000..9e0aa60 Binary files /dev/null and b/data/quests/c103-gc.dat differ diff --git a/data/quests/c103-pc.bin b/data/quests/c103-pc.bin new file mode 100755 index 0000000..c4ccc06 Binary files /dev/null and b/data/quests/c103-pc.bin differ diff --git a/data/quests/c103-pc.dat b/data/quests/c103-pc.dat new file mode 100755 index 0000000..9e0aa60 Binary files /dev/null and b/data/quests/c103-pc.dat differ diff --git a/data/quests/c104-bb.bin b/data/quests/c104-bb.bin new file mode 100755 index 0000000..3dffcb5 Binary files /dev/null and b/data/quests/c104-bb.bin differ diff --git a/data/quests/c104-bb.dat b/data/quests/c104-bb.dat new file mode 100755 index 0000000..7cf52ba Binary files /dev/null and b/data/quests/c104-bb.dat differ diff --git a/data/quests/c104-dc.bin b/data/quests/c104-dc.bin new file mode 100755 index 0000000..1bd34d5 Binary files /dev/null and b/data/quests/c104-dc.bin differ diff --git a/data/quests/c104-dc.dat b/data/quests/c104-dc.dat new file mode 100755 index 0000000..cb3b3c8 Binary files /dev/null and b/data/quests/c104-dc.dat differ diff --git a/data/quests/c104-gc.bin b/data/quests/c104-gc.bin new file mode 100755 index 0000000..93a6b6c Binary files /dev/null and b/data/quests/c104-gc.bin differ diff --git a/data/quests/c104-gc.dat b/data/quests/c104-gc.dat new file mode 100755 index 0000000..0231955 Binary files /dev/null and b/data/quests/c104-gc.dat differ diff --git a/data/quests/c104-pc.bin b/data/quests/c104-pc.bin new file mode 100755 index 0000000..2eb68a3 Binary files /dev/null and b/data/quests/c104-pc.bin differ diff --git a/data/quests/c104-pc.dat b/data/quests/c104-pc.dat new file mode 100755 index 0000000..cb3b3c8 Binary files /dev/null and b/data/quests/c104-pc.dat differ diff --git a/data/quests/c105-bb.bin b/data/quests/c105-bb.bin new file mode 100755 index 0000000..42ea65e Binary files /dev/null and b/data/quests/c105-bb.bin differ diff --git a/data/quests/c105-bb.dat b/data/quests/c105-bb.dat new file mode 100755 index 0000000..e0c68d3 Binary files /dev/null and b/data/quests/c105-bb.dat differ diff --git a/data/quests/c105-dc.bin b/data/quests/c105-dc.bin new file mode 100755 index 0000000..7bd7dfd Binary files /dev/null and b/data/quests/c105-dc.bin differ diff --git a/data/quests/c105-dc.dat b/data/quests/c105-dc.dat new file mode 100755 index 0000000..59d4600 Binary files /dev/null and b/data/quests/c105-dc.dat differ diff --git a/data/quests/c105-gc.bin b/data/quests/c105-gc.bin new file mode 100755 index 0000000..7cc05aa Binary files /dev/null and b/data/quests/c105-gc.bin differ diff --git a/data/quests/c105-gc.dat b/data/quests/c105-gc.dat new file mode 100755 index 0000000..59d4600 Binary files /dev/null and b/data/quests/c105-gc.dat differ diff --git a/data/quests/c105-pc.bin b/data/quests/c105-pc.bin new file mode 100755 index 0000000..be4b740 Binary files /dev/null and b/data/quests/c105-pc.bin differ diff --git a/data/quests/c105-pc.dat b/data/quests/c105-pc.dat new file mode 100755 index 0000000..59d4600 Binary files /dev/null and b/data/quests/c105-pc.dat differ diff --git a/data/quests/c106-bb.bin b/data/quests/c106-bb.bin new file mode 100755 index 0000000..dd360bb Binary files /dev/null and b/data/quests/c106-bb.bin differ diff --git a/data/quests/c106-bb.dat b/data/quests/c106-bb.dat new file mode 100755 index 0000000..6f02e78 Binary files /dev/null and b/data/quests/c106-bb.dat differ diff --git a/data/quests/c106-dc.bin b/data/quests/c106-dc.bin new file mode 100755 index 0000000..b9d4c46 Binary files /dev/null and b/data/quests/c106-dc.bin differ diff --git a/data/quests/c106-dc.dat b/data/quests/c106-dc.dat new file mode 100755 index 0000000..009ee52 Binary files /dev/null and b/data/quests/c106-dc.dat differ diff --git a/data/quests/c106-gc.bin b/data/quests/c106-gc.bin new file mode 100755 index 0000000..5dcd4bd Binary files /dev/null and b/data/quests/c106-gc.bin differ diff --git a/data/quests/c106-gc.dat b/data/quests/c106-gc.dat new file mode 100755 index 0000000..009ee52 Binary files /dev/null and b/data/quests/c106-gc.dat differ diff --git a/data/quests/c106-pc.bin b/data/quests/c106-pc.bin new file mode 100755 index 0000000..c1d4de1 Binary files /dev/null and b/data/quests/c106-pc.bin differ diff --git a/data/quests/c106-pc.dat b/data/quests/c106-pc.dat new file mode 100755 index 0000000..009ee52 Binary files /dev/null and b/data/quests/c106-pc.dat differ diff --git a/data/quests/c107-bb.bin b/data/quests/c107-bb.bin new file mode 100755 index 0000000..0102307 Binary files /dev/null and b/data/quests/c107-bb.bin differ diff --git a/data/quests/c107-bb.dat b/data/quests/c107-bb.dat new file mode 100755 index 0000000..84d5d9b Binary files /dev/null and b/data/quests/c107-bb.dat differ diff --git a/data/quests/c107-dc.bin b/data/quests/c107-dc.bin new file mode 100755 index 0000000..333f78a Binary files /dev/null and b/data/quests/c107-dc.bin differ diff --git a/data/quests/c107-dc.dat b/data/quests/c107-dc.dat new file mode 100755 index 0000000..7a782bd Binary files /dev/null and b/data/quests/c107-dc.dat differ diff --git a/data/quests/c107-gc.bin b/data/quests/c107-gc.bin new file mode 100755 index 0000000..35b75cf Binary files /dev/null and b/data/quests/c107-gc.bin differ diff --git a/data/quests/c107-gc.dat b/data/quests/c107-gc.dat new file mode 100755 index 0000000..7a782bd Binary files /dev/null and b/data/quests/c107-gc.dat differ diff --git a/data/quests/c107-pc.bin b/data/quests/c107-pc.bin new file mode 100755 index 0000000..47cbd18 Binary files /dev/null and b/data/quests/c107-pc.bin differ diff --git a/data/quests/c107-pc.dat b/data/quests/c107-pc.dat new file mode 100755 index 0000000..7a782bd Binary files /dev/null and b/data/quests/c107-pc.dat differ diff --git a/data/quests/c108-bb.bin b/data/quests/c108-bb.bin new file mode 100755 index 0000000..0f13f6f Binary files /dev/null and b/data/quests/c108-bb.bin differ diff --git a/data/quests/c108-bb.dat b/data/quests/c108-bb.dat new file mode 100755 index 0000000..df95a04 Binary files /dev/null and b/data/quests/c108-bb.dat differ diff --git a/data/quests/c108-dc.bin b/data/quests/c108-dc.bin new file mode 100755 index 0000000..219b5db Binary files /dev/null and b/data/quests/c108-dc.bin differ diff --git a/data/quests/c108-dc.dat b/data/quests/c108-dc.dat new file mode 100755 index 0000000..671aa72 Binary files /dev/null and b/data/quests/c108-dc.dat differ diff --git a/data/quests/c108-gc.bin b/data/quests/c108-gc.bin new file mode 100755 index 0000000..caa2809 Binary files /dev/null and b/data/quests/c108-gc.bin differ diff --git a/data/quests/c108-gc.dat b/data/quests/c108-gc.dat new file mode 100755 index 0000000..671aa72 Binary files /dev/null and b/data/quests/c108-gc.dat differ diff --git a/data/quests/c108-pc.bin b/data/quests/c108-pc.bin new file mode 100755 index 0000000..ab93b6f Binary files /dev/null and b/data/quests/c108-pc.bin differ diff --git a/data/quests/c108-pc.dat b/data/quests/c108-pc.dat new file mode 100755 index 0000000..671aa72 Binary files /dev/null and b/data/quests/c108-pc.dat differ diff --git a/data/quests/c109-bb.bin b/data/quests/c109-bb.bin new file mode 100755 index 0000000..1d121f8 Binary files /dev/null and b/data/quests/c109-bb.bin differ diff --git a/data/quests/c109-bb.dat b/data/quests/c109-bb.dat new file mode 100755 index 0000000..e228634 Binary files /dev/null and b/data/quests/c109-bb.dat differ diff --git a/data/quests/c109-dc.bin b/data/quests/c109-dc.bin new file mode 100755 index 0000000..9ab4ca2 Binary files /dev/null and b/data/quests/c109-dc.bin differ diff --git a/data/quests/c109-dc.dat b/data/quests/c109-dc.dat new file mode 100755 index 0000000..cf7c4fb Binary files /dev/null and b/data/quests/c109-dc.dat differ diff --git a/data/quests/c109-gc.bin b/data/quests/c109-gc.bin new file mode 100755 index 0000000..9f5b04b Binary files /dev/null and b/data/quests/c109-gc.bin differ diff --git a/data/quests/c109-gc.dat b/data/quests/c109-gc.dat new file mode 100755 index 0000000..cf7c4fb Binary files /dev/null and b/data/quests/c109-gc.dat differ diff --git a/data/quests/c109-pc.bin b/data/quests/c109-pc.bin new file mode 100755 index 0000000..9420a53 Binary files /dev/null and b/data/quests/c109-pc.bin differ diff --git a/data/quests/c109-pc.dat b/data/quests/c109-pc.dat new file mode 100755 index 0000000..e338dde Binary files /dev/null and b/data/quests/c109-pc.dat differ diff --git a/data/quests/c201-bb.bin b/data/quests/c201-bb.bin new file mode 100755 index 0000000..aa76f21 Binary files /dev/null and b/data/quests/c201-bb.bin differ diff --git a/data/quests/c201-bb.dat b/data/quests/c201-bb.dat new file mode 100755 index 0000000..93af348 Binary files /dev/null and b/data/quests/c201-bb.dat differ diff --git a/data/quests/c201-gc.bin b/data/quests/c201-gc.bin new file mode 100755 index 0000000..9ab38c1 Binary files /dev/null and b/data/quests/c201-gc.bin differ diff --git a/data/quests/c201-gc.dat b/data/quests/c201-gc.dat new file mode 100755 index 0000000..3a82a16 Binary files /dev/null and b/data/quests/c201-gc.dat differ diff --git a/data/quests/c202-bb.bin b/data/quests/c202-bb.bin new file mode 100755 index 0000000..e2dfd1b Binary files /dev/null and b/data/quests/c202-bb.bin differ diff --git a/data/quests/c202-bb.dat b/data/quests/c202-bb.dat new file mode 100755 index 0000000..a3d9ad8 Binary files /dev/null and b/data/quests/c202-bb.dat differ diff --git a/data/quests/c202-gc.bin b/data/quests/c202-gc.bin new file mode 100755 index 0000000..32cf6a2 Binary files /dev/null and b/data/quests/c202-gc.bin differ diff --git a/data/quests/c202-gc.dat b/data/quests/c202-gc.dat new file mode 100755 index 0000000..52c5616 Binary files /dev/null and b/data/quests/c202-gc.dat differ diff --git a/data/quests/c203-bb.bin b/data/quests/c203-bb.bin new file mode 100755 index 0000000..0c1b1be Binary files /dev/null and b/data/quests/c203-bb.bin differ diff --git a/data/quests/c203-bb.dat b/data/quests/c203-bb.dat new file mode 100755 index 0000000..34f129b Binary files /dev/null and b/data/quests/c203-bb.dat differ diff --git a/data/quests/c203-gc.bin b/data/quests/c203-gc.bin new file mode 100755 index 0000000..5e34da2 Binary files /dev/null and b/data/quests/c203-gc.bin differ diff --git a/data/quests/c203-gc.dat b/data/quests/c203-gc.dat new file mode 100755 index 0000000..0c50a7d Binary files /dev/null and b/data/quests/c203-gc.dat differ diff --git a/data/quests/c204-bb.bin b/data/quests/c204-bb.bin new file mode 100755 index 0000000..7a088c5 Binary files /dev/null and b/data/quests/c204-bb.bin differ diff --git a/data/quests/c204-bb.dat b/data/quests/c204-bb.dat new file mode 100755 index 0000000..c2b14f0 Binary files /dev/null and b/data/quests/c204-bb.dat differ diff --git a/data/quests/c204-gc.bin b/data/quests/c204-gc.bin new file mode 100755 index 0000000..f551d10 Binary files /dev/null and b/data/quests/c204-gc.bin differ diff --git a/data/quests/c204-gc.dat b/data/quests/c204-gc.dat new file mode 100755 index 0000000..4440116 Binary files /dev/null and b/data/quests/c204-gc.dat differ diff --git a/data/quests/c205-bb.bin b/data/quests/c205-bb.bin new file mode 100755 index 0000000..9fd8a09 Binary files /dev/null and b/data/quests/c205-bb.bin differ diff --git a/data/quests/c205-bb.dat b/data/quests/c205-bb.dat new file mode 100755 index 0000000..33104ac Binary files /dev/null and b/data/quests/c205-bb.dat differ diff --git a/data/quests/c205-gc.bin b/data/quests/c205-gc.bin new file mode 100755 index 0000000..66d6d88 Binary files /dev/null and b/data/quests/c205-gc.bin differ diff --git a/data/quests/c205-gc.dat b/data/quests/c205-gc.dat new file mode 100755 index 0000000..4108024 Binary files /dev/null and b/data/quests/c205-gc.dat differ diff --git a/data/quests/e301-gc3.bin b/data/quests/e301-gc3.bin new file mode 100755 index 0000000..1e3f611 Binary files /dev/null and b/data/quests/e301-gc3.bin differ diff --git a/data/quests/e302-gc3.bin b/data/quests/e302-gc3.bin new file mode 100755 index 0000000..7c84a9a Binary files /dev/null and b/data/quests/e302-gc3.bin differ diff --git a/data/quests/e303-gc3.bin b/data/quests/e303-gc3.bin new file mode 100755 index 0000000..cf36459 Binary files /dev/null and b/data/quests/e303-gc3.bin differ diff --git a/data/quests/nights_e.gba b/data/quests/nights_e.gba new file mode 100755 index 0000000..63244c7 Binary files /dev/null and b/data/quests/nights_e.gba differ diff --git a/data/quests/puyo_e.gba b/data/quests/puyo_e.gba new file mode 100755 index 0000000..6112904 Binary files /dev/null and b/data/quests/puyo_e.gba differ diff --git a/data/quests/q000-dl-gc.bin b/data/quests/q000-dl-gc.bin new file mode 100755 index 0000000..4616dd5 Binary files /dev/null and b/data/quests/q000-dl-gc.bin differ diff --git a/data/quests/q000-dl-gc.dat b/data/quests/q000-dl-gc.dat new file mode 100755 index 0000000..31926a6 Binary files /dev/null and b/data/quests/q000-dl-gc.dat differ diff --git a/data/quests/q001-1p-bb.bin b/data/quests/q001-1p-bb.bin new file mode 100755 index 0000000..3f2c5ae Binary files /dev/null and b/data/quests/q001-1p-bb.bin differ diff --git a/data/quests/q001-1p-bb.dat b/data/quests/q001-1p-bb.dat new file mode 100755 index 0000000..cfff544 Binary files /dev/null and b/data/quests/q001-1p-bb.dat differ diff --git a/data/quests/q002-1p-bb.bin b/data/quests/q002-1p-bb.bin new file mode 100755 index 0000000..9c3cff0 Binary files /dev/null and b/data/quests/q002-1p-bb.bin differ diff --git a/data/quests/q002-1p-bb.dat b/data/quests/q002-1p-bb.dat new file mode 100755 index 0000000..3f33951 Binary files /dev/null and b/data/quests/q002-1p-bb.dat differ diff --git a/data/quests/q003-1p-bb.bin b/data/quests/q003-1p-bb.bin new file mode 100755 index 0000000..176c501 Binary files /dev/null and b/data/quests/q003-1p-bb.bin differ diff --git a/data/quests/q003-1p-bb.dat b/data/quests/q003-1p-bb.dat new file mode 100755 index 0000000..c54407d Binary files /dev/null and b/data/quests/q003-1p-bb.dat differ diff --git a/data/quests/q004-1p-bb.bin b/data/quests/q004-1p-bb.bin new file mode 100755 index 0000000..e2a3576 Binary files /dev/null and b/data/quests/q004-1p-bb.bin differ diff --git a/data/quests/q004-1p-bb.dat b/data/quests/q004-1p-bb.dat new file mode 100755 index 0000000..489a710 Binary files /dev/null and b/data/quests/q004-1p-bb.dat differ diff --git a/data/quests/q005-1p-bb.bin b/data/quests/q005-1p-bb.bin new file mode 100755 index 0000000..d960b3d Binary files /dev/null and b/data/quests/q005-1p-bb.bin differ diff --git a/data/quests/q005-1p-bb.dat b/data/quests/q005-1p-bb.dat new file mode 100755 index 0000000..1a593bc Binary files /dev/null and b/data/quests/q005-1p-bb.dat differ diff --git a/data/quests/q006-1p-bb.bin b/data/quests/q006-1p-bb.bin new file mode 100755 index 0000000..0cebd1e Binary files /dev/null and b/data/quests/q006-1p-bb.bin differ diff --git a/data/quests/q006-1p-bb.dat b/data/quests/q006-1p-bb.dat new file mode 100755 index 0000000..8457356 Binary files /dev/null and b/data/quests/q006-1p-bb.dat differ diff --git a/data/quests/q007-1p-bb.bin b/data/quests/q007-1p-bb.bin new file mode 100755 index 0000000..9e7ebe5 Binary files /dev/null and b/data/quests/q007-1p-bb.bin differ diff --git a/data/quests/q007-1p-bb.dat b/data/quests/q007-1p-bb.dat new file mode 100755 index 0000000..3446046 Binary files /dev/null and b/data/quests/q007-1p-bb.dat differ diff --git a/data/quests/q008-1p-bb.bin b/data/quests/q008-1p-bb.bin new file mode 100755 index 0000000..2fa6d03 Binary files /dev/null and b/data/quests/q008-1p-bb.bin differ diff --git a/data/quests/q008-1p-bb.dat b/data/quests/q008-1p-bb.dat new file mode 100755 index 0000000..5c6d645 Binary files /dev/null and b/data/quests/q008-1p-bb.dat differ diff --git a/data/quests/q009-1p-bb.bin b/data/quests/q009-1p-bb.bin new file mode 100755 index 0000000..021c4f7 Binary files /dev/null and b/data/quests/q009-1p-bb.bin differ diff --git a/data/quests/q009-1p-bb.dat b/data/quests/q009-1p-bb.dat new file mode 100755 index 0000000..50e3ef2 Binary files /dev/null and b/data/quests/q009-1p-bb.dat differ diff --git a/data/quests/q010-1p-bb.bin b/data/quests/q010-1p-bb.bin new file mode 100755 index 0000000..4bff764 Binary files /dev/null and b/data/quests/q010-1p-bb.bin differ diff --git a/data/quests/q010-1p-bb.dat b/data/quests/q010-1p-bb.dat new file mode 100755 index 0000000..f66d72b Binary files /dev/null and b/data/quests/q010-1p-bb.dat differ diff --git a/data/quests/q011-1p-bb.bin b/data/quests/q011-1p-bb.bin new file mode 100755 index 0000000..6bcb406 Binary files /dev/null and b/data/quests/q011-1p-bb.bin differ diff --git a/data/quests/q011-1p-bb.dat b/data/quests/q011-1p-bb.dat new file mode 100755 index 0000000..b6b02ac Binary files /dev/null and b/data/quests/q011-1p-bb.dat differ diff --git a/data/quests/q012-1p-bb.bin b/data/quests/q012-1p-bb.bin new file mode 100755 index 0000000..ec9db57 Binary files /dev/null and b/data/quests/q012-1p-bb.bin differ diff --git a/data/quests/q012-1p-bb.dat b/data/quests/q012-1p-bb.dat new file mode 100755 index 0000000..5d10ec8 Binary files /dev/null and b/data/quests/q012-1p-bb.dat differ diff --git a/data/quests/q013-1p-bb.bin b/data/quests/q013-1p-bb.bin new file mode 100755 index 0000000..805bee4 Binary files /dev/null and b/data/quests/q013-1p-bb.bin differ diff --git a/data/quests/q013-1p-bb.dat b/data/quests/q013-1p-bb.dat new file mode 100755 index 0000000..ea254e7 Binary files /dev/null and b/data/quests/q013-1p-bb.dat differ diff --git a/data/quests/q014-1p-bb.bin b/data/quests/q014-1p-bb.bin new file mode 100755 index 0000000..f9fa50a Binary files /dev/null and b/data/quests/q014-1p-bb.bin differ diff --git a/data/quests/q014-1p-bb.dat b/data/quests/q014-1p-bb.dat new file mode 100755 index 0000000..8760c13 Binary files /dev/null and b/data/quests/q014-1p-bb.dat differ diff --git a/data/quests/q015-1p-bb.bin b/data/quests/q015-1p-bb.bin new file mode 100755 index 0000000..c35097f Binary files /dev/null and b/data/quests/q015-1p-bb.bin differ diff --git a/data/quests/q015-1p-bb.dat b/data/quests/q015-1p-bb.dat new file mode 100755 index 0000000..75243df Binary files /dev/null and b/data/quests/q015-1p-bb.dat differ diff --git a/data/quests/q016-1p-bb.bin b/data/quests/q016-1p-bb.bin new file mode 100755 index 0000000..9a3d6ef Binary files /dev/null and b/data/quests/q016-1p-bb.bin differ diff --git a/data/quests/q016-1p-bb.dat b/data/quests/q016-1p-bb.dat new file mode 100755 index 0000000..cce2d8f Binary files /dev/null and b/data/quests/q016-1p-bb.dat differ diff --git a/data/quests/q017-1p-bb.bin b/data/quests/q017-1p-bb.bin new file mode 100755 index 0000000..32f7798 Binary files /dev/null and b/data/quests/q017-1p-bb.bin differ diff --git a/data/quests/q017-1p-bb.dat b/data/quests/q017-1p-bb.dat new file mode 100755 index 0000000..3343a5f Binary files /dev/null and b/data/quests/q017-1p-bb.dat differ diff --git a/data/quests/q018-1p-bb.bin b/data/quests/q018-1p-bb.bin new file mode 100755 index 0000000..ae3f937 Binary files /dev/null and b/data/quests/q018-1p-bb.bin differ diff --git a/data/quests/q018-1p-bb.dat b/data/quests/q018-1p-bb.dat new file mode 100755 index 0000000..34bf7a9 Binary files /dev/null and b/data/quests/q018-1p-bb.dat differ diff --git a/data/quests/q019-1p-bb.bin b/data/quests/q019-1p-bb.bin new file mode 100755 index 0000000..d0007a8 Binary files /dev/null and b/data/quests/q019-1p-bb.bin differ diff --git a/data/quests/q019-1p-bb.dat b/data/quests/q019-1p-bb.dat new file mode 100755 index 0000000..379bb7f Binary files /dev/null and b/data/quests/q019-1p-bb.dat differ diff --git a/data/quests/q020-1p-bb.bin b/data/quests/q020-1p-bb.bin new file mode 100755 index 0000000..3d4e84a Binary files /dev/null and b/data/quests/q020-1p-bb.bin differ diff --git a/data/quests/q020-1p-bb.dat b/data/quests/q020-1p-bb.dat new file mode 100755 index 0000000..d92e47b Binary files /dev/null and b/data/quests/q020-1p-bb.dat differ diff --git a/data/quests/q021-1p-bb.bin b/data/quests/q021-1p-bb.bin new file mode 100755 index 0000000..d42df82 Binary files /dev/null and b/data/quests/q021-1p-bb.bin differ diff --git a/data/quests/q021-1p-bb.dat b/data/quests/q021-1p-bb.dat new file mode 100755 index 0000000..c7b741b Binary files /dev/null and b/data/quests/q021-1p-bb.dat differ diff --git a/data/quests/q022-1p-bb.bin b/data/quests/q022-1p-bb.bin new file mode 100755 index 0000000..7d578f8 Binary files /dev/null and b/data/quests/q022-1p-bb.bin differ diff --git a/data/quests/q022-1p-bb.dat b/data/quests/q022-1p-bb.dat new file mode 100755 index 0000000..c9b6550 Binary files /dev/null and b/data/quests/q022-1p-bb.dat differ diff --git a/data/quests/q023-1p-bb.bin b/data/quests/q023-1p-bb.bin new file mode 100755 index 0000000..3525c8b Binary files /dev/null and b/data/quests/q023-1p-bb.bin differ diff --git a/data/quests/q023-1p-bb.dat b/data/quests/q023-1p-bb.dat new file mode 100755 index 0000000..ceee4db Binary files /dev/null and b/data/quests/q023-1p-bb.dat differ diff --git a/data/quests/q024-1p-bb.bin b/data/quests/q024-1p-bb.bin new file mode 100755 index 0000000..da299fb Binary files /dev/null and b/data/quests/q024-1p-bb.bin differ diff --git a/data/quests/q024-1p-bb.dat b/data/quests/q024-1p-bb.dat new file mode 100755 index 0000000..0527d14 Binary files /dev/null and b/data/quests/q024-1p-bb.dat differ diff --git a/data/quests/q025-1p-bb.bin b/data/quests/q025-1p-bb.bin new file mode 100755 index 0000000..a227cf9 Binary files /dev/null and b/data/quests/q025-1p-bb.bin differ diff --git a/data/quests/q025-1p-bb.dat b/data/quests/q025-1p-bb.dat new file mode 100755 index 0000000..261f9e1 Binary files /dev/null and b/data/quests/q025-1p-bb.dat differ diff --git a/data/quests/q026-1p-bb.bin b/data/quests/q026-1p-bb.bin new file mode 100755 index 0000000..2c73ffe Binary files /dev/null and b/data/quests/q026-1p-bb.bin differ diff --git a/data/quests/q026-1p-bb.dat b/data/quests/q026-1p-bb.dat new file mode 100755 index 0000000..c220402 Binary files /dev/null and b/data/quests/q026-1p-bb.dat differ diff --git a/data/quests/q026-1p-gc.bin b/data/quests/q026-1p-gc.bin new file mode 100755 index 0000000..a9095ee Binary files /dev/null and b/data/quests/q026-1p-gc.bin differ diff --git a/data/quests/q026-1p-gc.dat b/data/quests/q026-1p-gc.dat new file mode 100755 index 0000000..8b9a559 Binary files /dev/null and b/data/quests/q026-1p-gc.dat differ diff --git a/data/quests/q027-1p-bb.bin b/data/quests/q027-1p-bb.bin new file mode 100755 index 0000000..00c6d5b Binary files /dev/null and b/data/quests/q027-1p-bb.bin differ diff --git a/data/quests/q027-1p-bb.dat b/data/quests/q027-1p-bb.dat new file mode 100755 index 0000000..d286632 Binary files /dev/null and b/data/quests/q027-1p-bb.dat differ diff --git a/data/quests/q031-1p-bb.bin b/data/quests/q031-1p-bb.bin new file mode 100755 index 0000000..219b251 Binary files /dev/null and b/data/quests/q031-1p-bb.bin differ diff --git a/data/quests/q031-1p-bb.dat b/data/quests/q031-1p-bb.dat new file mode 100755 index 0000000..ce437c5 Binary files /dev/null and b/data/quests/q031-1p-bb.dat differ diff --git a/data/quests/q033-1p-bb.bin b/data/quests/q033-1p-bb.bin new file mode 100755 index 0000000..3e6361d Binary files /dev/null and b/data/quests/q033-1p-bb.bin differ diff --git a/data/quests/q033-1p-bb.dat b/data/quests/q033-1p-bb.dat new file mode 100755 index 0000000..715d293 Binary files /dev/null and b/data/quests/q033-1p-bb.dat differ diff --git a/data/quests/q058-ret-bb.bin b/data/quests/q058-ret-bb.bin new file mode 100755 index 0000000..2556a7b Binary files /dev/null and b/data/quests/q058-ret-bb.bin differ diff --git a/data/quests/q058-ret-bb.dat b/data/quests/q058-ret-bb.dat new file mode 100755 index 0000000..da08758 Binary files /dev/null and b/data/quests/q058-ret-bb.dat differ diff --git a/data/quests/q058-ret-d1.bin b/data/quests/q058-ret-d1.bin new file mode 100755 index 0000000..5c86468 Binary files /dev/null and b/data/quests/q058-ret-d1.bin differ diff --git a/data/quests/q058-ret-d1.dat b/data/quests/q058-ret-d1.dat new file mode 100755 index 0000000..013e1bb Binary files /dev/null and b/data/quests/q058-ret-d1.dat differ diff --git a/data/quests/q058-ret-dc.bin b/data/quests/q058-ret-dc.bin new file mode 100755 index 0000000..387ed19 Binary files /dev/null and b/data/quests/q058-ret-dc.bin differ diff --git a/data/quests/q058-ret-dc.dat b/data/quests/q058-ret-dc.dat new file mode 100755 index 0000000..69d113c Binary files /dev/null and b/data/quests/q058-ret-dc.dat differ diff --git a/data/quests/q058-ret-gc.bin b/data/quests/q058-ret-gc.bin new file mode 100755 index 0000000..7b85154 Binary files /dev/null and b/data/quests/q058-ret-gc.bin differ diff --git a/data/quests/q058-ret-gc.dat b/data/quests/q058-ret-gc.dat new file mode 100755 index 0000000..5377540 Binary files /dev/null and b/data/quests/q058-ret-gc.dat differ diff --git a/data/quests/q058-ret-pc.bin b/data/quests/q058-ret-pc.bin new file mode 100755 index 0000000..62f25a7 Binary files /dev/null and b/data/quests/q058-ret-pc.bin differ diff --git a/data/quests/q058-ret-pc.dat b/data/quests/q058-ret-pc.dat new file mode 100755 index 0000000..82d8d07 Binary files /dev/null and b/data/quests/q058-ret-pc.dat differ diff --git a/data/quests/q059-ret-bb.bin b/data/quests/q059-ret-bb.bin new file mode 100755 index 0000000..06a6e47 Binary files /dev/null and b/data/quests/q059-ret-bb.bin differ diff --git a/data/quests/q059-ret-bb.dat b/data/quests/q059-ret-bb.dat new file mode 100755 index 0000000..8ac1f7c Binary files /dev/null and b/data/quests/q059-ret-bb.dat differ diff --git a/data/quests/q059-ret-d1.bin b/data/quests/q059-ret-d1.bin new file mode 100755 index 0000000..9eba3e4 Binary files /dev/null and b/data/quests/q059-ret-d1.bin differ diff --git a/data/quests/q059-ret-d1.dat b/data/quests/q059-ret-d1.dat new file mode 100755 index 0000000..0edfada Binary files /dev/null and b/data/quests/q059-ret-d1.dat differ diff --git a/data/quests/q059-ret-dc.bin b/data/quests/q059-ret-dc.bin new file mode 100755 index 0000000..434b913 Binary files /dev/null and b/data/quests/q059-ret-dc.bin differ diff --git a/data/quests/q059-ret-dc.dat b/data/quests/q059-ret-dc.dat new file mode 100755 index 0000000..0edfada Binary files /dev/null and b/data/quests/q059-ret-dc.dat differ diff --git a/data/quests/q059-ret-gc.bin b/data/quests/q059-ret-gc.bin new file mode 100755 index 0000000..1486cf7 Binary files /dev/null and b/data/quests/q059-ret-gc.bin differ diff --git a/data/quests/q059-ret-gc.dat b/data/quests/q059-ret-gc.dat new file mode 100755 index 0000000..ca7345f Binary files /dev/null and b/data/quests/q059-ret-gc.dat differ diff --git a/data/quests/q059-ret-pc.bin b/data/quests/q059-ret-pc.bin new file mode 100755 index 0000000..5e6c3a1 Binary files /dev/null and b/data/quests/q059-ret-pc.bin differ diff --git a/data/quests/q059-ret-pc.dat b/data/quests/q059-ret-pc.dat new file mode 100755 index 0000000..7e42e93 Binary files /dev/null and b/data/quests/q059-ret-pc.dat differ diff --git a/data/quests/q060-ret-bb.bin b/data/quests/q060-ret-bb.bin new file mode 100755 index 0000000..0638ec3 Binary files /dev/null and b/data/quests/q060-ret-bb.bin differ diff --git a/data/quests/q060-ret-bb.dat b/data/quests/q060-ret-bb.dat new file mode 100755 index 0000000..5dac149 Binary files /dev/null and b/data/quests/q060-ret-bb.dat differ diff --git a/data/quests/q060-ret-d1.bin b/data/quests/q060-ret-d1.bin new file mode 100755 index 0000000..39b9dad Binary files /dev/null and b/data/quests/q060-ret-d1.bin differ diff --git a/data/quests/q060-ret-d1.dat b/data/quests/q060-ret-d1.dat new file mode 100755 index 0000000..13249c8 Binary files /dev/null and b/data/quests/q060-ret-d1.dat differ diff --git a/data/quests/q060-ret-dc.bin b/data/quests/q060-ret-dc.bin new file mode 100755 index 0000000..9fdaf94 Binary files /dev/null and b/data/quests/q060-ret-dc.bin differ diff --git a/data/quests/q060-ret-dc.dat b/data/quests/q060-ret-dc.dat new file mode 100755 index 0000000..13249c8 Binary files /dev/null and b/data/quests/q060-ret-dc.dat differ diff --git a/data/quests/q060-ret-gc.bin b/data/quests/q060-ret-gc.bin new file mode 100755 index 0000000..3785d7f Binary files /dev/null and b/data/quests/q060-ret-gc.bin differ diff --git a/data/quests/q060-ret-gc.dat b/data/quests/q060-ret-gc.dat new file mode 100755 index 0000000..fcba985 Binary files /dev/null and b/data/quests/q060-ret-gc.dat differ diff --git a/data/quests/q060-ret-pc.bin b/data/quests/q060-ret-pc.bin new file mode 100755 index 0000000..8176761 Binary files /dev/null and b/data/quests/q060-ret-pc.bin differ diff --git a/data/quests/q060-ret-pc.dat b/data/quests/q060-ret-pc.dat new file mode 100755 index 0000000..6e5e32f Binary files /dev/null and b/data/quests/q060-ret-pc.dat differ diff --git a/data/quests/q068-ret-dc.bin b/data/quests/q068-ret-dc.bin new file mode 100755 index 0000000..2aec800 Binary files /dev/null and b/data/quests/q068-ret-dc.bin differ diff --git a/data/quests/q068-ret-dc.dat b/data/quests/q068-ret-dc.dat new file mode 100755 index 0000000..e3b55e9 Binary files /dev/null and b/data/quests/q068-ret-dc.dat differ diff --git a/data/quests/q068-ret-pc.bin b/data/quests/q068-ret-pc.bin new file mode 100755 index 0000000..8887c34 Binary files /dev/null and b/data/quests/q068-ret-pc.bin differ diff --git a/data/quests/q068-ret-pc.dat b/data/quests/q068-ret-pc.dat new file mode 100755 index 0000000..e3b55e9 Binary files /dev/null and b/data/quests/q068-ret-pc.dat differ diff --git a/data/quests/q073-evt-gc.bin b/data/quests/q073-evt-gc.bin new file mode 100755 index 0000000..d730cc5 Binary files /dev/null and b/data/quests/q073-evt-gc.bin differ diff --git a/data/quests/q073-evt-gc.dat b/data/quests/q073-evt-gc.dat new file mode 100755 index 0000000..c83325e Binary files /dev/null and b/data/quests/q073-evt-gc.dat differ diff --git a/data/quests/q073-evt-pc.bin b/data/quests/q073-evt-pc.bin new file mode 100755 index 0000000..86a883b Binary files /dev/null and b/data/quests/q073-evt-pc.bin differ diff --git a/data/quests/q073-evt-pc.dat b/data/quests/q073-evt-pc.dat new file mode 100755 index 0000000..c3f0daf Binary files /dev/null and b/data/quests/q073-evt-pc.dat differ diff --git a/data/quests/q080-vr-dc.bin b/data/quests/q080-vr-dc.bin new file mode 100755 index 0000000..14354d3 Binary files /dev/null and b/data/quests/q080-vr-dc.bin differ diff --git a/data/quests/q080-vr-dc.dat b/data/quests/q080-vr-dc.dat new file mode 100755 index 0000000..46a7ae4 Binary files /dev/null and b/data/quests/q080-vr-dc.dat differ diff --git a/data/quests/q095-evt-gc.bin b/data/quests/q095-evt-gc.bin new file mode 100755 index 0000000..42996df Binary files /dev/null and b/data/quests/q095-evt-gc.bin differ diff --git a/data/quests/q095-evt-gc.dat b/data/quests/q095-evt-gc.dat new file mode 100755 index 0000000..0415ca3 Binary files /dev/null and b/data/quests/q095-evt-gc.dat differ diff --git a/data/quests/q095-evt-pc.bin b/data/quests/q095-evt-pc.bin new file mode 100755 index 0000000..c497c07 Binary files /dev/null and b/data/quests/q095-evt-pc.bin differ diff --git a/data/quests/q095-evt-pc.dat b/data/quests/q095-evt-pc.dat new file mode 100755 index 0000000..c9c6ac8 Binary files /dev/null and b/data/quests/q095-evt-pc.dat differ diff --git a/data/quests/q096-evt-gc.bin b/data/quests/q096-evt-gc.bin new file mode 100755 index 0000000..f912f54 Binary files /dev/null and b/data/quests/q096-evt-gc.bin differ diff --git a/data/quests/q096-evt-gc.dat b/data/quests/q096-evt-gc.dat new file mode 100755 index 0000000..5f3c23e Binary files /dev/null and b/data/quests/q096-evt-gc.dat differ diff --git a/data/quests/q096-evt-pc.bin b/data/quests/q096-evt-pc.bin new file mode 100755 index 0000000..cb93103 Binary files /dev/null and b/data/quests/q096-evt-pc.bin differ diff --git a/data/quests/q096-evt-pc.dat b/data/quests/q096-evt-pc.dat new file mode 100755 index 0000000..97fb984 Binary files /dev/null and b/data/quests/q096-evt-pc.dat differ diff --git a/data/quests/q101-ext-bb.bin b/data/quests/q101-ext-bb.bin new file mode 100755 index 0000000..1d01033 Binary files /dev/null and b/data/quests/q101-ext-bb.bin differ diff --git a/data/quests/q101-ext-bb.dat b/data/quests/q101-ext-bb.dat new file mode 100755 index 0000000..7ff8323 Binary files /dev/null and b/data/quests/q101-ext-bb.dat differ diff --git a/data/quests/q101-ext-d1.bin b/data/quests/q101-ext-d1.bin new file mode 100755 index 0000000..877b8c0 Binary files /dev/null and b/data/quests/q101-ext-d1.bin differ diff --git a/data/quests/q101-ext-d1.dat b/data/quests/q101-ext-d1.dat new file mode 100755 index 0000000..795aceb Binary files /dev/null and b/data/quests/q101-ext-d1.dat differ diff --git a/data/quests/q101-ext-dc.bin b/data/quests/q101-ext-dc.bin new file mode 100755 index 0000000..42247da Binary files /dev/null and b/data/quests/q101-ext-dc.bin differ diff --git a/data/quests/q101-ext-dc.dat b/data/quests/q101-ext-dc.dat new file mode 100755 index 0000000..795aceb Binary files /dev/null and b/data/quests/q101-ext-dc.dat differ diff --git a/data/quests/q101-ext-gc.bin b/data/quests/q101-ext-gc.bin new file mode 100755 index 0000000..fb8eaa0 Binary files /dev/null and b/data/quests/q101-ext-gc.bin differ diff --git a/data/quests/q101-ext-gc.dat b/data/quests/q101-ext-gc.dat new file mode 100755 index 0000000..6acac04 Binary files /dev/null and b/data/quests/q101-ext-gc.dat differ diff --git a/data/quests/q101-ext-pc.bin b/data/quests/q101-ext-pc.bin new file mode 100755 index 0000000..efc62dd Binary files /dev/null and b/data/quests/q101-ext-pc.bin differ diff --git a/data/quests/q101-ext-pc.dat b/data/quests/q101-ext-pc.dat new file mode 100755 index 0000000..795aceb Binary files /dev/null and b/data/quests/q101-ext-pc.dat differ diff --git a/data/quests/q102-ext-bb.bin b/data/quests/q102-ext-bb.bin new file mode 100755 index 0000000..a884bdf Binary files /dev/null and b/data/quests/q102-ext-bb.bin differ diff --git a/data/quests/q102-ext-bb.dat b/data/quests/q102-ext-bb.dat new file mode 100755 index 0000000..74c68ef Binary files /dev/null and b/data/quests/q102-ext-bb.dat differ diff --git a/data/quests/q102-ext-d1.bin b/data/quests/q102-ext-d1.bin new file mode 100755 index 0000000..8f6d6a3 Binary files /dev/null and b/data/quests/q102-ext-d1.bin differ diff --git a/data/quests/q102-ext-d1.dat b/data/quests/q102-ext-d1.dat new file mode 100755 index 0000000..df1bd0c Binary files /dev/null and b/data/quests/q102-ext-d1.dat differ diff --git a/data/quests/q102-ext-dc.bin b/data/quests/q102-ext-dc.bin new file mode 100755 index 0000000..6a4c78f Binary files /dev/null and b/data/quests/q102-ext-dc.bin differ diff --git a/data/quests/q102-ext-dc.dat b/data/quests/q102-ext-dc.dat new file mode 100755 index 0000000..88aa13d Binary files /dev/null and b/data/quests/q102-ext-dc.dat differ diff --git a/data/quests/q102-ext-pc.bin b/data/quests/q102-ext-pc.bin new file mode 100755 index 0000000..2e7204f Binary files /dev/null and b/data/quests/q102-ext-pc.bin differ diff --git a/data/quests/q102-ext-pc.dat b/data/quests/q102-ext-pc.dat new file mode 100755 index 0000000..88aa13d Binary files /dev/null and b/data/quests/q102-ext-pc.dat differ diff --git a/data/quests/q103-ext-bb.bin b/data/quests/q103-ext-bb.bin new file mode 100755 index 0000000..c347a3f Binary files /dev/null and b/data/quests/q103-ext-bb.bin differ diff --git a/data/quests/q103-ext-bb.dat b/data/quests/q103-ext-bb.dat new file mode 100755 index 0000000..163fc98 Binary files /dev/null and b/data/quests/q103-ext-bb.dat differ diff --git a/data/quests/q103-ext-d1.bin b/data/quests/q103-ext-d1.bin new file mode 100755 index 0000000..a3038af Binary files /dev/null and b/data/quests/q103-ext-d1.bin differ diff --git a/data/quests/q103-ext-d1.dat b/data/quests/q103-ext-d1.dat new file mode 100755 index 0000000..d07f949 Binary files /dev/null and b/data/quests/q103-ext-d1.dat differ diff --git a/data/quests/q103-ext-gc.bin b/data/quests/q103-ext-gc.bin new file mode 100755 index 0000000..5ca3425 Binary files /dev/null and b/data/quests/q103-ext-gc.bin differ diff --git a/data/quests/q103-ext-gc.dat b/data/quests/q103-ext-gc.dat new file mode 100755 index 0000000..cd59428 Binary files /dev/null and b/data/quests/q103-ext-gc.dat differ diff --git a/data/quests/q103-ext-pc.bin b/data/quests/q103-ext-pc.bin new file mode 100755 index 0000000..a47cf41 Binary files /dev/null and b/data/quests/q103-ext-pc.bin differ diff --git a/data/quests/q103-ext-pc.dat b/data/quests/q103-ext-pc.dat new file mode 100755 index 0000000..1e8c391 Binary files /dev/null and b/data/quests/q103-ext-pc.dat differ diff --git a/data/quests/q104-ext-bb.bin b/data/quests/q104-ext-bb.bin new file mode 100755 index 0000000..6531922 Binary files /dev/null and b/data/quests/q104-ext-bb.bin differ diff --git a/data/quests/q104-ext-bb.dat b/data/quests/q104-ext-bb.dat new file mode 100755 index 0000000..f30005c Binary files /dev/null and b/data/quests/q104-ext-bb.dat differ diff --git a/data/quests/q104-ext-d1.bin b/data/quests/q104-ext-d1.bin new file mode 100755 index 0000000..97432ac Binary files /dev/null and b/data/quests/q104-ext-d1.bin differ diff --git a/data/quests/q104-ext-d1.dat b/data/quests/q104-ext-d1.dat new file mode 100755 index 0000000..26e08ab Binary files /dev/null and b/data/quests/q104-ext-d1.dat differ diff --git a/data/quests/q104-ext-dc.bin b/data/quests/q104-ext-dc.bin new file mode 100755 index 0000000..3dc6281 Binary files /dev/null and b/data/quests/q104-ext-dc.bin differ diff --git a/data/quests/q104-ext-dc.dat b/data/quests/q104-ext-dc.dat new file mode 100755 index 0000000..90635f1 Binary files /dev/null and b/data/quests/q104-ext-dc.dat differ diff --git a/data/quests/q104-ext-gc.bin b/data/quests/q104-ext-gc.bin new file mode 100755 index 0000000..1703279 Binary files /dev/null and b/data/quests/q104-ext-gc.bin differ diff --git a/data/quests/q104-ext-gc.dat b/data/quests/q104-ext-gc.dat new file mode 100755 index 0000000..138a775 Binary files /dev/null and b/data/quests/q104-ext-gc.dat differ diff --git a/data/quests/q104-ext-pc.bin b/data/quests/q104-ext-pc.bin new file mode 100755 index 0000000..5cee1e1 Binary files /dev/null and b/data/quests/q104-ext-pc.bin differ diff --git a/data/quests/q104-ext-pc.dat b/data/quests/q104-ext-pc.dat new file mode 100755 index 0000000..90635f1 Binary files /dev/null and b/data/quests/q104-ext-pc.dat differ diff --git a/data/quests/q108-ext-bb.bin b/data/quests/q108-ext-bb.bin new file mode 100755 index 0000000..bf97716 Binary files /dev/null and b/data/quests/q108-ext-bb.bin differ diff --git a/data/quests/q108-ext-bb.dat b/data/quests/q108-ext-bb.dat new file mode 100755 index 0000000..d70f79d Binary files /dev/null and b/data/quests/q108-ext-bb.dat differ diff --git a/data/quests/q108-ext-d1.bin b/data/quests/q108-ext-d1.bin new file mode 100755 index 0000000..862c66a Binary files /dev/null and b/data/quests/q108-ext-d1.bin differ diff --git a/data/quests/q108-ext-d1.dat b/data/quests/q108-ext-d1.dat new file mode 100755 index 0000000..062c493 Binary files /dev/null and b/data/quests/q108-ext-d1.dat differ diff --git a/data/quests/q108-ext-dc.bin b/data/quests/q108-ext-dc.bin new file mode 100755 index 0000000..02108ac Binary files /dev/null and b/data/quests/q108-ext-dc.bin differ diff --git a/data/quests/q108-ext-dc.dat b/data/quests/q108-ext-dc.dat new file mode 100755 index 0000000..2099f7a Binary files /dev/null and b/data/quests/q108-ext-dc.dat differ diff --git a/data/quests/q108-ext-gc.bin b/data/quests/q108-ext-gc.bin new file mode 100755 index 0000000..f66a84d Binary files /dev/null and b/data/quests/q108-ext-gc.bin differ diff --git a/data/quests/q108-ext-gc.dat b/data/quests/q108-ext-gc.dat new file mode 100755 index 0000000..062c493 Binary files /dev/null and b/data/quests/q108-ext-gc.dat differ diff --git a/data/quests/q108-ext-pc.bin b/data/quests/q108-ext-pc.bin new file mode 100755 index 0000000..f8428f2 Binary files /dev/null and b/data/quests/q108-ext-pc.bin differ diff --git a/data/quests/q108-ext-pc.dat b/data/quests/q108-ext-pc.dat new file mode 100755 index 0000000..2099f7a Binary files /dev/null and b/data/quests/q108-ext-pc.dat differ diff --git a/data/quests/q109-ext-bb.bin b/data/quests/q109-ext-bb.bin new file mode 100755 index 0000000..4dd0bd3 Binary files /dev/null and b/data/quests/q109-ext-bb.bin differ diff --git a/data/quests/q109-ext-bb.dat b/data/quests/q109-ext-bb.dat new file mode 100755 index 0000000..7f431bd Binary files /dev/null and b/data/quests/q109-ext-bb.dat differ diff --git a/data/quests/q109-ext-d1.bin b/data/quests/q109-ext-d1.bin new file mode 100755 index 0000000..12051af Binary files /dev/null and b/data/quests/q109-ext-d1.bin differ diff --git a/data/quests/q109-ext-d1.dat b/data/quests/q109-ext-d1.dat new file mode 100755 index 0000000..da3fef3 Binary files /dev/null and b/data/quests/q109-ext-d1.dat differ diff --git a/data/quests/q109-ext-dc.bin b/data/quests/q109-ext-dc.bin new file mode 100755 index 0000000..f1d6c81 Binary files /dev/null and b/data/quests/q109-ext-dc.bin differ diff --git a/data/quests/q109-ext-dc.dat b/data/quests/q109-ext-dc.dat new file mode 100755 index 0000000..3ea8563 Binary files /dev/null and b/data/quests/q109-ext-dc.dat differ diff --git a/data/quests/q109-ext-gc.bin b/data/quests/q109-ext-gc.bin new file mode 100755 index 0000000..d331323 Binary files /dev/null and b/data/quests/q109-ext-gc.bin differ diff --git a/data/quests/q109-ext-gc.dat b/data/quests/q109-ext-gc.dat new file mode 100755 index 0000000..3ea8563 Binary files /dev/null and b/data/quests/q109-ext-gc.dat differ diff --git a/data/quests/q109-ext-pc.bin b/data/quests/q109-ext-pc.bin new file mode 100755 index 0000000..3cc48ef Binary files /dev/null and b/data/quests/q109-ext-pc.bin differ diff --git a/data/quests/q109-ext-pc.dat b/data/quests/q109-ext-pc.dat new file mode 100755 index 0000000..3ea8563 Binary files /dev/null and b/data/quests/q109-ext-pc.dat differ diff --git a/data/quests/q110-ext-bb.bin b/data/quests/q110-ext-bb.bin new file mode 100755 index 0000000..819da2d Binary files /dev/null and b/data/quests/q110-ext-bb.bin differ diff --git a/data/quests/q110-ext-bb.dat b/data/quests/q110-ext-bb.dat new file mode 100755 index 0000000..d23241b Binary files /dev/null and b/data/quests/q110-ext-bb.dat differ diff --git a/data/quests/q110-ext-d1.bin b/data/quests/q110-ext-d1.bin new file mode 100755 index 0000000..5f0f473 Binary files /dev/null and b/data/quests/q110-ext-d1.bin differ diff --git a/data/quests/q110-ext-d1.dat b/data/quests/q110-ext-d1.dat new file mode 100755 index 0000000..2a5dd23 Binary files /dev/null and b/data/quests/q110-ext-d1.dat differ diff --git a/data/quests/q110-ext-dc.bin b/data/quests/q110-ext-dc.bin new file mode 100755 index 0000000..fa14f7e Binary files /dev/null and b/data/quests/q110-ext-dc.bin differ diff --git a/data/quests/q110-ext-dc.dat b/data/quests/q110-ext-dc.dat new file mode 100755 index 0000000..0610005 Binary files /dev/null and b/data/quests/q110-ext-dc.dat differ diff --git a/data/quests/q110-ext-gc.bin b/data/quests/q110-ext-gc.bin new file mode 100755 index 0000000..4527fbb Binary files /dev/null and b/data/quests/q110-ext-gc.bin differ diff --git a/data/quests/q110-ext-gc.dat b/data/quests/q110-ext-gc.dat new file mode 100755 index 0000000..1763a04 Binary files /dev/null and b/data/quests/q110-ext-gc.dat differ diff --git a/data/quests/q110-ext-pc.bin b/data/quests/q110-ext-pc.bin new file mode 100755 index 0000000..2a188b2 Binary files /dev/null and b/data/quests/q110-ext-pc.bin differ diff --git a/data/quests/q110-ext-pc.dat b/data/quests/q110-ext-pc.dat new file mode 100755 index 0000000..0610005 Binary files /dev/null and b/data/quests/q110-ext-pc.dat differ diff --git a/data/quests/q111-ext-bb.bin b/data/quests/q111-ext-bb.bin new file mode 100755 index 0000000..8d4904b Binary files /dev/null and b/data/quests/q111-ext-bb.bin differ diff --git a/data/quests/q111-ext-bb.dat b/data/quests/q111-ext-bb.dat new file mode 100755 index 0000000..837acce Binary files /dev/null and b/data/quests/q111-ext-bb.dat differ diff --git a/data/quests/q111-ext-d1.bin b/data/quests/q111-ext-d1.bin new file mode 100755 index 0000000..5cf87f1 Binary files /dev/null and b/data/quests/q111-ext-d1.bin differ diff --git a/data/quests/q111-ext-d1.dat b/data/quests/q111-ext-d1.dat new file mode 100755 index 0000000..87219c2 Binary files /dev/null and b/data/quests/q111-ext-d1.dat differ diff --git a/data/quests/q111-ext-dc.bin b/data/quests/q111-ext-dc.bin new file mode 100755 index 0000000..7099474 Binary files /dev/null and b/data/quests/q111-ext-dc.bin differ diff --git a/data/quests/q111-ext-dc.dat b/data/quests/q111-ext-dc.dat new file mode 100755 index 0000000..0c59ee5 Binary files /dev/null and b/data/quests/q111-ext-dc.dat differ diff --git a/data/quests/q111-ext-gc.bin b/data/quests/q111-ext-gc.bin new file mode 100755 index 0000000..280a65c Binary files /dev/null and b/data/quests/q111-ext-gc.bin differ diff --git a/data/quests/q111-ext-gc.dat b/data/quests/q111-ext-gc.dat new file mode 100755 index 0000000..0c59ee5 Binary files /dev/null and b/data/quests/q111-ext-gc.dat differ diff --git a/data/quests/q111-ext-pc.bin b/data/quests/q111-ext-pc.bin new file mode 100755 index 0000000..40e65a9 Binary files /dev/null and b/data/quests/q111-ext-pc.bin differ diff --git a/data/quests/q111-ext-pc.dat b/data/quests/q111-ext-pc.dat new file mode 100755 index 0000000..0c59ee5 Binary files /dev/null and b/data/quests/q111-ext-pc.dat differ diff --git a/data/quests/q117-ext-bb.bin b/data/quests/q117-ext-bb.bin new file mode 100755 index 0000000..aaef604 Binary files /dev/null and b/data/quests/q117-ext-bb.bin differ diff --git a/data/quests/q117-ext-bb.dat b/data/quests/q117-ext-bb.dat new file mode 100755 index 0000000..3753603 Binary files /dev/null and b/data/quests/q117-ext-bb.dat differ diff --git a/data/quests/q117-ext-dc.bin b/data/quests/q117-ext-dc.bin new file mode 100755 index 0000000..20a024d Binary files /dev/null and b/data/quests/q117-ext-dc.bin differ diff --git a/data/quests/q117-ext-dc.dat b/data/quests/q117-ext-dc.dat new file mode 100755 index 0000000..ba64f2f Binary files /dev/null and b/data/quests/q117-ext-dc.dat differ diff --git a/data/quests/q117-ext-gc.bin b/data/quests/q117-ext-gc.bin new file mode 100755 index 0000000..a02e8ca Binary files /dev/null and b/data/quests/q117-ext-gc.bin differ diff --git a/data/quests/q117-ext-gc.dat b/data/quests/q117-ext-gc.dat new file mode 100755 index 0000000..ac07b53 Binary files /dev/null and b/data/quests/q117-ext-gc.dat differ diff --git a/data/quests/q117-ext-pc.bin b/data/quests/q117-ext-pc.bin new file mode 100755 index 0000000..af3252a Binary files /dev/null and b/data/quests/q117-ext-pc.bin differ diff --git a/data/quests/q117-ext-pc.dat b/data/quests/q117-ext-pc.dat new file mode 100755 index 0000000..17ef952 Binary files /dev/null and b/data/quests/q117-ext-pc.dat differ diff --git a/data/quests/q118-vr-bb.bin b/data/quests/q118-vr-bb.bin new file mode 100755 index 0000000..c980867 Binary files /dev/null and b/data/quests/q118-vr-bb.bin differ diff --git a/data/quests/q118-vr-bb.dat b/data/quests/q118-vr-bb.dat new file mode 100755 index 0000000..5c83f58 Binary files /dev/null and b/data/quests/q118-vr-bb.dat differ diff --git a/data/quests/q118-vr-dc.bin b/data/quests/q118-vr-dc.bin new file mode 100755 index 0000000..b0e6fc5 Binary files /dev/null and b/data/quests/q118-vr-dc.bin differ diff --git a/data/quests/q118-vr-dc.dat b/data/quests/q118-vr-dc.dat new file mode 100755 index 0000000..f19ba01 Binary files /dev/null and b/data/quests/q118-vr-dc.dat differ diff --git a/data/quests/q118-vr-gc.bin b/data/quests/q118-vr-gc.bin new file mode 100755 index 0000000..1d3aabf Binary files /dev/null and b/data/quests/q118-vr-gc.bin differ diff --git a/data/quests/q118-vr-gc.dat b/data/quests/q118-vr-gc.dat new file mode 100755 index 0000000..d46d9b9 Binary files /dev/null and b/data/quests/q118-vr-gc.dat differ diff --git a/data/quests/q118-vr-pc.bin b/data/quests/q118-vr-pc.bin new file mode 100755 index 0000000..2bcdfc5 Binary files /dev/null and b/data/quests/q118-vr-pc.bin differ diff --git a/data/quests/q118-vr-pc.dat b/data/quests/q118-vr-pc.dat new file mode 100755 index 0000000..f19ba01 Binary files /dev/null and b/data/quests/q118-vr-pc.dat differ diff --git a/data/quests/q123-ext-gc.bin b/data/quests/q123-ext-gc.bin new file mode 100755 index 0000000..9e63108 Binary files /dev/null and b/data/quests/q123-ext-gc.bin differ diff --git a/data/quests/q123-ext-gc.dat b/data/quests/q123-ext-gc.dat new file mode 100755 index 0000000..0247a6a Binary files /dev/null and b/data/quests/q123-ext-gc.dat differ diff --git a/data/quests/q124-evt-bb.bin b/data/quests/q124-evt-bb.bin new file mode 100755 index 0000000..7009fb7 Binary files /dev/null and b/data/quests/q124-evt-bb.bin differ diff --git a/data/quests/q124-evt-bb.dat b/data/quests/q124-evt-bb.dat new file mode 100755 index 0000000..df637f1 Binary files /dev/null and b/data/quests/q124-evt-bb.dat differ diff --git a/data/quests/q137-evt-bb.bin b/data/quests/q137-evt-bb.bin new file mode 100755 index 0000000..6463d00 Binary files /dev/null and b/data/quests/q137-evt-bb.bin differ diff --git a/data/quests/q137-evt-bb.dat b/data/quests/q137-evt-bb.dat new file mode 100755 index 0000000..a2b5a0c Binary files /dev/null and b/data/quests/q137-evt-bb.dat differ diff --git a/data/quests/q137-evt-dc.bin b/data/quests/q137-evt-dc.bin new file mode 100755 index 0000000..ed91125 Binary files /dev/null and b/data/quests/q137-evt-dc.bin differ diff --git a/data/quests/q137-evt-dc.dat b/data/quests/q137-evt-dc.dat new file mode 100755 index 0000000..6ff9afe Binary files /dev/null and b/data/quests/q137-evt-dc.dat differ diff --git a/data/quests/q137-evt-gc.bin b/data/quests/q137-evt-gc.bin new file mode 100755 index 0000000..9f7ec2d Binary files /dev/null and b/data/quests/q137-evt-gc.bin differ diff --git a/data/quests/q137-evt-gc.dat b/data/quests/q137-evt-gc.dat new file mode 100755 index 0000000..2726b41 Binary files /dev/null and b/data/quests/q137-evt-gc.dat differ diff --git a/data/quests/q137-evt-pc.bin b/data/quests/q137-evt-pc.bin new file mode 100755 index 0000000..611a6d7 Binary files /dev/null and b/data/quests/q137-evt-pc.bin differ diff --git a/data/quests/q137-evt-pc.dat b/data/quests/q137-evt-pc.dat new file mode 100755 index 0000000..6ff9afe Binary files /dev/null and b/data/quests/q137-evt-pc.dat differ diff --git a/data/quests/q138-evt-bb.bin b/data/quests/q138-evt-bb.bin new file mode 100755 index 0000000..f2f8ac9 Binary files /dev/null and b/data/quests/q138-evt-bb.bin differ diff --git a/data/quests/q138-evt-bb.dat b/data/quests/q138-evt-bb.dat new file mode 100755 index 0000000..23c39bc Binary files /dev/null and b/data/quests/q138-evt-bb.dat differ diff --git a/data/quests/q138-evt-dc.bin b/data/quests/q138-evt-dc.bin new file mode 100755 index 0000000..2d43845 Binary files /dev/null and b/data/quests/q138-evt-dc.bin differ diff --git a/data/quests/q138-evt-dc.dat b/data/quests/q138-evt-dc.dat new file mode 100755 index 0000000..8c147ef Binary files /dev/null and b/data/quests/q138-evt-dc.dat differ diff --git a/data/quests/q138-evt-gc.bin b/data/quests/q138-evt-gc.bin new file mode 100755 index 0000000..994a043 Binary files /dev/null and b/data/quests/q138-evt-gc.bin differ diff --git a/data/quests/q138-evt-gc.dat b/data/quests/q138-evt-gc.dat new file mode 100755 index 0000000..4477ace Binary files /dev/null and b/data/quests/q138-evt-gc.dat differ diff --git a/data/quests/q138-evt-pc.bin b/data/quests/q138-evt-pc.bin new file mode 100755 index 0000000..e4cd29b Binary files /dev/null and b/data/quests/q138-evt-pc.bin differ diff --git a/data/quests/q138-evt-pc.dat b/data/quests/q138-evt-pc.dat new file mode 100755 index 0000000..8c147ef Binary files /dev/null and b/data/quests/q138-evt-pc.dat differ diff --git a/data/quests/q140-evt-pc.bin b/data/quests/q140-evt-pc.bin new file mode 100755 index 0000000..f1f08b8 Binary files /dev/null and b/data/quests/q140-evt-pc.bin differ diff --git a/data/quests/q140-evt-pc.dat b/data/quests/q140-evt-pc.dat new file mode 100755 index 0000000..c9c6ac8 Binary files /dev/null and b/data/quests/q140-evt-pc.dat differ diff --git a/data/quests/q141-vr-bb.bin b/data/quests/q141-vr-bb.bin new file mode 100755 index 0000000..b11dfa5 Binary files /dev/null and b/data/quests/q141-vr-bb.bin differ diff --git a/data/quests/q141-vr-bb.dat b/data/quests/q141-vr-bb.dat new file mode 100755 index 0000000..aa88de7 Binary files /dev/null and b/data/quests/q141-vr-bb.dat differ diff --git a/data/quests/q141-vr-gc.bin b/data/quests/q141-vr-gc.bin new file mode 100755 index 0000000..2fae9f8 Binary files /dev/null and b/data/quests/q141-vr-gc.bin differ diff --git a/data/quests/q141-vr-gc.dat b/data/quests/q141-vr-gc.dat new file mode 100755 index 0000000..836b303 Binary files /dev/null and b/data/quests/q141-vr-gc.dat differ diff --git a/data/quests/q142-vr-bb.bin b/data/quests/q142-vr-bb.bin new file mode 100755 index 0000000..3295699 Binary files /dev/null and b/data/quests/q142-vr-bb.bin differ diff --git a/data/quests/q142-vr-bb.dat b/data/quests/q142-vr-bb.dat new file mode 100755 index 0000000..6c0a0d8 Binary files /dev/null and b/data/quests/q142-vr-bb.dat differ diff --git a/data/quests/q201-evt-bb.bin b/data/quests/q201-evt-bb.bin new file mode 100755 index 0000000..00e86ac Binary files /dev/null and b/data/quests/q201-evt-bb.bin differ diff --git a/data/quests/q201-evt-bb.dat b/data/quests/q201-evt-bb.dat new file mode 100755 index 0000000..845dfb6 Binary files /dev/null and b/data/quests/q201-evt-bb.dat differ diff --git a/data/quests/q201-evt-gc.bin b/data/quests/q201-evt-gc.bin new file mode 100755 index 0000000..9195658 Binary files /dev/null and b/data/quests/q201-evt-gc.bin differ diff --git a/data/quests/q201-evt-gc.dat b/data/quests/q201-evt-gc.dat new file mode 100755 index 0000000..557584e Binary files /dev/null and b/data/quests/q201-evt-gc.dat differ diff --git a/data/quests/q202-shp-gc.bin b/data/quests/q202-shp-gc.bin new file mode 100755 index 0000000..7ff81d6 Binary files /dev/null and b/data/quests/q202-shp-gc.bin differ diff --git a/data/quests/q202-shp-gc.dat b/data/quests/q202-shp-gc.dat new file mode 100755 index 0000000..fb59ae5 Binary files /dev/null and b/data/quests/q202-shp-gc.dat differ diff --git a/data/quests/q203-vr-bb.bin b/data/quests/q203-vr-bb.bin new file mode 100755 index 0000000..a365aed Binary files /dev/null and b/data/quests/q203-vr-bb.bin differ diff --git a/data/quests/q203-vr-bb.dat b/data/quests/q203-vr-bb.dat new file mode 100755 index 0000000..8a59dcf Binary files /dev/null and b/data/quests/q203-vr-bb.dat differ diff --git a/data/quests/q203-vr-gc.bin b/data/quests/q203-vr-gc.bin new file mode 100755 index 0000000..218370a Binary files /dev/null and b/data/quests/q203-vr-gc.bin differ diff --git a/data/quests/q203-vr-gc.dat b/data/quests/q203-vr-gc.dat new file mode 100755 index 0000000..ba41da3 Binary files /dev/null and b/data/quests/q203-vr-gc.dat differ diff --git a/data/quests/q204-shp-gc.bin b/data/quests/q204-shp-gc.bin new file mode 100755 index 0000000..b44a618 Binary files /dev/null and b/data/quests/q204-shp-gc.bin differ diff --git a/data/quests/q204-shp-gc.dat b/data/quests/q204-shp-gc.dat new file mode 100755 index 0000000..30efd33 Binary files /dev/null and b/data/quests/q204-shp-gc.dat differ diff --git a/data/quests/q213-evt-gc.bin b/data/quests/q213-evt-gc.bin new file mode 100755 index 0000000..41f76ec Binary files /dev/null and b/data/quests/q213-evt-gc.bin differ diff --git a/data/quests/q213-evt-gc.dat b/data/quests/q213-evt-gc.dat new file mode 100755 index 0000000..f5e11b2 Binary files /dev/null and b/data/quests/q213-evt-gc.dat differ diff --git a/data/quests/q219-shp-bb.bin b/data/quests/q219-shp-bb.bin new file mode 100755 index 0000000..fe689c1 Binary files /dev/null and b/data/quests/q219-shp-bb.bin differ diff --git a/data/quests/q219-shp-bb.dat b/data/quests/q219-shp-bb.dat new file mode 100755 index 0000000..894d30d Binary files /dev/null and b/data/quests/q219-shp-bb.dat differ diff --git a/data/quests/q220-evt-gc.bin b/data/quests/q220-evt-gc.bin new file mode 100755 index 0000000..29e91ca Binary files /dev/null and b/data/quests/q220-evt-gc.bin differ diff --git a/data/quests/q220-evt-gc.dat b/data/quests/q220-evt-gc.dat new file mode 100755 index 0000000..9c3e5a4 Binary files /dev/null and b/data/quests/q220-evt-gc.dat differ diff --git a/data/quests/q222-vr-gc.bin b/data/quests/q222-vr-gc.bin new file mode 100755 index 0000000..169aa77 Binary files /dev/null and b/data/quests/q222-vr-gc.bin differ diff --git a/data/quests/q222-vr-gc.dat b/data/quests/q222-vr-gc.dat new file mode 100755 index 0000000..90f4623 Binary files /dev/null and b/data/quests/q222-vr-gc.dat differ diff --git a/data/quests/q223-twr-bb.bin b/data/quests/q223-twr-bb.bin new file mode 100755 index 0000000..5182f89 Binary files /dev/null and b/data/quests/q223-twr-bb.bin differ diff --git a/data/quests/q223-twr-bb.dat b/data/quests/q223-twr-bb.dat new file mode 100755 index 0000000..faf2594 Binary files /dev/null and b/data/quests/q223-twr-bb.dat differ diff --git a/data/quests/q223-twr-gc.bin b/data/quests/q223-twr-gc.bin new file mode 100755 index 0000000..ef10833 Binary files /dev/null and b/data/quests/q223-twr-gc.bin differ diff --git a/data/quests/q223-twr-gc.dat b/data/quests/q223-twr-gc.dat new file mode 100755 index 0000000..1807f49 Binary files /dev/null and b/data/quests/q223-twr-gc.dat differ diff --git a/data/quests/q224-twr-bb.bin b/data/quests/q224-twr-bb.bin new file mode 100755 index 0000000..1767e9e Binary files /dev/null and b/data/quests/q224-twr-bb.bin differ diff --git a/data/quests/q224-twr-bb.dat b/data/quests/q224-twr-bb.dat new file mode 100755 index 0000000..8938f18 Binary files /dev/null and b/data/quests/q224-twr-bb.dat differ diff --git a/data/quests/q224-twr-gc.bin b/data/quests/q224-twr-gc.bin new file mode 100755 index 0000000..d5d93f4 Binary files /dev/null and b/data/quests/q224-twr-gc.bin differ diff --git a/data/quests/q224-twr-gc.dat b/data/quests/q224-twr-gc.dat new file mode 100755 index 0000000..ad22a10 Binary files /dev/null and b/data/quests/q224-twr-gc.dat differ diff --git a/data/quests/q230-vr-gc.bin b/data/quests/q230-vr-gc.bin new file mode 100755 index 0000000..551d882 Binary files /dev/null and b/data/quests/q230-vr-gc.bin differ diff --git a/data/quests/q230-vr-gc.dat b/data/quests/q230-vr-gc.dat new file mode 100755 index 0000000..3ab34e7 Binary files /dev/null and b/data/quests/q230-vr-gc.dat differ diff --git a/data/quests/q231-vr-gc.bin b/data/quests/q231-vr-gc.bin new file mode 100755 index 0000000..ecc461b Binary files /dev/null and b/data/quests/q231-vr-gc.bin differ diff --git a/data/quests/q231-vr-gc.dat b/data/quests/q231-vr-gc.dat new file mode 100755 index 0000000..d6aea73 Binary files /dev/null and b/data/quests/q231-vr-gc.dat differ diff --git a/data/quests/q232-evt-gc.bin b/data/quests/q232-evt-gc.bin new file mode 100755 index 0000000..7d7eba8 Binary files /dev/null and b/data/quests/q232-evt-gc.bin differ diff --git a/data/quests/q232-evt-gc.dat b/data/quests/q232-evt-gc.dat new file mode 100755 index 0000000..c1f7818 Binary files /dev/null and b/data/quests/q232-evt-gc.dat differ diff --git a/data/quests/q233-ext-bb.bin b/data/quests/q233-ext-bb.bin new file mode 100755 index 0000000..524992a Binary files /dev/null and b/data/quests/q233-ext-bb.bin differ diff --git a/data/quests/q233-ext-bb.dat b/data/quests/q233-ext-bb.dat new file mode 100755 index 0000000..80cda09 Binary files /dev/null and b/data/quests/q233-ext-bb.dat differ diff --git a/data/quests/q233-ext-gc.bin b/data/quests/q233-ext-gc.bin new file mode 100755 index 0000000..870e881 Binary files /dev/null and b/data/quests/q233-ext-gc.bin differ diff --git a/data/quests/q233-ext-gc.dat b/data/quests/q233-ext-gc.dat new file mode 100755 index 0000000..4a80133 Binary files /dev/null and b/data/quests/q233-ext-gc.dat differ diff --git a/data/quests/q234-ext-bb.bin b/data/quests/q234-ext-bb.bin new file mode 100755 index 0000000..5a9ee82 Binary files /dev/null and b/data/quests/q234-ext-bb.bin differ diff --git a/data/quests/q234-ext-bb.dat b/data/quests/q234-ext-bb.dat new file mode 100755 index 0000000..a88a6fb Binary files /dev/null and b/data/quests/q234-ext-bb.dat differ diff --git a/data/quests/q234-ext-gc.bin b/data/quests/q234-ext-gc.bin new file mode 100755 index 0000000..9904ab1 Binary files /dev/null and b/data/quests/q234-ext-gc.bin differ diff --git a/data/quests/q234-ext-gc.dat b/data/quests/q234-ext-gc.dat new file mode 100755 index 0000000..75b8e20 Binary files /dev/null and b/data/quests/q234-ext-gc.dat differ diff --git a/data/quests/q235-ext-bb.bin b/data/quests/q235-ext-bb.bin new file mode 100755 index 0000000..3edb755 Binary files /dev/null and b/data/quests/q235-ext-bb.bin differ diff --git a/data/quests/q235-ext-bb.dat b/data/quests/q235-ext-bb.dat new file mode 100755 index 0000000..9818bcf Binary files /dev/null and b/data/quests/q235-ext-bb.dat differ diff --git a/data/quests/q235-ext-gc.bin b/data/quests/q235-ext-gc.bin new file mode 100755 index 0000000..39a0596 Binary files /dev/null and b/data/quests/q235-ext-gc.bin differ diff --git a/data/quests/q235-ext-gc.dat b/data/quests/q235-ext-gc.dat new file mode 100755 index 0000000..3777b25 Binary files /dev/null and b/data/quests/q235-ext-gc.dat differ diff --git a/data/quests/q236-ext-bb.bin b/data/quests/q236-ext-bb.bin new file mode 100755 index 0000000..aa40614 Binary files /dev/null and b/data/quests/q236-ext-bb.bin differ diff --git a/data/quests/q236-ext-bb.dat b/data/quests/q236-ext-bb.dat new file mode 100755 index 0000000..255a6ed Binary files /dev/null and b/data/quests/q236-ext-bb.dat differ diff --git a/data/quests/q236-ext-gc.bin b/data/quests/q236-ext-gc.bin new file mode 100755 index 0000000..4d0d032 Binary files /dev/null and b/data/quests/q236-ext-gc.bin differ diff --git a/data/quests/q236-ext-gc.dat b/data/quests/q236-ext-gc.dat new file mode 100755 index 0000000..8c9a066 Binary files /dev/null and b/data/quests/q236-ext-gc.dat differ diff --git a/data/quests/q237-vr-gc.bin b/data/quests/q237-vr-gc.bin new file mode 100755 index 0000000..2d7c66f Binary files /dev/null and b/data/quests/q237-vr-gc.bin differ diff --git a/data/quests/q237-vr-gc.dat b/data/quests/q237-vr-gc.dat new file mode 100755 index 0000000..4324d66 Binary files /dev/null and b/data/quests/q237-vr-gc.dat differ diff --git a/data/quests/q238-vr-gc.bin b/data/quests/q238-vr-gc.bin new file mode 100755 index 0000000..897bc32 Binary files /dev/null and b/data/quests/q238-vr-gc.bin differ diff --git a/data/quests/q238-vr-gc.dat b/data/quests/q238-vr-gc.dat new file mode 100755 index 0000000..ed5a4bc Binary files /dev/null and b/data/quests/q238-vr-gc.dat differ diff --git a/data/quests/q239-evt-gc.bin b/data/quests/q239-evt-gc.bin new file mode 100755 index 0000000..f138301 Binary files /dev/null and b/data/quests/q239-evt-gc.bin differ diff --git a/data/quests/q239-evt-gc.dat b/data/quests/q239-evt-gc.dat new file mode 100755 index 0000000..f77472a Binary files /dev/null and b/data/quests/q239-evt-gc.dat differ diff --git a/data/quests/q335-evt-gc.bin b/data/quests/q335-evt-gc.bin new file mode 100755 index 0000000..793ad21 Binary files /dev/null and b/data/quests/q335-evt-gc.bin differ diff --git a/data/quests/q335-evt-gc.dat b/data/quests/q335-evt-gc.dat new file mode 100755 index 0000000..e2d35b7 Binary files /dev/null and b/data/quests/q335-evt-gc.dat differ diff --git a/data/quests/q401-gov-bb.bin b/data/quests/q401-gov-bb.bin new file mode 100755 index 0000000..205541d Binary files /dev/null and b/data/quests/q401-gov-bb.bin differ diff --git a/data/quests/q401-gov-bb.dat b/data/quests/q401-gov-bb.dat new file mode 100755 index 0000000..502f017 Binary files /dev/null and b/data/quests/q401-gov-bb.dat differ diff --git a/data/quests/q402-gov-bb.bin b/data/quests/q402-gov-bb.bin new file mode 100755 index 0000000..98b27bd Binary files /dev/null and b/data/quests/q402-gov-bb.bin differ diff --git a/data/quests/q402-gov-bb.dat b/data/quests/q402-gov-bb.dat new file mode 100755 index 0000000..33f4546 Binary files /dev/null and b/data/quests/q402-gov-bb.dat differ diff --git a/data/quests/q403-gov-bb.bin b/data/quests/q403-gov-bb.bin new file mode 100755 index 0000000..6482218 Binary files /dev/null and b/data/quests/q403-gov-bb.bin differ diff --git a/data/quests/q403-gov-bb.dat b/data/quests/q403-gov-bb.dat new file mode 100755 index 0000000..d3a0e89 Binary files /dev/null and b/data/quests/q403-gov-bb.dat differ diff --git a/data/quests/q404-gov-bb.bin b/data/quests/q404-gov-bb.bin new file mode 100755 index 0000000..a38df4b Binary files /dev/null and b/data/quests/q404-gov-bb.bin differ diff --git a/data/quests/q404-gov-bb.dat b/data/quests/q404-gov-bb.dat new file mode 100755 index 0000000..1899074 Binary files /dev/null and b/data/quests/q404-gov-bb.dat differ diff --git a/data/quests/q405-gov-bb.bin b/data/quests/q405-gov-bb.bin new file mode 100755 index 0000000..f9299c8 Binary files /dev/null and b/data/quests/q405-gov-bb.bin differ diff --git a/data/quests/q405-gov-bb.dat b/data/quests/q405-gov-bb.dat new file mode 100755 index 0000000..a40b731 Binary files /dev/null and b/data/quests/q405-gov-bb.dat differ diff --git a/data/quests/q406-gov-bb.bin b/data/quests/q406-gov-bb.bin new file mode 100755 index 0000000..f5bea26 Binary files /dev/null and b/data/quests/q406-gov-bb.bin differ diff --git a/data/quests/q406-gov-bb.dat b/data/quests/q406-gov-bb.dat new file mode 100755 index 0000000..49972b8 Binary files /dev/null and b/data/quests/q406-gov-bb.dat differ diff --git a/data/quests/q407-gov-bb.bin b/data/quests/q407-gov-bb.bin new file mode 100755 index 0000000..47e929e Binary files /dev/null and b/data/quests/q407-gov-bb.bin differ diff --git a/data/quests/q407-gov-bb.dat b/data/quests/q407-gov-bb.dat new file mode 100755 index 0000000..3070bd9 Binary files /dev/null and b/data/quests/q407-gov-bb.dat differ diff --git a/data/quests/q408-gov-bb.bin b/data/quests/q408-gov-bb.bin new file mode 100755 index 0000000..a8a805f Binary files /dev/null and b/data/quests/q408-gov-bb.bin differ diff --git a/data/quests/q408-gov-bb.dat b/data/quests/q408-gov-bb.dat new file mode 100755 index 0000000..3f33744 Binary files /dev/null and b/data/quests/q408-gov-bb.dat differ diff --git a/data/quests/q409-gov-bb.bin b/data/quests/q409-gov-bb.bin new file mode 100755 index 0000000..622cc04 Binary files /dev/null and b/data/quests/q409-gov-bb.bin differ diff --git a/data/quests/q409-gov-bb.dat b/data/quests/q409-gov-bb.dat new file mode 100755 index 0000000..5b5318e Binary files /dev/null and b/data/quests/q409-gov-bb.dat differ diff --git a/data/quests/q410-gov-bb.bin b/data/quests/q410-gov-bb.bin new file mode 100755 index 0000000..cc574f6 Binary files /dev/null and b/data/quests/q410-gov-bb.bin differ diff --git a/data/quests/q410-gov-bb.dat b/data/quests/q410-gov-bb.dat new file mode 100755 index 0000000..0172976 Binary files /dev/null and b/data/quests/q410-gov-bb.dat differ diff --git a/data/quests/q411-gov-bb.bin b/data/quests/q411-gov-bb.bin new file mode 100755 index 0000000..f4c1317 Binary files /dev/null and b/data/quests/q411-gov-bb.bin differ diff --git a/data/quests/q411-gov-bb.dat b/data/quests/q411-gov-bb.dat new file mode 100755 index 0000000..9f1ff0d Binary files /dev/null and b/data/quests/q411-gov-bb.dat differ diff --git a/data/quests/q412-gov-bb.bin b/data/quests/q412-gov-bb.bin new file mode 100755 index 0000000..fdefdbe Binary files /dev/null and b/data/quests/q412-gov-bb.bin differ diff --git a/data/quests/q412-gov-bb.dat b/data/quests/q412-gov-bb.dat new file mode 100755 index 0000000..e24959a Binary files /dev/null and b/data/quests/q412-gov-bb.dat differ diff --git a/data/quests/q413-gov-bb.bin b/data/quests/q413-gov-bb.bin new file mode 100755 index 0000000..a0e365e Binary files /dev/null and b/data/quests/q413-gov-bb.bin differ diff --git a/data/quests/q413-gov-bb.dat b/data/quests/q413-gov-bb.dat new file mode 100755 index 0000000..91850ce Binary files /dev/null and b/data/quests/q413-gov-bb.dat differ diff --git a/data/quests/q414-gov-bb.bin b/data/quests/q414-gov-bb.bin new file mode 100755 index 0000000..69b8a33 Binary files /dev/null and b/data/quests/q414-gov-bb.bin differ diff --git a/data/quests/q414-gov-bb.dat b/data/quests/q414-gov-bb.dat new file mode 100755 index 0000000..e89866f Binary files /dev/null and b/data/quests/q414-gov-bb.dat differ diff --git a/data/quests/q415-gov-bb.bin b/data/quests/q415-gov-bb.bin new file mode 100755 index 0000000..a1c713e Binary files /dev/null and b/data/quests/q415-gov-bb.bin differ diff --git a/data/quests/q415-gov-bb.dat b/data/quests/q415-gov-bb.dat new file mode 100755 index 0000000..c8ff0be Binary files /dev/null and b/data/quests/q415-gov-bb.dat differ diff --git a/data/quests/q451-gov-bb.bin b/data/quests/q451-gov-bb.bin new file mode 100755 index 0000000..cc9ee2c Binary files /dev/null and b/data/quests/q451-gov-bb.bin differ diff --git a/data/quests/q451-gov-bb.dat b/data/quests/q451-gov-bb.dat new file mode 100755 index 0000000..43def1f Binary files /dev/null and b/data/quests/q451-gov-bb.dat differ diff --git a/data/quests/q452-gov-bb.bin b/data/quests/q452-gov-bb.bin new file mode 100755 index 0000000..9ad205d Binary files /dev/null and b/data/quests/q452-gov-bb.bin differ diff --git a/data/quests/q452-gov-bb.dat b/data/quests/q452-gov-bb.dat new file mode 100755 index 0000000..142871f Binary files /dev/null and b/data/quests/q452-gov-bb.dat differ diff --git a/data/quests/q453-gov-bb.bin b/data/quests/q453-gov-bb.bin new file mode 100755 index 0000000..6326b12 Binary files /dev/null and b/data/quests/q453-gov-bb.bin differ diff --git a/data/quests/q453-gov-bb.dat b/data/quests/q453-gov-bb.dat new file mode 100755 index 0000000..f95dc7f Binary files /dev/null and b/data/quests/q453-gov-bb.dat differ diff --git a/data/quests/q454-gov-bb.bin b/data/quests/q454-gov-bb.bin new file mode 100755 index 0000000..ac0a283 Binary files /dev/null and b/data/quests/q454-gov-bb.bin differ diff --git a/data/quests/q454-gov-bb.dat b/data/quests/q454-gov-bb.dat new file mode 100755 index 0000000..a056351 Binary files /dev/null and b/data/quests/q454-gov-bb.dat differ diff --git a/data/quests/q455-gov-bb.bin b/data/quests/q455-gov-bb.bin new file mode 100755 index 0000000..6f16434 Binary files /dev/null and b/data/quests/q455-gov-bb.bin differ diff --git a/data/quests/q455-gov-bb.dat b/data/quests/q455-gov-bb.dat new file mode 100755 index 0000000..b17fdc4 Binary files /dev/null and b/data/quests/q455-gov-bb.dat differ diff --git a/data/quests/q456-gov-bb.bin b/data/quests/q456-gov-bb.bin new file mode 100755 index 0000000..d2a76f2 Binary files /dev/null and b/data/quests/q456-gov-bb.bin differ diff --git a/data/quests/q456-gov-bb.dat b/data/quests/q456-gov-bb.dat new file mode 100755 index 0000000..b0a3ec5 Binary files /dev/null and b/data/quests/q456-gov-bb.dat differ diff --git a/data/quests/q457-gov-bb.bin b/data/quests/q457-gov-bb.bin new file mode 100755 index 0000000..ac7a613 Binary files /dev/null and b/data/quests/q457-gov-bb.bin differ diff --git a/data/quests/q457-gov-bb.dat b/data/quests/q457-gov-bb.dat new file mode 100755 index 0000000..e709170 Binary files /dev/null and b/data/quests/q457-gov-bb.dat differ diff --git a/data/quests/q458-gov-bb.bin b/data/quests/q458-gov-bb.bin new file mode 100755 index 0000000..f73cf42 Binary files /dev/null and b/data/quests/q458-gov-bb.bin differ diff --git a/data/quests/q458-gov-bb.dat b/data/quests/q458-gov-bb.dat new file mode 100755 index 0000000..67a705d Binary files /dev/null and b/data/quests/q458-gov-bb.dat differ diff --git a/data/quests/q459-gov-bb.bin b/data/quests/q459-gov-bb.bin new file mode 100755 index 0000000..1bac825 Binary files /dev/null and b/data/quests/q459-gov-bb.bin differ diff --git a/data/quests/q459-gov-bb.dat b/data/quests/q459-gov-bb.dat new file mode 100755 index 0000000..b0075d5 Binary files /dev/null and b/data/quests/q459-gov-bb.dat differ diff --git a/data/quests/q460-gov-bb.bin b/data/quests/q460-gov-bb.bin new file mode 100755 index 0000000..ca607d7 Binary files /dev/null and b/data/quests/q460-gov-bb.bin differ diff --git a/data/quests/q460-gov-bb.dat b/data/quests/q460-gov-bb.dat new file mode 100755 index 0000000..f658a46 Binary files /dev/null and b/data/quests/q460-gov-bb.dat differ diff --git a/data/quests/q461-gov-bb.bin b/data/quests/q461-gov-bb.bin new file mode 100755 index 0000000..6933846 Binary files /dev/null and b/data/quests/q461-gov-bb.bin differ diff --git a/data/quests/q461-gov-bb.dat b/data/quests/q461-gov-bb.dat new file mode 100755 index 0000000..8ecf4cd Binary files /dev/null and b/data/quests/q461-gov-bb.dat differ diff --git a/data/quests/q462-gov-bb.bin b/data/quests/q462-gov-bb.bin new file mode 100755 index 0000000..0d87c49 Binary files /dev/null and b/data/quests/q462-gov-bb.bin differ diff --git a/data/quests/q462-gov-bb.dat b/data/quests/q462-gov-bb.dat new file mode 100755 index 0000000..7764db8 Binary files /dev/null and b/data/quests/q462-gov-bb.dat differ diff --git a/data/quests/q463-gov-bb.bin b/data/quests/q463-gov-bb.bin new file mode 100755 index 0000000..4c73531 Binary files /dev/null and b/data/quests/q463-gov-bb.bin differ diff --git a/data/quests/q463-gov-bb.dat b/data/quests/q463-gov-bb.dat new file mode 100755 index 0000000..872c014 Binary files /dev/null and b/data/quests/q463-gov-bb.dat differ diff --git a/data/quests/q464-gov-bb.bin b/data/quests/q464-gov-bb.bin new file mode 100755 index 0000000..89d4f01 Binary files /dev/null and b/data/quests/q464-gov-bb.bin differ diff --git a/data/quests/q464-gov-bb.dat b/data/quests/q464-gov-bb.dat new file mode 100755 index 0000000..54d687f Binary files /dev/null and b/data/quests/q464-gov-bb.dat differ diff --git a/data/quests/q465-gov-bb.bin b/data/quests/q465-gov-bb.bin new file mode 100755 index 0000000..3325429 Binary files /dev/null and b/data/quests/q465-gov-bb.bin differ diff --git a/data/quests/q465-gov-bb.dat b/data/quests/q465-gov-bb.dat new file mode 100755 index 0000000..d10e47b Binary files /dev/null and b/data/quests/q465-gov-bb.dat differ diff --git a/data/quests/q466-gov-bb.bin b/data/quests/q466-gov-bb.bin new file mode 100755 index 0000000..f80b3a4 Binary files /dev/null and b/data/quests/q466-gov-bb.bin differ diff --git a/data/quests/q466-gov-bb.dat b/data/quests/q466-gov-bb.dat new file mode 100755 index 0000000..b7b65a7 Binary files /dev/null and b/data/quests/q466-gov-bb.dat differ diff --git a/data/quests/q467-gov-bb.bin b/data/quests/q467-gov-bb.bin new file mode 100755 index 0000000..d4dd206 Binary files /dev/null and b/data/quests/q467-gov-bb.bin differ diff --git a/data/quests/q467-gov-bb.dat b/data/quests/q467-gov-bb.dat new file mode 100755 index 0000000..39fb198 Binary files /dev/null and b/data/quests/q467-gov-bb.dat differ diff --git a/data/quests/q468-gov-bb.bin b/data/quests/q468-gov-bb.bin new file mode 100755 index 0000000..db3e9d9 Binary files /dev/null and b/data/quests/q468-gov-bb.bin differ diff --git a/data/quests/q468-gov-bb.dat b/data/quests/q468-gov-bb.dat new file mode 100755 index 0000000..39e366d Binary files /dev/null and b/data/quests/q468-gov-bb.dat differ diff --git a/data/quests/q496-evt-gc.bin b/data/quests/q496-evt-gc.bin new file mode 100755 index 0000000..a56b01f Binary files /dev/null and b/data/quests/q496-evt-gc.bin differ diff --git a/data/quests/q496-evt-gc.dat b/data/quests/q496-evt-gc.dat new file mode 100755 index 0000000..3d2b23d Binary files /dev/null and b/data/quests/q496-evt-gc.dat differ diff --git a/data/quests/q701-gov-bb.bin b/data/quests/q701-gov-bb.bin new file mode 100755 index 0000000..df3fb76 Binary files /dev/null and b/data/quests/q701-gov-bb.bin differ diff --git a/data/quests/q701-gov-bb.dat b/data/quests/q701-gov-bb.dat new file mode 100755 index 0000000..1e9c893 Binary files /dev/null and b/data/quests/q701-gov-bb.dat differ diff --git a/data/quests/q702-gov-bb.bin b/data/quests/q702-gov-bb.bin new file mode 100755 index 0000000..0af2450 Binary files /dev/null and b/data/quests/q702-gov-bb.bin differ diff --git a/data/quests/q702-gov-bb.dat b/data/quests/q702-gov-bb.dat new file mode 100755 index 0000000..facbd71 Binary files /dev/null and b/data/quests/q702-gov-bb.dat differ diff --git a/data/quests/q703-gov-bb.bin b/data/quests/q703-gov-bb.bin new file mode 100755 index 0000000..d7bed9c Binary files /dev/null and b/data/quests/q703-gov-bb.bin differ diff --git a/data/quests/q703-gov-bb.dat b/data/quests/q703-gov-bb.dat new file mode 100755 index 0000000..a6beab9 Binary files /dev/null and b/data/quests/q703-gov-bb.dat differ diff --git a/data/quests/q704-gov-bb.bin b/data/quests/q704-gov-bb.bin new file mode 100755 index 0000000..3c4d2da Binary files /dev/null and b/data/quests/q704-gov-bb.bin differ diff --git a/data/quests/q704-gov-bb.dat b/data/quests/q704-gov-bb.dat new file mode 100755 index 0000000..9697bec Binary files /dev/null and b/data/quests/q704-gov-bb.dat differ diff --git a/data/quests/q705-gov-bb.bin b/data/quests/q705-gov-bb.bin new file mode 100755 index 0000000..75ee30d Binary files /dev/null and b/data/quests/q705-gov-bb.bin differ diff --git a/data/quests/q705-gov-bb.dat b/data/quests/q705-gov-bb.dat new file mode 100755 index 0000000..7391f3f Binary files /dev/null and b/data/quests/q705-gov-bb.dat differ diff --git a/data/quests/q706-gov-bb.bin b/data/quests/q706-gov-bb.bin new file mode 100755 index 0000000..aaaf3c9 Binary files /dev/null and b/data/quests/q706-gov-bb.bin differ diff --git a/data/quests/q706-gov-bb.dat b/data/quests/q706-gov-bb.dat new file mode 100755 index 0000000..b80bad7 Binary files /dev/null and b/data/quests/q706-gov-bb.dat differ diff --git a/data/quests/q707-gov-bb.bin b/data/quests/q707-gov-bb.bin new file mode 100755 index 0000000..80c2693 Binary files /dev/null and b/data/quests/q707-gov-bb.bin differ diff --git a/data/quests/q707-gov-bb.dat b/data/quests/q707-gov-bb.dat new file mode 100755 index 0000000..54ebb5a Binary files /dev/null and b/data/quests/q707-gov-bb.dat differ diff --git a/data/quests/q708-gov-bb.bin b/data/quests/q708-gov-bb.bin new file mode 100755 index 0000000..a2a908b Binary files /dev/null and b/data/quests/q708-gov-bb.bin differ diff --git a/data/quests/q708-gov-bb.dat b/data/quests/q708-gov-bb.dat new file mode 100755 index 0000000..7c96dce Binary files /dev/null and b/data/quests/q708-gov-bb.dat differ diff --git a/data/quests/q709-gov-bb.bin b/data/quests/q709-gov-bb.bin new file mode 100755 index 0000000..4740ca4 Binary files /dev/null and b/data/quests/q709-gov-bb.bin differ diff --git a/data/quests/q709-gov-bb.dat b/data/quests/q709-gov-bb.dat new file mode 100755 index 0000000..132fbd9 Binary files /dev/null and b/data/quests/q709-gov-bb.dat differ diff --git a/data/quests/q811-ext-bb.bin b/data/quests/q811-ext-bb.bin new file mode 100755 index 0000000..19fca15 Binary files /dev/null and b/data/quests/q811-ext-bb.bin differ diff --git a/data/quests/q811-ext-bb.dat b/data/quests/q811-ext-bb.dat new file mode 100755 index 0000000..66d32bb Binary files /dev/null and b/data/quests/q811-ext-bb.dat differ diff --git a/data/quests/q812-ext-bb.bin b/data/quests/q812-ext-bb.bin new file mode 100755 index 0000000..d41c4a1 Binary files /dev/null and b/data/quests/q812-ext-bb.bin differ diff --git a/data/quests/q812-ext-bb.dat b/data/quests/q812-ext-bb.dat new file mode 100755 index 0000000..eb59e9e Binary files /dev/null and b/data/quests/q812-ext-bb.dat differ diff --git a/data/quests/q813-ext-bb.bin b/data/quests/q813-ext-bb.bin new file mode 100755 index 0000000..9415647 Binary files /dev/null and b/data/quests/q813-ext-bb.bin differ diff --git a/data/quests/q813-ext-bb.dat b/data/quests/q813-ext-bb.dat new file mode 100755 index 0000000..1e621f9 Binary files /dev/null and b/data/quests/q813-ext-bb.dat differ diff --git a/data/quests/q814-ext-bb.bin b/data/quests/q814-ext-bb.bin new file mode 100755 index 0000000..31a9888 Binary files /dev/null and b/data/quests/q814-ext-bb.bin differ diff --git a/data/quests/q814-ext-bb.dat b/data/quests/q814-ext-bb.dat new file mode 100755 index 0000000..36330f0 Binary files /dev/null and b/data/quests/q814-ext-bb.dat differ diff --git a/data/quests/q815-ext-bb.bin b/data/quests/q815-ext-bb.bin new file mode 100755 index 0000000..9e3c158 Binary files /dev/null and b/data/quests/q815-ext-bb.bin differ diff --git a/data/quests/q815-ext-bb.dat b/data/quests/q815-ext-bb.dat new file mode 100755 index 0000000..2e07667 Binary files /dev/null and b/data/quests/q815-ext-bb.dat differ diff --git a/data/quests/q999-shp-gc.bin b/data/quests/q999-shp-gc.bin new file mode 100755 index 0000000..abd8bb0 Binary files /dev/null and b/data/quests/q999-shp-gc.bin differ diff --git a/data/quests/q999-shp-gc.dat b/data/quests/q999-shp-gc.dat new file mode 100755 index 0000000..57547b4 Binary files /dev/null and b/data/quests/q999-shp-gc.dat differ diff --git a/src/entity/item/unit.rs b/src/entity/item/unit.rs index 061551a..fcf4f0b 100644 --- a/src/entity/item/unit.rs +++ b/src/entity/item/unit.rs @@ -368,14 +368,13 @@ impl Unit { pub fn from_bytes(data: [u8; 16]) -> Result { let u = UnitType::parse_type([data[0], data[1], data[2]]); if u.is_ok() { - let mut m = None; - match u16::from_le_bytes([data[7], data[8]]) { - 0x03 => m = Some(UnitModifier::PlusPlus), - 0x01 => m = Some(UnitModifier::Plus), - 0xFEFF => m = Some(UnitModifier::Minus), - 0xFFFF => m = Some(UnitModifier::MinusMinus), - _ => m = None, - } + let m = match u16::from_le_bytes([data[7], data[8]]) { + 0x03 => Some(UnitModifier::PlusPlus), + 0x01 => Some(UnitModifier::Plus), + 0xFEFF => Some(UnitModifier::Minus), + 0xFFFF => Some(UnitModifier::MinusMinus), + _ => None, + }; Ok(Unit{ unit: u.unwrap(), diff --git a/src/ship/map.rs b/src/ship/map.rs index 4953833..34bc1fd 100644 --- a/src/ship/map.rs +++ b/src/ship/map.rs @@ -524,112 +524,123 @@ impl MapVariant { } -fn objects_from_map_data(path: PathBuf, episode: &Episode, map_variant: &MapVariant) -> Vec> { - let mut cursor = File::open(path.clone()).unwrap(); +pub fn objects_from_stream(cursor: &mut impl Read, episode: &Episode, map_area: &MapArea) -> Vec> { let mut object_data = Vec::new(); - while let Ok(raw_object) = RawMapObject::from_byte_stream(&mut cursor) { - let object = MapObject::from_raw(raw_object.clone(), *episode, &map_variant.map); + while let Ok(raw_object) = RawMapObject::from_byte_stream(cursor) { + let object = MapObject::from_raw(raw_object.clone(), *episode, map_area); object_data.push(object.ok()); - } object_data } +fn objects_from_map_data(path: PathBuf, episode: &Episode, map_area: &MapArea) -> Vec> { + let mut cursor = File::open(path.clone()).unwrap(); + objects_from_stream(&mut cursor, episode, map_area) +} -fn enemy_data_from_map_data(map_variant: &MapVariant, episode: &Episode) -> Vec> { - let path = map_variant.dat_file(); - let mut cursor = File::open(path).unwrap(); +fn parse_enemy(episode: &Episode, map_area: &MapArea, raw_enemy: RawMapEnemy) -> Vec> { + let enemy = MapEnemy::from_raw(raw_enemy, episode, map_area); + enemy + .map_or(vec![None], |monster| { + let mut monsters = Vec::new(); + monsters.push(Some(monster)); + + match monster.monster { + MonsterType::Monest => { + for _ in 0..30 { + monsters.push(Some(MapEnemy::new(MonsterType::Mothmant, monster.map_area))); + } + }, + MonsterType::PofuillySlime => { + for _ in 0..4 { + monsters.push(Some(MapEnemy::new(MonsterType::PofuillySlime, monster.map_area))); + } + }, + MonsterType::PanArms => { + monsters.push(Some(MapEnemy::new(MonsterType::Hidoom, monster.map_area))); + monsters.push(Some(MapEnemy::new(MonsterType::Migium, monster.map_area))); + }, + MonsterType::SinowBeat => { + for _ in 0..4 { + monsters.push(Some(MapEnemy::new(MonsterType::SinowBeat, monster.map_area))); + } + }, + MonsterType::SinowGold => { + for _ in 0..4 { + monsters.push(Some(MapEnemy::new(MonsterType::SinowGold, monster.map_area))); + } + }, + MonsterType::Canane => { + for _ in 0..8 { + monsters.push(Some(MapEnemy::new(MonsterType::RingCanadine, monster.map_area))); + } + }, + MonsterType::ChaosSorcerer => { + monsters.push(Some(MapEnemy::new(MonsterType::BeeR, monster.map_area))); + monsters.push(Some(MapEnemy::new(MonsterType::BeeL, monster.map_area))); + }, + MonsterType::Bulclaw => { + for _ in 0..4 { + monsters.push(Some(MapEnemy::new(MonsterType::Claw, monster.map_area))); + } + }, + MonsterType::DeRolLe => { + for _ in 0..10 { + monsters.push(Some(MapEnemy::new(MonsterType::DeRolLeBody, monster.map_area))); + } + for _ in 0..9 { + monsters.push(Some(MapEnemy::new(MonsterType::DeRolLeMine, monster.map_area))); + } + }, + MonsterType::VolOptPartA => { + for _ in 0..6 { + monsters.push(Some(MapEnemy::new(MonsterType::VolOptPillar, monster.map_area))); + } + for _ in 0..24 { + monsters.push(Some(MapEnemy::new(MonsterType::VolOptMonitor, monster.map_area))); + } + for _ in 0..2 { + monsters.push(Some(MapEnemy::new(MonsterType::VolOptUnused, monster.map_area))); + } + monsters.push(Some(MapEnemy::new(MonsterType::VolOptAmp, monster.map_area))); + monsters.push(Some(MapEnemy::new(MonsterType::VolOptCore, monster.map_area))); + monsters.push(Some(MapEnemy::new(MonsterType::VolOptUnused, monster.map_area))); + }, + // TOOD: this cares about difficulty (theres an ult-specific darvant?) + MonsterType::DarkFalz => { + for _ in 0..509 { + monsters.push(Some(MapEnemy::new(MonsterType::Darvant, monster.map_area))); + } + monsters.push(Some(MapEnemy::new(MonsterType::DarkFalz3, monster.map_area))); + monsters.push(Some(MapEnemy::new(MonsterType::DarkFalz2, monster.map_area))); + monsters.push(Some(MapEnemy::new(MonsterType::DarkFalz1, monster.map_area))); + }, + _ => { + for _ in 0..raw_enemy.children { + monsters.push(Some(MapEnemy::new(monster.monster, monster.map_area))); + } + } + } + monsters + }) +} + + +pub fn enemy_data_from_stream(cursor: &mut impl Read, map_area: &MapArea, episode: &Episode) -> Vec> { let mut enemy_data = Vec::new(); - while let Ok(enemy) = RawMapEnemy::from_byte_stream(&mut cursor) { - let new_enemy = MapEnemy::from_raw(enemy, episode, &map_variant.map); - enemy_data.append(&mut new_enemy - .map_or(vec![None], |monster| { - let mut monsters = Vec::new(); - monsters.push(Some(monster)); - - match monster.monster { - MonsterType::Monest => { - for _ in 0..30 { - monsters.push(Some(MapEnemy::new(MonsterType::Mothmant, monster.map_area))); - } - }, - MonsterType::PofuillySlime => { - for _ in 0..4 { - monsters.push(Some(MapEnemy::new(MonsterType::PofuillySlime, monster.map_area))); - } - }, - MonsterType::PanArms => { - monsters.push(Some(MapEnemy::new(MonsterType::Hidoom, monster.map_area))); - monsters.push(Some(MapEnemy::new(MonsterType::Migium, monster.map_area))); - }, - MonsterType::SinowBeat => { - for _ in 0..4 { - monsters.push(Some(MapEnemy::new(MonsterType::SinowBeat, monster.map_area))); - } - }, - MonsterType::SinowGold => { - for _ in 0..4 { - monsters.push(Some(MapEnemy::new(MonsterType::SinowGold, monster.map_area))); - } - }, - MonsterType::Canane => { - for _ in 0..8 { - monsters.push(Some(MapEnemy::new(MonsterType::RingCanadine, monster.map_area))); - } - }, - MonsterType::ChaosSorcerer => { - monsters.push(Some(MapEnemy::new(MonsterType::BeeR, monster.map_area))); - monsters.push(Some(MapEnemy::new(MonsterType::BeeL, monster.map_area))); - }, - MonsterType::Bulclaw => { - for _ in 0..4 { - monsters.push(Some(MapEnemy::new(MonsterType::Claw, monster.map_area))); - } - }, - MonsterType::DeRolLe => { - for _ in 0..10 { - monsters.push(Some(MapEnemy::new(MonsterType::DeRolLeBody, monster.map_area))); - } - for _ in 0..9 { - monsters.push(Some(MapEnemy::new(MonsterType::DeRolLeMine, monster.map_area))); - } - }, - MonsterType::VolOptPartA => { - for _ in 0..6 { - monsters.push(Some(MapEnemy::new(MonsterType::VolOptPillar, monster.map_area))); - } - for _ in 0..24 { - monsters.push(Some(MapEnemy::new(MonsterType::VolOptMonitor, monster.map_area))); - } - for _ in 0..2 { - monsters.push(Some(MapEnemy::new(MonsterType::VolOptUnused, monster.map_area))); - } - monsters.push(Some(MapEnemy::new(MonsterType::VolOptAmp, monster.map_area))); - monsters.push(Some(MapEnemy::new(MonsterType::VolOptCore, monster.map_area))); - monsters.push(Some(MapEnemy::new(MonsterType::VolOptUnused, monster.map_area))); - }, - // TOOD: this cares about difficulty (theres an ult-specific darvant?) - MonsterType::DarkFalz => { - for _ in 0..509 { - monsters.push(Some(MapEnemy::new(MonsterType::Darvant, monster.map_area))); - } - monsters.push(Some(MapEnemy::new(MonsterType::DarkFalz3, monster.map_area))); - monsters.push(Some(MapEnemy::new(MonsterType::DarkFalz2, monster.map_area))); - monsters.push(Some(MapEnemy::new(MonsterType::DarkFalz1, monster.map_area))); - }, - _ => { - for _ in 0..enemy.children { - monsters.push(Some(MapEnemy::new(monster.monster, monster.map_area))); - } - } - } - monsters - })); + while let Ok(enemy) = RawMapEnemy::from_byte_stream(cursor) { + enemy_data.append(&mut parse_enemy(episode, map_area, enemy)); } enemy_data } +fn enemy_data_from_map_data(map_variant: &MapVariant, episode: &Episode) -> Vec> { + let path = map_variant.dat_file(); + let mut cursor = File::open(path).unwrap(); + enemy_data_from_stream(&mut cursor, &map_variant.map, episode) +} + #[derive(Error, Debug)] #[error("")] @@ -675,7 +686,7 @@ impl Maps { enemy_data }), object_data: map_variants.iter().map(|map_variant| { - objects_from_map_data(map_variant.obj_file().into(), &episode, &map_variant) + objects_from_map_data(map_variant.obj_file().into(), &episode, &map_variant.map) }).flatten().collect(), map_variants: map_variants, }; @@ -702,6 +713,11 @@ impl Maps { header }) } + + pub fn set_quest_data(&mut self, enemies: Vec>, objects: Vec>) { + self.enemy_data = enemies; + self.object_data = objects; + } } diff --git a/src/ship/mod.rs b/src/ship/mod.rs index c0b74b2..4a9aa5a 100644 --- a/src/ship/mod.rs +++ b/src/ship/mod.rs @@ -8,3 +8,4 @@ pub mod map; pub mod monster; pub mod drops; pub mod packet; +pub mod quests; diff --git a/src/ship/packet/builder/mod.rs b/src/ship/packet/builder/mod.rs index 0bcfc3c..2ce4837 100644 --- a/src/ship/packet/builder/mod.rs +++ b/src/ship/packet/builder/mod.rs @@ -1,6 +1,7 @@ pub mod lobby; pub mod message; pub mod room; +pub mod quest; use libpso::character::character::Inventory; use libpso::packet::ship::{PlayerHeader, PlayerInfo}; diff --git a/src/ship/packet/builder/quest.rs b/src/ship/packet/builder/quest.rs new file mode 100644 index 0000000..089fe56 --- /dev/null +++ b/src/ship/packet/builder/quest.rs @@ -0,0 +1,68 @@ +use crate::ship::quests::{Quest, QuestList}; +use crate::ship::ship::{QUEST_CATEGORY_MENU_ID, QUEST_SELECT_MENU_ID}; +use libpso::packet::ship::*; +use libpso::{utf8_to_array, utf8_to_utf16_array}; + + +pub fn quest_category_list(quests: &QuestList) -> QuestCategoryList { + let categories = quests.iter() + .enumerate() + .map(|(i, (category, _))| { + QuestCategory { + menu_id: QUEST_CATEGORY_MENU_ID, + option_id: i as u32, + name: utf8_to_utf16_array!(category.name, 32), + description: utf8_to_utf16_array!(category.description, 122), + } + }) + .collect(); + + QuestCategoryList { + quest_categories: categories, + } +} + +pub fn quest_list(category_id: u32, quests: &Vec) -> QuestOptionList { + let quest_entries = quests.iter() + .map(|quest| { + QuestEntry { + menu_id: QUEST_SELECT_MENU_ID, + category_id: category_id as u16, + quest_id: quest.id, + name: utf8_to_utf16_array!(quest.name, 32), + description: utf8_to_utf16_array!(quest.description, 122), + } + }) + .collect(); + + QuestOptionList { + quests: quest_entries, + } +} + +pub fn quest_detail(quest: &Quest) -> QuestDetail { + QuestDetail { + description: utf8_to_utf16_array!(quest.full_description, 288), + } +} + +pub fn quest_header(quest_menu_select: &QuestMenuSelect, data_blob: &[u8], suffix: &str) -> QuestHeader { + let path = format!("{}-{}.{}", quest_menu_select.category, quest_menu_select.quest, suffix); + QuestHeader { + unknown1: [0; 0x24], + filename: utf8_to_array!(path, 16), + length: data_blob.len() as u32, + name: utf8_to_array!(path, 16), + unknown2: [0; 8], + } +} + +pub fn quest_chunk(chunk_num: u32, filename: [u8; 16], blob: [u8; 0x400], blob_length: usize) -> QuestChunk { + QuestChunk { + chunk_num: chunk_num, + filename: filename, + blob: blob, + blob_length: blob_length as u32, + unknown: 0, + } +} diff --git a/src/ship/packet/handler/mod.rs b/src/ship/packet/handler/mod.rs index 2021066..192c8ab 100644 --- a/src/ship/packet/handler/mod.rs +++ b/src/ship/packet/handler/mod.rs @@ -5,3 +5,4 @@ pub mod lobby; pub mod message; pub mod room; pub mod settings; +pub mod quest; diff --git a/src/ship/packet/handler/quest.rs b/src/ship/packet/handler/quest.rs new file mode 100644 index 0000000..320a8bc --- /dev/null +++ b/src/ship/packet/handler/quest.rs @@ -0,0 +1,175 @@ +use std::io::{Cursor, Read, Seek, SeekFrom}; +use libpso::packet::ship::*; +use crate::common::serverstate::ClientId; +use crate::ship::ship::{SendShipPacket, ShipError, Clients, Rooms}; +use crate::ship::quests::QuestList; +use crate::ship::location::{ClientLocation, ClientLocationError}; +use crate::ship::packet::builder::quest; +use libpso::util::array_to_utf8; + +// TOOD: enum +enum QuestFileType { + Bin, + Dat +} + +fn parse_filename(filename_bytes: &[u8; 16]) -> Result<(u16, u16, QuestFileType), ShipError> { + let filename = array_to_utf8(*filename_bytes).map_err(|_| ShipError::InvalidQuestFilename("NOT UTF8".to_string()))?; + let (filename, suffix) = { + let mut s = filename.splitn(2, '.'); + (s.next().ok_or(ShipError::InvalidQuestFilename(filename.to_owned()))?, + s.next().ok_or(ShipError::InvalidQuestFilename(filename.to_owned()))?) + }; + + let datatype = match suffix { + "bin" => QuestFileType::Bin, + "dat" => QuestFileType::Dat, + _ => return Err(ShipError::InvalidQuestFilename(filename.to_owned())) + }; + + let (category, quest) = { + let mut s = filename.splitn(2, '-'); + (s.next().and_then(|k| k.parse().ok()).ok_or(ShipError::InvalidQuestFilename(filename.to_owned()))?, + s.next().and_then(|k| k.parse().ok()).ok_or(ShipError::InvalidQuestFilename(filename.to_owned()))?) + }; + + Ok((category, quest, datatype)) +} + + +pub fn send_quest_category_list(id: ClientId, quests: &QuestList) -> Result + Send>, ShipError> { + let qcl = quest::quest_category_list(quests); + Ok(Box::new(vec![(id, SendShipPacket::QuestCategoryList(qcl))].into_iter())) +} + +pub fn select_quest_category(id: ClientId, menuselect: &MenuSelect, quests: &QuestList) -> Result + Send>, ShipError> { + let (_, category_quests) = quests.iter() + .nth(menuselect.item as usize) + .ok_or(ShipError::InvalidQuestCategory(menuselect.item))?; + + let ql = quest::quest_list(menuselect.item, category_quests); + + Ok(Box::new(vec![(id, SendShipPacket::QuestOptionList(ql))].into_iter())) +} + + +pub fn quest_detail(id: ClientId, questdetailrequest: &QuestDetailRequest, quests: &QuestList) -> Result + Send>, ShipError> { + let (_, category_quests) = quests.iter() + .nth(questdetailrequest.category as usize) + .ok_or(ShipError::InvalidQuestCategory(questdetailrequest.category as u32))?; + + let quest = category_quests.iter() + .find(|q| { + q.id == questdetailrequest.quest as u16 + }).ok_or(ShipError::InvalidQuest(questdetailrequest.quest as u32))?; + + let qd = quest::quest_detail(&quest); + + Ok(Box::new(vec![(id, SendShipPacket::QuestDetail(qd))].into_iter())) +} + +pub fn load_quest(id: ClientId, questmenuselect: &QuestMenuSelect, quests: &QuestList, clients: &mut Clients, client_location: &ClientLocation, rooms: &mut Rooms) + -> Result + Send>, ShipError> { + let (_, category_quests) = quests.iter() + .nth(questmenuselect.category as usize) + .ok_or(ShipError::InvalidQuestCategory(questmenuselect.category as u32))?; + + let quest = category_quests.iter() + .find(|q| { + q.id == questmenuselect.quest as u16 + }).ok_or(ShipError::InvalidQuest(questmenuselect.quest as u32))?; + + let room_id = client_location.get_room(id).map_err(|err| -> ClientLocationError { err.into() })?; + let room = rooms.get_mut(room_id.0) + .ok_or_else(|| ShipError::InvalidRoom(room_id.0 as u32))?.as_mut() + .ok_or_else(|| ShipError::InvalidRoom(room_id.0 as u32))?; + room.maps.set_quest_data(quest.enemies.clone(), quest.objects.clone()); + + let bin = quest::quest_header(questmenuselect, &quest.bin_blob, "bin"); + let dat = quest::quest_header(questmenuselect, &quest.dat_blob, "dat"); + + let area_clients = client_location.get_all_clients_by_client(id).map_err(|err| -> ClientLocationError { err.into() })?; + area_clients.iter().for_each(|c| { + clients.get_mut(&c.client).map(|client| { + client.done_loading_quest = false; + }); + }); + Ok(Box::new(area_clients.into_iter().map(move |c| { + vec![(c.client, SendShipPacket::QuestHeader(bin.clone())), (c.client, SendShipPacket::QuestHeader(dat.clone()))] + }).flatten())) +} + +pub fn quest_file_request(id: ClientId, quest_file_request: &QuestFileRequest, quests: &QuestList) -> Result + Send>, ShipError> { + let (category_id, quest_id, datatype) = parse_filename(&quest_file_request.filename)?; + let (_, category_quests) = quests.iter() + .nth(category_id as usize) + .ok_or(ShipError::InvalidQuestCategory(category_id as u32))?; + + let quest = category_quests.iter() + .find(|q| { + q.id == quest_id as u16 + }).ok_or(ShipError::InvalidQuest(quest_id as u32))?; + + let blob = match datatype { + QuestFileType::Bin => &quest.bin_blob, + QuestFileType::Dat => &quest.dat_blob, + }; + let mut blob_cursor = Cursor::new(blob); + + let mut subblob = [0u8; 0x400]; + let blob_length = blob_cursor.read(&mut subblob)?; + let qc = quest::quest_chunk(0, quest_file_request.filename, subblob, blob_length); + + Ok(Box::new(vec![(id, SendShipPacket::QuestChunk(qc))].into_iter())) +} + +pub fn quest_chunk_ack(id: ClientId, quest_chunk_ack: &QuestChunkAck, quests: &QuestList) -> Result + Send>, ShipError> { + let (category_id, quest_id, datatype) = parse_filename(&quest_chunk_ack.filename)?; + let (_, category_quests) = quests.iter() + .nth(category_id as usize) + .ok_or(ShipError::InvalidQuestCategory(category_id as u32))?; + + let quest = category_quests.iter() + .find(|q| { + q.id == quest_id + }).ok_or(ShipError::InvalidQuest(quest_id as u32))?; + + let blob = match datatype { + QuestFileType::Bin => &quest.bin_blob, + QuestFileType::Dat => &quest.dat_blob, + }; + + let mut blob_cursor = Cursor::new(blob); + blob_cursor.seek(SeekFrom::Start((quest_chunk_ack.chunk_num as u64 + 1) * 0x400))?; + let mut subblob = [0u8; 0x400]; + let blob_length = blob_cursor.read(&mut subblob)?; + if blob_length == 0 { + return Ok(Box::new(None.into_iter())); + } + let qc = quest::quest_chunk(quest_chunk_ack.chunk_num + 1, quest_chunk_ack.filename, subblob, blob_length); + + Ok(Box::new(vec![(id, SendShipPacket::QuestChunk(qc))].into_iter())) +} + +pub fn done_loading_quest(id: ClientId, clients: &mut Clients, client_location: &ClientLocation) + -> Result + Send>, ShipError> { + let client = clients.get_mut(&id).ok_or(ShipError::ClientNotFound(id))?; + client.done_loading_quest = true; + let area_clients = client_location.get_all_clients_by_client(id).map_err(|err| -> ClientLocationError { err.into() })?; + let all_loaded = area_clients.iter().all(|c| { + clients.get(&c.client) + .map(|client| { + client.done_loading_quest + }) + .unwrap_or(false) + }); + + if all_loaded { + Ok(Box::new(area_clients.into_iter().map(|c| { + (c.client, SendShipPacket::DoneLoadingQuest(DoneLoadingQuest {})) + }))) + } + else { + Ok(Box::new(None.into_iter())) + } +} diff --git a/src/ship/packet/handler/room.rs b/src/ship/packet/handler/room.rs index 696dbb9..6bef6b9 100644 --- a/src/ship/packet/handler/room.rs +++ b/src/ship/packet/handler/room.rs @@ -1,4 +1,5 @@ use libpso::packet::ship::*; +use libpso::packet::messages::*; use crate::common::serverstate::ClientId; use crate::common::leveltable::CharacterLevelTable; use crate::ship::ship::{SendShipPacket, ShipError, Rooms, Clients}; @@ -107,18 +108,22 @@ pub fn done_bursting(id: ClientId, -> Box + Send> { let area = client_location.get_area(id).unwrap(); if let RoomLobby::Room(room_id) = area { - let room = rooms.get_mut(room_id.0).unwrap().as_mut().unwrap(); - room.bursting = false; + rooms.get_mut(room_id.0).unwrap().as_mut().map(|room| { + room.bursting = false; + }); } - Box::new(client_location.get_client_neighbors(id).unwrap().into_iter() + let area_client = client_location.get_local_client(id).unwrap(); // TODO: unwrap + Box::new(client_location.get_client_neighbors(id).unwrap().into_iter() // TODO: unwrap .map(move |client| { vec![ - (client.client, SendShipPacket::BurstDone72(BurstDone72::new())), + (client.client, SendShipPacket::Message(Message::new(GameMessage::BurstDone(BurstDone { + client: area_client.local_client.id(), + target: 0 + })))), ] }).flatten()) } - pub fn request_room_list(id: ClientId, client_location: &ClientLocation, rooms: &Rooms) diff --git a/src/ship/quests.rs b/src/ship/quests.rs new file mode 100644 index 0000000..f7dfd6e --- /dev/null +++ b/src/ship/quests.rs @@ -0,0 +1,232 @@ +use log::warn; +use std::collections::{HashMap, BTreeMap, BTreeSet}; +use std::fs::File; +use std::io::{Read, Write, Cursor, Seek, SeekFrom}; +use std::path::PathBuf; +use std::convert::TryInto; +use thiserror::Error; +use serde::{Serialize, Deserialize}; +use ages_prs::{LegacyPrsDecoder, LegacyPrsEncoder}; +use byteorder::{LittleEndian, ReadBytesExt}; +use libpso::util::array_to_utf16; +use crate::ship::map::{MapArea, MapAreaError, MapObject, MapEnemy, enemy_data_from_stream, objects_from_stream}; +use crate::ship::room::Episode; + + +#[derive(Debug, Serialize, Deserialize, Hash, PartialEq, Eq, PartialOrd, Ord)] +pub struct QuestCategory { + index: usize, + pub name: String, + pub description: String, +} + + +#[derive(Debug, Serialize, Deserialize, Hash)] +struct QuestListEntry { + bin: String, + dat: String, +} + +#[derive(Debug, Serialize, Deserialize, Hash)] +struct QuestListCategory { + list_order: usize, + description: String, + quests: Vec, +} + +#[derive(Debug, Serialize, Deserialize)] +struct QuestListConfig { + questlist: HashMap>, +} + +#[derive(Error, Debug)] +#[error("")] +pub enum ParseDatError { + IoError(#[from] std::io::Error), + MapError(#[from] MapAreaError), + UnknownDatHeader(u32), + CouldNotDetermineEpisode, +} + +const DAT_OBJECT_HEADER_ID: u32 = 1; +const DAT_ENEMY_HEADER_ID: u32 = 2; +const DAT_WAVE_HEADER_ID: u32 = 3; + +enum DatBlock { + Object(Vec>), + Enemy(Vec>), + Wave, +} + + +fn read_dat_section_header(cursor: &mut T, episode: &Episode) -> Result { + let header = cursor.read_u32::()?; + let _offset = cursor.read_u32::()?; + let area = cursor.read_u32::()?; + let length = cursor.read_u32::()?; + + let map_area = MapArea::from_value(episode, area)?; + + match header { + DAT_OBJECT_HEADER_ID => { + let mut obj_data = vec![0u8; length as usize]; + cursor.read(&mut obj_data)?; + let mut obj_cursor = Cursor::new(obj_data); + + let objects = objects_from_stream(&mut obj_cursor, episode, &map_area); + Ok(DatBlock::Object(objects)) + }, + DAT_ENEMY_HEADER_ID => { + let mut enemy_data = vec![0u8; length as usize]; + cursor.read(&mut enemy_data)?; + let mut enemy_cursor = Cursor::new(enemy_data); + + let enemies = enemy_data_from_stream(&mut enemy_cursor, &map_area, episode); + + Ok(DatBlock::Enemy(enemies)) + }, + DAT_WAVE_HEADER_ID => { + cursor.seek(SeekFrom::Current(length as i64))?; + Ok(DatBlock::Wave) + }, + _ => Err(ParseDatError::UnknownDatHeader(header)) + } +} + +fn quest_episode(bin: &[u8]) -> Option { + for bytes in bin.windows(3) { + if bytes[0] == 0xF8 && bytes[1] == 0xBC { + return Some(Episode::from_quest(bytes[2]).ok()?) + } + } + None +} + +fn parse_dat(dat: &[u8], episode: &Episode) -> Result<(Vec>, Vec>), ParseDatError> { + let mut cursor = Cursor::new(dat); + + let header_iter = std::iter::from_fn(move || { + match read_dat_section_header(&mut cursor, episode) { + Ok(dat_block) => Some(dat_block), + Err(err) => { + warn!("unknown header in dat: {:?}", err); + None + } + } + }); + + Ok(header_iter.fold((Vec::new(), Vec::new()), |(mut enemies, mut objects), dat_block| { + match dat_block { + DatBlock::Object(mut objs) => { + objects.append(&mut objs) + }, + DatBlock::Enemy(mut enemy) => { + enemies.append(&mut enemy) + }, + _ => {} + } + + (enemies, objects) + })) +} + +#[derive(Error, Debug)] +#[error("")] +pub enum QuestLoadError { + IoError(#[from] std::io::Error), + ParseDatError(#[from] ParseDatError), + CouldNotReadMetadata, + CouldNotLoadConfigFile, +} + +#[derive(Debug)] +pub struct Quest { + pub name: String, + pub description: String, + pub full_description: String, + pub language: u16, + pub id: u16, + pub bin_blob: Vec, + pub dat_blob: Vec, + pub enemies: Vec>, + pub objects: Vec>, +} + +impl Quest { + fn from_bin_dat(bin: Vec, dat: Vec) -> Result { + let id = u16::from_le_bytes(bin[16..18].try_into().map_err(|_| QuestLoadError::CouldNotReadMetadata)?); + let language = u16::from_le_bytes(bin[18..20].try_into().map_err(|_| QuestLoadError::CouldNotReadMetadata)?); + let name = array_to_utf16(&bin[24..88]); + let description = array_to_utf16(&bin[88..334]); + let full_description = array_to_utf16(&bin[334..920]); + + let episode = quest_episode(&bin).ok_or(ParseDatError::CouldNotDetermineEpisode)?; + let (enemies, objects) = parse_dat(&dat, &episode)?; + + let mut prs_bin = LegacyPrsEncoder::new(Vec::new()); + prs_bin.write(&bin)?; + let mut prs_dat = LegacyPrsEncoder::new(Vec::new()); + prs_dat.write(&dat)?; + + Ok(Quest { + name: name, + description: description, + full_description: full_description, + id: id, + language: language, + bin_blob: prs_bin.into_inner().map_err(|_| QuestLoadError::CouldNotReadMetadata)?, + dat_blob: prs_dat.into_inner().map_err(|_| QuestLoadError::CouldNotReadMetadata)?, + enemies: enemies, + objects: objects, + }) + } +} + +// QuestCollection +pub type QuestList = BTreeMap>; + +pub fn load_quests(quest_path: PathBuf) -> Result { + let mut f = File::open(quest_path).map_err(|_| QuestLoadError::CouldNotLoadConfigFile)?; + let mut s = String::new(); + f.read_to_string(&mut s)?; + + let mut used_quest_ids = BTreeSet::new(); + let ql: BTreeMap = toml::from_str(s.as_str()).map_err(|_| QuestLoadError::CouldNotLoadConfigFile)?; + + Ok(ql.into_iter().map(|(category, category_details)| { + let quests = category_details.quests + .into_iter() + .filter_map(|quest| { + let dat_file = File::open(format!("data/quests/{}", quest.dat)) + .map_err(|err| { + warn!("could not load quest file {}: {:?}", quest.dat, err) + }).ok()?; + let bin_file = File::open(format!("data/quests/{}", quest.bin)) + .map_err(|err| { + warn!("could not load quest file {}: {:?}", quest.bin, err) + }).ok()?; + let mut dat_prs = LegacyPrsDecoder::new(dat_file); + let mut bin_prs = LegacyPrsDecoder::new(bin_file); + + let mut dat = Vec::new(); + let mut bin = Vec::new(); + dat_prs.read_to_end(&mut dat).ok()?; + bin_prs.read_to_end(&mut bin).ok()?; + + let quest = Quest::from_bin_dat(bin, dat).map_err(|err| { + warn!("could not parse quest file {}/{}: {:?}", quest.bin, quest.dat, err) + }).ok()?; + if used_quest_ids.contains(&quest.id) { + warn!("quest id already exists: {}", quest.id); + return None; + } + used_quest_ids.insert(quest.id); + Some(quest) + }); + (QuestCategory{ + index: category_details.list_order, + name: category, + description: category_details.description, + }, quests.collect()) + }).collect()) +} diff --git a/src/ship/room.rs b/src/ship/room.rs index 7f8864c..25d3fa3 100644 --- a/src/ship/room.rs +++ b/src/ship/room.rs @@ -46,6 +46,17 @@ impl Into for Episode { } } +impl Episode { + pub fn from_quest(value: u8) -> Result { + match value { + 0 => Ok(Episode::One), + 1 => Ok(Episode::Two), + 2 => Ok(Episode::Four), + _ => Err(RoomCreationError::InvalidEpisode(value)) + } + } +} + #[derive(Debug, Copy, Clone, derive_more::Display)] pub enum Difficulty { Normal, diff --git a/src/ship/ship.rs b/src/ship/ship.rs index 1257fde..0c39912 100644 --- a/src/ship/ship.rs +++ b/src/ship/ship.rs @@ -12,7 +12,6 @@ use libpso::crypto::bb::PSOBBCipher; use libpso::packet::ship::{BLOCK_MENU_ID, ROOM_MENU_ID}; - use crate::common::cipherkeys::{ELSEWHERE_PRIVATE_KEY, ELSEWHERE_PARRAY}; use crate::common::serverstate::{SendServerPacket, RecvServerPacket, ServerState, OnConnect, ClientId}; use crate::common::leveltable::CharacterLevelTable; @@ -25,10 +24,13 @@ use crate::ship::location::{ClientLocation, RoomLobby, MAX_ROOMS, ClientLocation use crate::ship::items; use crate::ship::room; +use crate::ship::quests; use crate::ship::map::{MapsError, MapAreaError, MapArea}; use crate::ship::packet::handler; pub const SHIP_PORT: u16 = 23423; +pub const QUEST_CATEGORY_MENU_ID: u32 = 0xA2; +pub const QUEST_SELECT_MENU_ID: u32 = 0xA3; pub type Rooms = [Option; MAX_ROOMS]; pub type Clients = HashMap; @@ -51,6 +53,10 @@ pub enum ShipError { ItemManagerError(#[from] items::ItemManagerError), ItemDropLocationNotSet, BoxAlreadyDroppedItem(ClientId, u16), + InvalidQuestCategory(u32), + InvalidQuest(u32), + InvalidQuestFilename(String), + IoError(#[from] std::io::Error), } #[derive(Debug)] @@ -71,18 +77,33 @@ pub enum RecvShipPacket { Like62ButCooler(Like62ButCooler), ClientCharacterData(ClientCharacterData), DoneBursting(DoneBursting), + DoneBursting2(DoneBursting2), LobbySelect(LobbySelect), + RequestQuestList(RequestQuestList), + MenuDetail(MenuDetail), + QuestDetailRequest(QuestDetailRequest), + QuestMenuSelect(QuestMenuSelect), + QuestFileRequest(QuestFileRequest), + QuestChunkAck(QuestChunkAck), + DoneLoadingQuest(DoneLoadingQuest), } impl RecvServerPacket for RecvShipPacket { fn from_bytes(data: &[u8]) -> Result { match u16::from_le_bytes([data[2], data[3]]) { 0x93 => Ok(RecvShipPacket::Login(Login::from_bytes(data)?)), - 0x10 => match data[0] { - 16 => Ok(RecvShipPacket::MenuSelect(MenuSelect::from_bytes(data)?)), - 48 => Ok(RecvShipPacket::RoomPasswordReq(RoomPasswordReq::from_bytes(data)?)), + 0x09 => match data[8] as u32 { + QUEST_SELECT_MENU_ID => Ok(RecvShipPacket::QuestDetailRequest(QuestDetailRequest::from_bytes(data)?)), + _ => Ok(RecvShipPacket::MenuDetail(MenuDetail::from_bytes(data)?)), + } + 0x10 => match (data[0], data[8] as u32) { + (16, QUEST_SELECT_MENU_ID) => Ok(RecvShipPacket::QuestMenuSelect(QuestMenuSelect::from_bytes(data)?)), + (16, _) => Ok(RecvShipPacket::MenuSelect(MenuSelect::from_bytes(data)?)), + (48, _) => Ok(RecvShipPacket::RoomPasswordReq(RoomPasswordReq::from_bytes(data)?)), _ => Err(PacketParseError::WrongPacketForServerType(u16::from_le_bytes([data[2], data[3]]), data.to_vec())), }, + 0x13 => Ok(RecvShipPacket::QuestChunkAck(QuestChunkAck::from_bytes(data)?)), + 0x44 => Ok(RecvShipPacket::QuestFileRequest(QuestFileRequest::from_bytes(data)?)), 0x61 => Ok(RecvShipPacket::CharData(CharData::from_bytes(data)?)), 0x60 => Ok(RecvShipPacket::Message(Message::from_bytes(data)?)), 0x62 => Ok(RecvShipPacket::DirectMessage(DirectMessage::from_bytes(data)?)), @@ -96,7 +117,10 @@ impl RecvServerPacket for RecvShipPacket { 0x6D => Ok(RecvShipPacket::Like62ButCooler(Like62ButCooler::from_bytes(data)?)), 0x98 => Ok(RecvShipPacket::ClientCharacterData(ClientCharacterData::from_bytes(data)?)), 0x6F => Ok(RecvShipPacket::DoneBursting(DoneBursting::from_bytes(data)?)), + 0x16F => Ok(RecvShipPacket::DoneBursting2(DoneBursting2::from_bytes(data)?)), 0x84 => Ok(RecvShipPacket::LobbySelect(LobbySelect::from_bytes(data)?)), + 0xA2 => Ok(RecvShipPacket::RequestQuestList(RequestQuestList::from_bytes(data)?)), + 0xAC => Ok(RecvShipPacket::DoneLoadingQuest(DoneLoadingQuest::from_bytes(data)?)), _ => Err(PacketParseError::WrongPacketForServerType(u16::from_le_bytes([data[2], data[3]]), data.to_vec())) } } @@ -125,7 +149,14 @@ pub enum SendShipPacket { Like62ButCooler(Like62ButCooler), BurstDone72(BurstDone72), DoneBursting(DoneBursting), + DoneBursting2(DoneBursting2), LobbyList(LobbyList), + QuestCategoryList(QuestCategoryList), + QuestOptionList(QuestOptionList), + QuestDetail(QuestDetail), + QuestHeader(QuestHeader), + QuestChunk(QuestChunk), + DoneLoadingQuest(DoneLoadingQuest), } impl SendServerPacket for SendShipPacket { @@ -152,7 +183,14 @@ impl SendServerPacket for SendShipPacket { SendShipPacket::Like62ButCooler(pkt) => pkt.as_bytes(), SendShipPacket::BurstDone72(pkt) => pkt.as_bytes(), SendShipPacket::DoneBursting(pkt) => pkt.as_bytes(), + SendShipPacket::DoneBursting2(pkt) => pkt.as_bytes(), SendShipPacket::LobbyList(pkt) => pkt.as_bytes(), + SendShipPacket::QuestCategoryList(pkt) => pkt.as_bytes(), + SendShipPacket::QuestOptionList(pkt) => pkt.as_bytes(), + SendShipPacket::QuestDetail(pkt) => pkt.as_bytes(), + SendShipPacket::QuestHeader(pkt) => pkt.as_bytes(), + SendShipPacket::QuestChunk(pkt) => pkt.as_bytes(), + SendShipPacket::DoneLoadingQuest(pkt) => pkt.as_bytes(), } } } @@ -165,6 +203,12 @@ pub struct ItemDropLocation { pub item_id: items::ClientItemId, } +pub struct LoadingQuest { + pub header_bin: Option, + pub header_dat: Option, + //pub quest_chunk_bin: Option>>, +} + pub struct ClientState { pub user: UserAccountEntity, pub settings: UserSettingsEntity, @@ -173,6 +217,8 @@ pub struct ClientState { //guildcard: GuildCard, pub block: u32, pub item_drop_location: Option, + pub done_loading_quest: bool, + //pub loading_quest: Option, } impl ClientState { @@ -184,6 +230,7 @@ impl ClientState { session: session, block: 1, item_drop_location: None, + done_loading_quest: false, } } } @@ -197,6 +244,7 @@ pub struct ShipServerState { name: String, rooms: Rooms, item_manager: items::ItemManager, + quests: quests::QuestList, } impl ShipServerState { @@ -209,6 +257,7 @@ impl ShipServerState { name: "Sona-Nyl".into(), rooms: [None; MAX_ROOMS], item_manager: items::ItemManager::new(), + quests: quests::load_quests("data/quests.toml".into()).unwrap(), } } @@ -288,13 +337,26 @@ impl ServerState for ShipServerState { RecvShipPacket::Login(login) => { Box::new(handler::auth::validate_login(id, login, &mut self.entity_gateway, &mut self.clients, &mut self.item_manager, &self.name)?.into_iter().map(move |pkt| (id, pkt))) }, + RecvShipPacket::QuestDetailRequest(questdetailrequest) => { + match questdetailrequest.menu { + QUEST_SELECT_MENU_ID => handler::quest::quest_detail(id, questdetailrequest, &self.quests)?, + _ => unreachable!(), + } + }, RecvShipPacket::MenuSelect(menuselect) => { match menuselect.menu { BLOCK_MENU_ID => Box::new(handler::lobby::block_selected(id, menuselect, &mut self.clients, &self.item_manager, &self.level_table)?.into_iter().map(move |pkt| (id, pkt))), ROOM_MENU_ID => handler::room::join_room(id, menuselect, &mut self.client_location, &mut self.clients, &mut self.item_manager, &self.level_table, &mut self.rooms)?, + QUEST_CATEGORY_MENU_ID => handler::quest::select_quest_category(id, menuselect, &self.quests)?, _ => unreachable!(), } }, + RecvShipPacket::QuestMenuSelect(questmenuselect) => { + handler::quest::load_quest(id, questmenuselect, &self.quests, &mut self.clients, &self.client_location, &mut self.rooms)? + }, + RecvShipPacket::MenuDetail(_menudetail) => { + unreachable!(); + }, RecvShipPacket::RoomPasswordReq(room_password_req) => { if room_password_req.password == self.rooms[room_password_req.item as usize].as_ref() .ok_or(ShipError::InvalidRoom(room_password_req.item))? @@ -349,9 +411,24 @@ impl ServerState for ShipServerState { RecvShipPacket::DoneBursting(_) => { handler::room::done_bursting(id, &self.client_location, &mut self.rooms) }, + RecvShipPacket::DoneBursting2(_) => { + handler::room::done_bursting(id, &self.client_location, &mut self.rooms) + }, RecvShipPacket::LobbySelect(pkt) => { Box::new(handler::lobby::change_lobby(id, pkt.lobby, &mut self.client_location, &self.clients, &mut self.item_manager, &self.level_table, &mut self.rooms, &mut self.entity_gateway)?.into_iter()) - } + }, + RecvShipPacket::RequestQuestList(_) => { + handler::quest::send_quest_category_list(id, &self.quests)? + }, + RecvShipPacket::QuestFileRequest(quest_file_request) => { + handler::quest::quest_file_request(id, quest_file_request, &self.quests)? + }, + RecvShipPacket::QuestChunkAck(quest_chunk_ack) => { + handler::quest::quest_chunk_ack(id, quest_chunk_ack, &self.quests)? + }, + RecvShipPacket::DoneLoadingQuest(_) => { + handler::quest::done_loading_quest(id, &mut self.clients, &self.client_location)? + }, }) }