From 93f6b41c00062ff415f578d5abcdfde42c1fe404 Mon Sep 17 00:00:00 2001 From: Daan Vanden Bosch Date: Mon, 28 Sep 2020 22:51:51 +0200 Subject: [PATCH] Added quest_stats script. --- assets_generation/quest_stats.ts | 177 ++++++++++++++++++ .../tethealla_v0.143_quests/battle.ini | 0 .../tethealla_v0.143_quests/battle/1.qst | Bin .../tethealla_v0.143_quests/battle/2.qst | Bin .../tethealla_v0.143_quests/battle/3.qst | Bin .../tethealla_v0.143_quests/battle/4.qst | Bin .../tethealla_v0.143_quests/battle/5.qst | Bin .../tethealla_v0.143_quests/battle/6.qst | Bin .../tethealla_v0.143_quests/battle/7.qst | Bin .../tethealla_v0.143_quests/battle/8.qst | Bin .../tethealla_v0.143_quests/battle/quest.lst | 0 .../tethealla_v0.143_quests/chl/ep1/1.qst | Bin .../tethealla_v0.143_quests/chl/ep1/2.qst | Bin .../tethealla_v0.143_quests/chl/ep1/3.qst | Bin .../tethealla_v0.143_quests/chl/ep1/4.qst | Bin .../tethealla_v0.143_quests/chl/ep1/5.qst | Bin .../tethealla_v0.143_quests/chl/ep1/6.qst | Bin .../tethealla_v0.143_quests/chl/ep1/7.qst | Bin .../tethealla_v0.143_quests/chl/ep1/8.qst | Bin .../tethealla_v0.143_quests/chl/ep1/9.qst | Bin .../tethealla_v0.143_quests/chl/ep2/21.qst | Bin .../tethealla_v0.143_quests/chl/ep2/22.qst | Bin .../tethealla_v0.143_quests/chl/ep2/23.qst | Bin .../tethealla_v0.143_quests/chl/ep2/24.qst | Bin .../tethealla_v0.143_quests/chl/ep2/25.qst | Bin .../tethealla_v0.143_quests/ep1/event/ma1.qst | Bin .../ep1/event/ma4-a.qst | Bin .../ep1/event/ma4-b.qst | Bin .../ep1/event/ma4-c.qst | Bin .../ep1/event/princgift.qst | Bin .../ep1/event/quest.lst | 0 .../ep1/event/sunset base.qst | Bin .../ep1/event/whiteday.qst | Bin .../tethealla_v0.143_quests/ep1/ext/en1.qst | Bin .../tethealla_v0.143_quests/ep1/ext/en2.qst | Bin .../tethealla_v0.143_quests/ep1/ext/en3.qst | Bin .../tethealla_v0.143_quests/ep1/ext/en4.qst | Bin .../ep1/ext/mop-up1.qst | Bin .../ep1/ext/mop-up2.qst | Bin .../ep1/ext/mop-up3.qst | Bin .../ep1/ext/mop-up4.qst | Bin .../tethealla_v0.143_quests/ep1/ext/quest.lst | 0 .../ep1/ext/todays rate.qst | Bin .../ep1/recovery/fragmentofmemoryen.qst | Bin .../ep1/recovery/gallon.qst | Bin .../ep1/recovery/lost havoc vulcan.qst | Bin .../ep1/recovery/lost heat sword.qst | Bin .../ep1/recovery/lost ice spinner.qst | Bin .../ep1/recovery/lost soul blade.qst | Bin .../ep1/recovery/quest.lst | 0 .../ep1/recovery/rappy holiday.qst | Bin .../ep1/vr/labyrinthe trial.qst | Bin .../tethealla_v0.143_quests/ep1/vr/quest.lst | 0 .../tethealla_v0.143_quests/ep1/vr/ttf.qst | Bin .../tethealla_v0.143_quests/ep1gov.ini | 0 .../tethealla_v0.143_quests/ep1solo.ini | 0 .../tethealla_v0.143_quests/ep1team.ini | 0 .../ep2/event/beach laughter.qst | Bin .../ep2/event/christmas.qst | Bin .../ep2/event/dream messenger.qst | Bin .../ep2/event/festival on the beach.qst.old | Bin .../ep2/event/halloween.qst | Bin .../tethealla_v0.143_quests/ep2/event/ma2.qst | Bin .../ep2/event/ma4-a.qst | Bin .../ep2/event/ma4-b.qst | Bin .../ep2/event/ma4-c.qst | Bin .../ep2/event/quest.lst | 0 .../ep2/event/quest239.qst | Bin .../ep2/event/singing by the beach.qst | Bin .../tethealla_v0.143_quests/ep2/ext/pw1.qst | Bin .../tethealla_v0.143_quests/ep2/ext/pw2.qst | Bin .../tethealla_v0.143_quests/ep2/ext/pw3.qst | Bin .../tethealla_v0.143_quests/ep2/ext/pw4.qst | Bin .../tethealla_v0.143_quests/ep2/ext/quest.lst | 0 .../ep2/shop/gallon.qst | Bin .../ep2/shop/quest.lst | 0 .../ep2/tower/east.qst | Bin .../ep2/tower/quest.lst | 0 .../ep2/tower/west.qst | Bin .../tethealla_v0.143_quests/ep2/vr/quest.lst | 0 .../ep2/vr/reach for the dream.qst | Bin .../ep2/vr/respectivetomorrow.qst | Bin .../tethealla_v0.143_quests/ep2gov.ini | 0 .../tethealla_v0.143_quests/ep2solo.ini | 0 .../tethealla_v0.143_quests/ep2team.ini | 0 .../ep4/event/clarie's deal.qst | Bin .../ep4/event/login.qst | Bin .../ep4/event/ma4-a.qst | Bin .../ep4/event/ma4-b.qst | Bin .../ep4/event/ma4-c.qst | Bin .../ep4/event/quest.lst | 0 .../ep4/event/wildhouse.qst | Bin .../ep4/ext/newwipe1.qst | Bin .../ep4/ext/newwipe2.qst | Bin .../ep4/ext/newwipe3.qst | Bin .../ep4/ext/newwipe4.qst | Bin .../ep4/ext/newwipe5.qst | Bin .../tethealla_v0.143_quests/ep4/ext/quest.lst | 0 .../ep4/ext/waroflimit1.qst | Bin .../ep4/ext/waroflimit2.qst | Bin .../ep4/ext/waroflimit3.qst | Bin .../ep4/ext/waroflimit4.qst | Bin .../ep4/ext/waroflimit5.qst | Bin .../ep4/shop/itempresent.qst | Bin .../ep4/shop/quest.lst | 0 .../ep4/shop/quest205.qst | Bin .../tethealla_v0.143_quests/ep4/vr/max3.qst | Bin .../tethealla_v0.143_quests/ep4/vr/quest.lst | 0 .../tethealla_v0.143_quests/ep4gov.ini | 0 .../tethealla_v0.143_quests/ep4solo.ini | 0 .../tethealla_v0.143_quests/ep4team.ini | 0 .../tethealla_v0.143_quests/princ/ep1/1-1.qst | Bin .../tethealla_v0.143_quests/princ/ep1/1-2.qst | Bin .../tethealla_v0.143_quests/princ/ep1/1-3.qst | Bin .../tethealla_v0.143_quests/princ/ep1/2-1.qst | Bin .../tethealla_v0.143_quests/princ/ep1/2-2.qst | Bin .../tethealla_v0.143_quests/princ/ep1/2-3.qst | Bin .../tethealla_v0.143_quests/princ/ep1/2-4.qst | Bin .../tethealla_v0.143_quests/princ/ep1/3-1.qst | Bin .../tethealla_v0.143_quests/princ/ep1/3-2.qst | Bin .../tethealla_v0.143_quests/princ/ep1/3-3.qst | Bin .../tethealla_v0.143_quests/princ/ep1/4-1.qst | Bin .../tethealla_v0.143_quests/princ/ep1/4-2.qst | Bin .../tethealla_v0.143_quests/princ/ep1/4-3.qst | Bin .../tethealla_v0.143_quests/princ/ep1/4-4.qst | Bin .../tethealla_v0.143_quests/princ/ep1/4-5.qst | Bin .../princ/ep1/quest.lst | 0 .../princ/ep2/quest.lst | 0 .../princ/ep2/quest451.raw | Bin .../princ/ep2/quest452.raw | Bin .../princ/ep2/quest453.raw | Bin .../princ/ep2/quest454.raw | Bin .../princ/ep2/quest455.raw | Bin .../princ/ep2/quest456.raw | Bin .../princ/ep2/quest457.raw | Bin .../princ/ep2/quest458.raw | Bin .../princ/ep2/quest459.raw | Bin .../princ/ep2/quest460.raw | Bin .../princ/ep2/quest461.raw | Bin .../princ/ep2/quest462.raw | Bin .../princ/ep2/quest463.raw | Bin .../princ/ep2/quest464.raw | Bin .../princ/ep2/quest465.raw | Bin .../princ/ep2/quest466.raw | Bin .../princ/ep2/quest467.raw | Bin .../princ/ep2/quest468.raw | Bin .../tethealla_v0.143_quests/princ/ep4/9-1.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-2.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-3.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-4.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-5.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-6.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-7.qst | Bin .../tethealla_v0.143_quests/princ/ep4/9-8.qst | Bin .../tethealla_v0.143_quests/princ/ep4/pod.qst | Bin .../princ/ep4/quest.lst | 0 .../tethealla_v0.143_quests/solo/ep1/01.qst | Bin .../tethealla_v0.143_quests/solo/ep1/02.qst | Bin .../tethealla_v0.143_quests/solo/ep1/03.qst | Bin .../tethealla_v0.143_quests/solo/ep1/04.qst | Bin .../tethealla_v0.143_quests/solo/ep1/05.qst | Bin .../tethealla_v0.143_quests/solo/ep1/06.qst | Bin .../tethealla_v0.143_quests/solo/ep1/07.qst | Bin .../tethealla_v0.143_quests/solo/ep1/08.qst | Bin .../tethealla_v0.143_quests/solo/ep1/09.qst | Bin .../tethealla_v0.143_quests/solo/ep1/10.qst | Bin .../tethealla_v0.143_quests/solo/ep1/11.qst | Bin .../tethealla_v0.143_quests/solo/ep1/12.qst | Bin .../tethealla_v0.143_quests/solo/ep1/13.qst | Bin .../tethealla_v0.143_quests/solo/ep1/14.qst | Bin .../tethealla_v0.143_quests/solo/ep1/15.qst | Bin .../tethealla_v0.143_quests/solo/ep1/16.qst | Bin .../tethealla_v0.143_quests/solo/ep1/17.qst | Bin .../tethealla_v0.143_quests/solo/ep1/18.qst | Bin .../tethealla_v0.143_quests/solo/ep1/19.qst | Bin .../tethealla_v0.143_quests/solo/ep1/20.qst | Bin .../tethealla_v0.143_quests/solo/ep1/21.qst | Bin .../tethealla_v0.143_quests/solo/ep1/22.qst | Bin .../tethealla_v0.143_quests/solo/ep1/23.qst | Bin .../tethealla_v0.143_quests/solo/ep1/24.qst | Bin .../tethealla_v0.143_quests/solo/ep1/25.qst | Bin .../solo/ep1/quest.lst | 0 .../solo/ep1/side/26.qst | Bin .../solo/ep1/side/goodluck.qst | Bin .../solo/ep1/side/quest.lst | 0 .../solo/ep1/side/quest035.qst | Bin .../solo/ep1/side/quest073.qst | Bin .../tethealla_v0.143_quests/solo/ep2/01.qst | Bin .../solo/ep2/quest.lst | 0 .../solo/ep4/01-blackpaper.qst | Bin .../solo/ep4/02-pioneer spirit.qst | Bin .../solo/ep4/03-Warrior Pride.qst | Bin .../solo/ep4/04-Restless Lion.qst | Bin .../solo/ep4/blackpaper2.qst | Bin .../solo/ep4/quest.lst | 0 .../solo/ep4/wilderending.qst | Bin assets_generation/update_ephinea_data.ts | 72 +++---- assets_generation/walk_quests.ts | 100 ++++++++++ package.json | 1 + test/src/utils.ts | 40 +--- 200 files changed, 305 insertions(+), 85 deletions(-) create mode 100644 assets_generation/quest_stats.ts rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/5.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/6.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/7.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/8.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/battle/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/5.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/6.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/7.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/8.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep1/9.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep2/21.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep2/22.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep2/23.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep2/24.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/chl/ep2/25.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/ma1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/ma4-a.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/ma4-b.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/ma4-c.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/princgift.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/sunset base.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/event/whiteday.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/en1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/en2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/en3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/en4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/mop-up1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/mop-up2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/mop-up3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/mop-up4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/ext/todays rate.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/fragmentofmemoryen.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/gallon.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/lost havoc vulcan.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/lost heat sword.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/lost ice spinner.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/lost soul blade.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/recovery/rappy holiday.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/vr/labyrinthe trial.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/vr/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1/vr/ttf.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1gov.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1solo.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep1team.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/beach laughter.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/christmas.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/dream messenger.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/festival on the beach.qst.old (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/halloween.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/ma2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/ma4-a.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/ma4-b.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/ma4-c.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/quest239.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/event/singing by the beach.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/ext/pw1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/ext/pw2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/ext/pw3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/ext/pw4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/ext/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/shop/gallon.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/shop/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/tower/east.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/tower/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/tower/west.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/vr/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/vr/reach for the dream.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2/vr/respectivetomorrow.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2gov.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2solo.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep2team.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/clarie's deal.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/login.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/ma4-a.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/ma4-b.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/ma4-c.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/event/wildhouse.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/newwipe1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/newwipe2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/newwipe3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/newwipe4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/newwipe5.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/waroflimit1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/waroflimit2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/waroflimit3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/waroflimit4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/ext/waroflimit5.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/shop/itempresent.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/shop/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/shop/quest205.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/vr/max3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4/vr/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4gov.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4solo.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/ep4team.ini (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/1-1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/1-2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/1-3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/2-1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/2-2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/2-3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/2-4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/3-1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/3-2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/3-3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/4-1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/4-2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/4-3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/4-4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/4-5.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep1/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest451.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest452.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest453.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest454.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest455.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest456.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest457.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest458.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest459.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest460.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest461.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest462.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest463.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest464.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest465.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest466.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest467.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep2/quest468.raw (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-1.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-3.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-4.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-5.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-6.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-7.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/9-8.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/pod.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/princ/ep4/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/01.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/02.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/03.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/04.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/05.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/06.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/07.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/08.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/09.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/10.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/11.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/12.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/13.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/14.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/15.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/16.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/17.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/18.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/19.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/20.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/21.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/22.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/23.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/24.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/25.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/side/26.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/side/goodluck.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/side/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/side/quest035.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep1/side/quest073.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep2/01.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep2/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/01-blackpaper.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/02-pioneer spirit.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/03-Warrior Pride.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/04-Restless Lion.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/blackpaper2.qst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/quest.lst (100%) rename {test => assets_generation}/resources/tethealla_v0.143_quests/solo/ep4/wilderending.qst (100%) create mode 100644 assets_generation/walk_quests.ts diff --git a/assets_generation/quest_stats.ts b/assets_generation/quest_stats.ts new file mode 100644 index 00000000..c76b2ca8 --- /dev/null +++ b/assets_generation/quest_stats.ts @@ -0,0 +1,177 @@ +import { walk_quests } from "./walk_quests"; +import { RESOURCE_DIR } from "./index"; +import { npc_data, NpcType } from "../src/core/data_formats/parsing/quest/npc_types"; +import { get_npc_type, QuestNpc } from "../src/core/data_formats/parsing/quest/QuestNpc"; +import { EntityProp, EntityPropType } from "../src/core/data_formats/parsing/quest/properties"; +import { get_entity_prop_value, QuestEntity } from "../src/core/data_formats/parsing/quest/Quest"; + +const prop_cache = new Map(); + +print_quest_stats(); + +function print_quest_stats(): void { + const type_data: Map = new Map(); + + walk_quests(`${RESOURCE_DIR}/tethealla_v0.143_quests`, ({ quest }) => { + for (const npc of quest.npcs) { + const type = get_npc_type(npc); + const npcs = type_data.get(type); + + if (npcs == undefined) { + type_data.set(type, [{ npc, quest: quest.name, count: 1 }]); + } else { + const found = npcs.find(({ npc: npc_2 }) => entities_equal(npc, npc_2, type)); + + if (found) { + found.count++; + } else { + npcs.push({ npc, quest: quest.name, count: 1 }); + } + } + } + }); + + for (const [type, npcs] of type_data) { + const props = get_properties(type); + + console.log(NpcType[type]); + console.log(" cnt " + props.map(col_print_name).join(" ")); + + for (const { npc, quest, count } of npcs.sort((a, b) => b.count - a.count).slice(0, 5)) { + console.log( + ` ${count.toString().padStart(3, " ")} ` + + props.map(p => col_print_value(npc, p)).join(" ") + + ` ${quest}`, + ); + } + } +} + +/** + * @returns the entity's properties enriched with many default properties. + */ +function get_properties(type: NpcType): EntityProp[] { + let props = prop_cache.get(type); + + if (props) { + return props; + } + + const data = npc_data(type); + + props = [ + { + name: "unknwn", + offset: 2, + type: EntityPropType.I16, + }, + { + name: "unknwn", + offset: 4, + type: EntityPropType.I16, + }, + { + name: "clncnt", + offset: 6, + type: EntityPropType.I16, + }, + { + name: "unknwn", + offset: 8, + type: EntityPropType.I16, + }, + { + name: "unknwn", + offset: 10, + type: EntityPropType.I16, + }, + { + name: "scale x", + offset: 44, + type: EntityPropType.F32, + }, + { + name: "scale y", + offset: 48, + type: EntityPropType.F32, + }, + { + name: "scale z", + offset: 52, + type: EntityPropType.F32, + }, + { + name: "unknwn", + offset: 68, + type: EntityPropType.I16, + }, + { + name: "unknwn", + offset: 70, + type: EntityPropType.I16, + }, + ]; + + outer: for (const npc_prop of data.properties) { + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + + if (npc_prop.offset === prop.offset) { + props.splice(i, 1, npc_prop); + continue outer; + } else if (npc_prop.offset < prop.offset) { + props.splice(i, 0, npc_prop); + continue outer; + } + } + + props.push(npc_prop); + } + + return props; +} + +function col_print_name(prop: EntityProp): string { + const width = col_width(prop); + return prop.name.slice(0, width).padStart(width, " "); +} + +function col_print_value(entity: QuestEntity, prop: EntityProp): string { + const value = get_entity_prop_value(entity, prop); + const str = + prop.type === EntityPropType.F32 || prop.type === EntityPropType.Angle + ? value.toFixed(3) + : value.toString(); + return str.padStart(col_width(prop), " "); +} + +function col_width(prop: EntityProp): number { + switch (prop.type) { + case EntityPropType.U8: + return 3; + case EntityPropType.U16: + return 5; + case EntityPropType.U32: + return 10; + case EntityPropType.I8: + return 4; + case EntityPropType.I16: + return 6; + case EntityPropType.I32: + return 11; + case EntityPropType.F32: + return 10; + case EntityPropType.Angle: + return 4; + } +} + +function entities_equal(a: QuestEntity, b: QuestEntity, type: NpcType): boolean { + for (const prop of get_properties(type)) { + if (get_entity_prop_value(a, prop) !== get_entity_prop_value(b, prop)) { + return false; + } + } + + return true; +} diff --git a/test/resources/tethealla_v0.143_quests/battle.ini b/assets_generation/resources/tethealla_v0.143_quests/battle.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle.ini rename to assets_generation/resources/tethealla_v0.143_quests/battle.ini diff --git a/test/resources/tethealla_v0.143_quests/battle/1.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/1.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/1.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/2.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/2.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/2.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/3.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/3.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/3.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/4.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/4.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/4.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/5.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/5.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/5.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/5.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/6.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/6.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/6.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/6.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/7.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/7.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/7.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/7.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/8.qst b/assets_generation/resources/tethealla_v0.143_quests/battle/8.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/8.qst rename to assets_generation/resources/tethealla_v0.143_quests/battle/8.qst diff --git a/test/resources/tethealla_v0.143_quests/battle/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/battle/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/battle/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/battle/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/1.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/1.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/1.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/2.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/2.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/2.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/3.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/3.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/3.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/4.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/4.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/4.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/5.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/5.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/5.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/5.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/6.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/6.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/6.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/6.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/7.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/7.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/7.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/7.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/8.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/8.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/8.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/8.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep1/9.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep1/9.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep1/9.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep1/9.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep2/21.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep2/21.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep2/21.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep2/21.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep2/22.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep2/22.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep2/22.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep2/22.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep2/23.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep2/23.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep2/23.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep2/23.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep2/24.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep2/24.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep2/24.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep2/24.qst diff --git a/test/resources/tethealla_v0.143_quests/chl/ep2/25.qst b/assets_generation/resources/tethealla_v0.143_quests/chl/ep2/25.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/chl/ep2/25.qst rename to assets_generation/resources/tethealla_v0.143_quests/chl/ep2/25.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/ma1.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/ma1.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma1.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/ma4-a.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma4-a.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/ma4-a.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma4-a.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/ma4-b.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma4-b.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/ma4-b.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma4-b.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/ma4-c.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma4-c.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/ma4-c.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/ma4-c.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/princgift.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/princgift.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/princgift.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/princgift.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/sunset base.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/sunset base.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/sunset base.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/sunset base.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/event/whiteday.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/event/whiteday.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/event/whiteday.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/event/whiteday.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/en1.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/en1.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en1.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/en2.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/en2.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en2.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/en3.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/en3.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en3.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/en4.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/en4.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/en4.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/mop-up1.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/mop-up1.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up1.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/mop-up2.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/mop-up2.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up2.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/mop-up3.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/mop-up3.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up3.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/mop-up4.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/mop-up4.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/mop-up4.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep1/ext/todays rate.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/ext/todays rate.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/ext/todays rate.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/ext/todays rate.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/fragmentofmemoryen.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/fragmentofmemoryen.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/fragmentofmemoryen.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/fragmentofmemoryen.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/gallon.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/gallon.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/gallon.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/gallon.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/lost havoc vulcan.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost havoc vulcan.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/lost havoc vulcan.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost havoc vulcan.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/lost heat sword.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost heat sword.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/lost heat sword.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost heat sword.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/lost ice spinner.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost ice spinner.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/lost ice spinner.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost ice spinner.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/lost soul blade.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost soul blade.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/lost soul blade.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/lost soul blade.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep1/recovery/rappy holiday.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/rappy holiday.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/recovery/rappy holiday.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/recovery/rappy holiday.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/vr/labyrinthe trial.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/vr/labyrinthe trial.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/vr/labyrinthe trial.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/vr/labyrinthe trial.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1/vr/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep1/vr/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/vr/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/vr/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep1/vr/ttf.qst b/assets_generation/resources/tethealla_v0.143_quests/ep1/vr/ttf.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1/vr/ttf.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep1/vr/ttf.qst diff --git a/test/resources/tethealla_v0.143_quests/ep1gov.ini b/assets_generation/resources/tethealla_v0.143_quests/ep1gov.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1gov.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep1gov.ini diff --git a/test/resources/tethealla_v0.143_quests/ep1solo.ini b/assets_generation/resources/tethealla_v0.143_quests/ep1solo.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1solo.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep1solo.ini diff --git a/test/resources/tethealla_v0.143_quests/ep1team.ini b/assets_generation/resources/tethealla_v0.143_quests/ep1team.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep1team.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep1team.ini diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/beach laughter.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/beach laughter.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/beach laughter.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/beach laughter.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/christmas.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/christmas.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/christmas.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/christmas.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/dream messenger.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/dream messenger.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/dream messenger.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/dream messenger.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/festival on the beach.qst.old b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/festival on the beach.qst.old similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/festival on the beach.qst.old rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/festival on the beach.qst.old diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/halloween.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/halloween.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/halloween.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/halloween.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/ma2.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/ma2.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma2.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/ma4-a.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma4-a.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/ma4-a.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma4-a.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/ma4-b.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma4-b.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/ma4-b.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma4-b.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/ma4-c.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma4-c.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/ma4-c.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/ma4-c.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/quest239.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/quest239.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/quest239.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/quest239.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/event/singing by the beach.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/event/singing by the beach.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/event/singing by the beach.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/event/singing by the beach.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/ext/pw1.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/ext/pw1.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw1.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/ext/pw2.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/ext/pw2.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw2.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/ext/pw3.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/ext/pw3.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw3.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/ext/pw4.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/ext/pw4.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/ext/pw4.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/ext/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep2/ext/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/ext/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/ext/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep2/shop/gallon.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/shop/gallon.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/shop/gallon.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/shop/gallon.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/shop/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep2/shop/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/shop/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/shop/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep2/tower/east.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/tower/east.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/tower/east.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/tower/east.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/tower/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep2/tower/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/tower/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/tower/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep2/tower/west.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/tower/west.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/tower/west.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/tower/west.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/vr/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep2/vr/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/vr/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/vr/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep2/vr/reach for the dream.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/vr/reach for the dream.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/vr/reach for the dream.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/vr/reach for the dream.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2/vr/respectivetomorrow.qst b/assets_generation/resources/tethealla_v0.143_quests/ep2/vr/respectivetomorrow.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2/vr/respectivetomorrow.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep2/vr/respectivetomorrow.qst diff --git a/test/resources/tethealla_v0.143_quests/ep2gov.ini b/assets_generation/resources/tethealla_v0.143_quests/ep2gov.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2gov.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep2gov.ini diff --git a/test/resources/tethealla_v0.143_quests/ep2solo.ini b/assets_generation/resources/tethealla_v0.143_quests/ep2solo.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2solo.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep2solo.ini diff --git a/test/resources/tethealla_v0.143_quests/ep2team.ini b/assets_generation/resources/tethealla_v0.143_quests/ep2team.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep2team.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep2team.ini diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/clarie's deal.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/clarie's deal.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/clarie's deal.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/clarie's deal.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/login.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/login.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/login.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/login.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/ma4-a.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/ma4-a.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/ma4-a.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/ma4-a.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/ma4-b.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/ma4-b.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/ma4-b.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/ma4-b.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/ma4-c.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/ma4-c.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/ma4-c.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/ma4-c.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep4/event/wildhouse.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/event/wildhouse.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/event/wildhouse.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/event/wildhouse.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/newwipe1.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/newwipe1.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe1.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/newwipe2.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/newwipe2.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe2.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/newwipe3.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/newwipe3.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe3.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/newwipe4.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/newwipe4.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe4.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/newwipe5.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe5.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/newwipe5.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/newwipe5.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit1.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit1.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit1.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit2.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit2.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit2.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit3.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit3.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit3.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit4.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit4.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit4.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit5.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit5.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/ext/waroflimit5.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/ext/waroflimit5.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/shop/itempresent.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/shop/itempresent.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/shop/itempresent.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/shop/itempresent.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/shop/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep4/shop/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/shop/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/shop/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep4/shop/quest205.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/shop/quest205.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/shop/quest205.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/shop/quest205.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/vr/max3.qst b/assets_generation/resources/tethealla_v0.143_quests/ep4/vr/max3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/vr/max3.qst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/vr/max3.qst diff --git a/test/resources/tethealla_v0.143_quests/ep4/vr/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/ep4/vr/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4/vr/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/ep4/vr/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/ep4gov.ini b/assets_generation/resources/tethealla_v0.143_quests/ep4gov.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4gov.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep4gov.ini diff --git a/test/resources/tethealla_v0.143_quests/ep4solo.ini b/assets_generation/resources/tethealla_v0.143_quests/ep4solo.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4solo.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep4solo.ini diff --git a/test/resources/tethealla_v0.143_quests/ep4team.ini b/assets_generation/resources/tethealla_v0.143_quests/ep4team.ini similarity index 100% rename from test/resources/tethealla_v0.143_quests/ep4team.ini rename to assets_generation/resources/tethealla_v0.143_quests/ep4team.ini diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/1-1.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/1-1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/1-1.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/1-1.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/1-2.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/1-2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/1-2.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/1-2.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/1-3.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/1-3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/1-3.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/1-3.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/2-1.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/2-1.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-1.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/2-2.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/2-2.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-2.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/2-3.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/2-3.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-3.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/2-4.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/2-4.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/2-4.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/3-1.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/3-1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/3-1.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/3-1.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/3-2.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/3-2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/3-2.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/3-2.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/3-3.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/3-3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/3-3.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/3-3.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/4-1.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/4-1.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-1.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/4-2.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/4-2.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-2.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/4-3.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/4-3.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-3.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/4-4.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/4-4.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-4.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/4-5.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-5.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/4-5.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/4-5.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep1/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep1/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep1/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep1/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest451.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest451.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest451.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest451.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest452.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest452.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest452.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest452.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest453.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest453.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest453.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest453.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest454.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest454.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest454.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest454.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest455.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest455.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest455.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest455.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest456.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest456.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest456.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest456.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest457.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest457.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest457.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest457.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest458.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest458.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest458.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest458.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest459.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest459.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest459.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest459.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest460.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest460.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest460.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest460.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest461.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest461.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest461.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest461.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest462.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest462.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest462.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest462.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest463.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest463.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest463.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest463.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest464.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest464.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest464.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest464.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest465.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest465.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest465.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest465.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest466.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest466.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest466.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest466.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest467.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest467.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest467.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest467.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep2/quest468.raw b/assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest468.raw similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep2/quest468.raw rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep2/quest468.raw diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-1.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-1.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-1.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-1.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-2.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-2.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-2.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-3.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-3.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-3.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-3.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-4.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-4.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-4.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-4.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-5.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-5.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-5.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-5.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-6.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-6.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-6.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-6.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-7.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-7.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-7.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-7.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/9-8.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-8.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/9-8.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/9-8.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/pod.qst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/pod.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/pod.qst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/pod.qst diff --git a/test/resources/tethealla_v0.143_quests/princ/ep4/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/princ/ep4/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/princ/ep4/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/princ/ep4/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/01.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/01.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/01.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/01.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/02.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/02.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/02.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/02.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/03.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/03.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/03.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/03.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/04.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/04.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/04.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/04.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/05.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/05.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/05.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/05.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/06.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/06.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/06.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/06.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/07.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/07.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/07.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/07.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/08.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/08.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/08.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/08.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/09.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/09.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/09.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/09.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/10.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/10.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/10.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/10.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/11.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/11.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/11.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/11.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/12.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/12.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/12.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/12.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/13.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/13.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/13.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/13.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/14.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/14.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/14.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/14.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/15.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/15.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/15.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/15.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/16.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/16.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/16.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/16.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/17.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/17.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/17.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/17.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/18.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/18.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/18.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/18.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/19.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/19.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/19.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/19.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/20.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/20.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/20.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/20.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/21.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/21.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/21.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/21.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/22.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/22.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/22.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/22.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/23.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/23.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/23.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/23.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/24.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/24.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/24.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/24.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/25.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/25.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/25.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/25.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/side/26.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/26.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/side/26.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/26.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/side/goodluck.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/goodluck.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/side/goodluck.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/goodluck.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/side/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/side/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/side/quest035.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/quest035.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/side/quest035.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/quest035.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep1/side/quest073.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/quest073.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep1/side/quest073.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep1/side/quest073.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep2/01.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep2/01.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep2/01.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep2/01.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep2/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep2/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep2/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep2/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/01-blackpaper.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/01-blackpaper.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/01-blackpaper.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/01-blackpaper.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/02-pioneer spirit.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/02-pioneer spirit.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/02-pioneer spirit.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/02-pioneer spirit.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/03-Warrior Pride.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/03-Warrior Pride.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/03-Warrior Pride.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/03-Warrior Pride.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/04-Restless Lion.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/04-Restless Lion.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/04-Restless Lion.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/04-Restless Lion.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/blackpaper2.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/blackpaper2.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/blackpaper2.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/blackpaper2.qst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/quest.lst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/quest.lst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/quest.lst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/quest.lst diff --git a/test/resources/tethealla_v0.143_quests/solo/ep4/wilderending.qst b/assets_generation/resources/tethealla_v0.143_quests/solo/ep4/wilderending.qst similarity index 100% rename from test/resources/tethealla_v0.143_quests/solo/ep4/wilderending.qst rename to assets_generation/resources/tethealla_v0.143_quests/solo/ep4/wilderending.qst diff --git a/assets_generation/update_ephinea_data.ts b/assets_generation/update_ephinea_data.ts index ed9bcdd0..4ece0a7d 100644 --- a/assets_generation/update_ephinea_data.ts +++ b/assets_generation/update_ephinea_data.ts @@ -1,8 +1,8 @@ -import { readdirSync, readFileSync, statSync, writeFileSync } from "fs"; +import { readFileSync, writeFileSync } from "fs"; import { ASSETS_DIR, RESOURCE_DIR } from "."; import { BufferCursor } from "../src/core/data_formats/block/cursor/BufferCursor"; import { ItemPmt, parse_item_pmt } from "../src/core/data_formats/parsing/itempmt"; -import { parse_qst_to_quest } from "../src/core/data_formats/parsing/quest"; +import { QuestData } from "../src/core/data_formats/parsing/quest"; import { parse_unitxt, Unitxt } from "../src/core/data_formats/parsing/unitxt"; import { Difficulties, Difficulty, SectionId, SectionIds } from "../src/core/model"; import { update_drops_from_website } from "./update_drops_ephinea"; @@ -16,14 +16,13 @@ import { LogManager } from "../src/core/logging"; import { Severity } from "../src/core/Severity"; import { unwrap } from "../src/core/Result"; import { get_npc_type } from "../src/core/data_formats/parsing/quest/QuestNpc"; +import { walk_quests } from "./walk_quests"; const logger = LogManager.get("assets_generation/update_ephinea_data"); LogManager.default_severity = Severity.Error; logger.severity = Severity.Info; LogManager.get("static/update_drops_ephinea").severity = Severity.Info; -LogManager.get("core/data_formats/parsing/quest").severity = Severity.Off; -LogManager.get("core/data_formats/parsing/quest/bin").severity = Severity.Off; /** * Used by static data generation scripts. @@ -77,8 +76,8 @@ async function update(): Promise { function update_quests(): void { logger.info("Updating quest data."); - const quests = new Array(); - process_quest_dir(`${EPHINEA_RESOURCE_DIR}/ship-config/quest`, quests); + const quests: QuestDto[] = []; + walk_quests(`${EPHINEA_RESOURCE_DIR}/ship-config/quest`, q => process_quest(quests, q)); quests.sort((a, b) => a.episode - b.episode || a.name.localeCompare(b.name)); @@ -99,52 +98,29 @@ function update_quests(): void { logger.info("Done updating quest data."); } -function process_quest_dir(path: string, quests: QuestDto[]): void { - const stat = statSync(path); +function process_quest(quests: QuestDto[], { quest }: QuestData): void { + logger.trace(`Processing quest "${quest.name}".`); - if (stat.isFile()) { - process_quest(path, quests); - } else if (stat.isDirectory()) { - for (const file of readdirSync(path)) { - process_quest_dir(`${path}/${file}`, quests); + if (quest.id == null) { + throw new Error("No id."); + } + + const enemy_counts: { [npc_type_code: string]: number } = {}; + + for (const npc of quest.npcs) { + const type = get_npc_type(npc); + + if (npc_data(type).enemy) { + enemy_counts[NpcType[type]] = (enemy_counts[NpcType[type]] || 0) + 1; } } -} -function process_quest(path: string, quests: QuestDto[]): void { - try { - const buf = readFileSync(path); - const q = parse_qst_to_quest(new BufferCursor(buf, Endianness.Little), true).value?.quest; - - if (q) { - logger.trace(`Processing quest "${q.name}".`); - - if (q.id == null) { - throw new Error("No id."); - } - - const enemy_counts: { [npc_type_code: string]: number } = {}; - - for (const npc of q.npcs) { - const type = get_npc_type(npc); - - if (npc_data(type).enemy) { - enemy_counts[NpcType[type]] = (enemy_counts[NpcType[type]] || 0) + 1; - } - } - - quests.push({ - id: q.id, - name: q.name, - episode: q.episode, - enemy_counts: enemy_counts, - }); - } else { - logger.error(`Couldn't process ${path}.`); - } - } catch (e) { - logger.error(`Couldn't process ${path}.`, e); - } + quests.push({ + id: quest.id, + name: quest.name, + episode: quest.episode, + enemy_counts: enemy_counts, + }); } function load_unitxt(): Unitxt { diff --git a/assets_generation/walk_quests.ts b/assets_generation/walk_quests.ts new file mode 100644 index 00000000..9b1e25af --- /dev/null +++ b/assets_generation/walk_quests.ts @@ -0,0 +1,100 @@ +import { readdirSync, readFileSync, statSync } from "fs"; +import { parse_qst_to_quest, QuestData } from "../src/core/data_formats/parsing/quest"; +import { BufferCursor } from "../src/core/data_formats/block/cursor/BufferCursor"; +import { Endianness } from "../src/core/data_formats/block/Endianness"; +import { LogManager } from "../src/core/logging"; +import { Severity } from "../src/core/Severity"; + +const logger = LogManager.get("assets_generation/walk_quests"); + +export function walk_quests( + path: string, + process: (quest: QuestData) => void, + suppress_parser_log: boolean = true, +): void { + const loggers = (suppress_parser_log + ? [ + LogManager.get("core/data_formats/asm/data_flow_analysis/register_value"), + LogManager.get("core/data_formats/parsing/quest"), + LogManager.get("core/data_formats/parsing/quest/bin"), + LogManager.get("core/data_formats/parsing/quest/object_code"), + LogManager.get("core/data_formats/parsing/quest/qst"), + ] + : [] + ).map(logger => { + const old = logger.severity; + logger.severity = Severity.Error; + return [logger, old] as const; + }); + + try { + walk_qst_files( + (p, _, contents) => { + try { + const result = parse_qst_to_quest( + new BufferCursor(contents, Endianness.Little), + true, + ); + + if (result.success) { + process(result.value); + } else { + logger.error(`Couldn't process ${p}.`); + } + } catch (e) { + logger.error(`Couldn't parse ${p}.`, e); + } + }, + path, + [], + ); + } finally { + for (const [logger, severity] of loggers) { + logger.severity = severity; + } + } +} + +/** + * Applies f to all QST files in a directory. + * f is called with the path to the file, the file name and the content of the file. + * Uses the 106 QST files provided with Tethealla version 0.143 by default. + */ +export function walk_qst_files( + f: (path: string, file_name: string, contents: Buffer) => void, + path = "assets_generation/resources/tethealla_v0.143_quests", + // BUG: Battle quests are not always parsed in the same way. + // Could be a bug in Jest or Node as the quest parsing code has no randomness or dependency on mutable state. + // TODO: Some quests can not yet be parsed correctly. + exclude: readonly string[] = [ + "/battle/", // Battle mode quests. + "ep2/event/ma4-a.qst", // .qst seems corrupt, doesn't work in qedit either. + ], +): void { + const idx = path.lastIndexOf("/"); + walk_qst_files_internal( + f, + path, + idx === -1 || idx >= path.length - 1 ? path : path.slice(idx + 1), + exclude, + ); +} + +function walk_qst_files_internal( + f: (path: string, file_name: string, contents: Buffer) => void, + path: string, + name: string, + exclude: readonly string[], +): void { + const stat = statSync(path); + + if (stat.isFile()) { + if (path.endsWith(".qst") && !exclude.some(e => path.includes(e))) { + f(path, name, readFileSync(path)); + } + } else if (stat.isDirectory()) { + for (const file of readdirSync(path)) { + walk_qst_files_internal(f, `${path}/${file}`, name, exclude); + } + } +} diff --git a/package.json b/package.json index 24878029..1da89c97 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "test": "jest", "update_generic_data": "ts-node --project=tsconfig-scripts.json assets_generation/update_generic_data.ts", "update_ephinea_data": "ts-node --project=tsconfig-scripts.json assets_generation/update_ephinea_data.ts", + "quest_stats": "ts-node --project=tsconfig-scripts.json assets_generation/quest_stats.ts", "lint": "prettier --check \"{src,assets_generation,test}/**/*.{ts,tsx}\" && echo Linting... && eslint \"{src,assets_generation,test}/**/*.{ts,tsx}\" && echo All code passes the prettier and eslint checks." }, "devDependencies": { diff --git a/test/src/utils.ts b/test/src/utils.ts index 741cc6e2..c3057f1e 100644 --- a/test/src/utils.ts +++ b/test/src/utils.ts @@ -13,6 +13,7 @@ import { LogManager } from "../../src/core/logging"; import { Severity } from "../../src/core/Severity"; import { Disposer } from "../../src/core/observable/Disposer"; import { try_finally } from "../../src/core/util"; +import * as walk_quests from "../../assets_generation/walk_quests"; export function pw_test( { max_log_severity = Severity.Info }: { max_log_severity?: Severity }, @@ -60,44 +61,9 @@ export function next_animation_frame(): Promise { */ export function walk_qst_files( f: (path: string, file_name: string, contents: Buffer) => void, - dir = "test/resources/tethealla_v0.143_quests", + dir: string, ): void { - for (const [path, file] of get_qst_files(dir)) { - f(path, file, fs.readFileSync(path)); - } -} - -export function get_qst_files(dir: string): [string, string][] { - let files: [string, string][] = []; - - for (const file of fs.readdirSync(dir)) { - const path = `${dir}/${file}`; - const stats = fs.statSync(path); - - if (stats.isDirectory()) { - files = files.concat(get_qst_files(path)); - } else if (path.endsWith(".qst")) { - // BUG: Battle quests are not always parsed in the same way. - // Could be a bug in Jest or Node as the quest parsing code has no randomness or dependency on mutable state. - // TODO: Some quests can not yet be parsed correctly. - const exceptions = [ - "/battle/", // Battle mode quests - "/princ/", // Government quests - "fragmentofmemoryen.qst", - "lost havoc vulcan.qst", - "ep2/event/ma4-a.qst", - "gallon.qst", - "ep1/04.qst", - "goodluck.qst", - ]; - - if (exceptions.every(e => path.indexOf(e) === -1)) { - files.push([path, file]); - } - } - } - - return files; + walk_quests.walk_qst_files(f, dir); } export function load_default_quest_model(area_store: AreaStore): QuestModel {