summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-07-07 20:34:27 -0300
committerJesusaves <cpntb1@ymail.com>2021-07-07 20:34:27 -0300
commit9877fd4ad81120af8e63e96d5d429092014dc017 (patch)
treeec045a0535109a2e0d82e0e8155eb01ed9776452
parentaedbeb335a5ec5f55d22eace389076a18241ac9a (diff)
downloadserverdata-9877fd4ad81120af8e63e96d5d429092014dc017.tar.gz
serverdata-9877fd4ad81120af8e63e96d5d429092014dc017.tar.bz2
serverdata-9877fd4ad81120af8e63e96d5d429092014dc017.tar.xz
serverdata-9877fd4ad81120af8e63e96d5d429092014dc017.zip
Remove all Legacy files
-rw-r--r--CONTRIBUTING.md17
-rw-r--r--COPYING339
-rw-r--r--GNUmakefile46
m---------client-data0
-rw-r--r--login/conf/.gitignore1
-rw-r--r--login/conf/ladmin_athena.conf7
-rw-r--r--login/conf/ladmin_local.conf.example11
-rw-r--r--login/conf/lan_support.conf45
-rw-r--r--login/conf/login_athena.conf74
-rw-r--r--login/conf/login_local.conf.example37
-rw-r--r--login/conf/tmwa-admin-old.conf6
-rw-r--r--login/conf/tmwa-admin.conf7
-rw-r--r--login/conf/tmwa-login-old.conf7
-rw-r--r--login/conf/tmwa-login.conf8
-rw-r--r--login/save/.gitignore2
-rw-r--r--login/save/account.txt.example17
-rw-r--r--login/save/gm_account.txt.example1
-rwxr-xr-xrun-all10
m---------tools0
-rw-r--r--world/conf/.gitignore1
-rw-r--r--world/conf/char_athena.conf79
-rw-r--r--world/conf/char_local.conf.example18
-rw-r--r--world/conf/inter_athena.conf11
-rw-r--r--world/conf/lan_support.conf45
-rw-r--r--world/conf/tmwa-char-old.conf8
-rw-r--r--world/conf/tmwa-char.conf8
-rw-r--r--world/map/.gitattributes1
-rw-r--r--world/map/.gitignore9
-rw-r--r--world/map/conf/.gitignore2
-rw-r--r--world/map/conf/atcommand_athena.conf136
-rw-r--r--world/map/conf/atcommand_local.conf.example1
-rw-r--r--world/map/conf/battle_athena.conf318
-rw-r--r--world/map/conf/battle_local.conf.example16
-rw-r--r--world/map/conf/map_athena.conf13
-rw-r--r--world/map/conf/map_local.conf.example18
-rw-r--r--world/map/conf/permissions.txt29
-rw-r--r--world/map/conf/permissions_local.txt.example11
-rw-r--r--world/map/conf/tmwa-map.conf42
-rw-r--r--world/map/data/001-1.wlkbin19604 -> 0 bytes
-rw-r--r--world/map/data/001-2.wlkbin17224 -> 0 bytes
-rw-r--r--world/map/data/001-3.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/002-1.wlkbin19604 -> 0 bytes
-rw-r--r--world/map/data/002-2.wlkbin23844 -> 0 bytes
-rw-r--r--world/map/data/002-3.wlkbin12104 -> 0 bytes
-rw-r--r--world/map/data/002-4.wlkbin16388 -> 0 bytes
-rw-r--r--world/map/data/002-5.wlkbin16388 -> 0 bytes
-rw-r--r--world/map/data/003-1.wlkbin40004 -> 0 bytes
-rw-r--r--world/map/data/003-2.wlkbin3754 -> 0 bytes
-rw-r--r--world/map/data/003-4.wlkbin26224 -> 0 bytes
-rw-r--r--world/map/data/004-1.wlkbin15565 -> 0 bytes
-rw-r--r--world/map/data/004-2.wlkbin8530 -> 0 bytes
-rw-r--r--world/map/data/004-3.wlkbin14404 -> 0 bytes
-rw-r--r--world/map/data/004-4.wlkbin14404 -> 0 bytes
-rw-r--r--world/map/data/004-5.wlkbin14404 -> 0 bytes
-rw-r--r--world/map/data/005-1.wlkbin26004 -> 0 bytes
-rw-r--r--world/map/data/005-3.wlkbin19192 -> 0 bytes
-rw-r--r--world/map/data/005-4.wlkbin3754 -> 0 bytes
-rw-r--r--world/map/data/006-1.wlkbin19604 -> 0 bytes
-rw-r--r--world/map/data/006-2.wlkbin12104 -> 0 bytes
-rw-r--r--world/map/data/006-3.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/007-1.wlkbin17860 -> 0 bytes
-rw-r--r--world/map/data/007-2.wlkbin3252 -> 0 bytes
-rw-r--r--world/map/data/008-1.wlkbin19444 -> 0 bytes
-rw-r--r--world/map/data/009-1.wlkbin8779 -> 0 bytes
-rw-r--r--world/map/data/009-2.wlkbin24004 -> 0 bytes
-rw-r--r--world/map/data/009-3.wlkbin30204 -> 0 bytes
-rw-r--r--world/map/data/009-4.wlkbin25604 -> 0 bytes
-rw-r--r--world/map/data/009-5.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/009-6.wlkbin4904 -> 0 bytes
-rw-r--r--world/map/data/009-7.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/009-8.wlkbin15304 -> 0 bytes
-rw-r--r--world/map/data/010-1.wlkbin18004 -> 0 bytes
-rw-r--r--world/map/data/010-2.wlkbin11774 -> 0 bytes
-rw-r--r--world/map/data/011-1.wlkbin19100 -> 0 bytes
-rw-r--r--world/map/data/011-3.wlkbin3604 -> 0 bytes
-rw-r--r--world/map/data/011-4.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/011-6.wlkbin90004 -> 0 bytes
-rw-r--r--world/map/data/012-1.wlkbin31588 -> 0 bytes
-rw-r--r--world/map/data/012-3.wlkbin109204 -> 0 bytes
-rw-r--r--world/map/data/012-4.wlkbin109204 -> 0 bytes
-rw-r--r--world/map/data/013-1.wlkbin19100 -> 0 bytes
-rw-r--r--world/map/data/013-2.wlkbin5548 -> 0 bytes
-rw-r--r--world/map/data/013-3.wlkbin40004 -> 0 bytes
-rw-r--r--world/map/data/014-1.wlkbin16804 -> 0 bytes
-rw-r--r--world/map/data/014-3.wlkbin28004 -> 0 bytes
-rw-r--r--world/map/data/015-1.wlkbin16804 -> 0 bytes
-rw-r--r--world/map/data/015-3.wlkbin4100 -> 0 bytes
-rw-r--r--world/map/data/016-1.wlkbin16804 -> 0 bytes
-rw-r--r--world/map/data/016-2.wlkbin5304 -> 0 bytes
-rw-r--r--world/map/data/017-1.wlkbin27284 -> 0 bytes
-rw-r--r--world/map/data/017-2.wlkbin2707 -> 0 bytes
-rw-r--r--world/map/data/017-3.wlkbin11004 -> 0 bytes
-rw-r--r--world/map/data/017-4.wlkbin18754 -> 0 bytes
-rw-r--r--world/map/data/017-9.wlkbin2707 -> 0 bytes
-rw-r--r--world/map/data/018-1.wlkbin24004 -> 0 bytes
-rw-r--r--world/map/data/018-2.wlkbin10224 -> 0 bytes
-rw-r--r--world/map/data/018-3.wlkbin40004 -> 0 bytes
-rw-r--r--world/map/data/019-1.wlkbin17668 -> 0 bytes
-rw-r--r--world/map/data/019-3.wlkbin18748 -> 0 bytes
-rw-r--r--world/map/data/019-4.wlkbin15004 -> 0 bytes
-rw-r--r--world/map/data/020-1.wlkbin18948 -> 0 bytes
-rw-r--r--world/map/data/020-2.wlkbin16004 -> 0 bytes
-rw-r--r--world/map/data/020-3.wlkbin25604 -> 0 bytes
-rw-r--r--world/map/data/021-1.wlkbin29908 -> 0 bytes
-rw-r--r--world/map/data/021-2.wlkbin40004 -> 0 bytes
-rw-r--r--world/map/data/021-3.wlkbin29908 -> 0 bytes
-rw-r--r--world/map/data/022-1.wlkbin19354 -> 0 bytes
-rw-r--r--world/map/data/023-1.wlkbin27204 -> 0 bytes
-rw-r--r--world/map/data/023-2.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/023-3.wlkbin27204 -> 0 bytes
-rw-r--r--world/map/data/024-1.wlkbin14522 -> 0 bytes
-rw-r--r--world/map/data/024-2.wlkbin40004 -> 0 bytes
-rw-r--r--world/map/data/024-3.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/024-4.wlk1
-rw-r--r--world/map/data/025-1.wlkbin18004 -> 0 bytes
-rw-r--r--world/map/data/025-3.wlkbin36104 -> 0 bytes
-rw-r--r--world/map/data/025-4.wlkbin48004 -> 0 bytes
-rw-r--r--world/map/data/026-1.wlkbin18004 -> 0 bytes
-rw-r--r--world/map/data/026-2.wlkbin16646 -> 0 bytes
-rw-r--r--world/map/data/027-1.wlkbin18004 -> 0 bytes
-rw-r--r--world/map/data/027-2.wlkbin9494 -> 0 bytes
-rw-r--r--world/map/data/027-3.wlkbin18754 -> 0 bytes
-rw-r--r--world/map/data/027-4.wlkbin18754 -> 0 bytes
-rw-r--r--world/map/data/027-5.wlkbin18754 -> 0 bytes
-rw-r--r--world/map/data/027-6.wlkbin6804 -> 0 bytes
-rw-r--r--world/map/data/027-7.wlkbin6804 -> 0 bytes
-rw-r--r--world/map/data/027-8.wlkbin6804 -> 0 bytes
-rw-r--r--world/map/data/027-9.wlkbin8004 -> 0 bytes
-rw-r--r--world/map/data/028-1.wlkbin25126 -> 0 bytes
-rw-r--r--world/map/data/028-3.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/029-1.wlkbin19604 -> 0 bytes
-rw-r--r--world/map/data/029-2.wlkbin19884 -> 0 bytes
-rw-r--r--world/map/data/029-3.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/029-4.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/030-1.wlkbin17668 -> 0 bytes
-rw-r--r--world/map/data/030-2.wlkbin28604 -> 0 bytes
-rw-r--r--world/map/data/030-3.wlkbin17668 -> 0 bytes
-rw-r--r--world/map/data/030-4.wlkbin4904 -> 0 bytes
-rw-r--r--world/map/data/031-1.wlkbin18948 -> 0 bytes
-rw-r--r--world/map/data/031-2.wlkbin5004 -> 0 bytes
-rw-r--r--world/map/data/031-3.wlkbin102404 -> 0 bytes
-rw-r--r--world/map/data/031-4.wlkbin8836 -> 0 bytes
-rw-r--r--world/map/data/032-1.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/032-3.wlkbin16004 -> 0 bytes
-rw-r--r--world/map/data/033-1.wlkbin17668 -> 0 bytes
-rw-r--r--world/map/data/034-1.wlkbin22788 -> 0 bytes
-rw-r--r--world/map/data/034-2.wlkbin5304 -> 0 bytes
-rw-r--r--world/map/data/035-2.wlkbin3604 -> 0 bytes
-rw-r--r--world/map/data/036-2.wlkbin3604 -> 0 bytes
-rw-r--r--world/map/data/041-1.wlkbin18754 -> 0 bytes
-rw-r--r--world/map/data/042-1.wlkbin22564 -> 0 bytes
-rw-r--r--world/map/data/042-2.wlkbin7704 -> 0 bytes
-rw-r--r--world/map/data/042-3.wlkbin5604 -> 0 bytes
-rw-r--r--world/map/data/043-1.wlkbin18004 -> 0 bytes
-rw-r--r--world/map/data/043-3.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/043-4.wlkbin44004 -> 0 bytes
-rw-r--r--world/map/data/044-1.wlkbin45004 -> 0 bytes
-rw-r--r--world/map/data/044-3.wlkbin32004 -> 0 bytes
-rw-r--r--world/map/data/045-1.wlkbin40004 -> 0 bytes
-rw-r--r--world/map/data/046-1.wlkbin24034 -> 0 bytes
-rw-r--r--world/map/data/046-3.wlkbin22788 -> 0 bytes
-rw-r--r--world/map/data/047-1.wlkbin45004 -> 0 bytes
-rw-r--r--world/map/data/047-3.wlkbin32004 -> 0 bytes
-rw-r--r--world/map/data/048-1.wlkbin22788 -> 0 bytes
-rw-r--r--world/map/data/048-2.wlkbin48404 -> 0 bytes
-rw-r--r--world/map/data/051-1.wlkbin15204 -> 0 bytes
-rw-r--r--world/map/data/051-3.wlkbin14954 -> 0 bytes
-rw-r--r--world/map/data/052-1.wlkbin8004 -> 0 bytes
-rw-r--r--world/map/data/052-2.wlkbin15004 -> 0 bytes
-rw-r--r--world/map/data/055-1.wlkbin21084 -> 0 bytes
-rw-r--r--world/map/data/055-3.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/056-1.wlkbin11256 -> 0 bytes
-rw-r--r--world/map/data/056-2.wlkbin7204 -> 0 bytes
-rw-r--r--world/map/data/057-1.wlkbin21084 -> 0 bytes
-rw-r--r--world/map/data/068-1.wlkbin15484 -> 0 bytes
-rw-r--r--world/map/data/068-2.wlkbin13564 -> 0 bytes
-rw-r--r--world/map/data/069-1.wlkbin22012 -> 0 bytes
-rw-r--r--world/map/data/069-2.wlkbin21168 -> 0 bytes
-rw-r--r--world/map/data/070-1.wlkbin22804 -> 0 bytes
-rw-r--r--world/map/data/070-3.wlkbin8467 -> 0 bytes
-rw-r--r--world/map/data/099-1.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/099-2.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/099-3.wlkbin19504 -> 0 bytes
-rw-r--r--world/map/data/099-4.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/099-5.wlkbin10004 -> 0 bytes
-rw-r--r--world/map/data/099-6.wlkbin22504 -> 0 bytes
-rw-r--r--world/map/data/099-7.wlkbin19604 -> 0 bytes
-rw-r--r--world/map/data/099-8.wlk1
-rw-r--r--world/map/data/botcheck.wlkbin5629 -> 0 bytes
-rw-r--r--world/map/data/resnametable.txt129
-rw-r--r--world/map/db/const-debugflag.txt.example6
-rw-r--r--world/map/db/const-magic.txt62
-rw-r--r--world/map/db/const-mapflags.txt35
-rw-r--r--world/map/db/const-quest.txt167
-rw-r--r--world/map/db/const.txt496
-rw-r--r--world/map/db/item_db_chest.txt246
-rw-r--r--world/map/db/item_db_foot.txt20
-rw-r--r--world/map/db/item_db_generic.txt253
-rw-r--r--world/map/db/item_db_hand.txt19
-rw-r--r--world/map/db/item_db_head.txt229
-rw-r--r--world/map/db/item_db_leg.txt57
-rw-r--r--world/map/db/item_db_offhand.txt7
-rw-r--r--world/map/db/item_db_trinket.txt26
-rw-r--r--world/map/db/item_db_use.txt103
-rw-r--r--world/map/db/item_db_weapon.txt66
-rw-r--r--world/map/db/mob_db_0_19.txt18
-rw-r--r--world/map/db/mob_db_20_39.txt29
-rw-r--r--world/map/db/mob_db_40_59.txt13
-rw-r--r--world/map/db/mob_db_60_79.txt10
-rw-r--r--world/map/db/mob_db_80_99.txt25
-rw-r--r--world/map/db/mob_db_over_100.txt69
-rw-r--r--world/map/db/mob_skill_db.txt105
-rw-r--r--world/map/db/params.txt61
-rw-r--r--world/map/db/quest-log.txt30
-rw-r--r--world/map/db/skill_db.txt44
-rw-r--r--world/map/news.d/17-beanie-easter.txt26
-rw-r--r--world/map/news.d/18-bugfixes.txt16
-rw-r--r--world/map/news.d/19-rollbackup.txt10
-rw-r--r--world/map/news.d/20-double-exp-drop.txt22
-rw-r--r--world/map/news.d/21-tulimshar-caves.txt26
-rw-r--r--world/map/news.d/22-orum-extension.txt41
-rw-r--r--world/map/news.d/23-astral-extension.txt12
-rw-r--r--world/map/news.d/24-code-release.txt58
-rw-r--r--world/map/news.d/25-halloween.txt9
-rw-r--r--world/map/news.d/26-unequipcb.txt20
-rw-r--r--world/map/news.d/27-xmas-event.txt30
-rw-r--r--world/map/news.d/28-troll-map.txt18
-rw-r--r--world/map/news.d/29-rc-one.txt141
-rw-r--r--world/map/news.d/30-v2014.4.21.txt21
-rw-r--r--world/map/news.d/31-v2014.5.6.txt27
-rw-r--r--world/map/news.d/32-v2014.5.20.txt34
-rw-r--r--world/map/news.d/33-v2014.6.17.txt26
-rw-r--r--world/map/news.d/34-v2014.7.1.txt29
-rw-r--r--world/map/news.d/35-v2014.7.3.txt9
-rw-r--r--world/map/news.d/36-v2014.7.15.txt20
-rw-r--r--world/map/news.d/37-v2014.7.29.txt19
-rw-r--r--world/map/news.d/38-v2014.9.1.txt22
-rw-r--r--world/map/news.d/39-v2014.10.7.txt26
-rw-r--r--world/map/news.d/40-v2014.10.20.txt20
-rw-r--r--world/map/news.d/41-v2014.10.23.txt17
-rw-r--r--world/map/news.d/42-v2014.11.4.txt33
-rw-r--r--world/map/news.d/43-v2014.11.18.txt27
-rw-r--r--world/map/news.d/44-v2014.12.04.txt29
-rw-r--r--world/map/news.d/45-v2015.01.13.txt28
-rw-r--r--world/map/news.d/46-v2015.02.03.txt29
-rw-r--r--world/map/news.d/47-v2015.03.10.txt17
-rw-r--r--world/map/news.d/48-v2015.05.04.txt38
-rw-r--r--world/map/news.d/49-v2015.05.18.txt34
-rw-r--r--world/map/news.d/50-v2015.06.30.txt17
-rw-r--r--world/map/news.d/51-v2015.08.17.txt23
-rw-r--r--world/map/news.d/52-v2015.09.15.txt18
-rw-r--r--world/map/news.d/53-v2015.10.01.txt20
-rw-r--r--world/map/news.d/54-v2015.11.23.txt18
-rw-r--r--world/map/news.d/55-v2016.2.9.txt30
-rw-r--r--world/map/news.d/56-v2016.3.31.txt14
-rw-r--r--world/map/news.d/57-v2016.4.21.txt15
-rw-r--r--world/map/news.d/58-v2016.4.24.txt13
-rw-r--r--world/map/news.d/59-v2016.4.25.txt9
-rw-r--r--world/map/news.d/60-v2016.5.12.txt40
-rw-r--r--world/map/news.d/61-v2016.10.10.txt22
-rw-r--r--world/map/news.d/62-v2016.11.26.txt23
-rw-r--r--world/map/news.d/63-v2017.11.12.txt13
-rw-r--r--world/map/news.d/64-v2017.12.04.txt11
-rw-r--r--world/map/news.d/65-v2018.01.01.txt16
-rw-r--r--world/map/news.d/66-v2018.01.15.txt27
-rw-r--r--world/map/news.d/67-v2018.01.28.txt22
-rw-r--r--world/map/news.d/68-v2018.02.17.txt6
-rw-r--r--world/map/news.d/69-v2018.03.03.txt17
-rw-r--r--world/map/news.d/70-v2018.03.11.txt15
-rw-r--r--world/map/news.d/71-v2018.03.23.txt6
-rw-r--r--world/map/news.d/72-v2019.01.20.txt6
-rw-r--r--world/map/news.d/73-anniversary.txt9
-rw-r--r--world/map/news.d/74-anniversary.txt9
-rw-r--r--world/map/news.d/75-news-2019-04-17.txt48
-rw-r--r--world/map/news.d/76-milestone-news.txt34
-rw-r--r--world/map/news.d/77-new-website.txt28
-rw-r--r--world/map/news.d/78-halloween-2019.txt39
-rw-r--r--world/map/news.d/79-news-2019-12-18.txt31
-rw-r--r--world/map/news.d/80-news-2020-01-01.txt26
-rw-r--r--world/map/news.d/81-news-2020-02-25.txt33
-rw-r--r--world/map/news.d/82-news-2020-04-01.txt76
-rw-r--r--world/map/news.d/83-news-2020-04-06.txt30
-rw-r--r--world/map/news.d/84-news-2020-04-20.txt23
-rw-r--r--world/map/news.d/85-news-2020-05-09.txt44
-rw-r--r--world/map/news.d/86-news-2020-05-26.txt39
-rw-r--r--world/map/news.d/87-news-2020-06-11.txt32
-rw-r--r--world/map/news.d/88-news-2020-08-24.txt28
-rw-r--r--world/map/news.d/89-halloween-2020.txt50
-rw-r--r--world/map/news.d/90-christmas-2020.txt17
-rw-r--r--world/map/news.d/91-new-year-2021.txt21
-rw-r--r--world/map/news.d/92-news-2021-04-01.txt17
-rw-r--r--world/map/news.d/93-news-2021-04-22.txt61
-rw-r--r--world/map/news.d/94-news-2021-05-28.txt35
-rw-r--r--world/map/news.d/news.template23
-rw-r--r--world/map/news.php118
-rw-r--r--world/map/npc/001-1/_import.txt26
-rw-r--r--world/map/npc/001-1/_mobs.txt8
-rw-r--r--world/map/npc/001-1/_nodes.txt4
-rw-r--r--world/map/npc/001-1/_warps.txt17
-rw-r--r--world/map/npc/001-1/adrian.txt43
-rw-r--r--world/map/npc/001-1/ched.txt11
-rw-r--r--world/map/npc/001-1/children.txt92
-rw-r--r--world/map/npc/001-1/constable.txt9
-rw-r--r--world/map/npc/001-1/dock.txt47
-rw-r--r--world/map/npc/001-1/eomie.txt112
-rw-r--r--world/map/npc/001-1/ferry_master.txt21
-rw-r--r--world/map/npc/001-1/gate_guards.txt26
-rw-r--r--world/map/npc/001-1/gossip.txt59
-rw-r--r--world/map/npc/001-1/guards.txt96
-rw-r--r--world/map/npc/001-1/inac.txt17
-rw-r--r--world/map/npc/001-1/mapflags.txt2
-rw-r--r--world/map/npc/001-1/north_shops.txt8
-rw-r--r--world/map/npc/001-1/npcs.txt76
-rw-r--r--world/map/npc/001-1/sewer_east.txt17
-rw-r--r--world/map/npc/001-1/sewer_north.txt17
-rw-r--r--world/map/npc/001-1/stat_reset.txt8
-rw-r--r--world/map/npc/001-1/tinris.txt187
-rw-r--r--world/map/npc/001-1/tombstones.txt76
-rw-r--r--world/map/npc/001-1/weellos.txt32
-rw-r--r--world/map/npc/001-2/_import.txt21
-rw-r--r--world/map/npc/001-2/_mobs.txt3
-rw-r--r--world/map/npc/001-2/_nodes.txt16
-rw-r--r--world/map/npc/001-2/_warps.txt18
-rw-r--r--world/map/npc/001-2/bank.txt8
-rw-r--r--world/map/npc/001-2/david.txt53
-rw-r--r--world/map/npc/001-2/fieri.txt118
-rw-r--r--world/map/npc/001-2/forge_shops.txt4
-rw-r--r--world/map/npc/001-2/government_building.txt159
-rw-r--r--world/map/npc/001-2/heathin.txt337
-rw-r--r--world/map/npc/001-2/jhedia.txt62
-rw-r--r--world/map/npc/001-2/manakins.txt55
-rw-r--r--world/map/npc/001-2/mapflags.txt2
-rw-r--r--world/map/npc/001-2/pauline.txt320
-rw-r--r--world/map/npc/001-2/sandra.txt104
-rw-r--r--world/map/npc/001-2/tathin.txt29
-rw-r--r--world/map/npc/001-2/tondar.txt56
-rw-r--r--world/map/npc/001-2/wizards.txt25
-rw-r--r--world/map/npc/001-2/yanis.txt42
-rw-r--r--world/map/npc/001-3/_import.txt9
-rw-r--r--world/map/npc/001-3/_mobs.txt4
-rw-r--r--world/map/npc/001-3/_nodes.txt4
-rw-r--r--world/map/npc/001-3/_warps.txt4
-rw-r--r--world/map/npc/001-3/guards.txt34
-rw-r--r--world/map/npc/001-3/mapflags.txt2
-rw-r--r--world/map/npc/001-3/pvpflag.txt1
-rw-r--r--world/map/npc/002-1/_import.txt22
-rw-r--r--world/map/npc/002-1/_mobs.txt16
-rw-r--r--world/map/npc/002-1/_nodes.txt4
-rw-r--r--world/map/npc/002-1/_warps.txt19
-rw-r--r--world/map/npc/002-1/anwar.txt173
-rw-r--r--world/map/npc/002-1/bard.txt132
-rw-r--r--world/map/npc/002-1/elanore.txt622
-rw-r--r--world/map/npc/002-1/gaurds.txt19
-rw-r--r--world/map/npc/002-1/itka.txt21
-rw-r--r--world/map/npc/002-1/lieutenant_dausen.txt111
-rw-r--r--world/map/npc/002-1/luca.txt563
-rw-r--r--world/map/npc/002-1/mapflags.txt1
-rw-r--r--world/map/npc/002-1/mine_debug.txt75
-rw-r--r--world/map/npc/002-1/nickos.txt114
-rw-r--r--world/map/npc/002-1/nomads.txt16
-rw-r--r--world/map/npc/002-1/npcs.txt24
-rw-r--r--world/map/npc/002-1/sarah.txt76
-rw-r--r--world/map/npc/002-1/soul-menhir.txt17
-rw-r--r--world/map/npc/002-1/stewen.txt23
-rw-r--r--world/map/npc/002-1/traveler.txt11
-rw-r--r--world/map/npc/002-2/_import.txt24
-rw-r--r--world/map/npc/002-2/_mobs.txt3
-rw-r--r--world/map/npc/002-2/_nodes.txt4
-rw-r--r--world/map/npc/002-2/_warps.txt20
-rw-r--r--world/map/npc/002-2/bakery.txt159
-rw-r--r--world/map/npc/002-2/barber.txt12
-rw-r--r--world/map/npc/002-2/bleacher.txt132
-rw-r--r--world/map/npc/002-2/casino.txt202
-rw-r--r--world/map/npc/002-2/dedication.txt10
-rw-r--r--world/map/npc/002-2/hetchel.txt447
-rw-r--r--world/map/npc/002-2/imec.txt116
-rw-r--r--world/map/npc/002-2/inya.txt209
-rw-r--r--world/map/npc/002-2/kps.txt155
-rw-r--r--world/map/npc/002-2/kylian.txt403
-rw-r--r--world/map/npc/002-2/latoy.txt27
-rw-r--r--world/map/npc/002-2/mapflags.txt2
-rw-r--r--world/map/npc/002-2/omar.txt335
-rw-r--r--world/map/npc/002-2/phaet.txt30
-rw-r--r--world/map/npc/002-2/rebecca.txt84
-rw-r--r--world/map/npc/002-2/shops.txt3
-rw-r--r--world/map/npc/002-2/stranger.txt408
-rw-r--r--world/map/npc/002-2/troupe_leader.txt63
-rw-r--r--world/map/npc/002-3/_import.txt11
-rw-r--r--world/map/npc/002-3/_mobs.txt3
-rw-r--r--world/map/npc/002-3/_nodes.txt4
-rw-r--r--world/map/npc/002-3/_warps.txt6
-rw-r--r--world/map/npc/002-3/mapflags.txt1
-rw-r--r--world/map/npc/002-3/merchant.txt3
-rw-r--r--world/map/npc/002-3/mining_camp_barrier.txt14
-rw-r--r--world/map/npc/002-3/nathan.txt104
-rw-r--r--world/map/npc/002-3/traveler.txt11
-rw-r--r--world/map/npc/002-4/_import.txt12
-rw-r--r--world/map/npc/002-4/_mobs.txt17
-rw-r--r--world/map/npc/002-4/_nodes.txt4
-rw-r--r--world/map/npc/002-4/_warps.txt4
-rw-r--r--world/map/npc/002-4/mapflags.txt1
-rw-r--r--world/map/npc/002-4/mine_triggerone.txt50
-rw-r--r--world/map/npc/002-4/mine_triggerthree.txt50
-rw-r--r--world/map/npc/002-4/mine_triggertwo.txt51
-rw-r--r--world/map/npc/002-4/naem.txt133
-rw-r--r--world/map/npc/002-4/underground_palace_barrier.txt14
-rw-r--r--world/map/npc/002-5/_import.txt9
-rw-r--r--world/map/npc/002-5/_mobs.txt20
-rw-r--r--world/map/npc/002-5/_nodes.txt4
-rw-r--r--world/map/npc/002-5/_warps.txt4
-rw-r--r--world/map/npc/002-5/chest.txt38
-rw-r--r--world/map/npc/002-5/mapflags.txt1
-rw-r--r--world/map/npc/002-5/sema.txt63
-rw-r--r--world/map/npc/003-1/_import.txt7
-rw-r--r--world/map/npc/003-1/_mobs.txt3
-rw-r--r--world/map/npc/003-1/_nodes.txt4
-rw-r--r--world/map/npc/003-1/_warps.txt3
-rw-r--r--world/map/npc/003-1/npcs.txt259
-rw-r--r--world/map/npc/003-4/_import.txt9
-rw-r--r--world/map/npc/003-4/_mobs.txt9
-rw-r--r--world/map/npc/003-4/_nodes.txt4
-rw-r--r--world/map/npc/003-4/_warps.txt6
-rw-r--r--world/map/npc/003-4/ashley.txt61
-rw-r--r--world/map/npc/003-4/mapflags.txt1
-rw-r--r--world/map/npc/003-4/time-traveler.txt33
-rw-r--r--world/map/npc/004-1/_import.txt7
-rw-r--r--world/map/npc/004-1/_mobs.txt10
-rw-r--r--world/map/npc/004-1/_nodes.txt4
-rw-r--r--world/map/npc/004-1/_warps.txt5
-rw-r--r--world/map/npc/004-1/mapflags.txt1
-rw-r--r--world/map/npc/004-3/_import.txt7
-rw-r--r--world/map/npc/004-3/_mobs.txt10
-rw-r--r--world/map/npc/004-3/_nodes.txt4
-rw-r--r--world/map/npc/004-3/_warps.txt10
-rw-r--r--world/map/npc/004-3/mapflags.txt1
-rw-r--r--world/map/npc/004-4/_import.txt7
-rw-r--r--world/map/npc/004-4/_mobs.txt12
-rw-r--r--world/map/npc/004-4/_nodes.txt4
-rw-r--r--world/map/npc/004-4/_warps.txt9
-rw-r--r--world/map/npc/004-4/mapflags.txt1
-rw-r--r--world/map/npc/004-5/_import.txt8
-rw-r--r--world/map/npc/004-5/_mobs.txt15
-rw-r--r--world/map/npc/004-5/_nodes.txt4
-rw-r--r--world/map/npc/004-5/_warps.txt4
-rw-r--r--world/map/npc/004-5/chest.txt27
-rw-r--r--world/map/npc/004-5/mapflags.txt1
-rw-r--r--world/map/npc/005-3/_import.txt7
-rw-r--r--world/map/npc/005-3/_mobs.txt8
-rw-r--r--world/map/npc/005-3/_nodes.txt4
-rw-r--r--world/map/npc/005-3/_warps.txt14
-rw-r--r--world/map/npc/005-3/mapflags.txt1
-rw-r--r--world/map/npc/006-1/_import.txt13
-rw-r--r--world/map/npc/006-1/_mobs.txt24
-rw-r--r--world/map/npc/006-1/_nodes.txt4
-rw-r--r--world/map/npc/006-1/_warps.txt33
-rw-r--r--world/map/npc/006-1/mapflags.txt1
-rw-r--r--world/map/npc/006-1/mika.txt9
-rw-r--r--world/map/npc/006-1/miriam.txt342
-rw-r--r--world/map/npc/006-1/pachua.txt238
-rw-r--r--world/map/npc/006-1/spirit.txt295
-rw-r--r--world/map/npc/006-1/traveler.txt11
-rw-r--r--world/map/npc/006-1/tree.txt162
-rw-r--r--world/map/npc/006-2/_import.txt9
-rw-r--r--world/map/npc/006-2/_mobs.txt3
-rw-r--r--world/map/npc/006-2/_nodes.txt4
-rw-r--r--world/map/npc/006-2/_warps.txt7
-rw-r--r--world/map/npc/006-2/mapflags.txt1
-rw-r--r--world/map/npc/006-2/npcs.txt103
-rw-r--r--world/map/npc/006-2/shops.txt5
-rw-r--r--world/map/npc/006-3/_import.txt7
-rw-r--r--world/map/npc/006-3/_mobs.txt29
-rw-r--r--world/map/npc/006-3/_nodes.txt4
-rw-r--r--world/map/npc/006-3/_warps.txt23
-rw-r--r--world/map/npc/006-3/mapflags.txt1
-rw-r--r--world/map/npc/007-1/_import.txt8
-rw-r--r--world/map/npc/007-1/_mobs.txt12
-rw-r--r--world/map/npc/007-1/_nodes.txt4
-rw-r--r--world/map/npc/007-1/_warps.txt7
-rw-r--r--world/map/npc/007-1/mapflags.txt1
-rw-r--r--world/map/npc/007-1/voltain.txt405
-rw-r--r--world/map/npc/007-2/_import.txt7
-rw-r--r--world/map/npc/007-2/_mobs.txt3
-rw-r--r--world/map/npc/007-2/_nodes.txt4
-rw-r--r--world/map/npc/007-2/_warps.txt4
-rw-r--r--world/map/npc/007-2/witch.txt1026
-rw-r--r--world/map/npc/008-1/_import.txt15
-rw-r--r--world/map/npc/008-1/_mobs.txt12
-rw-r--r--world/map/npc/008-1/_nodes.txt4
-rw-r--r--world/map/npc/008-1/_warps.txt11
-rw-r--r--world/map/npc/008-1/andra.txt172
-rw-r--r--world/map/npc/008-1/annualeaster.txt224
-rw-r--r--world/map/npc/008-1/banu.txt98
-rw-r--r--world/map/npc/008-1/diryn.txt11
-rw-r--r--world/map/npc/008-1/dock.txt91
-rw-r--r--world/map/npc/008-1/george.txt44
-rw-r--r--world/map/npc/008-1/hinnak.txt257
-rw-r--r--world/map/npc/008-1/mapflags.txt1
-rw-r--r--world/map/npc/008-1/mikhail.txt62
-rw-r--r--world/map/npc/009-1/_import.txt17
-rw-r--r--world/map/npc/009-1/_mobs.txt8
-rw-r--r--world/map/npc/009-1/_nodes.txt4
-rw-r--r--world/map/npc/009-1/_warps.txt15
-rw-r--r--world/map/npc/009-1/constable.txt11
-rw-r--r--world/map/npc/009-1/event.txt167
-rw-r--r--world/map/npc/009-1/guide.txt186
-rw-r--r--world/map/npc/009-1/jack.txt287
-rw-r--r--world/map/npc/009-1/mapflags.txt2
-rw-r--r--world/map/npc/009-1/milly.txt461
-rw-r--r--world/map/npc/009-1/old_man.txt40
-rw-r--r--world/map/npc/009-1/old_woman.txt85
-rw-r--r--world/map/npc/009-1/sabine.txt31
-rw-r--r--world/map/npc/009-1/soul-menhir.txt17
-rw-r--r--world/map/npc/009-1/water_pump.txt7
-rw-r--r--world/map/npc/009-2/_import.txt28
-rw-r--r--world/map/npc/009-2/_mobs.txt3
-rw-r--r--world/map/npc/009-2/_nodes.txt4
-rw-r--r--world/map/npc/009-2/_warps.txt25
-rw-r--r--world/map/npc/009-2/airlia.txt248
-rw-r--r--world/map/npc/009-2/alan.txt226
-rw-r--r--world/map/npc/009-2/bernard.txt125
-rw-r--r--world/map/npc/009-2/doctor.txt88
-rw-r--r--world/map/npc/009-2/drunks.txt18
-rw-r--r--world/map/npc/009-2/entertainer.txt42
-rw-r--r--world/map/npc/009-2/inspector.txt141
-rw-r--r--world/map/npc/009-2/kfahr.txt1086
-rw-r--r--world/map/npc/009-2/lena.txt122
-rw-r--r--world/map/npc/009-2/mapflags.txt2
-rw-r--r--world/map/npc/009-2/misc.txt55
-rw-r--r--world/map/npc/009-2/nicholas.txt414
-rw-r--r--world/map/npc/009-2/nurse.txt561
-rw-r--r--world/map/npc/009-2/olana.txt240
-rw-r--r--world/map/npc/009-2/peter.txt143
-rw-r--r--world/map/npc/009-2/richard.txt8
-rw-r--r--world/map/npc/009-2/selim.txt174
-rw-r--r--world/map/npc/009-2/shops.txt21
-rw-r--r--world/map/npc/009-2/trader.txt155
-rw-r--r--world/map/npc/009-2/waitress.txt73
-rw-r--r--world/map/npc/009-2/wyara.txt557
-rw-r--r--world/map/npc/009-2/yalina.txt11
-rw-r--r--world/map/npc/009-3/_import.txt9
-rw-r--r--world/map/npc/009-3/_mobs.txt7
-rw-r--r--world/map/npc/009-3/_nodes.txt4
-rw-r--r--world/map/npc/009-3/_warps.txt7
-rw-r--r--world/map/npc/009-3/mapflags.txt1
-rw-r--r--world/map/npc/009-3/sword.txt176
-rw-r--r--world/map/npc/009-3/warp.txt27
-rw-r--r--world/map/npc/009-4/_import.txt12
-rw-r--r--world/map/npc/009-4/_mobs.txt10
-rw-r--r--world/map/npc/009-4/_nodes.txt4
-rw-r--r--world/map/npc/009-4/_warps.txt9
-rw-r--r--world/map/npc/009-4/barriers.txt285
-rw-r--r--world/map/npc/009-4/mapflags.txt1
-rw-r--r--world/map/npc/009-4/orum.txt629
-rw-r--r--world/map/npc/009-4/orum_warps.txt36
-rw-r--r--world/map/npc/009-4/torches.txt299
-rw-r--r--world/map/npc/009-4/waric.txt97
-rw-r--r--world/map/npc/009-5/_import.txt7
-rw-r--r--world/map/npc/009-5/_mobs.txt3
-rw-r--r--world/map/npc/009-5/_nodes.txt4
-rw-r--r--world/map/npc/009-5/_warps.txt4
-rw-r--r--world/map/npc/009-5/mapflags.txt1
-rw-r--r--world/map/npc/009-6/_import.txt8
-rw-r--r--world/map/npc/009-6/_mobs.txt3
-rw-r--r--world/map/npc/009-6/_nodes.txt4
-rw-r--r--world/map/npc/009-6/_warps.txt4
-rw-r--r--world/map/npc/009-6/brodomir.txt266
-rw-r--r--world/map/npc/009-6/mapflags.txt1
-rw-r--r--world/map/npc/009-7/_import.txt9
-rw-r--r--world/map/npc/009-7/_mobs.txt3
-rw-r--r--world/map/npc/009-7/_nodes.txt4
-rw-r--r--world/map/npc/009-7/_warps.txt4
-rw-r--r--world/map/npc/009-7/battlemaster.txt91
-rw-r--r--world/map/npc/009-7/eventHandler.txt15
-rw-r--r--world/map/npc/009-7/shops.txt3
-rw-r--r--world/map/npc/009-8/_import.txt8
-rw-r--r--world/map/npc/009-8/_mobs.txt3
-rw-r--r--world/map/npc/009-8/_nodes.txt4
-rw-r--r--world/map/npc/009-8/_warps.txt16
-rw-r--r--world/map/npc/009-8/celestia.txt437
-rw-r--r--world/map/npc/009-8/mapflags.txt3
-rw-r--r--world/map/npc/010-1/_import.txt7
-rw-r--r--world/map/npc/010-1/_mobs.txt16
-rw-r--r--world/map/npc/010-1/_nodes.txt4
-rw-r--r--world/map/npc/010-1/_warps.txt8
-rw-r--r--world/map/npc/010-1/mapflags.txt1
-rw-r--r--world/map/npc/010-2/_import.txt13
-rw-r--r--world/map/npc/010-2/_mobs.txt3
-rw-r--r--world/map/npc/010-2/_nodes.txt4
-rw-r--r--world/map/npc/010-2/_warps.txt10
-rw-r--r--world/map/npc/010-2/band.txt42
-rw-r--r--world/map/npc/010-2/chef.txt127
-rw-r--r--world/map/npc/010-2/dimonds.txt553
-rw-r--r--world/map/npc/010-2/doug.txt23
-rw-r--r--world/map/npc/010-2/loratay.txt1055
-rw-r--r--world/map/npc/010-2/mapflags.txt1
-rw-r--r--world/map/npc/010-2/workers.txt18
-rw-r--r--world/map/npc/011-1/_import.txt11
-rw-r--r--world/map/npc/011-1/_mobs.txt17
-rw-r--r--world/map/npc/011-1/_nodes.txt4
-rw-r--r--world/map/npc/011-1/_warps.txt9
-rw-r--r--world/map/npc/011-1/alchemist.txt1035
-rw-r--r--world/map/npc/011-1/auldsbel.txt1287
-rw-r--r--world/map/npc/011-1/mapflags.txt1
-rw-r--r--world/map/npc/011-1/oscar.txt514
-rw-r--r--world/map/npc/011-1/shops.txt8
-rw-r--r--world/map/npc/011-3/_import.txt8
-rw-r--r--world/map/npc/011-3/_mobs.txt5
-rw-r--r--world/map/npc/011-3/_nodes.txt4
-rw-r--r--world/map/npc/011-3/_warps.txt4
-rw-r--r--world/map/npc/011-3/hermit.txt66
-rw-r--r--world/map/npc/011-3/mapflags.txt1
-rw-r--r--world/map/npc/011-4/_import.txt8
-rw-r--r--world/map/npc/011-4/_mobs.txt10
-rw-r--r--world/map/npc/011-4/_nodes.txt4
-rw-r--r--world/map/npc/011-4/_warps.txt14
-rw-r--r--world/map/npc/011-4/bl_barrier.txt26
-rw-r--r--world/map/npc/011-4/mapflags.txt1
-rw-r--r--world/map/npc/011-6/_import.txt10
-rw-r--r--world/map/npc/011-6/_mobs.txt50
-rw-r--r--world/map/npc/011-6/_nodes.txt4
-rw-r--r--world/map/npc/011-6/_warps.txt25
-rw-r--r--world/map/npc/011-6/barrier.txt16
-rw-r--r--world/map/npc/011-6/bryant.txt76
-rw-r--r--world/map/npc/011-6/crastur.txt221
-rw-r--r--world/map/npc/011-6/mapflags.txt1
-rw-r--r--world/map/npc/012-1/_import.txt11
-rw-r--r--world/map/npc/012-1/_mobs.txt14
-rw-r--r--world/map/npc/012-1/_nodes.txt4
-rw-r--r--world/map/npc/012-1/_warps.txt14
-rw-r--r--world/map/npc/012-1/amrak.txt11
-rw-r--r--world/map/npc/012-1/flowerpentagram2.txt97
-rw-r--r--world/map/npc/012-1/injured-mouboo.txt229
-rw-r--r--world/map/npc/012-1/mapflags.txt1
-rw-r--r--world/map/npc/012-1/shops.txt77
-rw-r--r--world/map/npc/012-3/_import.txt11
-rw-r--r--world/map/npc/012-3/_mobs.txt19
-rw-r--r--world/map/npc/012-3/_nodes.txt4
-rw-r--r--world/map/npc/012-3/_warps.txt13
-rw-r--r--world/map/npc/012-3/beheader.txt196
-rw-r--r--world/map/npc/012-3/mana-seed.txt282
-rw-r--r--world/map/npc/012-3/mapflags.txt1
-rw-r--r--world/map/npc/012-3/traveler.txt11
-rw-r--r--world/map/npc/012-3/warningsigns.txt19
-rw-r--r--world/map/npc/012-4/_import.txt8
-rw-r--r--world/map/npc/012-4/_mobs.txt67
-rw-r--r--world/map/npc/012-4/_nodes.txt4
-rw-r--r--world/map/npc/012-4/_warps.txt6
-rw-r--r--world/map/npc/012-4/mapflags.txt1
-rw-r--r--world/map/npc/012-4/pvpflag.txt1
-rw-r--r--world/map/npc/013-1/_import.txt10
-rw-r--r--world/map/npc/013-1/_mobs.txt18
-rw-r--r--world/map/npc/013-1/_nodes.txt4
-rw-r--r--world/map/npc/013-1/_warps.txt8
-rw-r--r--world/map/npc/013-1/flowerpentagram.txt104
-rw-r--r--world/map/npc/013-1/mapflags.txt1
-rw-r--r--world/map/npc/013-1/sagatha.txt447
-rw-r--r--world/map/npc/013-1/traveler.txt7
-rw-r--r--world/map/npc/013-2/_import.txt10
-rw-r--r--world/map/npc/013-2/_mobs.txt3
-rw-r--r--world/map/npc/013-2/_nodes.txt4
-rw-r--r--world/map/npc/013-2/_warps.txt6
-rw-r--r--world/map/npc/013-2/apprentice.txt99
-rw-r--r--world/map/npc/013-2/mapflags.txt1
-rw-r--r--world/map/npc/013-2/notes.txt213
-rw-r--r--world/map/npc/013-2/wizard.txt144
-rw-r--r--world/map/npc/013-3/_import.txt11
-rw-r--r--world/map/npc/013-3/_mobs.txt31
-rw-r--r--world/map/npc/013-3/_nodes.txt4
-rw-r--r--world/map/npc/013-3/_warps.txt30
-rw-r--r--world/map/npc/013-3/barrier.txt29
-rw-r--r--world/map/npc/013-3/mapflags.txt1
-rw-r--r--world/map/npc/013-3/mask_chest.txt220
-rw-r--r--world/map/npc/013-3/misc.txt7
-rw-r--r--world/map/npc/013-3/sword_chest.txt44
-rw-r--r--world/map/npc/014-1/_import.txt9
-rw-r--r--world/map/npc/014-1/_mobs.txt19
-rw-r--r--world/map/npc/014-1/_nodes.txt4
-rw-r--r--world/map/npc/014-1/_warps.txt6
-rw-r--r--world/map/npc/014-1/goop.txt1
-rw-r--r--world/map/npc/014-1/mapflags.txt1
-rw-r--r--world/map/npc/014-1/wedding-officiator.txt246
-rw-r--r--world/map/npc/014-3/_import.txt7
-rw-r--r--world/map/npc/014-3/_mobs.txt4
-rw-r--r--world/map/npc/014-3/_nodes.txt4
-rw-r--r--world/map/npc/014-3/_warps.txt7
-rw-r--r--world/map/npc/014-3/mapflags.txt1
-rw-r--r--world/map/npc/015-1/_import.txt10
-rw-r--r--world/map/npc/015-1/_mobs.txt13
-rw-r--r--world/map/npc/015-1/_nodes.txt4
-rw-r--r--world/map/npc/015-1/_warps.txt6
-rw-r--r--world/map/npc/015-1/alice.txt97
-rw-r--r--world/map/npc/015-1/barrier.txt8
-rw-r--r--world/map/npc/015-1/mapflags.txt2
-rw-r--r--world/map/npc/015-1/sword.txt324
-rw-r--r--world/map/npc/015-3/_import.txt10
-rw-r--r--world/map/npc/015-3/_mobs.txt7
-rw-r--r--world/map/npc/015-3/_nodes.txt4
-rw-r--r--world/map/npc/015-3/_warps.txt4
-rw-r--r--world/map/npc/015-3/barrier.txt41
-rw-r--r--world/map/npc/015-3/katze.txt203
-rw-r--r--world/map/npc/015-3/mapflags.txt2
-rw-r--r--world/map/npc/015-3/pot.txt124
-rw-r--r--world/map/npc/016-1/_import.txt9
-rw-r--r--world/map/npc/016-1/_mobs.txt12
-rw-r--r--world/map/npc/016-1/_nodes.txt4
-rw-r--r--world/map/npc/016-1/_warps.txt5
-rw-r--r--world/map/npc/016-1/gwendolyn.txt592
-rw-r--r--world/map/npc/016-1/mapflags.txt2
-rw-r--r--world/map/npc/016-1/rossy.txt290
-rw-r--r--world/map/npc/016-2/_import.txt7
-rw-r--r--world/map/npc/016-2/_mobs.txt3
-rw-r--r--world/map/npc/016-2/_nodes.txt4
-rw-r--r--world/map/npc/016-2/_warps.txt5
-rw-r--r--world/map/npc/016-2/contributor.txt41
-rw-r--r--world/map/npc/017-1/_import.txt9
-rw-r--r--world/map/npc/017-1/_mobs.txt21
-rw-r--r--world/map/npc/017-1/_nodes.txt4
-rw-r--r--world/map/npc/017-1/_warps.txt11
-rw-r--r--world/map/npc/017-1/flowerpentagram1.txt82
-rw-r--r--world/map/npc/017-1/flowerpentagram5.txt140
-rw-r--r--world/map/npc/017-1/mapflags.txt1
-rw-r--r--world/map/npc/017-2/_import.txt7
-rw-r--r--world/map/npc/017-2/_mobs.txt3
-rw-r--r--world/map/npc/017-2/_nodes.txt4
-rw-r--r--world/map/npc/017-2/_warps.txt5
-rw-r--r--world/map/npc/017-2/mapflags.txt1
-rw-r--r--world/map/npc/017-3/_import.txt7
-rw-r--r--world/map/npc/017-3/_mobs.txt3
-rw-r--r--world/map/npc/017-3/_nodes.txt4
-rw-r--r--world/map/npc/017-3/_warps.txt12
-rw-r--r--world/map/npc/017-3/mapflags.txt1
-rw-r--r--world/map/npc/017-4/_import.txt10
-rw-r--r--world/map/npc/017-4/_mobs.txt3
-rw-r--r--world/map/npc/017-4/_nodes.txt4
-rw-r--r--world/map/npc/017-4/_warps.txt10
-rw-r--r--world/map/npc/017-4/guardingspirit.txt97
-rw-r--r--world/map/npc/017-4/mapflags.txt1
-rw-r--r--world/map/npc/017-4/orum.txt843
-rw-r--r--world/map/npc/017-4/waric.txt421
-rw-r--r--world/map/npc/017-9/_import.txt8
-rw-r--r--world/map/npc/017-9/_mobs.txt3
-rw-r--r--world/map/npc/017-9/_nodes.txt4
-rw-r--r--world/map/npc/017-9/_warps.txt8
-rw-r--r--world/map/npc/017-9/mapflags.txt1
-rw-r--r--world/map/npc/017-9/npcs.txt39
-rw-r--r--world/map/npc/018-1/_import.txt11
-rw-r--r--world/map/npc/018-1/_mobs.txt30
-rw-r--r--world/map/npc/018-1/_nodes.txt4
-rw-r--r--world/map/npc/018-1/_warps.txt20
-rw-r--r--world/map/npc/018-1/flowerpentagram3.txt111
-rw-r--r--world/map/npc/018-1/mapflags.txt1
-rw-r--r--world/map/npc/018-1/mike.txt20
-rw-r--r--world/map/npc/018-1/miners.txt37
-rw-r--r--world/map/npc/018-1/sword.txt11
-rw-r--r--world/map/npc/018-2/_import.txt12
-rw-r--r--world/map/npc/018-2/_mobs.txt4
-rw-r--r--world/map/npc/018-2/_nodes.txt4
-rw-r--r--world/map/npc/018-2/_warps.txt10
-rw-r--r--world/map/npc/018-2/angus.txt22
-rw-r--r--world/map/npc/018-2/books.txt23
-rw-r--r--world/map/npc/018-2/caul.txt1097
-rw-r--r--world/map/npc/018-2/mapflags.txt1
-rw-r--r--world/map/npc/018-2/miners.txt176
-rw-r--r--world/map/npc/018-2/receptionist.txt68
-rw-r--r--world/map/npc/018-3/_import.txt10
-rw-r--r--world/map/npc/018-3/_mobs.txt26
-rw-r--r--world/map/npc/018-3/_nodes.txt4
-rw-r--r--world/map/npc/018-3/_warps.txt25
-rw-r--r--world/map/npc/018-3/bookcase.txt68
-rw-r--r--world/map/npc/018-3/evil-obelisk.txt18
-rw-r--r--world/map/npc/018-3/mapflags.txt1
-rw-r--r--world/map/npc/018-3/sword.txt11
-rw-r--r--world/map/npc/019-1/_import.txt9
-rw-r--r--world/map/npc/019-1/_mobs.txt7
-rw-r--r--world/map/npc/019-1/_nodes.txt4
-rw-r--r--world/map/npc/019-1/_warps.txt7
-rw-r--r--world/map/npc/019-1/mapflags.txt1
-rw-r--r--world/map/npc/019-1/santa_helper.txt96
-rw-r--r--world/map/npc/019-1/snowman.txt87
-rw-r--r--world/map/npc/019-3/_import.txt7
-rw-r--r--world/map/npc/019-3/_mobs.txt5
-rw-r--r--world/map/npc/019-3/_nodes.txt4
-rw-r--r--world/map/npc/019-3/_warps.txt6
-rw-r--r--world/map/npc/019-3/mapflags.txt1
-rw-r--r--world/map/npc/019-4/_import.txt7
-rw-r--r--world/map/npc/019-4/_mobs.txt7
-rw-r--r--world/map/npc/019-4/_nodes.txt4
-rw-r--r--world/map/npc/019-4/_warps.txt5
-rw-r--r--world/map/npc/019-4/mapflags.txt1
-rw-r--r--world/map/npc/020-1/KrickKrackKrock.txt124
-rw-r--r--world/map/npc/020-1/_import.txt12
-rw-r--r--world/map/npc/020-1/_mobs.txt4
-rw-r--r--world/map/npc/020-1/_nodes.txt4
-rw-r--r--world/map/npc/020-1/_warps.txt13
-rw-r--r--world/map/npc/020-1/mapflags.txt2
-rw-r--r--world/map/npc/020-1/rockscissor.txt99
-rw-r--r--world/map/npc/020-1/soul-menhir.txt17
-rw-r--r--world/map/npc/020-1/traveler.txt7
-rw-r--r--world/map/npc/020-1/well.txt120
-rw-r--r--world/map/npc/020-2/_import.txt11
-rw-r--r--world/map/npc/020-2/_mobs.txt3
-rw-r--r--world/map/npc/020-2/_nodes.txt4
-rw-r--r--world/map/npc/020-2/_warps.txt9
-rw-r--r--world/map/npc/020-2/baktar.txt249
-rw-r--r--world/map/npc/020-2/banker.txt18
-rw-r--r--world/map/npc/020-2/furquest.txt655
-rw-r--r--world/map/npc/020-2/mapflags.txt2
-rw-r--r--world/map/npc/020-2/shops.txt34
-rw-r--r--world/map/npc/020-3/_import.txt7
-rw-r--r--world/map/npc/020-3/_mobs.txt7
-rw-r--r--world/map/npc/020-3/_nodes.txt4
-rw-r--r--world/map/npc/020-3/_warps.txt10
-rw-r--r--world/map/npc/020-3/mapflags.txt1
-rw-r--r--world/map/npc/021-3/_import.txt7
-rw-r--r--world/map/npc/021-3/_mobs.txt13
-rw-r--r--world/map/npc/021-3/_nodes.txt4
-rw-r--r--world/map/npc/021-3/_warps.txt7
-rw-r--r--world/map/npc/021-3/mapflags.txt1
-rw-r--r--world/map/npc/023-1/_import.txt7
-rw-r--r--world/map/npc/023-1/_mobs.txt16
-rw-r--r--world/map/npc/023-1/_nodes.txt4
-rw-r--r--world/map/npc/023-1/_warps.txt16
-rw-r--r--world/map/npc/023-1/mapflags.txt1
-rw-r--r--world/map/npc/023-2/_import.txt7
-rw-r--r--world/map/npc/023-2/_mobs.txt3
-rw-r--r--world/map/npc/023-2/_nodes.txt4
-rw-r--r--world/map/npc/023-2/_warps.txt5
-rw-r--r--world/map/npc/023-2/mapflags.txt1
-rw-r--r--world/map/npc/023-3/_import.txt7
-rw-r--r--world/map/npc/023-3/_mobs.txt9
-rw-r--r--world/map/npc/023-3/_nodes.txt4
-rw-r--r--world/map/npc/023-3/_warps.txt11
-rw-r--r--world/map/npc/023-3/mapflags.txt1
-rw-r--r--world/map/npc/025-1/_import.txt9
-rw-r--r--world/map/npc/025-1/_mobs.txt13
-rw-r--r--world/map/npc/025-1/_nodes.txt4
-rw-r--r--world/map/npc/025-1/_warps.txt6
-rw-r--r--world/map/npc/025-1/barrier.txt17
-rw-r--r--world/map/npc/025-1/mapflags.txt2
-rw-r--r--world/map/npc/025-1/reset.txt50
-rw-r--r--world/map/npc/025-3/_import.txt8
-rw-r--r--world/map/npc/025-3/_mobs.txt7
-rw-r--r--world/map/npc/025-3/_nodes.txt4
-rw-r--r--world/map/npc/025-3/_warps.txt5
-rw-r--r--world/map/npc/025-3/barriers.txt1295
-rw-r--r--world/map/npc/025-3/mapflags.txt1
-rw-r--r--world/map/npc/025-4/_import.txt10
-rw-r--r--world/map/npc/025-4/_mobs.txt5
-rw-r--r--world/map/npc/025-4/_nodes.txt4
-rw-r--r--world/map/npc/025-4/_warps.txt4
-rw-r--r--world/map/npc/025-4/battlecaves.txt1018
-rw-r--r--world/map/npc/025-4/clauquer.txt116
-rw-r--r--world/map/npc/025-4/julia.txt46
-rw-r--r--world/map/npc/025-4/mapflags.txt2
-rw-r--r--world/map/npc/026-1/_import.txt13
-rw-r--r--world/map/npc/026-1/_mobs.txt17
-rw-r--r--world/map/npc/026-1/_nodes.txt4
-rw-r--r--world/map/npc/026-1/_warps.txt8
-rw-r--r--world/map/npc/026-1/evil_guard.txt28
-rw-r--r--world/map/npc/026-1/headless_man.txt209
-rw-r--r--world/map/npc/026-1/husband.txt355
-rw-r--r--world/map/npc/026-1/mapflags.txt2
-rw-r--r--world/map/npc/026-1/sign.txt8
-rw-r--r--world/map/npc/026-1/soul-menhir.txt17
-rw-r--r--world/map/npc/026-1/traveler.txt11
-rw-r--r--world/map/npc/026-2/_import.txt19
-rw-r--r--world/map/npc/026-2/_mobs.txt3
-rw-r--r--world/map/npc/026-2/_nodes.txt16
-rw-r--r--world/map/npc/026-2/_warps.txt14
-rw-r--r--world/map/npc/026-2/barman.txt10
-rw-r--r--world/map/npc/026-2/cerhan.txt55
-rw-r--r--world/map/npc/026-2/crying_child.txt219
-rw-r--r--world/map/npc/026-2/diary.txt55
-rw-r--r--world/map/npc/026-2/door.txt23
-rw-r--r--world/map/npc/026-2/eurni.txt17
-rw-r--r--world/map/npc/026-2/golbenez.txt625
-rw-r--r--world/map/npc/026-2/gy_inn_shops.txt46
-rw-r--r--world/map/npc/026-2/innkeeper.txt472
-rw-r--r--world/map/npc/026-2/lover.txt318
-rw-r--r--world/map/npc/026-2/mapflags.txt2
-rw-r--r--world/map/npc/026-2/testnpcs.txt63
-rw-r--r--world/map/npc/026-2/werewolf.txt179
-rw-r--r--world/map/npc/027-1/_import.txt9
-rw-r--r--world/map/npc/027-1/_mobs.txt19
-rw-r--r--world/map/npc/027-1/_nodes.txt4
-rw-r--r--world/map/npc/027-1/_warps.txt5
-rw-r--r--world/map/npc/027-1/crypt.txt11
-rw-r--r--world/map/npc/027-1/graves.txt121
-rw-r--r--world/map/npc/027-1/mapflags.txt2
-rw-r--r--world/map/npc/027-2/_import.txt10
-rw-r--r--world/map/npc/027-2/_mobs.txt7
-rw-r--r--world/map/npc/027-2/_nodes.txt4
-rw-r--r--world/map/npc/027-2/_warps.txt6
-rw-r--r--world/map/npc/027-2/alacrius.txt129
-rw-r--r--world/map/npc/027-2/caretaker.txt117
-rw-r--r--world/map/npc/027-2/mapflags.txt2
-rw-r--r--world/map/npc/027-2/thurston.txt23
-rw-r--r--world/map/npc/027-3/_import.txt10
-rw-r--r--world/map/npc/027-3/_mobs.txt11
-rw-r--r--world/map/npc/027-3/_nodes.txt4
-rw-r--r--world/map/npc/027-3/_warps.txt5
-rw-r--r--world/map/npc/027-3/casket_traps.txt80
-rw-r--r--world/map/npc/027-3/general_krukan_door.txt19
-rw-r--r--world/map/npc/027-3/mapflags.txt1
-rw-r--r--world/map/npc/027-3/monsters.txt69
-rw-r--r--world/map/npc/027-4/_import.txt10
-rw-r--r--world/map/npc/027-4/_mobs.txt8
-rw-r--r--world/map/npc/027-4/_nodes.txt4
-rw-r--r--world/map/npc/027-4/_warps.txt5
-rw-r--r--world/map/npc/027-4/casket_traps.txt80
-rw-r--r--world/map/npc/027-4/general_razha_door.txt19
-rw-r--r--world/map/npc/027-4/mapflags.txt1
-rw-r--r--world/map/npc/027-4/monsters.txt70
-rw-r--r--world/map/npc/027-5/_import.txt9
-rw-r--r--world/map/npc/027-5/_mobs.txt10
-rw-r--r--world/map/npc/027-5/_nodes.txt4
-rw-r--r--world/map/npc/027-5/_warps.txt4
-rw-r--r--world/map/npc/027-5/casket_traps.txt80
-rw-r--r--world/map/npc/027-5/general_terogan_door.txt19
-rw-r--r--world/map/npc/027-5/mapflags.txt1
-rw-r--r--world/map/npc/027-6/_import.txt10
-rw-r--r--world/map/npc/027-6/_mobs.txt3
-rw-r--r--world/map/npc/027-6/_nodes.txt4
-rw-r--r--world/map/npc/027-6/_warps.txt3
-rw-r--r--world/map/npc/027-6/casket_traps.txt70
-rw-r--r--world/map/npc/027-6/general_krukan.txt231
-rw-r--r--world/map/npc/027-6/general_krukan_exitdoor.txt14
-rw-r--r--world/map/npc/027-6/mapflags.txt2
-rw-r--r--world/map/npc/027-7/_import.txt9
-rw-r--r--world/map/npc/027-7/_mobs.txt3
-rw-r--r--world/map/npc/027-7/_nodes.txt4
-rw-r--r--world/map/npc/027-7/_warps.txt3
-rw-r--r--world/map/npc/027-7/general_razha.txt235
-rw-r--r--world/map/npc/027-7/general_razha_exitdoor.txt14
-rw-r--r--world/map/npc/027-7/mapflags.txt2
-rw-r--r--world/map/npc/027-8/_import.txt9
-rw-r--r--world/map/npc/027-8/_mobs.txt3
-rw-r--r--world/map/npc/027-8/_nodes.txt4
-rw-r--r--world/map/npc/027-8/_warps.txt3
-rw-r--r--world/map/npc/027-8/general_terogan.txt323
-rw-r--r--world/map/npc/027-8/general_terogan_exitdoor.txt14
-rw-r--r--world/map/npc/027-8/mapflags.txt2
-rw-r--r--world/map/npc/028-1/_import.txt8
-rw-r--r--world/map/npc/028-1/_mobs.txt3
-rw-r--r--world/map/npc/028-1/_nodes.txt4
-rw-r--r--world/map/npc/028-1/_warps.txt4
-rw-r--r--world/map/npc/028-1/mapflags.txt1
-rw-r--r--world/map/npc/028-1/portal.txt16
-rw-r--r--world/map/npc/028-3/_import.txt7
-rw-r--r--world/map/npc/028-3/_mobs.txt3
-rw-r--r--world/map/npc/028-3/_nodes.txt4
-rw-r--r--world/map/npc/028-3/_warps.txt4
-rw-r--r--world/map/npc/028-3/mapflags.txt1
-rw-r--r--world/map/npc/029-1/_import.txt23
-rw-r--r--world/map/npc/029-1/_mobs.txt9
-rw-r--r--world/map/npc/029-1/_nodes.txt4
-rw-r--r--world/map/npc/029-1/_warps.txt8
-rw-r--r--world/map/npc/029-1/aahna.txt13
-rw-r--r--world/map/npc/029-1/barrier.txt23
-rw-r--r--world/map/npc/029-1/dock.txt46
-rw-r--r--world/map/npc/029-1/ferry_master.txt21
-rw-r--r--world/map/npc/029-1/hasan.txt207
-rw-r--r--world/map/npc/029-1/hideandseek.txt386
-rw-r--r--world/map/npc/029-1/kaan.txt117
-rw-r--r--world/map/npc/029-1/liana.txt40
-rw-r--r--world/map/npc/029-1/mapflags.txt1
-rw-r--r--world/map/npc/029-1/monster_guide.txt48
-rw-r--r--world/map/npc/029-1/rewards_master.txt151
-rw-r--r--world/map/npc/029-1/soul-menhir.txt17
-rw-r--r--world/map/npc/029-1/traveler.txt11
-rw-r--r--world/map/npc/029-1/tutorial.txt58
-rw-r--r--world/map/npc/029-1/valon.txt146
-rw-r--r--world/map/npc/029-1/vincent.txt136
-rw-r--r--world/map/npc/029-1/zegas.txt99
-rw-r--r--world/map/npc/029-2/_import.txt18
-rw-r--r--world/map/npc/029-2/_mobs.txt4
-rw-r--r--world/map/npc/029-2/_nodes.txt16
-rw-r--r--world/map/npc/029-2/_warps.txt9
-rw-r--r--world/map/npc/029-2/alchemy.txt138
-rw-r--r--world/map/npc/029-2/bankroom.txt9
-rw-r--r--world/map/npc/029-2/barrels.txt55
-rw-r--r--world/map/npc/029-2/barrels_config.txt88
-rw-r--r--world/map/npc/029-2/cynric.txt8
-rw-r--r--world/map/npc/029-2/mapflags.txt3
-rw-r--r--world/map/npc/029-2/morgan.txt120
-rw-r--r--world/map/npc/029-2/nyle.txt51
-rw-r--r--world/map/npc/029-2/sorfina.txt419
-rw-r--r--world/map/npc/029-2/stat_reset.txt51
-rw-r--r--world/map/npc/029-2/tanisha.txt291
-rw-r--r--world/map/npc/029-2/two_arms.txt4
-rw-r--r--world/map/npc/029-3/_import.txt9
-rw-r--r--world/map/npc/029-3/_mobs.txt3
-rw-r--r--world/map/npc/029-3/_nodes.txt4
-rw-r--r--world/map/npc/029-3/_warps.txt3
-rw-r--r--world/map/npc/029-3/barrier.txt10
-rw-r--r--world/map/npc/029-3/mapflags.txt2
-rw-r--r--world/map/npc/029-3/parua.txt407
-rw-r--r--world/map/npc/029-4/_import.txt8
-rw-r--r--world/map/npc/029-4/_mobs.txt9
-rw-r--r--world/map/npc/029-4/_nodes.txt4
-rw-r--r--world/map/npc/029-4/_warps.txt4
-rw-r--r--world/map/npc/029-4/mapflags.txt1
-rw-r--r--world/map/npc/029-4/time-traveler.txt31
-rw-r--r--world/map/npc/030-1/_import.txt8
-rw-r--r--world/map/npc/030-1/_mobs.txt7
-rw-r--r--world/map/npc/030-1/_nodes.txt4
-rw-r--r--world/map/npc/030-1/_warps.txt4
-rw-r--r--world/map/npc/030-1/mapflags.txt1
-rw-r--r--world/map/npc/030-1/time-traveler.txt34
-rw-r--r--world/map/npc/030-2/_import.txt20
-rw-r--r--world/map/npc/030-2/_mobs.txt3
-rw-r--r--world/map/npc/030-2/_nodes.txt4
-rw-r--r--world/map/npc/030-2/_warps.txt18
-rw-r--r--world/map/npc/030-2/avalia.txt223
-rw-r--r--world/map/npc/030-2/basic_npcs.txt83
-rw-r--r--world/map/npc/030-2/bedding_helper.txt102
-rw-r--r--world/map/npc/030-2/chief_helper.txt96
-rw-r--r--world/map/npc/030-2/eljas.txt209
-rw-r--r--world/map/npc/030-2/empty_boxes_helper.txt68
-rw-r--r--world/map/npc/030-2/glitter_helper.txt99
-rw-r--r--world/map/npc/030-2/guards.txt36
-rw-r--r--world/map/npc/030-2/mapflags.txt1
-rw-r--r--world/map/npc/030-2/present_helper.txt86
-rw-r--r--world/map/npc/030-2/roasted_acorns_helper.txt76
-rw-r--r--world/map/npc/030-2/shipping_helper.txt119
-rw-r--r--world/map/npc/030-2/storage_helper.txt108
-rw-r--r--world/map/npc/030-2/wrapping_paper_helper.txt144
-rw-r--r--world/map/npc/030-3/_import.txt8
-rw-r--r--world/map/npc/030-3/_mobs.txt3
-rw-r--r--world/map/npc/030-3/_nodes.txt4
-rw-r--r--world/map/npc/030-3/_warps.txt4
-rw-r--r--world/map/npc/030-3/mapflags.txt1
-rw-r--r--world/map/npc/030-3/orum_homunculus.txt476
-rw-r--r--world/map/npc/030-4/_import.txt8
-rw-r--r--world/map/npc/030-4/_mobs.txt3
-rw-r--r--world/map/npc/030-4/_nodes.txt4
-rw-r--r--world/map/npc/030-4/_warps.txt3
-rw-r--r--world/map/npc/030-4/mana_battery.txt454
-rw-r--r--world/map/npc/030-4/mapflags.txt2
-rw-r--r--world/map/npc/031-1/_import.txt11
-rw-r--r--world/map/npc/031-1/_mobs.txt7
-rw-r--r--world/map/npc/031-1/_nodes.txt4
-rw-r--r--world/map/npc/031-1/_warps.txt6
-rw-r--r--world/map/npc/031-1/angelaOutside.txt145
-rw-r--r--world/map/npc/031-1/dock.txt44
-rw-r--r--world/map/npc/031-1/frozenbeard.txt24
-rw-r--r--world/map/npc/031-1/house.txt15
-rw-r--r--world/map/npc/031-1/mapflags.txt1
-rw-r--r--world/map/npc/031-2/_import.txt9
-rw-r--r--world/map/npc/031-2/_mobs.txt3
-rw-r--r--world/map/npc/031-2/_nodes.txt4
-rw-r--r--world/map/npc/031-2/_warps.txt5
-rw-r--r--world/map/npc/031-2/angelaHouse.txt93
-rw-r--r--world/map/npc/031-2/cindyHouse.txt47
-rw-r--r--world/map/npc/031-2/mapflags.txt1
-rw-r--r--world/map/npc/031-3/_import.txt8
-rw-r--r--world/map/npc/031-3/_mobs.txt92
-rw-r--r--world/map/npc/031-3/_nodes.txt4
-rw-r--r--world/map/npc/031-3/_warps.txt52
-rw-r--r--world/map/npc/031-3/labyrinth.txt13
-rw-r--r--world/map/npc/031-3/mapflags.txt1
-rw-r--r--world/map/npc/031-4/_import.txt9
-rw-r--r--world/map/npc/031-4/_mobs.txt3
-rw-r--r--world/map/npc/031-4/_nodes.txt4
-rw-r--r--world/map/npc/031-4/_warps.txt3
-rw-r--r--world/map/npc/031-4/barrier.txt10
-rw-r--r--world/map/npc/031-4/cindyCave.txt232
-rw-r--r--world/map/npc/031-4/mapflags.txt2
-rw-r--r--world/map/npc/032-3/_import.txt7
-rw-r--r--world/map/npc/032-3/_mobs.txt13
-rw-r--r--world/map/npc/032-3/_nodes.txt4
-rw-r--r--world/map/npc/032-3/_warps.txt5
-rw-r--r--world/map/npc/032-3/mapflags.txt1
-rw-r--r--world/map/npc/033-1/_import.txt13
-rw-r--r--world/map/npc/033-1/_mobs.txt7
-rw-r--r--world/map/npc/033-1/_nodes.txt4
-rw-r--r--world/map/npc/033-1/_warps.txt5
-rw-r--r--world/map/npc/033-1/backDoor.txt10
-rw-r--r--world/map/npc/033-1/barbarianinit.txt26
-rw-r--r--world/map/npc/033-1/birrod.txt264
-rw-r--r--world/map/npc/033-1/kimarr.txt577
-rw-r--r--world/map/npc/033-1/mapflags.txt1
-rw-r--r--world/map/npc/033-1/traveler.txt11
-rw-r--r--world/map/npc/033-1/yerrnk.txt206
-rw-r--r--world/map/npc/034-1/_import.txt9
-rw-r--r--world/map/npc/034-1/_mobs.txt9
-rw-r--r--world/map/npc/034-1/_nodes.txt4
-rw-r--r--world/map/npc/034-1/_warps.txt9
-rw-r--r--world/map/npc/034-1/ambushs.txt902
-rw-r--r--world/map/npc/034-1/mapflags.txt1
-rw-r--r--world/map/npc/034-1/yetiSpawn.txt62
-rw-r--r--world/map/npc/034-2/_import.txt7
-rw-r--r--world/map/npc/034-2/_mobs.txt3
-rw-r--r--world/map/npc/034-2/_nodes.txt4
-rw-r--r--world/map/npc/034-2/_warps.txt5
-rw-r--r--world/map/npc/034-2/mapflags.txt1
-rw-r--r--world/map/npc/035-2/_import.txt11
-rw-r--r--world/map/npc/035-2/_mobs.txt3
-rw-r--r--world/map/npc/035-2/_nodes.txt4
-rw-r--r--world/map/npc/035-2/_warps.txt3
-rw-r--r--world/map/npc/035-2/casino.txt12
-rw-r--r--world/map/npc/035-2/emblems.txt43
-rw-r--r--world/map/npc/035-2/koga.txt33
-rw-r--r--world/map/npc/035-2/mapflags.txt2
-rw-r--r--world/map/npc/035-2/shops.txt13
-rw-r--r--world/map/npc/036-2/_import.txt11
-rw-r--r--world/map/npc/036-2/_mobs.txt3
-rw-r--r--world/map/npc/036-2/_nodes.txt4
-rw-r--r--world/map/npc/036-2/_warps.txt3
-rw-r--r--world/map/npc/036-2/casino.txt12
-rw-r--r--world/map/npc/036-2/emblems.txt31
-rw-r--r--world/map/npc/036-2/koga-candor.txt27
-rw-r--r--world/map/npc/036-2/mapflags.txt2
-rw-r--r--world/map/npc/036-2/shops.txt14
-rw-r--r--world/map/npc/041-1/_import.txt7
-rw-r--r--world/map/npc/041-1/_mobs.txt14
-rw-r--r--world/map/npc/041-1/_nodes.txt4
-rw-r--r--world/map/npc/041-1/_warps.txt5
-rw-r--r--world/map/npc/041-1/mapflags.txt1
-rw-r--r--world/map/npc/042-1/_import.txt7
-rw-r--r--world/map/npc/042-1/_mobs.txt13
-rw-r--r--world/map/npc/042-1/_nodes.txt4
-rw-r--r--world/map/npc/042-1/_warps.txt5
-rw-r--r--world/map/npc/042-1/mapflags.txt1
-rw-r--r--world/map/npc/043-1/_import.txt7
-rw-r--r--world/map/npc/043-1/_mobs.txt6
-rw-r--r--world/map/npc/043-1/_nodes.txt4
-rw-r--r--world/map/npc/043-1/_warps.txt4
-rw-r--r--world/map/npc/043-1/mapflags.txt1
-rw-r--r--world/map/npc/043-3/_import.txt7
-rw-r--r--world/map/npc/043-3/_mobs.txt12
-rw-r--r--world/map/npc/043-3/_nodes.txt4
-rw-r--r--world/map/npc/043-3/_warps.txt7
-rw-r--r--world/map/npc/043-3/mapflags.txt1
-rw-r--r--world/map/npc/043-4/_import.txt7
-rw-r--r--world/map/npc/043-4/_mobs.txt25
-rw-r--r--world/map/npc/043-4/_nodes.txt4
-rw-r--r--world/map/npc/043-4/_warps.txt7
-rw-r--r--world/map/npc/043-4/mapflags.txt1
-rw-r--r--world/map/npc/045-1/_import.txt7
-rw-r--r--world/map/npc/045-1/_mobs.txt18
-rw-r--r--world/map/npc/045-1/_nodes.txt4
-rw-r--r--world/map/npc/045-1/_warps.txt6
-rw-r--r--world/map/npc/045-1/mapflags.txt1
-rw-r--r--world/map/npc/046-1/_import.txt7
-rw-r--r--world/map/npc/046-1/_mobs.txt14
-rw-r--r--world/map/npc/046-1/_nodes.txt4
-rw-r--r--world/map/npc/046-1/_warps.txt13
-rw-r--r--world/map/npc/046-1/mapflags.txt1
-rw-r--r--world/map/npc/046-3/_import.txt7
-rw-r--r--world/map/npc/046-3/_mobs.txt18
-rw-r--r--world/map/npc/046-3/_nodes.txt4
-rw-r--r--world/map/npc/046-3/_warps.txt9
-rw-r--r--world/map/npc/046-3/mapflags.txt1
-rw-r--r--world/map/npc/047-1/_import.txt7
-rw-r--r--world/map/npc/047-1/_mobs.txt25
-rw-r--r--world/map/npc/047-1/_nodes.txt4
-rw-r--r--world/map/npc/047-1/_warps.txt17
-rw-r--r--world/map/npc/047-1/mapflags.txt1
-rw-r--r--world/map/npc/047-3/_import.txt7
-rw-r--r--world/map/npc/047-3/_mobs.txt24
-rw-r--r--world/map/npc/047-3/_nodes.txt4
-rw-r--r--world/map/npc/047-3/_warps.txt12
-rw-r--r--world/map/npc/047-3/mapflags.txt1
-rw-r--r--world/map/npc/048-2/_import.txt29
-rw-r--r--world/map/npc/048-2/_mobs.txt3
-rw-r--r--world/map/npc/048-2/_nodes.txt4
-rw-r--r--world/map/npc/048-2/_warps.txt20
-rw-r--r--world/map/npc/048-2/bluesageConfig.txt121
-rw-r--r--world/map/npc/048-2/helperAccused.txt145
-rw-r--r--world/map/npc/048-2/helperBookpages1.txt142
-rw-r--r--world/map/npc/048-2/helperBookpages2.txt89
-rw-r--r--world/map/npc/048-2/helperBookpages3.txt68
-rw-r--r--world/map/npc/048-2/helperChief.txt123
-rw-r--r--world/map/npc/048-2/helperCleaning1.txt104
-rw-r--r--world/map/npc/048-2/helperCleaning2.txt73
-rw-r--r--world/map/npc/048-2/helperCleaning3.txt77
-rw-r--r--world/map/npc/048-2/helperCleaning4.txt68
-rw-r--r--world/map/npc/048-2/helperCleaning5.txt70
-rw-r--r--world/map/npc/048-2/helperJanitor.txt103
-rw-r--r--world/map/npc/048-2/helperMInk.txt106
-rw-r--r--world/map/npc/048-2/helperMReed.txt95
-rw-r--r--world/map/npc/048-2/helperMSilk.txt90
-rw-r--r--world/map/npc/048-2/helperMYetiClaw.txt97
-rw-r--r--world/map/npc/048-2/helperResting1.txt69
-rw-r--r--world/map/npc/048-2/helperResting2.txt70
-rw-r--r--world/map/npc/048-2/mapflags.txt1
-rw-r--r--world/map/npc/048-2/sageNikolai.txt286
-rw-r--r--world/map/npc/048-2/slimes.txt635
-rw-r--r--world/map/npc/048-2/traveler.txt11
-rw-r--r--world/map/npc/048-2/visitors.txt41
-rw-r--r--world/map/npc/051-1/_import.txt12
-rw-r--r--world/map/npc/051-1/_mobs.txt5
-rw-r--r--world/map/npc/051-1/_nodes.txt4
-rw-r--r--world/map/npc/051-1/_warps.txt3
-rw-r--r--world/map/npc/051-1/desert.txt143
-rw-r--r--world/map/npc/051-1/desertmonsters.txt172
-rw-r--r--world/map/npc/051-1/forest.txt89
-rw-r--r--world/map/npc/051-1/forestmonsters.txt23
-rw-r--r--world/map/npc/051-1/janitor.txt27
-rw-r--r--world/map/npc/051-1/mapflags.txt2
-rw-r--r--world/map/npc/051-3/_import.txt12
-rw-r--r--world/map/npc/051-3/_mobs.txt19
-rw-r--r--world/map/npc/051-3/_nodes.txt4
-rw-r--r--world/map/npc/051-3/_warps.txt3
-rw-r--r--world/map/npc/051-3/ambush.txt182
-rw-r--r--world/map/npc/051-3/jailslimes.txt31
-rw-r--r--world/map/npc/051-3/janitor.txt11
-rw-r--r--world/map/npc/051-3/locks.txt69
-rw-r--r--world/map/npc/051-3/mapflags.txt2
-rw-r--r--world/map/npc/051-3/reinforcements.txt85
-rw-r--r--world/map/npc/052-1/_import.txt9
-rw-r--r--world/map/npc/052-1/_mobs.txt4
-rw-r--r--world/map/npc/052-1/_nodes.txt4
-rw-r--r--world/map/npc/052-1/_warps.txt3
-rw-r--r--world/map/npc/052-1/channelling.txt339
-rw-r--r--world/map/npc/052-1/janitor.txt19
-rw-r--r--world/map/npc/052-1/mapflags.txt2
-rw-r--r--world/map/npc/052-2/_import.txt12
-rw-r--r--world/map/npc/052-2/_mobs.txt3
-rw-r--r--world/map/npc/052-2/_nodes.txt4
-rw-r--r--world/map/npc/052-2/_warps.txt3
-rw-r--r--world/map/npc/052-2/chest.txt181
-rw-r--r--world/map/npc/052-2/janitor.txt38
-rw-r--r--world/map/npc/052-2/lobby.txt382
-rw-r--r--world/map/npc/052-2/mapflags.txt2
-rw-r--r--world/map/npc/052-2/partyroom.txt286
-rw-r--r--world/map/npc/052-2/storage.txt191
-rw-r--r--world/map/npc/055-1/_import.txt10
-rw-r--r--world/map/npc/055-1/_mobs.txt20
-rw-r--r--world/map/npc/055-1/_nodes.txt16
-rw-r--r--world/map/npc/055-1/_warps.txt10
-rw-r--r--world/map/npc/055-1/flowerpentagram4.txt125
-rw-r--r--world/map/npc/055-1/mapflags.txt1
-rw-r--r--world/map/npc/055-1/pumpkins.txt155
-rw-r--r--world/map/npc/055-1/traveler.txt11
-rw-r--r--world/map/npc/055-3/_import.txt7
-rw-r--r--world/map/npc/055-3/_mobs.txt11
-rw-r--r--world/map/npc/055-3/_nodes.txt4
-rw-r--r--world/map/npc/055-3/_warps.txt9
-rw-r--r--world/map/npc/055-3/mapflags.txt1
-rw-r--r--world/map/npc/056-2/_import.txt10
-rw-r--r--world/map/npc/056-2/_mobs.txt3
-rw-r--r--world/map/npc/056-2/_nodes.txt4
-rw-r--r--world/map/npc/056-2/_warps.txt5
-rw-r--r--world/map/npc/056-2/barrier.txt18
-rw-r--r--world/map/npc/056-2/mapflags.txt2
-rw-r--r--world/map/npc/056-2/mirak.txt152
-rw-r--r--world/map/npc/056-2/notes.txt15
-rw-r--r--world/map/npc/057-1/_import.txt7
-rw-r--r--world/map/npc/057-1/_mobs.txt21
-rw-r--r--world/map/npc/057-1/_nodes.txt16
-rw-r--r--world/map/npc/057-1/_warps.txt4
-rw-r--r--world/map/npc/057-1/mapflags.txt1
-rw-r--r--world/map/npc/069-2/_import.txt6
-rw-r--r--world/map/npc/069-2/_mobs.txt3
-rw-r--r--world/map/npc/069-2/_nodes.txt4
-rw-r--r--world/map/npc/069-2/_warps.txt5
-rw-r--r--world/map/npc/070-1/_import.txt6
-rw-r--r--world/map/npc/070-1/_mobs.txt3
-rw-r--r--world/map/npc/070-1/_nodes.txt4
-rw-r--r--world/map/npc/070-1/_warps.txt3
-rw-r--r--world/map/npc/070-3/_import.txt6
-rw-r--r--world/map/npc/070-3/_mobs.txt3
-rw-r--r--world/map/npc/070-3/_nodes.txt4
-rw-r--r--world/map/npc/070-3/_warps.txt3
-rw-r--r--world/map/npc/099-1/_import.txt7
-rw-r--r--world/map/npc/099-1/_mobs.txt3
-rw-r--r--world/map/npc/099-1/_nodes.txt4
-rw-r--r--world/map/npc/099-1/_warps.txt68
-rw-r--r--world/map/npc/099-1/main.txt278
-rw-r--r--world/map/npc/099-2/_import.txt7
-rw-r--r--world/map/npc/099-2/_mobs.txt3
-rw-r--r--world/map/npc/099-2/_nodes.txt4
-rw-r--r--world/map/npc/099-2/_warps.txt23
-rw-r--r--world/map/npc/099-2/logic.txt1155
-rw-r--r--world/map/npc/099-3/_import.txt6
-rw-r--r--world/map/npc/099-3/_mobs.txt3
-rw-r--r--world/map/npc/099-3/_nodes.txt4
-rw-r--r--world/map/npc/099-3/_warps.txt17
-rw-r--r--world/map/npc/099-4/_import.txt6
-rw-r--r--world/map/npc/099-4/_mobs.txt3
-rw-r--r--world/map/npc/099-4/_nodes.txt4
-rw-r--r--world/map/npc/099-4/_warps.txt3
-rw-r--r--world/map/npc/099-5/_import.txt7
-rw-r--r--world/map/npc/099-5/_mobs.txt3
-rw-r--r--world/map/npc/099-5/_nodes.txt4
-rw-r--r--world/map/npc/099-5/_warps.txt3
-rw-r--r--world/map/npc/099-5/boss.txt1620
-rw-r--r--world/map/npc/099-6/_import.txt6
-rw-r--r--world/map/npc/099-6/_mobs.txt3
-rw-r--r--world/map/npc/099-6/_nodes.txt4
-rw-r--r--world/map/npc/099-6/_warps.txt23
-rw-r--r--world/map/npc/099-7/_import.txt7
-rw-r--r--world/map/npc/099-7/_mobs.txt3
-rw-r--r--world/map/npc/099-7/_nodes.txt4
-rw-r--r--world/map/npc/099-7/_warps.txt3
-rw-r--r--world/map/npc/099-7/boss.txt781
-rw-r--r--world/map/npc/099-8/_import.txt8
-rw-r--r--world/map/npc/099-8/_mobs.txt3
-rw-r--r--world/map/npc/099-8/_nodes.txt4
-rw-r--r--world/map/npc/099-8/_warps.txt3
-rw-r--r--world/map/npc/099-8/expchest.txt2201
-rw-r--r--world/map/npc/099-8/mobs.txt237
-rw-r--r--world/map/npc/_import.txt131
-rw-r--r--world/map/npc/annuals/check_time.txt55
-rw-r--r--world/map/npc/annuals/fathertime.txt18
-rw-r--r--world/map/npc/annuals/halloween/config.txt361
-rw-r--r--world/map/npc/annuals/halloween/debug.txt147
-rw-r--r--world/map/npc/annuals/halloween/doomsday.txt743
-rw-r--r--world/map/npc/annuals/halloween/munro.txt50
-rw-r--r--world/map/npc/annuals/halloween/trick_or_treat.txt332
-rw-r--r--world/map/npc/annuals/tree_beard.txt137
-rw-r--r--world/map/npc/annuals/xmas/2020.txt835
-rw-r--r--world/map/npc/annuals/xmas/barriers.txt165
-rw-r--r--world/map/npc/annuals/xmas/config.txt291
-rw-r--r--world/map/npc/annuals/xmas/core.txt252
-rw-r--r--world/map/npc/annuals/xmas/debug.txt228
-rw-r--r--world/map/npc/annuals/xmas/helpers.txt49
-rw-r--r--world/map/npc/annuals/xmas/list.txt104
-rw-r--r--world/map/npc/annuals/xmas/mobmanager.txt82
-rw-r--r--world/map/npc/annuals/xmas/reagents.txt146
-rw-r--r--world/map/npc/annuals/xmas/states.txt55
-rw-r--r--world/map/npc/botcheck/_import.txt7
-rw-r--r--world/map/npc/botcheck/_mobs.txt3
-rw-r--r--world/map/npc/botcheck/_nodes.txt4
-rw-r--r--world/map/npc/botcheck/_warps.txt3
-rw-r--r--world/map/npc/botcheck/mapflags.txt2
-rw-r--r--world/map/npc/commands/_import.txt23
-rw-r--r--world/map/npc/commands/_procedures.txt151
-rw-r--r--world/map/npc/commands/automod.txt90
-rw-r--r--world/map/npc/commands/bosspoints.txt11
-rw-r--r--world/map/npc/commands/changesex.txt32
-rw-r--r--world/map/npc/commands/class.txt36
-rw-r--r--world/map/npc/commands/deaths.txt11
-rw-r--r--world/map/npc/commands/debug.txt992
-rw-r--r--world/map/npc/commands/destroynpc.txt35
-rw-r--r--world/map/npc/commands/divorce.txt29
-rw-r--r--world/map/npc/commands/exp.txt42
-rw-r--r--world/map/npc/commands/gm.txt39
-rw-r--r--world/map/npc/commands/hug.txt25
-rw-r--r--world/map/npc/commands/marry.txt69
-rw-r--r--world/map/npc/commands/music.txt34
-rw-r--r--world/map/npc/commands/mute.txt93
-rw-r--r--world/map/npc/commands/npctalk.txt23
-rw-r--r--world/map/npc/commands/numa.txt150
-rw-r--r--world/map/npc/commands/pullrabbit.txt26
-rw-r--r--world/map/npc/commands/python.txt47
-rw-r--r--world/map/npc/commands/remotecmd.txt62
-rw-r--r--world/map/npc/commands/valentine.txt143
-rw-r--r--world/map/npc/commands/warp.txt49
-rw-r--r--world/map/npc/commands/zeny.txt79
-rw-r--r--world/map/npc/doc/magic23
-rw-r--r--world/map/npc/functions/DyeConfig.txt42
-rw-r--r--world/map/npc/functions/announcements.txt194
-rw-r--r--world/map/npc/functions/banker.txt271
-rw-r--r--world/map/npc/functions/barber.txt250
-rw-r--r--world/map/npc/functions/clear_vars.txt490
-rw-r--r--world/map/npc/functions/dailyquest.txt189
-rw-r--r--world/map/npc/functions/default_npc_checks.txt155
-rw-r--r--world/map/npc/functions/doomsday.txt1435
-rw-r--r--world/map/npc/functions/dynamic_menu.txt302
-rw-r--r--world/map/npc/functions/evil_obelisk.txt97
-rw-r--r--world/map/npc/functions/ferry.txt140
-rw-r--r--world/map/npc/functions/game_rules.txt193
-rw-r--r--world/map/npc/functions/ghost.txt36
-rw-r--r--world/map/npc/functions/global_event_handler.txt48
-rw-r--r--world/map/npc/functions/gm_island.txt131
-rw-r--r--world/map/npc/functions/headstyles.txt112
-rw-r--r--world/map/npc/functions/inn.txt36
-rw-r--r--world/map/npc/functions/lockpicking.txt93
-rw-r--r--world/map/npc/functions/magic.txt191
-rw-r--r--world/map/npc/functions/miriam.txt20
-rw-r--r--world/map/npc/functions/mob_points.txt247
-rw-r--r--world/map/npc/functions/motd.txt.example10
-rw-r--r--world/map/npc/functions/motdconfig.txt40
-rw-r--r--world/map/npc/functions/process_equip.txt28
-rw-r--r--world/map/npc/functions/quiz.txt97
-rw-r--r--world/map/npc/functions/slot_machine.txt65
-rw-r--r--world/map/npc/functions/soul_menhir.txt57
-rw-r--r--world/map/npc/functions/stat_reset.txt55
-rw-r--r--world/map/npc/functions/time.txt175
-rw-r--r--world/map/npc/functions/travelers.txt243
-rw-r--r--world/map/npc/functions/undead_debug.txt119
-rw-r--r--world/map/npc/functions/water_bottle.txt45
-rw-r--r--world/map/npc/items/brawling_item.txt23
-rw-r--r--world/map/npc/items/check_wand.txt2
-rw-r--r--world/map/npc/items/drugs.txt17
-rw-r--r--world/map/npc/items/launcher_ammo.txt33
-rw-r--r--world/map/npc/items/love_potion.txt49
-rw-r--r--world/map/npc/items/manapearl_item.txt29
-rw-r--r--world/map/npc/items/max_stat.txt23
-rw-r--r--world/map/npc/items/mirror.txt19
-rw-r--r--world/map/npc/items/nobow_item.txt29
-rw-r--r--world/map/npc/items/pickled_beets.txt13
-rw-r--r--world/map/npc/items/purification_potion.txt28
-rw-r--r--world/map/npc/items/require_stat.txt23
-rw-r--r--world/map/npc/items/restricted_item.txt22
-rw-r--r--world/map/npc/items/rubber_bat.txt14
-rw-r--r--world/map/npc/items/scentedcandle.txt31
-rw-r--r--world/map/npc/items/scissors.txt14
-rw-r--r--world/map/npc/items/shock_sweet.txt17
-rw-r--r--world/map/npc/items/tmwgift.txt32
-rw-r--r--world/map/npc/items/unequipcb.txt27
-rw-r--r--world/map/npc/items/unreleased_item.txt17
-rw-r--r--world/map/npc/items/warpTowels.txt148
-rw-r--r--world/map/npc/magic/README.md54
-rw-r--r--world/map/npc/magic/_import.txt48
-rw-r--r--world/map/npc/magic/_procedures.txt242
-rw-r--r--world/map/npc/magic/event-alonsoalonsy.txt137
-rw-r--r--world/map/npc/magic/event-summon-managuardian.txt60
-rw-r--r--world/map/npc/magic/event-summon-manatyrant.txt61
-rw-r--r--world/map/npc/magic/level0-antiprotect.txt23
-rw-r--r--world/map/npc/magic/level0-discharge.txt18
-rw-r--r--world/map/npc/magic/level0-reapercry.txt245
-rw-r--r--world/map/npc/magic/level0-wand.txt84
-rw-r--r--world/map/npc/magic/level1-aggravate.txt29
-rw-r--r--world/map/npc/magic/level1-detect-magic.txt34
-rw-r--r--world/map/npc/magic/level1-experience.txt46
-rw-r--r--world/map/npc/magic/level1-flare-dart.txt51
-rw-r--r--world/map/npc/magic/level1-grow-alizarin.txt37
-rw-r--r--world/map/npc/magic/level1-grow-cobalt.txt37
-rw-r--r--world/map/npc/magic/level1-grow-gamboge.txt37
-rw-r--r--world/map/npc/magic/level1-grow-mauve.txt37
-rw-r--r--world/map/npc/magic/level1-lesser-heal.txt55
-rw-r--r--world/map/npc/magic/level1-magic-blade.txt55
-rw-r--r--world/map/npc/magic/level1-make-sulphur.txt25
-rw-r--r--world/map/npc/magic/level1-sense-spouse.txt25
-rw-r--r--world/map/npc/magic/level1-summon-maggots.txt57
-rw-r--r--world/map/npc/magic/level1-transmute-wood.txt37
-rw-r--r--world/map/npc/magic/level2-arrow-hail.txt118
-rw-r--r--world/map/npc/magic/level2-barrier.txt49
-rw-r--r--world/map/npc/magic/level2-detect-players.txt34
-rw-r--r--world/map/npc/magic/level2-enchant-lifestone.txt36
-rw-r--r--world/map/npc/magic/level2-flying-backpack.txt44
-rw-r--r--world/map/npc/magic/level2-happy-curse.txt43
-rw-r--r--world/map/npc/magic/level2-hide.txt47
-rw-r--r--world/map/npc/magic/level2-lay-on-hands.txt81
-rw-r--r--world/map/npc/magic/level2-lightning-strike.txt89
-rw-r--r--world/map/npc/magic/level2-magic-knuckles.txt55
-rw-r--r--world/map/npc/magic/level2-make-arrows.txt27
-rw-r--r--world/map/npc/magic/level2-make-iron-powder.txt27
-rw-r--r--world/map/npc/magic/level2-make-shirt.txt25
-rw-r--r--world/map/npc/magic/level2-make-short-tanktop.txt25
-rw-r--r--world/map/npc/magic/level2-make-tanktop.txt25
-rw-r--r--world/map/npc/magic/level2-protect.txt50
-rw-r--r--world/map/npc/magic/level2-rain.txt107
-rw-r--r--world/map/npc/magic/level2-shear.txt68
-rw-r--r--world/map/npc/magic/level2-summon-fluffies.txt58
-rw-r--r--world/map/npc/magic/level2-summon-mouboo.txt58
-rw-r--r--world/map/npc/magic/level2-summon-pinkie.txt58
-rw-r--r--world/map/npc/magic/level2-summon-snakes.txt64
-rw-r--r--world/map/npc/magic/level2-summon-spiky-mushroom.txt58
-rw-r--r--world/map/npc/magic/level2-summon-wickedmushroom.txt63
-rw-r--r--world/map/npc/magic/level2-toxic-dart.txt57
-rw-r--r--world/map/npc/magic/level3-necromancy.txt54
-rw-r--r--world/map/npc/scripts.conf87
-rw-r--r--world/map/resources2.php8
-rw-r--r--world/map/save/.gitignore1
-rw-r--r--world/map/versions.php25
-rw-r--r--world/save/.gitignore7
1461 files changed, 0 insertions, 87297 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 49976102..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Contributing
-*This repository is* ***feature-frozen****. Anything that changes gameplay, adds new content, or extends existing content will NOT be merged.*
-
-Only patches for the following will be accepted:
-
-
-## High priority patches
-- Game-breaking bugs preventing quest completion.
-- Quest state corruption.
-- Item / money disappearance.
-- Exploits.
-- TMWA crashes.
-- Client crashes.
-
-## Low priority patches
-- Typos.
-- Missing or incorrect collisions.
diff --git a/COPYING b/COPYING
deleted file mode 100644
index d159169d..00000000
--- a/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/GNUmakefile b/GNUmakefile
deleted file mode 100644
index 25829432..00000000
--- a/GNUmakefile
+++ /dev/null
@@ -1,46 +0,0 @@
-.PHONY: all maps conf mobxp mobxp-impl indent indent-items indent-mobs news updates
-# Can't be parallel due to the mobxp/indent-mobs conflict
-.NOTPARALLEL:
-all: maps conf news updates
-maps:
- tools/tmx_converter.py client-data/ world/map/
-
-% : | %.example
- cp "$|" "$@"
-conf: login/conf/login_local.conf login/conf/ladmin_local.conf login/save/gm_account.txt login/save/account.txt \
-world/conf/char_local.conf \
-world/map/conf/map_local.conf world/map/conf/battle_local.conf world/map/conf/atcommand_local.conf world/map/db/const-debugflag.txt \
-world/map/npc/functions/motd.txt world/map/conf/permissions_local.txt
-
-format:
- find world/map/npc -type f -exec sed -ri \
- -e "s%([^|]+)\|script\|([^|]+)\|-1%\1|script|\2|32767%ig" \
- -e "s/\.gat//g" -e "s/\r\n/\n/g" -e "s/\t/ /g" \
- -e "s%([^|]+)\|script\|([^|]+)\|([0-9]+)(,[0-9]+)?(,[0-9]+)?[^{]*\{%\1|script|\2|\3\4\5\n{%ig" \
- -e "s%function\|script\|([^| {]+)[^{]*\{%function|script|\1\n{%ig" \
- {} \; -exec vi -escwq {} \; -print
-
-mobxp: mobxp-impl indent-mobs
-mobxp-impl:
- mv world/map/db/mob_db.txt world/map/db/mob_db.old
- tools/mobxp < world/map/db/mob_db.old > world/map/db/mob_db.txt
- rm world/map/db/mob_db.old
-indent: indent-mobs indent-items
-indent-items: tools/aligncsv
- tools/aligncsv world/map/db/item_db.txt
-indent-mobs: tools/aligncsv
- tools/aligncsv world/map/db/mob_db.txt
-
-world/map/news.txt world/map/news.html world/map/news.rss world/map/news.json: tools/news.py tools/_news_colors.py world/map/news.d/* world/map/news.d/
- tools/news.py world/map/ world/map/news.d/
- chmod a+r world/map/news.txt world/map/news.html world/map/news.rss world/map/news.json
-
-news: world/map/news.txt world/map/news.html world/map/news.rss world/map/news.json
-updates:
- cd tools/client/ ; ./make-updates.sh
-
-frob:
- deno run --allow-read=. --allow-write=world/save tools/server/frob/index.ts -- $(items)
-
-sql:
- deno run --allow-read=. --allow-net tools/server/frob/index.ts -- --dry --sql
diff --git a/client-data b/client-data
deleted file mode 160000
-Subproject 753ec372f49630eb5197fecbf70935e120664a9
diff --git a/login/conf/.gitignore b/login/conf/.gitignore
deleted file mode 100644
index 2c43e911..00000000
--- a/login/conf/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*_local.conf
diff --git a/login/conf/ladmin_athena.conf b/login/conf/ladmin_athena.conf
deleted file mode 100644
index 651826c5..00000000
--- a/login/conf/ladmin_athena.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-// Athena Ladmin configuration file.
-
-// Log for all actions.
-ladmin_log_filename: log/ladmin.log
-
-// local settings for this server in this file
-import: conf/ladmin_local.conf
diff --git a/login/conf/ladmin_local.conf.example b/login/conf/ladmin_local.conf.example
deleted file mode 100644
index aaef5fb3..00000000
--- a/login/conf/ladmin_local.conf.example
+++ /dev/null
@@ -1,11 +0,0 @@
-// Athena Ladmin local configuration file.
-
-// Login Server IP
-login_ip: 127.0.0.1
-// Login Server Port
-login_port: 6901
-
-// Administrative password, used to connect remotely to server.
-// NOTICE: You should change its value for security.
-// This is also in login_local.conf
-admin_pass: admin
diff --git a/login/conf/lan_support.conf b/login/conf/lan_support.conf
deleted file mode 100644
index 73d5362b..00000000
--- a/login/conf/lan_support.conf
+++ /dev/null
@@ -1,45 +0,0 @@
-// Note: used by the login-server; another copy is used by the char-server
-
-// This file is necessary to connect to your server locally:
-// by using it's internal (LAN) IP address, or localhost (127.0.0.1)
-
-// The default version treats you LAN as localhost only,
-// which is fine if you have only one computer
-// You only need to change this file if you have a public server
-// AND want to connect from other machines in the LAN
-// (for an nonpublic server it would be best to leave localhost as LAN
-// and treat the rest of your LAN as the WAN)
-
-// Note: if you set up this file to point to your real LAN, you will not
-// be able to do:
-// mana --server localhost --port 6901
-// or mana --server 127.0.0.1 --port 6901
-// because of the check_ip_flag: yes option
-// (which will become mandatory in the next release of the server)
-// instead do:
-// mana --server 192.168.1.100 --port 6901
-// or maybe, depending on how your /etc/hosts and /etc/host.conf are setup,
-// mana --server ben-desktop --port 6901
-// or mana --server ben-desktop.local --port 6901
-
-// Note that only one IP is used, so you can't put different char servers
-// on different machines (unless you do some internal port-forwarding)
-
-
-// the IP that LAN players should use to connect to the char-server
-lan_char_ip: 127.0.0.1
-//lan_char_ip: 192.168.1.100
-
-// put here the Subnet mask of your LAN
-// see output of ifconfig (Linux) or ipconfig (Windows)
-lan_subnet: 127.0.0.1
-//lan_subnet: 127.0.0.1/255.0.0.0
-
-// Common subnets (if you have a subnet that is not one of these,
-// you probably don't need to be reading this)
-//lan_subnet: 10.0.0.0/8
-//lan_subnet: 172.16.0.0/12
-//lan_subnet: 192.168.0.0/16
-
-// Many home routers only use a portion:
-//lan_subnet: 192.168.1.0/255.255.255.0
diff --git a/login/conf/login_athena.conf b/login/conf/login_athena.conf
deleted file mode 100644
index a14cfa6f..00000000
--- a/login/conf/login_athena.conf
+++ /dev/null
@@ -1,74 +0,0 @@
-// Athena Login Server configuration file.
-
-// Can you make new accounts on the server?
-new_account: yes
-
-// Account flatfile database, stores account information.
-account_filename: save/account.txt
-
-// What account AIDs have GM privs, and what level?
-gm_account_filename: save/gm_account.txt
-
-// Time, in seconds, to poll the gm file for changes.
-// Please use ladmin instead of editing the file manually.
-gm_account_filename_check_timer: 15
-
-// General log.
-login_log_filename: log/login.log
-
-// Print basic header information about incoming client packets.
-// Also print a little more about client or char auth attempts.
-display_parse_login: no
-
-// Print basic header information about incoming ladmin packets.
-display_parse_admin: no
-
-// Print basic header information about incoming char-server packets.
-// 0: no packets
-// 1: all packets except 0x2714
-// 2: all packets, including 0x2714
-display_parse_fromchar: 0
-
-// Accounts must have this GM level to log in.
-// 0: all players, 1-99: GM level at least this.
-min_level_to_connect: 0
-
-// How the IP allow/deny lists (below) are interpreted.
-// Possible values:
-// "deny, allow" (default):
-// if in deny list, deny
-// if not in deny list, accept
-// "allow, deny"
-// if in allow list, accept
-// if not in allow list, deny
-// "mutual-failure"
-// if in deny list, deny
-// if not in deny list, if in allow list, allow
-// if in no list, deny
-// In any case, if both lists are empty, all IPs are allowed.
-// In future, all this will go away: instead the latest setting will apply.
-// NOTE: in any case, it's probably better to use iptables:
-// - iptables happens before the connection is established
-// - iptables can be changed without restarting the login-server
-// Note: internally this is called 'access_order'.
-order: deny, allow
-
-// List of IPs (or prefixes or masks) on the allow list.
-// The meaning is determined by the 'order' setting.
-// Note: internally this is called 'access_allow'.
-//allow: all
-
-// List of IPs (or prefixes or masks) on the deny list.
-// The meaning is determined by the 'order' setting.
-// Note: internally this is called 'access_deny'.
-//deny: 123.123.123.123
-//deny: 234.234.234.234
-
-// If true, unresponsive char-servers will be kicked.
-anti_freeze_enable: no
-// Interval, in seconds, for one step of the antifreeze timer.
-// Five of these must pass before the kick will happen.
-anti_freeze_interval: 15
-
-// local settings for this server in this file
-import: conf/login_local.conf
diff --git a/login/conf/login_local.conf.example b/login/conf/login_local.conf.example
deleted file mode 100644
index 635f22ee..00000000
--- a/login/conf/login_local.conf.example
+++ /dev/null
@@ -1,37 +0,0 @@
-// Athena Login Server local configuration file.
-
-// Port to bind Login Server to (always binds to all IPv4 addresses)
-login_port: 6901
-
-// Whether remote administration is enabled or disabled
-admin_state: yes
-
-// Administrative password, used by ladmin to connect remotely to server.
-// NOTICE: You should change its value for security.
-// This is also in ladmin_local.conf
-admin_pass: admin
-
-// List of IPs that the server accepts for remote administration.
-// This can be repeated, with one entry per line.
-// Each line can be an IP prefix (xxx.xxx.), a full IP, or a network/mask.
-// Particularly, it *cannot* be a hostname.
-// The special value 'all' allows all IPs.
-// The special value 'clear' empties the list (useful for includes).
-// Note: internally this is called 'access_ladmin'.
-//ladminallowip: all
-//ladminallowip: clear
-ladminallowip: 127.0.0.1
-
-// Update host
-// If not empty, send address for client to download data.
-// This must contain news.txt and resources.xml
-update_host: http://tmwdata.org/updates/
-
-// Which world should appear first to the players.
-// see server_name in world/conf/char_local.conf
-main_server: The Mana World
-
-// Server Communication username and password.
-// This used to be in save/account.txt, but this is better.
-userid: s1
-passwd: p1
diff --git a/login/conf/tmwa-admin-old.conf b/login/conf/tmwa-admin-old.conf
deleted file mode 100644
index 7670b002..00000000
--- a/login/conf/tmwa-admin-old.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-// Master config file for The Mana World Athena (admin component)
-// This file is used since version 14.x.y
-
-version-lt: 15.1.23
-
-import: conf/ladmin_athena.conf
diff --git a/login/conf/tmwa-admin.conf b/login/conf/tmwa-admin.conf
deleted file mode 100644
index 69f333d9..00000000
--- a/login/conf/tmwa-admin.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-// Master config file for The Mana World Athena (admin component)
-// This file is used since version 14.x.y, but major changes in 15.x.y
-
-import: conf/tmwa-admin-old.conf
-version-ge: 15.1.23
-
-admin_conf: conf/ladmin_athena.conf
diff --git a/login/conf/tmwa-login-old.conf b/login/conf/tmwa-login-old.conf
deleted file mode 100644
index 907ada2e..00000000
--- a/login/conf/tmwa-login-old.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-// Master config file for The Mana World Athena (login component)
-// This file is used since version 14.x.y
-
-version-lt: 15.1.23
-
-import: conf/login_athena.conf
-import: conf/lan_support.conf
diff --git a/login/conf/tmwa-login.conf b/login/conf/tmwa-login.conf
deleted file mode 100644
index 44e3adfe..00000000
--- a/login/conf/tmwa-login.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-// Master config file for The Mana World Athena (login component)
-// This file is used since version 14.x.y, but major changes in 15.x.y
-
-import: conf/tmwa-login-old.conf
-version-ge: 15.1.23
-
-login_conf: conf/login_athena.conf
-login_lan_conf: conf/lan_support.conf
diff --git a/login/save/.gitignore b/login/save/.gitignore
deleted file mode 100644
index 82cfa276..00000000
--- a/login/save/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/account.txt*
-/gm_account.txt*
diff --git a/login/save/account.txt.example b/login/save/account.txt.example
deleted file mode 100644
index a842f60c..00000000
--- a/login/save/account.txt.example
+++ /dev/null
@@ -1,17 +0,0 @@
-// Accounts file: here are saved all information about the accounts.
-// Structure: ID, account name, password, last login time, sex, # of logins, state, email, error message for state 7, validity time, last (accepted) login ip, memo field, ban timestamp, repeated(register text, register value)
-// Some explanations:
-// account name : between 4 to 23 char for a normal account (standard client can't send less than 4 char).
-// account password: between 4 to 23 char
-// sex : M or F for normal accounts, S for server accounts
-// state : 0: account is ok, 1 to 256: error code of packet 0x006a + 1
-// email : between 3 to 39 char (a@a.com is like no email)
-// error message : text for the state 7: 'Your are Prohibited to login until <text>'. Max 19 char
-// valitidy time : 0: unlimited account, <other value>: date calculated by addition of 1/1/1970 + value (number of seconds since the 1/1/1970)
-// memo field : max 254 char
-// ban time : 0: no ban, <other value>: banned until the date: date calculated by addition of 1/1/1970 + value (number of seconds since the 1/1/1970)
-0 s1 p1 - S 694 0 a@a.com - 0 - - 0
-1 s2 p2 - S 1 0 a@a.com - 0 - - 0
-2 s3 p3 - S 1 0 a@a.com - 0 - - 0
-3 s4 p4 - S 0 0 a@a.com - 0 - - 0
-4 s5 p5 - S 0 0 a@a.com - 0 - - 0
diff --git a/login/save/gm_account.txt.example b/login/save/gm_account.txt.example
deleted file mode 100644
index 912e1a09..00000000
--- a/login/save/gm_account.txt.example
+++ /dev/null
@@ -1 +0,0 @@
-// <account ID> <level>
diff --git a/run-all b/run-all
deleted file mode 100755
index cbfb749d..00000000
--- a/run-all
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-SELF=$(realpath $(which "$0"))
-cd "$(dirname "$SELF")"
-
-trap 'kill %1 %2 %3' SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM
-( cd login && tmwa-login ) &
-( cd world && tmwa-char ) &
-( cd world/map && tmwa-map ) &
-
-wait
diff --git a/tools b/tools
deleted file mode 160000
-Subproject a5d6818c8e4f68d9b7dd6272754a781c90be3f8
diff --git a/world/conf/.gitignore b/world/conf/.gitignore
deleted file mode 100644
index 2c43e911..00000000
--- a/world/conf/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*_local.conf
diff --git a/world/conf/char_athena.conf b/world/conf/char_athena.conf
deleted file mode 100644
index 3e0fa61d..00000000
--- a/world/conf/char_athena.conf
+++ /dev/null
@@ -1,79 +0,0 @@
-// Athena Character configuration file.
-
-// Maximum number of user connections permitted on this world.
-// 0 means unlimited, but the current network code has a hard-coded limit
-// of just under 1024 per server (but a world may be many servers).
-max_connect_user: 0
-
-// Interval, in seconds, between saves of the flatfile databases.
-autosave_time: 300
-
-// Character server flatfile database
-char_txt: save/athena.txt
-
-// Location where new characters first appear
-// Format: mapname,x,y. There must be no spaces.
-start_point: 029-2.gat,22,24
-
-// Log Filename
-char_log_filename: log/char.log
-
-// Set the letters/symbols that you want use with 'char_name_option'.
-// This is a cumulative option; specify nothing to reset it.
-// Note: if you want to add a space, it can't be at the beginning or end.
-// default: empty.
-// Note: some characters are problematic:
-// " is needed for GM quoting
-// # is used for string formatting
-// / is the command prefix (but it's still allowed!)
-// : is used as a separator in script menus
-// I'm not sure why []{} are not included though
-//char_name_letters: "#:[]{}
-char_name_letters: $ &'()*+,-.
-char_name_letters: 0123456789
-char_name_letters: ;<=>?
-char_name_letters: ABCDEFGHIJKLMNOPRSTQUVWXYZ
-char_name_letters: \^_`
-char_name_letters: abcdefghijklmnoprstquvwxyz
-char_name_letters: |~
-
-// minimum char name length
-min_name_length: 4
-
-// maximum characters allowed per account
-// set to 1 if you want to limit accounts to 1 character
-char_slots: 9
-
-// max hair style and hair color
-max_hair_style: 1
-max_hair_color: 1
-
-// the minimum value for stats (str, agi, ...)
-min_stat_value: 1
-
-// the maximum value for stats (str, agi, ...)
-max_stat_value: 1
-
-// the sum of all stats combined (str + agi + int + ...)
-total_stat_sum: 6
-
-// Filename of the file which receives the online players list in text
-online_txt_filename: online.txt
-
-// Filename of the file which receives the online players list, but in html version
-online_html_filename: online.html
-
-// minimum GM level to display 'GM' when we want to display it (default: 20)
-online_gm_display_min_level: 60
-
-// refresh time (in sec) of the html file in the explorer (default 20)
-online_refresh_html: 20
-
-// Should we kick an unresponsive map-server?
-anti_freeze_enable: 0
-// Anti-freeze system interval (in seconds)
-// 5 of these must pass before a map-server is kicked.
-anti_freeze_interval: 6
-
-// local settings for this server in this file
-import: conf/char_local.conf
diff --git a/world/conf/char_local.conf.example b/world/conf/char_local.conf.example
deleted file mode 100644
index 920d7892..00000000
--- a/world/conf/char_local.conf.example
+++ /dev/null
@@ -1,18 +0,0 @@
-// Athena Character local configuration file.
-
-// Server Communication username and password.
-userid: s1
-passwd: p1
-
-// Server name, no more than 19 characters
-server_name: The Mana World
-
-// Login Server IP
-login_ip:127.0.0.1
-// Login Server Port
-login_port: 6901
-
-// Character Server IP
-char_ip:127.0.0.1
-// Character Server Port
-char_port: 6122
diff --git a/world/conf/inter_athena.conf b/world/conf/inter_athena.conf
deleted file mode 100644
index 2577deae..00000000
--- a/world/conf/inter_athena.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-// Athena InterServer configuration.
-
-// Storage flatfile database, used for Karfa storage.
-storage_txt: save/storage.txt
-
-// Party flatfile database, for party names, members and other party info.
-party_txt: save/party.txt
-
-// Maximum level difference for XP sharing within a party.
-// 0 to always allow sharing.
-party_share_level: 10
diff --git a/world/conf/lan_support.conf b/world/conf/lan_support.conf
deleted file mode 100644
index b3a6a57a..00000000
--- a/world/conf/lan_support.conf
+++ /dev/null
@@ -1,45 +0,0 @@
-// Note: used by the char-server; another copy is used by the login-server
-
-// This file is necessary to connect to your server locally:
-// by using it's internal (LAN) IP address, or localhost (127.0.0.1)
-
-// The default version treats you LAN as localhost only,
-// which is fine if you have only one computer
-// You only need to change this file if you have a public server
-// AND want to connect from other machines in the LAN
-// (for an nonpublic server it would be best to leave localhost as LAN
-// and treat the rest of your LAN as the WAN)
-
-// Note: if you set up this file to point to your real LAN, you will not
-// be able to do:
-// mana --server localhost --port 6901
-// or mana --server 127.0.0.1 --port 6901
-// because of the check_ip_flag: yes option
-// (which will become mandatory in the next release of the server)
-// instead do:
-// mana --server 192.168.1.100 --port 6901
-// or maybe, depending on how your /etc/hosts and /etc/host.conf are setup,
-// mana --server ben-desktop --port 6901
-// or mana --server ben-desktop.local --port 6901
-
-// Note that only one IP is used, so you can't put different char servers
-// on different machines (unless you do some internal port-forwarding)
-
-
-// the IP that LAN players should use to connect to the map-server
-lan_map_ip: 127.0.0.1
-// lan_map_ip: 192.168.1.100
-
-// put here the Subnet mask of your LAN
-// see output of ifconfig (Linux) or ipconfig (Windows)
-lan_subnet: 127.0.0.1
-//lan_subnet: 127.0.0.1/255.0.0.0
-
-// Common subnets (if you have a subnet that is not one of these,
-// you probably don't need to be reading this)
-//lan_subnet: 10.0.0.0/8
-//lan_subnet: 172.16.0.0/12
-//lan_subnet: 192.168.0.0/16
-
-// Many home routers only use a portion:
-//lan_subnet: 192.168.1.0/255.255.255.0
diff --git a/world/conf/tmwa-char-old.conf b/world/conf/tmwa-char-old.conf
deleted file mode 100644
index b7e37735..00000000
--- a/world/conf/tmwa-char-old.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-// Master config file for The Mana World Athena (char component)
-// This file is used since version 14.x.y
-
-version-lt: 15.1.23
-
-import: conf/char_athena.conf
-import: conf/lan_support.conf
-import: conf/inter_athena.conf
diff --git a/world/conf/tmwa-char.conf b/world/conf/tmwa-char.conf
deleted file mode 100644
index 84213139..00000000
--- a/world/conf/tmwa-char.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-// Master config file for The Mana World Athena (char component)
-// This file is used since version 14.x.y, but major changes in 15.x.y
-
-import: conf/tmwa-char-old.conf
-version-ge: 15.1.23
-char_conf: conf/char_athena.conf
-char_lan_conf: conf/lan_support.conf
-inter_conf: conf/inter_athena.conf
diff --git a/world/map/.gitattributes b/world/map/.gitattributes
deleted file mode 100644
index 35c6a78b..00000000
--- a/world/map/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-/news.txt whitespace=-blank-at-eol,-blank-at-eof
diff --git a/world/map/.gitignore b/world/map/.gitignore
deleted file mode 100644
index 25c01527..00000000
--- a/world/map/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/news.html
-/news.txt
-/news.phpbb.txt
-/news.rss
-/news.json
-
-/db/const-debugflag.txt
-
-/npc/functions/motd.txt
diff --git a/world/map/conf/.gitignore b/world/map/conf/.gitignore
deleted file mode 100644
index a1c73f43..00000000
--- a/world/map/conf/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/*_local.conf
-/*_local.txt
diff --git a/world/map/conf/atcommand_athena.conf b/world/map/conf/atcommand_athena.conf
deleted file mode 100644
index 13e0a9bd..00000000
--- a/world/map/conf/atcommand_athena.conf
+++ /dev/null
@@ -1,136 +0,0 @@
-// Athena atcommand Configuration file.
-
-// 0: normal players
-help: 0
-servertime: 0
-email: 0
-pvp: 0
-//gm: 100
-
-// 40: developers
-broadcast: 40
-localbroadcast: 40
-die: 40
-where: 40
-goto: 40
-npc: 40
-kick: 40
-who: 40
-whogroup: 40
-whomap: 40
-whomapgroup: 40
-whogm: 40
-charstats: 40
-heal: 40
-hide: 40
-jump: 40
-return: 40
-warp: 40
-dye: 40
-ccolor: 40
-hairstyle: 40
-haircolor: 40
-itemreset: 40
-save: 40
-log: 40
-l: 40
-tee: 40
-t: 40
-
-// 50: event coordinators
-invisible: 50
-visible: 50
-spawn: 50
-summon: 50
-killmonster2: 50
-
-// 60: game masters
-charpvp: 60
-charstatsall: 60
-pvpoff: 60
-exprate: 60
-pvpon: 60
-speed: 60
-killmonster: 60
-ipcheck: 60
-storeall: 60
-alive: 60
-blvl: 60
-jlvl: 60
-charbaselvl: 60
-charchangesex: 60
-chardelitem: 60
-charjlvl: 60
-charstpoint: 60
-charskpoint: 60
-charreset: 60
-charstreset: 60
-charskreset: 60
-charwipe: 60
-charsave: 60
-kill: 60
-recall: 60
-revive: 60
-charwarp: 60
-str: 60
-agi: 60
-vit: 60
-int: 60
-dex: 60
-luk: 60
-allstats: 60
-stpoint: 60
-skpoint: 60
-block: 60
-unblock: 60
-ban: 60
-unban: 60
-chardropall: 60
-charstoreall: 60
-hugo: 60
-linus: 60
-
-// 80: greater dev
-setmagic: 80
-magicinfo: 80
-option: 80
-zeny: 80
-charzeny: 80
-charoption: 80
-addwarp: 80
-doom: 80
-doommap: 80
-recallall: 80
-raisemap: 80
-raise: 80
-enablenpc: 80
-disablenpc: 80
-npcmove: 80
-lostskill: 80
-idsearch: 80
-item: 80
-itemcheck: 80
-
-// 98: server admin
-dropall: 98
-questskill: 98
-effect: 98
-charmodel: 98
-party: 98
-partyrecall: 98
-partyspy: 98
-charitemlist: 98
-charstoragelist: 98
-charquestskill: 98
-charlostskill: 98
-model: 98
-kami: 98
-kickall: 98
-mapexit: 98
-gat: 98
-packet: 98
-mapinfo: 98
-storage: 98
-
-// local settings for this server in this file
-import: conf/atcommand_local.conf
diff --git a/world/map/conf/atcommand_local.conf.example b/world/map/conf/atcommand_local.conf.example
deleted file mode 100644
index 916a092c..00000000
--- a/world/map/conf/atcommand_local.conf.example
+++ /dev/null
@@ -1 +0,0 @@
-// Athena atcommand Local Configuration file.
diff --git a/world/map/conf/battle_athena.conf b/world/map/conf/battle_athena.conf
deleted file mode 100644
index 5c2f0f4d..00000000
--- a/world/map/conf/battle_athena.conf
+++ /dev/null
@@ -1,318 +0,0 @@
-// eAthena Battle Configuration File
-
-// When calculating critical, should we take in to account the enimies luck? (Note 1)
-enemy_critical: yes
-
-// Enemy's Critical Rate (Note 2)
-enemy_critical_rate: 100
-
-// Are enemy attacks effected by their strength? (Note 1)
-enemy_str: yes
-
-// Can enemies have perfect flee? (Note 1)
-enemy_perfect_flee: no
-
-// The rate of time it takes to cast a spell (Note 2, 0 = No casting time)
-casting_rate: 100
-
-// Delay time after casting (Note 2)
-delay_rate: 100
-
-// Is the delay time is dependent on the caster's DEX? (Note 1)
-delay_dependon_dex: yes
-
-// At what dex does the cast time become zero (instacast)
-castrate_dex_scale: 150
-
-// Is 'Skills add a delay before you can attack' enabled? (Note 1)
-skill_delay_attack_enable: no
-
-// Increase Monsters attack range
-monster_skill_add_range: 0
-
-// If a player is attacked, will they have a delay in being able to move? (Note 1)
-// (Setting to no will be like always endure)
-player_damage_delay: no
-
-// The maximum quantity of monsters that can be summoned per GM command (0 denotes an unlimited quantity)
-atcommand_spawn_quantity_limit: 100
-
-// If an item is droped, does it go stright into the users inventory? (Note 1)
-item_auto_get: no
-
-// How far away does drop protection apply?
-drop_pickup_safety_zone: 20
-
-// How long does it take for an item to disappear from the floor after it is dropped? (in miliseconds)
-flooritem_lifetime: 120000
-
-// How long before the first person who did the most damage to a monster can get the item? (in milliseconds)
-item_first_get_time: 15000
-
-// How long before the second person who did the second most damage to a monster can get the item? (in milliseconds)
-// (It Adds Time From The First Persons Time)
-// So, It Is Like First Person's Time + Second Person's Time = Time Before Second Person Can Get The Items
-item_second_get_time: 10000
-
-// How long before the third person who did the third most/least damage to a monster can get the item? (in milliseconds)
-// (It Adds Time From The First Persons Time And Second Persons Time)
-// So, It Is Like First Person's Time + Second Person's Time + Third Person's Time = Time Before Third Person Can Get The Items
-item_third_get_time: 5000
-
-// Rate at which exp. is given. (Note 2)
-base_exp_rate: 100
-
-// Rate at which job exp. is given. (Note 2)
-job_exp_rate: 100
-
-// When a player dies, how should we penalize them?
-// 0 = No penalty.
-// 1 = Lose % of current level when killed.
-// 2 = Lose % of total experience when killed.
-death_penalty_type: 0
-
-// Base exp. penalty rate (Each 100 is 1% of their exp)
-death_penalty_base: 100
-
-// Job exp. penalty rate (Each 100 is 1% of their exp)
-death_penalty_job: 100
-
-// The amount of HP a player will respawn with, 0 is default.
-// (Unit is in percentage of total HP, 100 is full heal of HP, 0 is respawn with 1HP total.)
-restart_hp_rate: 0
-
-// The amount of SP a player will respawn with, 0 is default.
-// (Unit is in percentage of total SP, 100 is full heal of SP, 0 is respawn with 1SP total.)
-restart_sp_rate: 0
-
-// The HP rate of normal monsters (that is monsters that are not MVP's) (Note 2)
-monster_hp_rate: 100
-
-// The maximum attack speed of a monster
-monster_max_aspd: 199
-
-// (@) GM Commands available only to GM's? (Note 1)
-// set to 'No', Normal players (gm level 0) can use GM commands _IF_ you set the command level to 0.
-// set to 'Yes', Normal players (gm level 0) can never use a GM command even if you set the command level to 0.
-atcommand_gm_only: no
-
-// gm log delay (milliseconds) (default: 60 minutes)
-// delays writing to the gm log for X milliseconds after using a command
-gm_log_delay: 3600000
-
-// [GM] Can equip anything? (0 to disable, or minimum GM level, can cause client errors.)
-gm_all_equipment: 0
-
-// Should GMs be given a hashed IP instead of the real one?
-mask_ip_gms: 1
-
-// Allow monsters to be aggresive and attack first? (Note 1)
-monster_active_enable: yes
-
-// Enable monster skills? (Note 1)
-mob_skill_use: yes
-
-// Rate of monsters on a map, 200 would be twice as many as normal. (Note 2)
-mob_count_rate: 100
-
-// You must have basic skills to be able to sit, trade, form a party or create a chatroom? (Note 1)
-basic_skill_check: no
-
-// When teleporting, or spawning to a map, how long before a monster sees you if you don't move? (time is in milliseconds)
-// That is, when you go to a map and don't move, how long before the monsters will notice you.
-// If you attack a monster, it will attack you back regardless of this setting. (I think)
-player_invincible_time: 5000
-
-// PvP delay for spammers
-player_pvp_time: 5000
-
-// Will there be a minimum skill dmg even if there is a miss?
-skill_min_damage: no
-
-// The time interval for HP to restore naturally. (in milliseconds)
-natural_healhp_interval: 6000
-
-// The time interval for SP to restore naturally. (in milliseconds)
-natural_healsp_interval: 8000
-
-// The maximum weight for a character to carry when the character stops healing naturally. (in %)
-natural_heal_weight_rate: 50
-
-// Multiplier for healing from items.
-itemheal_regeneration_factor: 1
-
-// Are arrows are consumed when used on a bow? (Note 1)
-arrow_decrement: yes
-
-// Maximum atk speed. (Default is 190)
-max_aspd: 190
-
-// Maximum HP. (Default is 32500)
-max_hp: 32500
-
-// Maximum SP. (Default is 32500)
-max_sp: 32500
-
-// Maximum user LV to send to client
-// (Default is 99.. Never go above 127)
-//
-// this is only useful if you have adjusted your client
-// to expect levels higher then 99
-max_lv: 99
-
-// Max limit of char stats. (agi, str, etc.)
-max_parameter: 99
-
-// Save Clothes color. (This will degrade performance [in txt?]) (Note 1)
-save_clothcolor: yes
-
-// Undead type differeniate.
-// 0 = element undead
-// 1 = race undead
-// 2 = both
-undead_detect_type: 2
-
-// Type of penalty that is applied to FLEE when more than agi_penaly_count monsters are targetting player
-// 0 = no penalty is applied
-// 1 = agi_penaly_num is reduced from FLEE as a %
-// 2 = agi_penaly_num is reduced from FLEE as an exact amount
-agi_penaly_type: 1
-
-// Amount of enemies required to be targetting player before FLEE begins to be penalized
-agi_penaly_count: 3
-
-// Amount of FLEE penalized per each attacking monster more than agi_penaly_count
-agi_penaly_num: 10
-
-// Type of penalty that is applied to VIT defense when more than vit_penaly_count monsters are targetting player
-// 0 = no penalty is applied
-// 1 = vit_penaly_num is reduced from FLEE as a %
-// 2 = vit_penaly_num is reduced from FLEE as an exact amount
-vit_penaly_type: 1
-
-// Amount of enemies required to be targetting player before VIT defense begins to be penalized
-vit_penaly_count: 3
-
-// Amount of VIT defense penalized per each attacking monster more than vit_penaly_count
-vit_penaly_num: 5
-
-// When a defensive skill is used, is the mob's target temporarily
-// set to the attacking player first, and restored afterwards?
-mob_changetarget_byskill: no
-
-// Player's Direction Changed When Attacking? (Note 1)
-player_attack_direction_change: yes
-
-// Monsters's Direction Changed When Attacking? (Note 1)
-monster_attack_direction_change: yes
-
-// Stop logout for 10 seconds after a hit? (Note 1)
-prevent_logout: yes
-
-// If skill fails by delay, should it display or not. (Note 1)
-display_delay_skill_fail: yes
-
-// How to count the number of the enemies who do an agi penalty...
-// 1 or less: It is a count altogether.
-// 2: Full evasion exclusion
-// 3: Full evasion and evasion exclusion
-// 4 or more: Except all.
-agi_penaly_count_lv: 2
-
-// How to count the number of the enemies who do a vit penalty
-// 1 or less: It is a count altogether.
-// 2: Full evasion exclusion
-// 3: Full evasion and evasion exclusion
-// Four or more: Except all.
-vit_penaly_count_lv: 3
-
-// Is the character of a GM account set as the object of a display by @ command etc. or not?
-hide_GM_session: no
-
-// Are other requests accepted during [various things[party,guild]] a request or not?
-// It does not accept by no accepted by yes.
-invite_request_check: yes
-
-// Will display experience gained from killing a monster. (Note 1)
-disp_experience: no
-
-// Whether or not Marine Spheres and Floras summoned by Alchemist will drop items and give experience? (Note 1)
-alchemist_summon_reward: no
-
-// Maximum level (default 255). Requires that you have an experience table that supports more than 99 levels to go
-// any higher. It is left at 255 for default as to not cause problems for people who already have players at higher levels.
-// @lvup command will not go higher than this value, and therefor will not loop back around 0.
-maximum_level: 255
-
-// Leave at 0 to use normal drop system. Anything higher than 0 will allow luk to affect drop rates, based on a percentage.
-// Example 1: Setting of 10 with 50 luk would add 5 to the drop rate. So say a card has a drop rate of 2, it would become 7.
-// Example 2 : Setting 100 with 99 luk would add 99 to the drop rate.
-drops_by_luk: 0
-
-// Do all monsters ignore GMs unless attacked? (Note 1)
-monsters_ignore_gm: no
-
-// PK Server Mode. Turns entire server pvp(excluding towns). Experience loss is doubled if killed by another player.
-// When players hunt monsters over 20 levels higher, they will receive 15% additional exp., and 25% chance of receiving more items.
-// There is a nopvp.txt for setting up maps not to have pk on in this mode. Novices cannot be attacked and cannot attack.
-// Normal pvp counter and rank display are disabled as well.
-pk_mode: no
-
-// Turn this on to allow a player to level up more than once from a kill. (Note 1)
-multi_level_up: yes
-
-// Set here minimum level of a (online) GM that can receive all informations about any player that try to hack, spoof a name, etc.
-// Values are from 0 to 100.
-// 100: disable information
-// 0: send to any people, including normal players
-// default: 60, according to GM definition in atcommand_athena.conf
-hack_info_GM_level: 60
-
-// Set here the minimum GM level to disable the nowarp (from) and nowarpto (to) flags.
-// This option is mainly used in AT_commands (@memo, @warp, @charwarp, @go, etc...). All GM commands used to move or set a new map check nowarp and nowarpto flags.
-// default: 20 (first level after normal player or super'normal' player)
-any_warp_GM_min_level: 20
-
-// valid range of dye's and styles on the client
-// Note: this is also hard-coded in the char-server
-min_hair_style: 0
-max_hair_style: 20
-min_hair_color: 0
-max_hair_color: 255
-
-// Visible area size (how many squares away from a player can they see)
-area_size: 14
-
-// chat system:
-// More than flood lines in threshold seconds gets a ban
-// More than warn lines in threshold seconds gets a warning
-chat_spam_flood: 10
-chat_spam_warn: 8
-chat_spam_threshold: 10
-
-// How much to increment the line count if the content is lame.
-// Lameness is defined as mostly caps, punctuation, or a repeat of the last line.
-// Set to 1 or 2 depending on how much you hate hearing "ITEN PLZ!" 3 times in a row..
-chat_lame_penalty: 2
-
-// how many hours to auto ban spammer, 0 to disable [0-32767]. Default 6.
-chat_spam_ban: 1
-
-// Maximum line lengt, if a message is above chat_maxline, its dropped [1-512]. Default 255.
-chat_maxline: 512
-
-// Packet flood protection
-// If more than packet_spam_flood over-limits packets are recieved in
-// packet_spam_threshold seconds, we will kick the user if packet_spam_kick
-// is not set to 0. Limits on individual packets are defined in src/map/clif.c
-packet_spam_flood: 30
-packet_spam_threshold: 2
-packet_spam_kick: 1
-
-// -1: classic
-// 0: all PCs on same tile
-// 1 or more: all PCs within radius, if also within range
-mob_splash_radius: -1
-
-// local settings for this server in this file
-import: conf/battle_local.conf
diff --git a/world/map/conf/battle_local.conf.example b/world/map/conf/battle_local.conf.example
deleted file mode 100644
index 8e56b42b..00000000
--- a/world/map/conf/battle_local.conf.example
+++ /dev/null
@@ -1,16 +0,0 @@
-// Local config for battle conf.
-
-// Display monster skill errors in console? (for debug only)
-monster_skill_log: off
-
-// Display battle log? (for debug only)
-battle_log: off
-
-// Display save log? (for debug only)
-save_log: off
-
-// Display errors? (for debug only)
-error_log: off
-
-// Display other stuff? (for debug only)
-etc_log: off
diff --git a/world/map/conf/map_athena.conf b/world/map/conf/map_athena.conf
deleted file mode 100644
index 86f7f072..00000000
--- a/world/map/conf/map_athena.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-// eAthena Map-Server Configuration File
-
-// Database autosave time, in seconds.
-autosave_time: 60
-
-mapreg_txt: save/mapreg.txt
-
-import: npc/scripts.conf
-
-gm_log: gm.log
-
-// local settings for this server in this file
-import: conf/map_local.conf
diff --git a/world/map/conf/map_local.conf.example b/world/map/conf/map_local.conf.example
deleted file mode 100644
index d4270347..00000000
--- a/world/map/conf/map_local.conf.example
+++ /dev/null
@@ -1,18 +0,0 @@
-// eAthena Map-Server local Configuration File
-
-// Interserver communication passwords, set in account.txt (or equiv.)
-userid: s1
-passwd: p1
-
-// Character Server IP
-char_ip: 127.0.0.1
-// Character Server Port
-char_port: 6122
-
-// Map Server IP
-map_ip: 127.0.0.1
-// Map Server Port
-map_port: 5122
-
-// Log of map actions, disabled by default because this is huge.
-//log_file: log/map.log
diff --git a/world/map/conf/permissions.txt b/world/map/conf/permissions.txt
deleted file mode 100644
index 31447c89..00000000
--- a/world/map/conf/permissions.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// command permissions below
-CMD_ZENY 80
-CMD_CHARZENY 98
-CMD_DEBUG 80
-CMD_CHANGESEX 40
-CMD_CHARCHANGESEX 60
-CMD_CLASS 40
-CMD_CHARCLASS 50
-CMD_DESTROYNPC 98
-CMD_REMOTECMD 40
-CMD_WARP 40
-CMD_CHARWARP 60
-CMD_MUTE 60
-CMD_NPCTALK 40
-CMD_MUSIC 40
-CMD_AUTOMOD 60
-CMD_DIVORCE 40
-CMD_CHARDIVORCE 60
-
-// special permissions below
-MAP_LOUNGE 20 // level to enter the GM Lounge & talk to Numa
-EVT_KILLTHEGM 50 // this is both for the event and the magic gm top hat
-DBG_HOLIDAY 40 // holiday debug (xmas, halloween, ...)
-EVT_DEBUG 50 // event debug (open portals, disguise, ...)
-DBG_SCHEDULED 40 // scheduled broadcasts (schedule broadcast, stop broadcast, trigger broadcast, ...)
-DBG_MOTD 40 // motd debug (show/hide motd)
-
-// very specific debug menus
-DBG_VALIA 40 // illia quest debug info
diff --git a/world/map/conf/permissions_local.txt.example b/world/map/conf/permissions_local.txt.example
deleted file mode 100644
index 93bba913..00000000
--- a/world/map/conf/permissions_local.txt.example
+++ /dev/null
@@ -1,11 +0,0 @@
-// in this file you can overwrite anything from permissions.txt
-
-
-// Template for test server:
-//CMD_ZENY 0
-//CMD_DEBUG 0
-//CMD_CHANGESEX 0
-//CMD_CLASS 0
-//CMD_WARP 0
-//MAP_LOUNGE 0
-//DBG_VALIA 0
diff --git a/world/map/conf/tmwa-map.conf b/world/map/conf/tmwa-map.conf
deleted file mode 100644
index 53926ffb..00000000
--- a/world/map/conf/tmwa-map.conf
+++ /dev/null
@@ -1,42 +0,0 @@
-// Master config file for The Mana World Athena (map component)
-// This file is used since version 14.x.y
-
-// Do NOT change the order of the slave includes
-// Older server versions hard-coded the loaders in (mostly) this order,
-// and there may still be code dependencies.
-
-map_conf: conf/map_athena.conf
-battle_conf: conf/battle_athena.conf
-atcommand_conf: conf/atcommand_athena.conf
-
-const_db: db/params.txt
-const_db: db/const.txt
-const_db: db/const-magic.txt
-const_db: db/const-quest.txt
-const_db: db/const-mapflags.txt
-const_db: db/const-debugflag.txt
-const_db: conf/permissions.txt
-const_db: conf/permissions_local.txt
-
-quest_db: db/quest-log.txt
-
-item_db: db/item_db_chest.txt
-item_db: db/item_db_foot.txt
-item_db: db/item_db_generic.txt
-item_db: db/item_db_hand.txt
-item_db: db/item_db_head.txt
-item_db: db/item_db_leg.txt
-item_db: db/item_db_offhand.txt
-item_db: db/item_db_trinket.txt
-item_db: db/item_db_use.txt
-item_db: db/item_db_weapon.txt
-mob_db: db/mob_db_0_19.txt
-mob_db: db/mob_db_20_39.txt
-mob_db: db/mob_db_40_59.txt
-mob_db: db/mob_db_60_79.txt
-mob_db: db/mob_db_80_99.txt
-mob_db: db/mob_db_over_100.txt
-mob_skill_db: db/mob_skill_db.txt
-skill_db: db/skill_db.txt
-
-resnametable: data/resnametable.txt
diff --git a/world/map/data/001-1.wlk b/world/map/data/001-1.wlk
deleted file mode 100644
index a17cc66b..00000000
--- a/world/map/data/001-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/001-2.wlk b/world/map/data/001-2.wlk
deleted file mode 100644
index 1db402b4..00000000
--- a/world/map/data/001-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/001-3.wlk b/world/map/data/001-3.wlk
deleted file mode 100644
index 430eed69..00000000
--- a/world/map/data/001-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/002-1.wlk b/world/map/data/002-1.wlk
deleted file mode 100644
index 8062a106..00000000
--- a/world/map/data/002-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/002-2.wlk b/world/map/data/002-2.wlk
deleted file mode 100644
index 6fabf246..00000000
--- a/world/map/data/002-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/002-3.wlk b/world/map/data/002-3.wlk
deleted file mode 100644
index 35421c22..00000000
--- a/world/map/data/002-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/002-4.wlk b/world/map/data/002-4.wlk
deleted file mode 100644
index 40b37e67..00000000
--- a/world/map/data/002-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/002-5.wlk b/world/map/data/002-5.wlk
deleted file mode 100644
index 37c249c8..00000000
--- a/world/map/data/002-5.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/003-1.wlk b/world/map/data/003-1.wlk
deleted file mode 100644
index b7d006d9..00000000
--- a/world/map/data/003-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/003-2.wlk b/world/map/data/003-2.wlk
deleted file mode 100644
index 908e3aaf..00000000
--- a/world/map/data/003-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/003-4.wlk b/world/map/data/003-4.wlk
deleted file mode 100644
index 1e98b470..00000000
--- a/world/map/data/003-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/004-1.wlk b/world/map/data/004-1.wlk
deleted file mode 100644
index d720a514..00000000
--- a/world/map/data/004-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/004-2.wlk b/world/map/data/004-2.wlk
deleted file mode 100644
index fe5a3f47..00000000
--- a/world/map/data/004-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/004-3.wlk b/world/map/data/004-3.wlk
deleted file mode 100644
index fac16a9b..00000000
--- a/world/map/data/004-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/004-4.wlk b/world/map/data/004-4.wlk
deleted file mode 100644
index 43bfd9e6..00000000
--- a/world/map/data/004-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/004-5.wlk b/world/map/data/004-5.wlk
deleted file mode 100644
index ff57a1ee..00000000
--- a/world/map/data/004-5.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/005-1.wlk b/world/map/data/005-1.wlk
deleted file mode 100644
index 2bb08442..00000000
--- a/world/map/data/005-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/005-3.wlk b/world/map/data/005-3.wlk
deleted file mode 100644
index ed6a10e2..00000000
--- a/world/map/data/005-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/005-4.wlk b/world/map/data/005-4.wlk
deleted file mode 100644
index 37bcdf13..00000000
--- a/world/map/data/005-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/006-1.wlk b/world/map/data/006-1.wlk
deleted file mode 100644
index 8bfc19ee..00000000
--- a/world/map/data/006-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/006-2.wlk b/world/map/data/006-2.wlk
deleted file mode 100644
index 42c80a55..00000000
--- a/world/map/data/006-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/006-3.wlk b/world/map/data/006-3.wlk
deleted file mode 100644
index eaed62c1..00000000
--- a/world/map/data/006-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/007-1.wlk b/world/map/data/007-1.wlk
deleted file mode 100644
index 2cc36353..00000000
--- a/world/map/data/007-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/007-2.wlk b/world/map/data/007-2.wlk
deleted file mode 100644
index 57ccb981..00000000
--- a/world/map/data/007-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/008-1.wlk b/world/map/data/008-1.wlk
deleted file mode 100644
index ced742b6..00000000
--- a/world/map/data/008-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-1.wlk b/world/map/data/009-1.wlk
deleted file mode 100644
index e39df062..00000000
--- a/world/map/data/009-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-2.wlk b/world/map/data/009-2.wlk
deleted file mode 100644
index 15e0d179..00000000
--- a/world/map/data/009-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-3.wlk b/world/map/data/009-3.wlk
deleted file mode 100644
index a5c2b091..00000000
--- a/world/map/data/009-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-4.wlk b/world/map/data/009-4.wlk
deleted file mode 100644
index 1205e541..00000000
--- a/world/map/data/009-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-5.wlk b/world/map/data/009-5.wlk
deleted file mode 100644
index ce3fc759..00000000
--- a/world/map/data/009-5.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-6.wlk b/world/map/data/009-6.wlk
deleted file mode 100644
index eba60bf4..00000000
--- a/world/map/data/009-6.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-7.wlk b/world/map/data/009-7.wlk
deleted file mode 100644
index ce0988e0..00000000
--- a/world/map/data/009-7.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/009-8.wlk b/world/map/data/009-8.wlk
deleted file mode 100644
index ad21748d..00000000
--- a/world/map/data/009-8.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/010-1.wlk b/world/map/data/010-1.wlk
deleted file mode 100644
index 2abcbead..00000000
--- a/world/map/data/010-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/010-2.wlk b/world/map/data/010-2.wlk
deleted file mode 100644
index dccf8ed4..00000000
--- a/world/map/data/010-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/011-1.wlk b/world/map/data/011-1.wlk
deleted file mode 100644
index ceb12317..00000000
--- a/world/map/data/011-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/011-3.wlk b/world/map/data/011-3.wlk
deleted file mode 100644
index 6ab5e57d..00000000
--- a/world/map/data/011-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/011-4.wlk b/world/map/data/011-4.wlk
deleted file mode 100644
index 2c90a1ea..00000000
--- a/world/map/data/011-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/011-6.wlk b/world/map/data/011-6.wlk
deleted file mode 100644
index 5f322060..00000000
--- a/world/map/data/011-6.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/012-1.wlk b/world/map/data/012-1.wlk
deleted file mode 100644
index 6008bfcd..00000000
--- a/world/map/data/012-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/012-3.wlk b/world/map/data/012-3.wlk
deleted file mode 100644
index 8202ab74..00000000
--- a/world/map/data/012-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/012-4.wlk b/world/map/data/012-4.wlk
deleted file mode 100644
index 4784cc41..00000000
--- a/world/map/data/012-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/013-1.wlk b/world/map/data/013-1.wlk
deleted file mode 100644
index 52d4ea40..00000000
--- a/world/map/data/013-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/013-2.wlk b/world/map/data/013-2.wlk
deleted file mode 100644
index 7d9ee3a4..00000000
--- a/world/map/data/013-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/013-3.wlk b/world/map/data/013-3.wlk
deleted file mode 100644
index 0513d327..00000000
--- a/world/map/data/013-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/014-1.wlk b/world/map/data/014-1.wlk
deleted file mode 100644
index 9d1a55ee..00000000
--- a/world/map/data/014-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/014-3.wlk b/world/map/data/014-3.wlk
deleted file mode 100644
index 4a7d11eb..00000000
--- a/world/map/data/014-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/015-1.wlk b/world/map/data/015-1.wlk
deleted file mode 100644
index 423858e6..00000000
--- a/world/map/data/015-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/015-3.wlk b/world/map/data/015-3.wlk
deleted file mode 100644
index 25ef46b1..00000000
--- a/world/map/data/015-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/016-1.wlk b/world/map/data/016-1.wlk
deleted file mode 100644
index c08298a4..00000000
--- a/world/map/data/016-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/016-2.wlk b/world/map/data/016-2.wlk
deleted file mode 100644
index 6db17215..00000000
--- a/world/map/data/016-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/017-1.wlk b/world/map/data/017-1.wlk
deleted file mode 100644
index 9cf37da8..00000000
--- a/world/map/data/017-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/017-2.wlk b/world/map/data/017-2.wlk
deleted file mode 100644
index f73b55c9..00000000
--- a/world/map/data/017-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/017-3.wlk b/world/map/data/017-3.wlk
deleted file mode 100644
index 46f8c266..00000000
--- a/world/map/data/017-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/017-4.wlk b/world/map/data/017-4.wlk
deleted file mode 100644
index 9e09e65c..00000000
--- a/world/map/data/017-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/017-9.wlk b/world/map/data/017-9.wlk
deleted file mode 100644
index 16fcf306..00000000
--- a/world/map/data/017-9.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/018-1.wlk b/world/map/data/018-1.wlk
deleted file mode 100644
index 1da6b139..00000000
--- a/world/map/data/018-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/018-2.wlk b/world/map/data/018-2.wlk
deleted file mode 100644
index 49dc8b1a..00000000
--- a/world/map/data/018-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/018-3.wlk b/world/map/data/018-3.wlk
deleted file mode 100644
index 675ee057..00000000
--- a/world/map/data/018-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/019-1.wlk b/world/map/data/019-1.wlk
deleted file mode 100644
index 83aae01f..00000000
--- a/world/map/data/019-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/019-3.wlk b/world/map/data/019-3.wlk
deleted file mode 100644
index fe1957ab..00000000
--- a/world/map/data/019-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/019-4.wlk b/world/map/data/019-4.wlk
deleted file mode 100644
index 102012ff..00000000
--- a/world/map/data/019-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/020-1.wlk b/world/map/data/020-1.wlk
deleted file mode 100644
index b8d1a284..00000000
--- a/world/map/data/020-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/020-2.wlk b/world/map/data/020-2.wlk
deleted file mode 100644
index 5d7706d8..00000000
--- a/world/map/data/020-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/020-3.wlk b/world/map/data/020-3.wlk
deleted file mode 100644
index cfc2ad06..00000000
--- a/world/map/data/020-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/021-1.wlk b/world/map/data/021-1.wlk
deleted file mode 100644
index af614879..00000000
--- a/world/map/data/021-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/021-2.wlk b/world/map/data/021-2.wlk
deleted file mode 100644
index 61e4456f..00000000
--- a/world/map/data/021-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/021-3.wlk b/world/map/data/021-3.wlk
deleted file mode 100644
index 38eb0ee4..00000000
--- a/world/map/data/021-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/022-1.wlk b/world/map/data/022-1.wlk
deleted file mode 100644
index 643a8714..00000000
--- a/world/map/data/022-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/023-1.wlk b/world/map/data/023-1.wlk
deleted file mode 100644
index e6e8cc22..00000000
--- a/world/map/data/023-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/023-2.wlk b/world/map/data/023-2.wlk
deleted file mode 100644
index 14b85209..00000000
--- a/world/map/data/023-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/023-3.wlk b/world/map/data/023-3.wlk
deleted file mode 100644
index b18db04b..00000000
--- a/world/map/data/023-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/024-1.wlk b/world/map/data/024-1.wlk
deleted file mode 100644
index c15f1d51..00000000
--- a/world/map/data/024-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/024-2.wlk b/world/map/data/024-2.wlk
deleted file mode 100644
index 1f63519e..00000000
--- a/world/map/data/024-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/024-3.wlk b/world/map/data/024-3.wlk
deleted file mode 100644
index a73afbf6..00000000
--- a/world/map/data/024-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/024-4.wlk b/world/map/data/024-4.wlk
deleted file mode 100644
index 7b0e8cd5..00000000
--- a/world/map/data/024-4.wlk
+++ /dev/null
@@ -1 +0,0 @@
-ôô
diff --git a/world/map/data/025-1.wlk b/world/map/data/025-1.wlk
deleted file mode 100644
index 62fac2c3..00000000
--- a/world/map/data/025-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/025-3.wlk b/world/map/data/025-3.wlk
deleted file mode 100644
index 033d174a..00000000
--- a/world/map/data/025-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/025-4.wlk b/world/map/data/025-4.wlk
deleted file mode 100644
index 7c93fb01..00000000
--- a/world/map/data/025-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/026-1.wlk b/world/map/data/026-1.wlk
deleted file mode 100644
index d232da71..00000000
--- a/world/map/data/026-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/026-2.wlk b/world/map/data/026-2.wlk
deleted file mode 100644
index 1a95d798..00000000
--- a/world/map/data/026-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-1.wlk b/world/map/data/027-1.wlk
deleted file mode 100644
index 91b563fd..00000000
--- a/world/map/data/027-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-2.wlk b/world/map/data/027-2.wlk
deleted file mode 100644
index ec3dfafa..00000000
--- a/world/map/data/027-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-3.wlk b/world/map/data/027-3.wlk
deleted file mode 100644
index 84328e51..00000000
--- a/world/map/data/027-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-4.wlk b/world/map/data/027-4.wlk
deleted file mode 100644
index 0933cbc6..00000000
--- a/world/map/data/027-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-5.wlk b/world/map/data/027-5.wlk
deleted file mode 100644
index daba44e7..00000000
--- a/world/map/data/027-5.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-6.wlk b/world/map/data/027-6.wlk
deleted file mode 100644
index aee9dc3e..00000000
--- a/world/map/data/027-6.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-7.wlk b/world/map/data/027-7.wlk
deleted file mode 100644
index 10843995..00000000
--- a/world/map/data/027-7.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-8.wlk b/world/map/data/027-8.wlk
deleted file mode 100644
index 19a45791..00000000
--- a/world/map/data/027-8.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/027-9.wlk b/world/map/data/027-9.wlk
deleted file mode 100644
index 2d0ec6c9..00000000
--- a/world/map/data/027-9.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/028-1.wlk b/world/map/data/028-1.wlk
deleted file mode 100644
index ff3ef668..00000000
--- a/world/map/data/028-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/028-3.wlk b/world/map/data/028-3.wlk
deleted file mode 100644
index 67493a1a..00000000
--- a/world/map/data/028-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/029-1.wlk b/world/map/data/029-1.wlk
deleted file mode 100644
index 5a4e8e7a..00000000
--- a/world/map/data/029-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/029-2.wlk b/world/map/data/029-2.wlk
deleted file mode 100644
index daec6277..00000000
--- a/world/map/data/029-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/029-3.wlk b/world/map/data/029-3.wlk
deleted file mode 100644
index c9c173d8..00000000
--- a/world/map/data/029-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/029-4.wlk b/world/map/data/029-4.wlk
deleted file mode 100644
index 9dbbe403..00000000
--- a/world/map/data/029-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/030-1.wlk b/world/map/data/030-1.wlk
deleted file mode 100644
index 3479c8df..00000000
--- a/world/map/data/030-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/030-2.wlk b/world/map/data/030-2.wlk
deleted file mode 100644
index 814882de..00000000
--- a/world/map/data/030-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/030-3.wlk b/world/map/data/030-3.wlk
deleted file mode 100644
index 1ab7dd7c..00000000
--- a/world/map/data/030-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/030-4.wlk b/world/map/data/030-4.wlk
deleted file mode 100644
index 1094754b..00000000
--- a/world/map/data/030-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/031-1.wlk b/world/map/data/031-1.wlk
deleted file mode 100644
index 1e16f738..00000000
--- a/world/map/data/031-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/031-2.wlk b/world/map/data/031-2.wlk
deleted file mode 100644
index 61034c48..00000000
--- a/world/map/data/031-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/031-3.wlk b/world/map/data/031-3.wlk
deleted file mode 100644
index 08c10d05..00000000
--- a/world/map/data/031-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/031-4.wlk b/world/map/data/031-4.wlk
deleted file mode 100644
index 66a22f4b..00000000
--- a/world/map/data/031-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/032-1.wlk b/world/map/data/032-1.wlk
deleted file mode 100644
index 045fe243..00000000
--- a/world/map/data/032-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/032-3.wlk b/world/map/data/032-3.wlk
deleted file mode 100644
index 8ee20b59..00000000
--- a/world/map/data/032-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/033-1.wlk b/world/map/data/033-1.wlk
deleted file mode 100644
index 9fc5571d..00000000
--- a/world/map/data/033-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/034-1.wlk b/world/map/data/034-1.wlk
deleted file mode 100644
index 4b9ef324..00000000
--- a/world/map/data/034-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/034-2.wlk b/world/map/data/034-2.wlk
deleted file mode 100644
index 21fcee6d..00000000
--- a/world/map/data/034-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/035-2.wlk b/world/map/data/035-2.wlk
deleted file mode 100644
index 0c07166e..00000000
--- a/world/map/data/035-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/036-2.wlk b/world/map/data/036-2.wlk
deleted file mode 100644
index 0c07166e..00000000
--- a/world/map/data/036-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/041-1.wlk b/world/map/data/041-1.wlk
deleted file mode 100644
index 908a9977..00000000
--- a/world/map/data/041-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/042-1.wlk b/world/map/data/042-1.wlk
deleted file mode 100644
index 04037f13..00000000
--- a/world/map/data/042-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/042-2.wlk b/world/map/data/042-2.wlk
deleted file mode 100644
index c3f7a3fa..00000000
--- a/world/map/data/042-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/042-3.wlk b/world/map/data/042-3.wlk
deleted file mode 100644
index a57e8126..00000000
--- a/world/map/data/042-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/043-1.wlk b/world/map/data/043-1.wlk
deleted file mode 100644
index 8ec57dbe..00000000
--- a/world/map/data/043-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/043-3.wlk b/world/map/data/043-3.wlk
deleted file mode 100644
index 6cee3d76..00000000
--- a/world/map/data/043-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/043-4.wlk b/world/map/data/043-4.wlk
deleted file mode 100644
index 04f2c2a0..00000000
--- a/world/map/data/043-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/044-1.wlk b/world/map/data/044-1.wlk
deleted file mode 100644
index 0b25e16c..00000000
--- a/world/map/data/044-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/044-3.wlk b/world/map/data/044-3.wlk
deleted file mode 100644
index 0d063360..00000000
--- a/world/map/data/044-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/045-1.wlk b/world/map/data/045-1.wlk
deleted file mode 100644
index 01c0f1f2..00000000
--- a/world/map/data/045-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/046-1.wlk b/world/map/data/046-1.wlk
deleted file mode 100644
index a6b2e8d0..00000000
--- a/world/map/data/046-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/046-3.wlk b/world/map/data/046-3.wlk
deleted file mode 100644
index 2ce1ad85..00000000
--- a/world/map/data/046-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/047-1.wlk b/world/map/data/047-1.wlk
deleted file mode 100644
index 4c188721..00000000
--- a/world/map/data/047-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/047-3.wlk b/world/map/data/047-3.wlk
deleted file mode 100644
index 0d063360..00000000
--- a/world/map/data/047-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/048-1.wlk b/world/map/data/048-1.wlk
deleted file mode 100644
index 62fab749..00000000
--- a/world/map/data/048-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/048-2.wlk b/world/map/data/048-2.wlk
deleted file mode 100644
index 3d3e413e..00000000
--- a/world/map/data/048-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/051-1.wlk b/world/map/data/051-1.wlk
deleted file mode 100644
index 7ca94ca4..00000000
--- a/world/map/data/051-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/051-3.wlk b/world/map/data/051-3.wlk
deleted file mode 100644
index 92a421b9..00000000
--- a/world/map/data/051-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/052-1.wlk b/world/map/data/052-1.wlk
deleted file mode 100644
index a014584c..00000000
--- a/world/map/data/052-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/052-2.wlk b/world/map/data/052-2.wlk
deleted file mode 100644
index 042203c4..00000000
--- a/world/map/data/052-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/055-1.wlk b/world/map/data/055-1.wlk
deleted file mode 100644
index 0f0d3501..00000000
--- a/world/map/data/055-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/055-3.wlk b/world/map/data/055-3.wlk
deleted file mode 100644
index 00bfd16d..00000000
--- a/world/map/data/055-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/056-1.wlk b/world/map/data/056-1.wlk
deleted file mode 100644
index d4c32e7d..00000000
--- a/world/map/data/056-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/056-2.wlk b/world/map/data/056-2.wlk
deleted file mode 100644
index 3088183c..00000000
--- a/world/map/data/056-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/057-1.wlk b/world/map/data/057-1.wlk
deleted file mode 100644
index 0e72809f..00000000
--- a/world/map/data/057-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/068-1.wlk b/world/map/data/068-1.wlk
deleted file mode 100644
index aab1110c..00000000
--- a/world/map/data/068-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/068-2.wlk b/world/map/data/068-2.wlk
deleted file mode 100644
index 057ef884..00000000
--- a/world/map/data/068-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/069-1.wlk b/world/map/data/069-1.wlk
deleted file mode 100644
index 3e72be59..00000000
--- a/world/map/data/069-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/069-2.wlk b/world/map/data/069-2.wlk
deleted file mode 100644
index 2622bdf1..00000000
--- a/world/map/data/069-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/070-1.wlk b/world/map/data/070-1.wlk
deleted file mode 100644
index 6d0076dc..00000000
--- a/world/map/data/070-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/070-3.wlk b/world/map/data/070-3.wlk
deleted file mode 100644
index 4c5f45da..00000000
--- a/world/map/data/070-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-1.wlk b/world/map/data/099-1.wlk
deleted file mode 100644
index 9c0dfd80..00000000
--- a/world/map/data/099-1.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-2.wlk b/world/map/data/099-2.wlk
deleted file mode 100644
index beb2d549..00000000
--- a/world/map/data/099-2.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-3.wlk b/world/map/data/099-3.wlk
deleted file mode 100644
index e2677aa7..00000000
--- a/world/map/data/099-3.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-4.wlk b/world/map/data/099-4.wlk
deleted file mode 100644
index 01fe6f91..00000000
--- a/world/map/data/099-4.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-5.wlk b/world/map/data/099-5.wlk
deleted file mode 100644
index 01fe6f91..00000000
--- a/world/map/data/099-5.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-6.wlk b/world/map/data/099-6.wlk
deleted file mode 100644
index beb2d549..00000000
--- a/world/map/data/099-6.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-7.wlk b/world/map/data/099-7.wlk
deleted file mode 100644
index 5563107f..00000000
--- a/world/map/data/099-7.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/099-8.wlk b/world/map/data/099-8.wlk
deleted file mode 100644
index 85d66b2d..00000000
--- a/world/map/data/099-8.wlk
+++ /dev/null
@@ -1 +0,0 @@
-““
diff --git a/world/map/data/botcheck.wlk b/world/map/data/botcheck.wlk
deleted file mode 100644
index bd11ef86..00000000
--- a/world/map/data/botcheck.wlk
+++ /dev/null
Binary files differ
diff --git a/world/map/data/resnametable.txt b/world/map/data/resnametable.txt
deleted file mode 100644
index 80749643..00000000
--- a/world/map/data/resnametable.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-001-1#001-1.wlk#
-001-2#001-2.wlk#
-001-3#001-3.wlk#
-002-1#002-1.wlk#
-002-2#002-2.wlk#
-002-3#002-3.wlk#
-002-4#002-4.wlk#
-002-5#002-5.wlk#
-003-1#003-1.wlk#
-003-4#003-4.wlk#
-004-1#004-1.wlk#
-004-3#004-3.wlk#
-004-4#004-4.wlk#
-004-5#004-5.wlk#
-005-3#005-3.wlk#
-006-1#006-1.wlk#
-006-2#006-2.wlk#
-006-3#006-3.wlk#
-007-1#007-1.wlk#
-007-2#007-2.wlk#
-008-1#008-1.wlk#
-009-1#009-1.wlk#
-009-2#009-2.wlk#
-009-3#009-3.wlk#
-009-4#009-4.wlk#
-009-5#009-5.wlk#
-009-6#009-6.wlk#
-009-7#009-7.wlk#
-009-8#009-8.wlk#
-010-1#010-1.wlk#
-010-2#010-2.wlk#
-011-1#011-1.wlk#
-011-3#011-3.wlk#
-011-4#011-4.wlk#
-011-6#011-6.wlk#
-012-1#012-1.wlk#
-012-3#012-3.wlk#
-012-4#012-4.wlk#
-013-1#013-1.wlk#
-013-2#013-2.wlk#
-013-3#013-3.wlk#
-014-1#014-1.wlk#
-014-3#014-3.wlk#
-015-1#015-1.wlk#
-015-3#015-3.wlk#
-016-1#016-1.wlk#
-016-2#016-2.wlk#
-017-1#017-1.wlk#
-017-2#017-2.wlk#
-017-3#017-3.wlk#
-017-4#017-4.wlk#
-017-9#017-9.wlk#
-018-1#018-1.wlk#
-018-2#018-2.wlk#
-018-3#018-3.wlk#
-019-1#019-1.wlk#
-019-3#019-3.wlk#
-019-4#019-4.wlk#
-020-1#020-1.wlk#
-020-2#020-2.wlk#
-020-3#020-3.wlk#
-021-3#021-3.wlk#
-023-1#023-1.wlk#
-023-2#023-2.wlk#
-023-3#023-3.wlk#
-025-1#025-1.wlk#
-025-3#025-3.wlk#
-025-4#025-4.wlk#
-026-1#026-1.wlk#
-026-2#026-2.wlk#
-027-1#027-1.wlk#
-027-2#027-2.wlk#
-027-3#027-3.wlk#
-027-4#027-4.wlk#
-027-5#027-5.wlk#
-027-6#027-6.wlk#
-027-7#027-7.wlk#
-027-8#027-8.wlk#
-028-1#028-1.wlk#
-028-3#028-3.wlk#
-029-1#029-1.wlk#
-029-2#029-2.wlk#
-029-3#029-3.wlk#
-029-4#029-4.wlk#
-030-1#030-1.wlk#
-030-2#030-2.wlk#
-030-3#030-3.wlk#
-030-4#030-4.wlk#
-031-1#031-1.wlk#
-031-2#031-2.wlk#
-031-3#031-3.wlk#
-031-4#031-4.wlk#
-032-3#032-3.wlk#
-033-1#033-1.wlk#
-034-1#034-1.wlk#
-034-2#034-2.wlk#
-035-2#035-2.wlk#
-036-2#036-2.wlk#
-041-1#041-1.wlk#
-042-1#042-1.wlk#
-043-1#043-1.wlk#
-043-3#043-3.wlk#
-043-4#043-4.wlk#
-045-1#045-1.wlk#
-046-1#046-1.wlk#
-046-3#046-3.wlk#
-047-1#047-1.wlk#
-047-3#047-3.wlk#
-048-2#048-2.wlk#
-051-1#051-1.wlk#
-051-3#051-3.wlk#
-052-1#052-1.wlk#
-052-2#052-2.wlk#
-055-1#055-1.wlk#
-055-3#055-3.wlk#
-056-2#056-2.wlk#
-057-1#057-1.wlk#
-069-2#069-2.wlk#
-070-1#070-1.wlk#
-070-3#070-3.wlk#
-099-1#099-1.wlk#
-099-2#099-2.wlk#
-099-3#099-3.wlk#
-099-4#099-4.wlk#
-099-5#099-5.wlk#
-099-6#099-6.wlk#
-099-7#099-7.wlk#
-099-8#099-8.wlk#
-botcheck#botcheck.wlk#
diff --git a/world/map/db/const-debugflag.txt.example b/world/map/db/const-debugflag.txt.example
deleted file mode 100644
index 1e5bf8f4..00000000
--- a/world/map/db/const-debugflag.txt.example
+++ /dev/null
@@ -1,6 +0,0 @@
-// Constants usable in scripts.
-
-// This constant is used to define whether unreleased items are equippable.
-// This defaults to 1, but should be disabled on the official server.
-// If set to 2 or higher, it also disables global timers to aid gdb'ing.
-debug 1
diff --git a/world/map/db/const-magic.txt b/world/map/db/const-magic.txt
deleted file mode 100644
index 9bf8e063..00000000
--- a/world/map/db/const-magic.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-// NOTE: I think min_casttime should be in battle config if we don't make it a variable
-MIN_CASTTIME 200
-
-// Magic Skills
-SKILL_MAGIC 340
-SKILL_MAGIC_LIFE 341
-SKILL_MAGIC_WAR 342
-SKILL_MAGIC_TRANSMUTE 343
-SKILL_MAGIC_NATURE 344
-SKILL_MAGIC_ASTRAL 345
-SKILL_MAGIC_DARK 346
-
-// Elements
-ELT_NEUTRAL 0
-ELT_WATER 1
-ELT_EARTH 2
-ELT_FIRE 3
-ELT_WIND 4
-ELT_POISON 5
-ELT_SHADOW 6
-ELT_HOLY 7
-ELT_GHOST 8
-ELT_UNDEAD 9
-
-// Status effects
-SC_SHEARED 194
-SC_HIDE 194
-SC_HALT_REGENERATE 195
-SC_FLYING_BACKPACK 196
-SC_MBARRIER 197
-SC_HASTE 198
-SC_PHYS_SHIELD 199
-SO_GMHIDE 64
-SO_GMINVISIBLE 4096
-
-// Special effects
-SFX_DEFAULT 10
-SFX_SUMMON_START 21
-SFX_SUMMON_FIRE 22
-SFX_TELEPORT 24
-SFX_RAIN 25
-SFX_HIT 25
-SFX_ARROW_HAIL 27
-SFX_BARRIER 10
-SFX_UNBARRIER 10
-SFX_HEAL 3
-SFX_LIGHTNING 18
-
-// Magic Spell Const
-MIN_MARRY_LEVEL 32
-MAX_RAIN_SPELL_RADIUS 15
-MAX_MAGIC_LEVEL 2
-MFLAG_MADE_CONC_POTION 16384
-MFLAG_MADE_CONC_POTION_SHIFT 14
-// SCRIPT_XP "MAGIC_EXPERIENCE"
-SCRIPT_XP_MASK 65535
-SCRIPT_XP_SHIFT 0
-SCRIPT_HEALSPELL_MASK 255
-SCRIPT_HEALSPELL_SHIFT 24
-ATTACK_ICON_GENERIC 2000
-ATTACK_ICON_SHEARING 2001
-E10_FLAG_USED_FREE_WARP_SHIFT 17
diff --git a/world/map/db/const-mapflags.txt b/world/map/db/const-mapflags.txt
deleted file mode 100644
index 486ab375..00000000
--- a/world/map/db/const-mapflags.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-// numbers 21 and above were not available in TMWA 14.1.27 or earlier
-// not all flags actually *do* anything
-
-//MF_ALIAS 21
-//MF_NOMEMO 0
-MF_NOTELEPORT 1
-MF_NORETURN 22
-MF_MONSTER_NOTELEPORT 23
-MF_NOSAVE 2
-//MF_NOBRANCH 3
-MF_NOPENALTY 4
-MF_PVP 6
-MF_PVP_NOPARTY 7
-//MF_PVP_NOGUILD 8
-//MF_PVP_NIGHTMAREDROP 24
-MF_PVP_NOCALCRANK 25
-//MF_GVG 9
-//MF_GVG_NOPARTY 10
-//MF_NOZENYPENALTY 5
-//MF_NOTRADE 11
-//MF_NOSKILL 12
-MF_NOWARP 13
-MF_NOWARPTO 26
-MF_NOPVP 14
-MF_MASK 15
-MF_SNOW 16
-MF_FOG 17
-MF_SAKURA 18
-MF_LEAVES 19
-MF_RAIN 20
-MF_NO_PLAYER_DROPS 27
-MF_TOWN 28
-MF_OUTSIDE 29
-MF_RESAVE 30
-//MF_UNUSED3 31
diff --git a/world/map/db/const-quest.txt b/world/map/db/const-quest.txt
deleted file mode 100644
index 8e434049..00000000
--- a/world/map/db/const-quest.txt
+++ /dev/null
@@ -1,167 +0,0 @@
-// Variables related to quests
-TWOBIT_0_SHIFT 0
-TWOBIT_0_MASK 3
-
-TWOBIT_1_SHIFT 2
-TWOBIT_1_MASK 12
-
-TWOBIT_2_SHIFT 4
-TWOBIT_2_MASK 48
-
-TWOBIT_3_SHIFT 6
-TWOBIT_3_MASK 192
-
-TWOBIT_4_SHIFT 8
-TWOBIT_4_MASK 768
-
-TWOBIT_5_SHIFT 10
-TWOBIT_5_MASK 3072
-
-TWOBIT_6_SHIFT 12
-TWOBIT_6_MASK 12288
-
-TWOBIT_7_SHIFT 14
-TWOBIT_7_MASK 49152
-
-TWOBIT_8_SHIFT 16
-TWOBIT_8_MASK 196608
-
-TWOBIT_9_SHIFT 18
-TWOBIT_9_MASK 786432
-
-TWOBIT_10_SHIFT 20
-TWOBIT_10_MASK 3145728
-
-TWOBIT_11_SHIFT 22
-TWOBIT_11_MASK 12582912
-
-TWOBIT_12_SHIFT 24
-TWOBIT_12_MASK 50331648
-
-TWOBIT_13_SHIFT 26
-TWOBIT_13_MASK 201326592
-
-TWOBIT_14_SHIFT 28
-TWOBIT_14_MASK 805306368
-
-// Not enough space in CONST to store
-//TWOBIT_15_SHIFT 30
-//TWOBIT_15_MASK 3221225472
-
-NIBBLE_0_SHIFT 0
-NIBBLE_0_MASK 15
-
-NIBBLE_1_SHIFT 4
-NIBBLE_1_MASK 240
-
-NIBBLE_2_SHIFT 8
-NIBBLE_2_MASK 3840
-
-NIBBLE_3_SHIFT 12
-NIBBLE_3_MASK 61440
-
-NIBBLE_4_SHIFT 16
-NIBBLE_4_MASK 983040
-
-NIBBLE_5_SHIFT 20
-NIBBLE_5_MASK 15728640
-
-NIBBLE_6_SHIFT 24
-NIBBLE_6_MASK 251658240
-
-NIBBLE_7_SHIFT 28 // Only three bits available in this one
-NIBBLE_7_MASK 1879048192 // should be 4026531840
-
-BYTE_0_SHIFT 0
-BYTE_0_MASK 255
-
-BYTE_1_SHIFT 8
-BYTE_1_MASK 65280
-
-BYTE_2_SHIFT 16
-BYTE_2_MASK 16711680
-
-BYTE_3_SHIFT 24 // only 7 bits in this one
-BYTE_3_MASK 2130706432 // should be 4278190080
-
-// Wedding Variables
-WEDDING_FEE 100
-DIVORCE_FEE_PER_LEVEL 500
-WEDDING_MIN_LEVEL 32
-
-// Flags for the magic quests.
-MFLAG_DRANK_POTION 1 // Character drank at least one magic potion as prerequisite for the Mana Seed quest.
-MFLAG_KNOWS_MANASEED 2 // Character has found the Mana Seed.
-MFLAG_TOUCHED_MANASEED 4 // Character has touched the Mana Seed.
-MFLAG_MANASEED_MAXEDOUT 8 // Character has touched the Mana Seed while maxed out on magic.
-
-MFLAG_KNOWS_AULDSBEL 16 // Character has met Auldsbel.
-MFLAG_KNOWS_WYARA 32 // Character has met Wyara.
-MFLAG_KNOWS_SAGATHA 64 // Character has met Sagatha.
-MFLAG_KNOWS_MANAPOTION 128 // Has heard about the Mana Potion.
-
-MFLAG_MANASEED_RUMOUR 256 // Has heard rumour about Mana Seed.
-MFLAG_KNOWS_CUTTREE 512 // Knows about the 'cut the tree' quest.
-MFLAG_DID_CUTTREE 1024 // Did cut off a branch from the druid tree.
-MFLAG_KNOWS_DRUIDTREE 2048 // Knows about the druid tree quest.
-
-MFLAG_KNOWS_IMP 4096 // Knows about the imprisoned forest spirit.
-MFLAG_KNOWS_OLD_WIZARD 8192 // Knows Bjorn's old wizard.
-MFLAG_MADE_CONC_POTION 16384 // Made a concentration potion with T15 and/or T16.
-MFLAG_ELANORE_OMAR 32768 // Told Omar about Elanore's involvement.
-
-MFLAG_KNOWS_UNFOCUS_RECIPE 65536 // Has been told about unfocus by Luca.
-
-MFLAG_GOT_MANA_PEARL 131072 // Had enough magic exp to get the Mana Pearl.
-
-// Flags set in the FLAGS variable:
-FLAG_HAS_BOWLER_BURNSDAY 1 // every year's poem at burns day, shannon gives you a bowler hat
-FLAG_OPENED_UNDERGROUND 2 // this flag is a replacement for variable Open_Underground_Palace_Barrier, which was used only as bool
-FLAG_GOT_NAEM_GLOVES 4 // this replaces Naem_Quest_Done, which was used as a bool variable
-FLAG_GOT_GRADUATIONCAP 8 // this is a bit which was to be found in Tut_var second bit
-FLAG_TOWEL_HELPED 16 // gave the towel npc the stuff he wants
-FLAG_TOWEL_COMPLETED 32 // got the towel from the towel npc
-FLAG_ANDRA_HELPED 64 // Knows Andra and agreed to help her
-FLAG_ROSSI_COMPLETED 128 // Completed the Rossi Quest
-FLAG_TUTORIAL_DONE 256 // player completed tutorial (or entered the tutorial area from outside after it was added)
-FLAG_SNOWMAN 512 // player gave candy to the snowman
-FLAG_SANTAS_HELPER 1024 // player gave presents to Santa's helper
-FLAG_HURNSMINE_CHEST 2048 // player opened the chest with the short sword in Hurnscald mines
-FLAG_GOT_BEANIEHAT 4096 // player got Beanie Copter Hat from Milly
-FLAG_DECLINED_BEANIEHAT 8192 // player declined Beanie Copter Hat from Milly
-FLAG_KESHLAM_FLAWEDLENS 16384 // player got the Flawed Lens from Keshlam's Chest
-FLAG_KESHLAM_RAREDROP 32768 // player got the super rare from Keshlam's Chest
-FLAG_BEHEADER_MASK 65536 // traded with The Beheader
-FLAG_GOT_BEHEADER_SWORD 131072 // Obtained the Beheader Sword
-FLAG_LUCA_GOT_SIX_SKILLS 262144 // player learned all six Focus Skills
-FLAG_LUCA_2SKILLS_MAXED 524288 // player got 2 Focus Skills at lvl 9
-FLAG_LUCA_4SKILLS_MAXED 1048576 // player got 4 Focus Skills at lvl 9
-FLAG_LUCA_6SKILLS_MAXED 2097152 // player got 6 Focus Skills at lvl 9
-FLAG_LUCA_FIX 4194304 // fixed a bug
-
-// Flags for the battle caves.
-BATTLE_CAVE1 1
-BATTLE_CAVE2 2
-BATTLE_CAVE3 4
-BATTLE_CAVE4 8
-BATTLE_CAVE5 16
-BATTLE_CAVE6 32
-BATTLE_CAVE7 64
-BATTLE_CAVE8 128
-BATTLE_CAVE9 256
-
-// Storage Options
-OPT_STORAGE_CLOSE 1
-OPT_BANK_CLOSE 2
-OPT_BANK_GOTSHADE 4
-
-// Currently used by the fluffy hunt (033-1).
-// starts counting with 0
-MAX_HIGH_SCORES 14
-
-// Launcher/Ammo Types
-AMMO_NONE 0
-AMMO_BOW 1
-AMMO_SLING 2
-AMMO_WAND 3
-AMMO_XMAS 4
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
deleted file mode 100644
index 335ab687..00000000
--- a/world/map/db/const.txt
+++ /dev/null
@@ -1,496 +0,0 @@
-// Constants usable in scripts.
-// TODO remove all the bSomething and move them to params instead
-
-bMaxHP 6
-bMaxSP 8
-bStr 13
-bAgi 14
-bVit 15
-bInt 16
-bDex 17
-bLuk 18
-//bAtk 41
-//bAtk2 42
-bMatk1 43
-//bMatk2 44
-//bDef 45
-bMdef 47
-//bMdef2 48
-bHit 49
-bFlee 50
-//bFlee2 51
-bCritical 52
-//bAspd 53
-bDeaf 70
-
-// Elements:
-// 0 = Neutral
-// 1 = Water
-// 2 = Earth
-// 3 = Fire
-// 4 = Wind
-// 5 = Poison
-// 6 = Holy
-// 7 = Dark
-// 8 = Spirit
-// 9 = Undead
-
-// Races:
-// 0 = Formless
-// 1 = Undead
-// 2 = Brute
-// 3 = Plant
-// 4 = Insect
-// 5 = Fish
-// 6 = Demon
-// 7 = Demi-Human
-// 8 = Angel
-// 9 = Dragon
-// 10 = Boss
-// 11 = Other
-
-// Effects:
-// Eff_Blind
-// Eff_Sleep
-// Eff_Poison
-// Eff_Freeze
-// Eff_Silence
-// Eff_Stun
-// Eff_Curse
-// Eff_Confusion
-// Eff_Stone
-// Eff_Bleeding
-
-// Splash radius:
-// n = 1 -> 3x3 cell
-// n = 2 -> 5x5 cell
-// ...
-
-// Those which can be used with the arrow are only bCritical, bAtkEle, bHit, bAddEle, bAddRace, bAddSize and bAddEff. The other bonuses are ignored.
-// For more information, have a look here: http://code.google.com/p/eathena/source/browse/trunk/doc/item_bonus.txt
-
-bAtkRange 1000 // A range bonus of n (bAtkRange,n;).
-//bAtkEle 1001 // Gives the player's attacks a n element (bAtkEle,n;).
-//bDefEle 1002 // Gives the player's defense a n element (bDefEle,n;).
-//bCastrate 1003 // Adjusts casting time of skill n by x% (bCastrate,n,x;).
-bMaxHPrate 1004 // A max HP bonus of n (bMaxHPrate,n;).
-//bMaxSPrate 1005 // A max SP bonus of n (bMaxSPrate,n;).
-//bUseSPrate 1006 // Increases the consumption of SP by n% (bUseSPrate,n;).
-//bAddEle 1007 // +x% physical damage against a n element (bAddEle,n,x;).
-//bAddRace 1008 // +x% physical damage against a n race (bAddRace,n,x;).
-//bAddSize 1009 // +x% physical damage against a n size (bAddSize,n,x;).
-//bSubEle 1010 // +x% damage reduction against a n element (bSubEle,n,x;).
-//bSubRace 1011 // +x% damage reduction against race n (bSubRace,n,x;).
-//bAddEff 1012 // Adds a 1/100x% chance to cause effect e to the target when attacking (bAddEff,e,x;).
-//bResEff 1013 // Adds a 1/100x% tolerance to an effect (bResEff,e,x;).
-//bBaseAtk 1014 // A n bonus to the basic attack power (bBaseAtk,n;).
-bAspdRate 1015 // +n% attack speed (bAspdRate,n;).
-bHPrecovRate 1016 // Natural HP recovery ratio increased of n% (bHPrecovRate,n;).
-//bSPrecovRate 1017 // Natural SP recovery ratio increased of n% (bSPrecovRate,n;).
-//bSpeedRate 1018 // Moving speed increased of n% and only the highest among all is applied (bSpeedRate,n;).
-bCriticalDef 1019 // Decreases the chance of being hit by critical hits of n% (bCriticalDef,n;).
-//bNearAtkDef 1020 // Adds n% damage reduction against melee physical attacks (bNearAtkDef,n;).
-//bLongAtkDef 1021 // Adds n% damage reduction against ranged physical attacks (bLongAtkDef,n;).
-//bDoubleRate 1022 // Adds a n% probability of doing a double attack (bDoubleRate,n;).
-bDoubleAddRate 1023 // Adds another +n% probability of doing a double attack (bDoubleAddRate,n;).
-//bMatk 1024 // Adds a magical attack bonus of n (bMatk,n;).
-//bMatkRate 1025 // Adds a magical attack bonus percentage n% (bMatkRate,n;).
-//bIgnoreDefEle 1026 // Disregards defense against enemies of a n element (bIgnoreDefEle,n;).
-//bIgnoreDefRace 1027 // Disregards defense against enemies of a n race (bIgnoreDefRace,n;).
-//bAtkRate 1028 // Adds an attack bonus of n% (bAtkRate,n;).
-bSpeedAddRate 1029 // Adds a n% of walking speed (bSpeedAddRate,n;).
-//bAspdAddRate 1030 // Adds a n% of attack speed (bAspdAddRate,n;).
-//bMagicAtkDef 1031 // Adds a n% damage reduction against magical attacks (bMagicAtkDef,n;).
-//bMiscAtkDef 1032 // Adds a n% damage reduction against miscellaneous attacks (traps, falcon, ...) (bMiscAtkDef,n;).
-//bIgnoreMdefEle 1033 // Disregards magical defense against enemies of a n element (bIgnoreMdefEle,n;).
-//bIgnoreMdefRace 1034 // Disregards magical defense against enemies of a n race (bIgnoreMdefRace,n;).
-//bMagicAddEle 1035 // Adds x% of magical damage against a n element (bMagicAddEle,n,x;).
-//bMagicAddRace 1036 // Adds x% of magical damage against a n race (bMagicAddRace,n,x;).
-//bMagicSubRace 1037 // Removes a x% of magical damage against a n race (bMagicSubRace,n,x;).
-//bPerfectHitRate 1038 // On-target impact attack probability n% and only the highest among all is applied (bPerfectHitRate,n;).
-//bPerfectHitAddRate 1039 // A n% bonus of an on-target impact (bPerfectHitAddRate,n;).
-//bCriticalRate 1040 // Add a n% to the critical hits percentage (bCriticalRate,n;).
-//bGetZenyNum 1041 // When killing a monster, there is a x% chance of gaining about n zeny (bGetZenyNum,n;).
-//bAddGetZenyNum 1042 // Same as bGetZenyNum, but the rates and zeny to gain stack (bAddGetZenyNum,n,x;).
-//bAddDamageClass 1043 // +x% of extra physical damage against monsters of class n, against players n is their job id (bAddDamageClass,n,x;).
-//bAddMagicDamageClass 1044 // +x% of extra magical damage against monsters of class n, against players n is their job id (bAddDamageClass,n,x;).
-//bAddDefClass 1045 // +x% physical damage reduction against monsters of class n, against players n is their job id (bAddDefClass,n,x;)
-//bAddMdefClass 1046 // +x% magical damage reduction against monsters of class n, against players n is their job id (bAddDefClass,n,x;)
-//bAddMonsterDropItem 1047 // Adds a x/100% chance for a n item to be dropped, when killing any monster (bAddMonsterDropItem,n,x;)
-//bDefRatioAtkEle 1048 // Does more damage depending on the monster's defense against a n element (bDefRatioAtkEle,n;).
-//bDefRatioAtkRace 1049 // Does more damage depending on the monster's defense against a n race (bDefRatioAtkRace,n;).
-//bAddSpeed 1050 // Adds a n speed to the player (bAddSpeed,n;).
-//bHitRate 1051 // Adds a n% rate to hit (bHitRate,n;).
-//bFleeRate 1052 // Adds a n% to flee a monster's attack (bFleeRate,n;).
-//bFlee2Rate 1053 // Adds a n% to dodge a monster's attack (bFleeRate,n;).
-bDefRate 1054 // Adds a n% of defense to the equipment (bDefRate,n;).
-bDef2Rate 1055 // Adds a n% of defense based on the vitality to the equipment (bDef2Rate,n;).
-//bMdefRate 1056 // Adds a n% of magical defense to the equipment (bMdefRate,n;).
-//bMdef2Rate 1057 // Adds a n% of magical defense based on the vitality to the equipment (bMdef2Rate,n;).
-//bSplashRange 1058 // Adds n to the splash attack radius and only the highest among all is applied (bSplashRange,n;).
-//bSplashAddRange 1059 // Adds n to the splash attack radius (bSplashRange,n;).
-//bAutoSpell 1060 // Auto Spell casting on attack of spell n at level x with a y/10% chance (bAutoSpell,n,x,y;).
-bHPDrainRate 1061 // Adds a n/10% chance to receive x% of dealed damage as HP from a monster of race r with normal attack (bHPDrainRateRace,r,n,x;).
-//bSPDrainRate 1062 // Adds a n/10% chance to receive x% of dealed damage as SP from a monster of race r with normal attack (bSPDrainRateRace,r,n,x;).
-//bShortWeaponDamageReturn 1063 // Reflects n% of received melee damage back to the enemy that caused it (bShortWeaponDamageReturn,n;).
-//bLongWeaponDamageReturn 1064 // Reflects n% of received ranged damage back to the enemy that caused it (bShortWeaponDamageReturn,n;).
-//bWeaponComaEle 1065 // Adds a n/100% chance to cause coma when attacking a monster of a x element with a normal attack (bWeaponComaEle,x,n;).
-//bWeaponComaRace 1066 // Adds a n/100% chance to cause coma when attacking a monster of a x race with a normal attack (bWeaponComaEle,x,n;).
-//bAddEff2 1067 // Adds a n/100% chance to cause status change x on self when attacking (bAddEff2,x,n;).
-//bMagicDamageReturn 1068 // Adds a n% chance to reflect targetted magic spells back to the enemy that caused it (bMagicDamageReturn,n;).
-//bRandomAttackIncrease 1069 // Adds a n% chance to inflict x% additional damage to the enemy with normal attack (bRandomAttackIncrease,x,n;).
-//bAllStats 1070 // Adds a n number in Strengh, Agility, Vitality, Intelligence, Dexterity and Luck (bAllStats,n;).
-//bAgiVit 1071 // Adds a n number in Agility and Vitality (bAgiVit,n;).
-//bAgiDexStr 1072 // Adds a n number in Agility, Dexterity and Strengh (bAgiDexStr,n;).
-//bPerfectHide 1073 // A hidden character is no longer detected by monsters with 'detector' mode (bPerfectHide,1;).
-
-equip_head 1
-equip_shield 2
-equip_hand2 3
-equip_hand1 4
-equip_gloves 5
-equip_shoes 6
-equip_misc1 7
-equip_misc2 8
-equip_torso 9
-equip_legs 10
-equip_arrow 11
-
-// Appearance Slots
-// Using this for anything but hair is probably a mistake.
-LOOK_BASE 0
-LOOK_HAIR_STYLE 1
-LOOK_WEAPON 2
-LOOK_LEGS 3
-LOOK_HELMET 4
-LOOK_CHEST 5
-LOOK_HAIR_COLOR 6
-LOOK_SHIELD 8
-LOOK_SHOES 9
-LOOK_GLOVES 10
-LOOK_CAPE 11
-LOOK_MISC1 12
-LOOK_MISC2 13
-
-// Hairstyles
-HS_Bald 0
-HS_BaldTwo 1
-HS_FlatPonytail 2
-HS_BowlCut 3
-HS_CombedBack 4
-HS_Emo 5
-HS_Mohawk 6
-HS_Pompadour 7
-HS_CenterParting 8
-HS_LongAndSlick 9
-HS_ShortAndCurly 10
-HS_Pigtails 11
-HS_LongAndCurly 12
-HS_Parted 13
-HS_PerkyPonytail 14
-HS_Wave 15
-HS_Mane 16
-HS_Bun 17
-HS_ShoulderLengthFlick 18
-HS_Fizzy 19
-HS_LongAndClipped 20
-
-// Hair Colors
-HC_LIGHT_BROWN 0
-HC_GREEN 1
-HC_RED 2
-HC_PURPLE 3
-HC_GRAY 4
-HC_YELLOW 5
-HC_BLUE 6
-HC_BROWN 7
-HC_LIGHT_BLUE 8
-HC_DARK_PURPLE 9
-HC_BLACK 10
-HC_PINK 11
-HC_BROWN_TWO 12
-HC_WHITE 127
-
-// Colors for dyed items.
-// See npc/functions/process_equip.txt.
-cNone 11
-cWhite 10
-cRed 0
-cGreen 1
-cDarkBlue 2
-cYellow 3
-cLightBlue 4
-cPink 5
-cBlack 6
-cOrange 7
-cPurple 8
-cDarkGreen 9
-
-sc_poison 132
-sc_slowpoison 14
-sc_raiseattackspeed0 37
-sc_raiseattackstrength 185
-SC_SHEARED 194
-SC_HIDE 194
-SC_HALT_REGENERATE 195
-SC_FLYING_BACKPACK 196
-SC_MBARRIER 197
-SC_HASTE 198
-SC_PHYS_SHIELD 199
-
-// Emotions
-EMOTE_DISGUST 1
-EMOTE_SURPRISE 2
-EMOTE_HAPPY 3
-EMOTE_SAD 4
-EMOTE_EVIL 5
-EMOTE_WINK 6
-EMOTE_ANGEL 7
-EMOTE_BLUSH 8
-EMOTE_TONGUE 9
-EMOTE_GRIN 10
-EMOTE_UPSET 11
-EMOTE_PERTURBED 12
-EMOTE_SPEECH 13
-EMOTE_BLAH 14
-// ManaPlus Emotions
-EMOTE_MEOW 101
-EMOTE_LAUGH 102
-EMOTE_CHEERFUL 103
-EMOTE_LOVE 104
-EMOTE_MONEY 105
-EMOTE_SLEEP 106
-EMOTE_REST 107
-EMOTE_BOTHERED 108
-EMOTE_AFRAID 109
-EMOTE_DEAD 110
-EMOTE_SUSPICIOUS 111
-EMOTE_MELANCHOLY 112
-EMOTE_FACEPALM 113
-EMOTE_ANGRY 114
-EMOTE_HEADACHE 115
-EMOTE_BORED 116
-EMOTE_SWEAR 117
-EMOTE_HEART 118
-EMOTE_EMPTY 119
-EMOTE_HALLOWEEN 120
-EMOTE_VICIOUS 121
-EMOTE_JOYFUL 122
-EMOTE_CLEVER 123
-EMOTE_SHY 124
-EMOTE_ALIEN 125
-EMOTE_TROLL 126
-EMOTE_PAIN 127
-EMOTE_TEARS 128
-
-// symbols used for registercmd (ASCII)
-MAGIC_SYMBOL 35 //#
-ATCMD_SYMBOL 64 //@
-DEBUG_SYMBOL 37 //%
-
-sfx_skillup 1
-sfx_magic_generic 2
-sfx_magic_life 3
-sfx_magic_war 4
-sfx_magic_transmute 5
-sfx_magic_nature 6
-sfx_magic_astral 7
-sfx_magic_dark 8
-
-// Special effects, interactive objects and emotion effects from client-data/effects.xml.
-FX_NONE -1
-FX_LEVELUP 0
-FX_SKILLUP 1
-FX_MAGIC_GENERIC 2
-FX_MAGIC_WHITE 3
-FX_MAGIC_BLACK 4
-FX_MAGIC_RED 5
-FX_MAGIC_GREEN 6
-FX_MAGIC_BLUE 7
-FX_MAGIC_DARKRED 8
-FX_MAGIC_DEFAULT 10
-FX_MAGIC_SHIELD 11
-FX_MAGIC_HIT 13
-FX_MAGIC_HIT_EVIL 14
-FX_FIRE_BURST 15
-FX_FIRE_EXPLOSION 16
-FX_LIGHTNING1 17
-FX_LIGHTNING2 18
-FX_LIGHTNING3 19
-FX_MAGIC_TELEPORT 20
-FX_PENTAGRAM_BUILDUP 21
-FX_PENTAGRAM_BURST 22
-FX_MAGIC_TELEPORT2 24
-FX_RAIN 25
-FX_HIT 26
-FX_ARROW_HAIL 27
-FX_CRITICAL 28
-FX_LARGE_EXPLOSION 30
-FX_MEDIUM_EXPLOSION 31
-FX_MEDIUM_SMOKE 32
-FX_MEDIUM_BLINDINGLIGHT 33
-FX_CHANNELLING_RAISE 34
-FX_CHANNELLING_CAST 35
-FX_ENCHANTED_DOOR_BROKEN 36
-FX_DARK_TELEPORT 37
-FX_EVIL_SUMMON 38
-FX_GROUND_SPAWN 39
-FX_BLUE_MAGIC_CAST 40
-FX_MAGIC_BLUE_TELEPORT 41
-FX_MAGIC_DARK_EXPLOSION 42
-FX_PUMPKIN_EXPLOSION 43
-FX_GETITEM 44
-FX_HUG 49
-FX_MAGIC_SHIELD_ENDS 111
-FX_ELECTRICITY_RED 114
-FX_ELECTRICITY_BLUE 115
-FX_GATE_OPENING 300
-FX_CASKET_LID 301
-FX_CASKET_MONSTER 302
-
-FX_MAGIC_DISCHARGE 500 // 15
-FX_MAGIC_WAND_CAST 501 // 2
-//FX_MAGIC_WAND_ATK 502 // 5
-FX_MAGIC_AGGRAVATE_CAST 503 // 6
-FX_MAGIC_AGGRAVATE_HIT 504 // 10
-FX_MAGIC_DETECT_CAST 505 // 2
-FX_MAGIC_DETECT_HIT 506 // 10
-FX_MAGIC_EXP_CAST 507 // 10
-FX_MAGIC_DART_CAST 508 // 10
-//FX_MAGIC_DART_ATK 509 // 4
-FX_MAGIC_GROW_CAST 510 // 6, 21
-FX_MAGIC_GROW_SPAWN 511 // 22
-FX_MAGIC_HEAL_CAST 512 // 3
-FX_MAGIC_HEAL_HIT 513 // 3
-FX_MAGIC_BLADE_CAST 514 // 4
-//FX_MAGIC_BLADE_HIT 515 // 4
-FX_MAGIC_SULPHUR_CAST 516 // 5
-FX_MAGIC_MAGGOT_CAST 517 // 7, 21
-FX_MAGIC_MAGGOT_SPAWN 518 // 22
-FX_MAGIC_WOOD_CAST 519 // 5
-FX_MAGIC_AHAIL_CAST 520 // 4
-FX_MAGIC_BARRIER_CAST 521 // 7
-FX_MAGIC_BARRIER_HIT 522 // 10
-FX_MAGIC_BARRIER_END 523 // 10
-FX_MAGIC_WHO_CAST 524 // 2
-FX_MAGIC_STONE_CAST 525 // 2
-FX_MAGIC_FLYING_CAST 526 // 6
-FX_MAGIC_FLYING_HIT 527 // 2
-FX_MAGIC_FLYING_END 528 // 2
-FX_MAGIC_JOY_CAST 529 // 6
-FX_MAGIC_HIDE_CAST 530 // 7
-FX_MAGIC_HIDE_HIT 531 // 10
-FX_MAGIC_HIDE_END 532 // 2
-FX_MAGIC_LAY_CAST 533 // 3
-FX_MAGIC_LAY_HIT 534 // 3
-FX_MAGIC_BOLT_CAST 535 // 4
-FX_MAGIC_KNUCKLE_CAST 536 // 4
-FX_MAGIC_ARROW_CAST 537 // 5
-FX_MAGIC_IRONP_CAST 538 // 5
-FX_MAGIC_SHIRT_CAST 539 // 5
-FX_MAGIC_SHIELD_CAST 540 // 6
-FX_MAGIC_RAIN_CAST 541 // 6
-FX_MAGIC_SHEAR_CAST 542 // 6
-FX_MAGIC_FLUFFY_CAST 543 // 7, 21
-FX_MAGIC_FLUFFY_SPAWN 544 // 22
-FX_MAGIC_MOUBOO_CAST 545 // 7, 21
-FX_MAGIC_MOUBOO_SPAWN 546 // 22
-FX_MAGIC_PINKY_CAST 547 // 7, 21
-FX_MAGIC_PINKY_SPAWN 548 // 22
-FX_MAGIC_SNAKE_CAST 549 // 8, 21
-FX_MAGIC_SNAKE_SPAWN 550 // 22
-FX_MAGIC_SPIKY_CAST 551 // 7, 21
-FX_MAGIC_SPIKY_SPAWN 552 // 22
-FX_MAGIC_WICKED_CAST 553 // 8, 21
-FX_MAGIC_WICKED_SPAWN 554 // 22
-FX_MAGIC_TDART_CAST 555 // 8
-
-OVERRIDE_BLADE 1700 // 30
-OVERRIDE_TDART 1701 // 31
-OVERRIDE_WAND_WAND 1703 // 33
-OVERRIDE_DART 1704 // 34
-OVERRIDE_WAND_STAFF 1705 // 35
-OVERRIDE_KNUCKLES 1706 // 34
-OVERRIDE_SHEAR 1707 // 30
-
-// TODO: ATTACK_ICON_...
-
-FX_EMOTE_DISGUST 10000
-FX_EMOTE_SURPRISE 10001
-FX_EMOTE_HAPPY 10002
-FX_EMOTE_SAD 10003
-FX_EMOTE_EVIL 10004
-FX_EMOTE_WINK 10005
-FX_EMOTE_ANGEL 10006
-FX_EMOTE_BLUSH 10007
-FX_EMOTE_TONGUE 10008
-FX_EMOTE_GRIN 10009
-FX_EMOTE_UPSET 10010
-FX_EMOTE_PERTURBED 10011
-FX_EMOTE_SPEECH 10012
-FX_EMOTE_BLAH 10013
-FX_EMOTE_SWEAR 10014
-FX_EMOTE_MEOW 10015
-FX_EMOTE_LAUGH 10016
-FX_EMOTE_CHEERFUL 10017
-FX_EMOTE_LOVE 10018
-FX_EMOTE_MONEY 10019
-FX_EMOTE_SLEEP 10020
-FX_EMOTE_REST 10021
-FX_EMOTE_BOTHERED 10022
-FX_EMOTE_AFRAID 10023
-FX_EMOTE_DEAD 10024
-FX_EMOTE_SUSPICIOUS 10025
-FX_EMOTE_MELANCHOLY 10026
-FX_EMOTE_FACEPALM 10027
-FX_EMOTE_ANGRY 10028
-FX_EMOTE_HEADACHE 10029
-FX_EMOTE_BORED 10030
-FX_EMOTE_HEART 10031
-FX_EMOTE_EMPTY 10032
-FX_EMOTE_HALLOWEEN 10033
-FX_EMOTE_VICIOUS 10034
-FX_EMOTE_JOYFUL 10035
-FX_EMOTE_CLEVER 10036
-FX_EMOTE_SHY 10037
-FX_EMOTE_ALIEN 10038
-FX_EMOTE_CURIOUS 10039
-FX_EMOTE_PAIN 10040
-FX_EMOTE_TEARS 10041
-
-// Basic Skills
-SKILL_EMOTE 1
-SKILL_TRADE 2
-SKILL_PARTY 3
-
-// Focus Skills
-SKILL_POOL 339
-SKILL_MALLARDS_EYE 45
-SKILL_BRAWLING 350
-SKILL_LUCKY_COUNTER 351
-SKILL_SPEED 352
-SKILL_RESIST_POISON 353
-SKILL_ASTRAL_SOUL 354
-SKILL_RAGING 355
-
-// GM groups
-G_PLAYER 0
-G_BOT 1
-G_TESTER 20
-G_DEV 40
-G_EVENT 50
-G_GM 60
-G_ADMIN 80
-G_SYSOP 99
-
-// Server Message Types (smsg builtin)
-SMSG_DEBUG 0
-SMSG_GM 1
-SMSG_WARNING 2
-SMSG_SUCCESS 3
-SMSG_FAILURE 4
-SMSG_ERROR 5
-SMSG_LEGAL 6
-SMSG_MOTD 7
-SMSG_AUTOMATIC 8
-SMSG_EVENT 9
diff --git a/world/map/db/item_db_chest.txt b/world/map/db/item_db_chest.txt
deleted file mode 100644
index 62669eac..00000000
--- a/world/map/db/item_db_chest.txt
+++ /dev/null
@@ -1,246 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-523, LeatherShirt, 5, 2000, 1000, 20, 0, 4, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-546, DesertShirt, 5, 2000, 1000, 20, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
-564, Turtleneck, 5, 2000, 1000, 30, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
-624, VNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -24, 0, 2, 512, 0, 0, 0, {}, {}
-625, ChainmailShirt, 5, 15000, 1500, 800, 0, 20, 0, -120, 0, 2, 512, 0, 0, 0, {}, {}
-626, LightPlatemail, 5, 50000, 2500, 1200, 0, 25, 0, -150, 0, 2, 512, 0, 0, 0, {}, {}
-645, GoldenPlatemail, 5, 9999000, 3000, 4500, 0, 25, 0, -100, 0, 2, 512, 0, 0, 0, {}, {}
-649, WhiteEvokersRobeBlue, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1; bonus bCriticalDef, 10;}
-650, BlackEvokersRobeBlue, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1; bonus bCriticalDef, 10;}
-651, WhiteWizardRobe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-652, BlackWizardRobe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-653, ApprenticeRobe, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1; bonus bCriticalDef, 10;}
-658, WarlordPlate, 5, 100000, 3000, 2600, 0, 27, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
-659, GoldenWarlordPlate, 5, 500000, 4000, 7600, 0, 27, 0, -110, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-688, TankTop, 5, 800, 400, 10, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-689, ShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-720, SilkRobe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-726, GMRobe, 5, 8000, 4000, 40, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {callfunc "RestrictedItem";}
-755, AssassinShirt, 5, 10000, 3000, 15, 0, 20, 0, -5, 0, 2, 512, 0, 90, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 15; bonus bSpeedAddRate, 10; bonus bFlee, 20; bonus bHit, 20; bonus bMaxHP, 200;}
-767, TerraniteChestArmor, 5, 100000, 3000, 800, 0, 20, 0, -70, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 1;bonus bMdef, 10;}
-782, ForestArmor, 5, 3000, 1500, 40, 0, 10, 0, -20, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 3;}
-783, PlatynaRedDress, 5, 100000, 50000, 35, 0, 15, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-791, YetiSkinShirt, 5, 20000, 10000, 20, 0, 12, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-793, BromenalChest, 5, 100000, 3000, 2000, 0, 25, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
-798, SorcererRed, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-870, FineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-880, LazuriteRobe, 5, 92000, 52000, 30, 0, 7, 0, 60, 0, 2, 512, 0, 90, 0, {}, {set @bStat, Int;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, Vit;set @minbStatVal, 40;callfunc "RequireStat"; bonus bSpeedAddRate, -15; bonus bDef2Rate, -40; bonus bMdef, 60; bonus bVit, -1; bonus bInt, 7; bonus bLuk, -1; bonus bDex, -1; bonus bStr, -1;}
-1178, Contributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1183, AmberChristmasSweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-1184, FunkyChristmasSweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-1185, PinkChristmasSweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-1186, DarkChristmasSweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-1187, BlueChristmasSweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-1202, CottonShirt, 5, 300, 5, 13, 0, 2, 0, -2, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2050, RedCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2051, GreenCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2052, DarkBlueCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2053, YellowCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2054, LightBlueCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2055, PinkCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2056, BlackCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2057, OrangeCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2058, PurpleCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2059, DarkGreenCottonShirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2060, RedVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2061, GreenVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2062, DarkBlueVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2063, YellowVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2064, LightBlueVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2065, PinkVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2066, BlackVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2067, OrangeVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2068, PurpleVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2069, DarkGreenVNeckSweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2070, RedTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2071, GreenTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2072, DarkBlueTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2073, YellowTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2074, LightBlueTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2075, PinkTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2076, BlackTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2077, OrangeTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2078, PurpleTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2079, DarkGreenTurtleneck, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2080, RedSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2081, GreenSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2082, DarkBlueSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2083, YellowSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2084, LightBlueSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2085, PinkSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2086, BlackSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2087, OrangeSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2088, PurpleSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2089, DarkGreenSilkRobe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2090, RedTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2091, GreenTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2092, DarkBlueTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2093, YellowTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2094, LightBlueTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2095, PinkTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2096, BlackTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2097, OrangeTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2098, PurpleTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2099, DarkGreenTankTop, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2120, RedShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2121, GreenShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2122, DarkBlueShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2123, YellowShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2124, LightBlueShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2125, PinkShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2126, BlackShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2127, OrangeShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2128, PurpleShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2129, DarkGreenShortTankTop, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2220, RedSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2221, GreenSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2222, DarkBlueSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2223, YellowSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2224, LightBlueSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2225, PinkSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2226, BlackSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2227, OrangeSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2228, PurpleSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2229, DarkGreenSorcererRed, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2240, RedFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2241, GreenFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2242, DarkBlueFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2243, YellowFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2244, LightBlueFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2245, PinkFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2246, BlackFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2247, OrangeFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2248, PurpleFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2249, DarkGreenFineDress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5000, RedSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5001, GreenSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5002, DarkBlueSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5003, YellowSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5004, LightBlueSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5005, PinkSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5006, BlackSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5007, OrangeSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5008, PurpleSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5009, DarkGreenSorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5010, SorcererGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5011, RedSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5012, GreenSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5013, DarkBlueSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5014, YellowSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5015, LightBlueSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5016, PinkSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5017, BlackSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5018, OrangeSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5019, PurpleSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5020, DarkGreenSorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5021, SorcererDBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5022, RedSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5023, GreenSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5024, DarkBlueSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5025, YellowSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5026, LightBlueSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5027, PinkSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5028, BlackSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5029, OrangeSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5030, PurpleSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5031, DarkGreenSorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5032, SorcererYellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5033, RedSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5034, GreenSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5035, DarkBlueSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5036, YellowSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5037, LightBlueSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5038, PinkSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5039, BlackSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5040, OrangeSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5041, PurpleSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5042, DarkGreenSorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5043, SorcererLBlue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5044, RedSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5045, GreenSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5046, DarkBlueSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5047, YellowSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5048, LightBlueSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5049, PinkSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5050, BlackSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5051, OrangeSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5052, PurpleSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5053, DarkGreenSorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5054, SorcererPink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5055, RedSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5056, GreenSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5057, DarkBlueSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5058, YellowSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5059, LightBlueSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5060, PinkSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5061, BlackSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5062, OrangeSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5063, PurpleSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5064, DarkGreenSorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5065, SorcererBlack, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5066, RedSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5067, GreenSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5068, DarkBlueSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5069, YellowSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5070, LightBlueSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5071, PinkSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5072, BlackSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5073, OrangeSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5074, PurpleSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5075, DarkGreenSorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5076, SorcererOrange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5077, RedSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5078, GreenSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5079, DarkBlueSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5080, YellowSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5081, LightBlueSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5082, PinkSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5083, BlackSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5084, OrangeSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5085, PurpleSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5086, DarkGreenSorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5087, SorcererPurple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5088, RedSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5089, GreenSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5090, DarkBlueSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5091, YellowSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5092, LightBlueSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5093, PinkSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5094, BlackSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5095, OrangeSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5096, PurpleSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5097, DarkGreenSorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5098, SorcererDGreen, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5099, RedSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5100, GreenSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5101, DarkBlueSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5102, YellowSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5103, LightBlueSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5104, PinkSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5105, BlackSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5106, OrangeSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5107, PurpleSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5108, DarkGreenSorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5109, SorcererWhite, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5131, RedContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5132, GreenContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5133, DarkBlueContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5134, YellowContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5135, LightBlueContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5136, PinkContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5137, BlackContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5138, OrangeContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5139, PurpleContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5140, DarkGreenContributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-5254, SaviorArmor, 5, 0, 0, 2000, 0, 24, 0, -90, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 1; bonus bMaxHP, 100;}
diff --git a/world/map/db/item_db_foot.txt b/world/map/db/item_db_foot.txt
deleted file mode 100644
index b65b6335..00000000
--- a/world/map/db/item_db_foot.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-528, Boots, 5, 2000, 500, 80, 0, 2, 0, -2, 0, 2, 64, 0, 0, 0, {}, {}
-655, FurBoots, 5, 5000, 600, 50, 0, 3, 0, -3, 0, 2, 64, 0, 0, 0, {}, {}
-734, BlackBoots, 5, 20000, 3000, 25, 0, 3, 0, -10, 0, 2, 64, 0, 0, 0, {}, {}
-735, CottonBoots, 5, 2000, 500, 10, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-757, AssassinBoots, 5, 7000, 2000, 10, 0, 4, 0, -3, 0, 2, 64, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 4; bonus bSpeedAddRate, 5; bonus bFlee, 5;}
-792, BromenalBoots, 5, 8000, 500, 30, 0, 1, 0, -2, 0, 2, 64, 0, 0, 0, {}, {}
-876, WarlordBoots, 5, 19000, 2000, 550, 0, 5, 0, -22, 0, 2, 64, 0, 0, 0, {}, {}
-2150, RedCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2151, GreenCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2152, DarkBlueCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2153, YellowCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2154, LightBlueCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2155, PinkCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2156, BlackCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2157, OrangeCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2158, PurpleCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2159, DarkGreenCottonBoots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-1188, RedStockings, 5, 7000, 2000, 10, 0, 1, 0, 2, 0, 2, 64, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_generic.txt b/world/map/db/item_db_generic.txt
deleted file mode 100644
index 7e4e1fed..00000000
--- a/world/map/db/item_db_generic.txt
+++ /dev/null
@@ -1,253 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-503, CasinoCoins, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-504, DecorCandy, 3, 25, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-505, MaggotSlime, 3, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-507, ScorpionStinger, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-515, PurplePresentBox, 3, 50, 25, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-516, BluePresentBox, 3, 60, 30, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-517, RedScorpionStinger, 3, 170, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-518, BugLeg, 3, 100, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-526, CoinBag, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-537, TreasureKey, 3, 100, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-538, GreenPresentBox, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-540, EmptyBottle, 3, 20, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-542, BottleOfSand, 3, 70, 35, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-551, AquaHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-552, MagentaHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-553, YellowHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-554, GreenHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-555, TealHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-556, PurpleHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-557, RedHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-558, BlueHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-559, OrangeHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-560, GrayHint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-569, RawLog, 3, 20, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-589, Toothbrush, 3, 20, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-611, WhiteFur, 3, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-612, CaveSnakeLamp, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-613, HardSpike, 3, 40, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-614, PinkAntenna, 3, 10, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-631, DarkCrystal, 3, 1000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-635, SantaCookie, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-640, IronOre, 3, 250, 100, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-641, SnakeSkin, 3, 250, 100, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-660, CottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-661, RedRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-662, WhiteRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-663, DarkRedRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-664, PinkRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-665, YellowRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-666, BlackRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-667, OrangeRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-668, BlueRose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-669, YellowTulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-670, PurpleTulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-671, RedTulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-672, WhiteTulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-673, PinkTulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-674, OrangeTulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-680, MauveHerb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-681, CobaltHerb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-682, GambogeHerb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-683, AlizarinHerb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-690, RedDye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-691, GreenDye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-692, DarkBlueDye, 3, 40000, 15000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-693, YellowDye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-694, LightBlueDye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-695, PinkDye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-696, BlackDye, 3, 30000, 25000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-697, OrangeDye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-698, PurpleDye, 3, 70000, 50000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-699, DarkGreenDye, 3, 2000, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-700, Pearl, 3, 5000, 3000, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-701, PileOfAsh, 3, 3000, 100, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-703, SulphurPowder, 3, 1000, 25, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-704, IronPowder, 3, 800, 80, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-706, GoldenScorpionStinger, 3, 2000, 500, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-707, MonsterOilPotion, 3, 10000, 2000, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-708, LeatherPatch, 3, 300, 150, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-709, BlackScorpionStinger, 3, 250, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-710, SnakeTongue, 3, 60, 30, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-711, MountainSnakeTongue, 3, 80, 40, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-712, GrassSnakeTongue, 3, 160, 80, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-713, CaveSnakeTongue, 3, 120, 60, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-718, SilkCocoon, 3, 200, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-727, Iten, 3, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-728, MoubooFigurine, 3, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-729, WarpedLog, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-730, Lifestone, 3, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-732, DruidTreeBranch, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-740, Root, 3, 500, 200, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-746, MopoxCurePotion, 3, 0, 0, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-753, BatWing, 3, 500, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-754, BatTeeth, 3, 600, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-763, TerraniteOre, 3, 1000, 500, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-772, WispPowder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-773, SpectrePowder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-774, PoltergeistPowder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-775, Bone, 3, 140, 70, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-776, Skull, 3, 900, 450, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-777, RottenRags, 3, 100, 50, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-778, DiseasedHeart, 3, 180, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-779, UndeadEar, 3, 30, 15, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-780, UndeadEye, 3, 30, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-799, MylarinDust, 3, 10000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-802, EasterBasket, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-803, GrassLiner, 3, 20, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-804, JellyBeans, 3, 20, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-805, ChocolateMouboo, 3, 20, 10, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-806, ReedBundle, 3, 20, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-807, GrassSeed, 3, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-819, DiamondPowder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-820, RubyPowder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-821, EmeraldPowder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-822, SapphirePowder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-823, TopazPowder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-824, AmethystPowder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-833, BrokenFourLeafAmulet, 3, 100, 1, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-834, BrokenDoll, 3, 20, 5, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-835, HyvernStinger, 3, 100, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-836, GrubSlime, 3, 40, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-841, RedDottedWrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-842, YellowDottedWrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-843, BlueDottedWrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-844, PurpleStripedWrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-845, RedGoldenStripedWrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-846, GreenRedStripedWrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-847, PlushMouboo, 3, 50, 25, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-849, OpenPresentBox, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-850, ClosedChristmasBox, 3, 50, 25, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-851, StickReinboo, 3, 50, 25, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-852, LeatherBall, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-853, Doll, 3, 50, 25, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-858, WolvernTooth, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-859, WolvernPelt, 3, 500, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-860, SquirrelPelt, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-861, WhiteBellTuber, 3, 20, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-862, IcedWater, 3, 100, 50, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-863, SilverMirror, 3, 500, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-864, BookPage, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-866, LeatherSuitcase, 3, 4000, 2000, 12000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-869, Antlers, 3, 4000, 2000, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-871, SealedSoul, 3, 12000, 1000, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-872, LockPicks, 3, 5000, 1500, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-873, LazuriteShard, 3, 500, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-874, LazuriteCrystal, 3, 3000, 200, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-875, HeartOfLazurite, 3, 10000, 400, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-891, SilkSheet, 3, 1000, 250, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-892, OrangeSummonFlower, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-893, PurpleSummonFlower, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-894, WhiteSummonFlower, 3, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-895, YellowSummonFlower, 3, 400, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-896, RedSummonFlower, 3, 600, 300, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1191, WhiteWrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1192, YellowWrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1193, BlueWrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1194, PurpleWrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1195, GreenWrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1198, Soul, 3, 100000, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1207, RedChristmasStocking, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1208, RedEasterEgg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1209, GreenEasterEgg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1210, BlueEasterEgg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1211, YellowEasterEgg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1212, PinkEasterEgg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1213, TealEasterEgg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1228, LightCrystal, 3, 1000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1233, FakeFangs, 3, 20000, 10000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1234, RedOrnament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1235, YellowOrnament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1236, GreenOrnament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1237, AquaOrnament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1238, BlueOrnament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1239, MagentaOrnament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1240, SantaSnowGlobe, 3, 7500, 5000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1241, SnowmanSnowGlobe, 3, 7500, 5000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1245, BentNeedle, 3, 700, 1, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1246, DarkEasterEgg, 3, 700, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1249, StrangeCoin, 3, 7000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1254, DarkPetal, 3, 15000, 8000, 250, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1257, FlawedLens, 3, 10000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-2250, RedCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2251, GreenCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2252, DarkBlueCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2253, YellowCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2254, LightBlueCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2255, PinkCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2256, BlackCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2257, OrangeCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2258, PurpleCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2259, DarkGreenCottonCloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3000, JackOLantern, 3, 200, 100, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3002, RealisticBrain, 3, 200, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3003, JarofBlood, 3, 200, 100, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3004, Tongue, 3, 5, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3011, PumpkinSeeds, 3, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4000, AngryScorpionStinger, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4001, Coal, 3, 250, 100, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4002, Diamond, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-4003, Ruby, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4004, Emerald, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4005, Sapphire, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4006, Topaz, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4007, Amethyst, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4015, IronIngot, 3, 500, 250, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4016, BanditHood, 3, 100, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4017, RedPowder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4018, YellowPowder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4019, BluePowder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4021, YellowPresentBox, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-4022, WhitePresentBox, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-4023, AnimalBones, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4024, FrozenYetiTear, 3, 500, 250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4025, YetiClaw, 3, 150, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4026, IceCube, 3, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4029, GrimaceOfDementia, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-4034, BlackPearl, 3, 8000, 4000, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4037, WhiteBlanket, 3, 600, 125, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4038, WhiteSaddleRug, 3, 1000, 250, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4039, RedSaddleRug, 3, 1200, 300, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4040, RawTalisman, 3, 800, 200, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4041, FlightTalisman, 3, 5000, 1200, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5110, Bloodstone, 3, 2000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5111, BrainStem, 3, 180, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5112, CryptKey, 3, 300, 150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5113, Ectoplasm, 3, 80, 20, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-5114, Urn, 3, 40, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5115, VampireBatWing, 3, 700, 20, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5116, WraithHorn, 3, 700, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5117, AstralCube, 3, 10000, 10, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5118, RunestoneA, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5119, RunestoneL, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5120, RunestoneN, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5121, RunestoneT, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5122, RunestoneW, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5123, QuillOfBinding, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5124, BloodInk, 3, 10, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5125, UnderworldKey, 3, 10, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5127, JarofOwnBlood, 3, 200, 100, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1197, SkeletonCharm, 3, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5211, ActivatedSulphur, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5212, FairTradeSoil, 3, 500, 23, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5215, FreeRangeMoss, 3, 830, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5216, JadeEgg, 3, 938, 250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5217, RawAir, 3, 1999, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5218, RedTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5219, YellowTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5220, GoldTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5221, GreenTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5222, AquaTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5223, BlueTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5224, PurpleTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5225, PinkTicket, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5251, WumpusEgg, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5256, PVPCoin, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5265, LoveLetter, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_hand.txt b/world/map/db/item_db_hand.txt
deleted file mode 100644
index 3e98da26..00000000
--- a/world/map/db/item_db_hand.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-531, MinerGloves, 5, 3000, 1000, 30, 0, 2, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-532, LeatherGloves, 5, 6000, 2000, 20, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, {}, {}
-563, WinterGloves, 5, 6000, 3000, 20, 0, 3, 0, -15, 0, 2, 4, 0, 0, 0, {}, {}
-741, CottonGloves, 5, 2000, 500, 10, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-756, AssassinGloves, 5, 7000, 2000, 9, 15, 4, 0, -3, 0, 2, 4, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 4; bonus bCritical, 5; bonus bAspdRate, 5;}
-794, BromenalGloves, 5, 6000, 2000, 40, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, {}, {}
-868, SilkGloves, 5, 5000, 2500, 4, 0, 1, 0, 0, 0, 2, 4, 0, 0, 0, {}, {}
-2160, RedCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2161, GreenCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2162, DarkBlueCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2163, YellowCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2164, LightBlueCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2165, PinkCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2166, BlackCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2167, OrangeCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2168, PurpleCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2169, DarkGreenCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_head.txt b/world/map/db/item_db_head.txt
deleted file mode 100644
index c6ffe993..00000000
--- a/world/map/db/item_db_head.txt
+++ /dev/null
@@ -1,229 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-511, SantaHat, 5, 400, 200, 20, 0, 2, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-524, FancyHat, 5, 1600, 800, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-525, MinersHat, 5, 800, 400, 40, 0, 4, 0, -8, 0, 2, 256, 0, 0, 0, {}, {}
-543, StandardHeadband, 5, 800, 400, 10, 0, 3, 0, -3, 0, 2, 256, 0, 0, 0, {}, {}
-544, SilkHeadband, 5, 5000, 2000, 10, 0, 10, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
-615, PumpkinHelmet, 5, 2000, 1000, 60, 0, 4, 0, -4, 0, 2, 256, 0, 0, 0, {}, {}
-616, AxeHat, 5, 2000, 1000, 50, 0, 4, 0, -4, 0, 2, 256, 0, 0, 0, {}, {}
-617, PirateHat, 5, 2000, 1000, 40, 0, 4, 0, -8, 0, 2, 256, 0, 0, 0, {}, {}
-618, Goggles, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-619, LeatherGoggles, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-620, Circlet, 5, 2000, 1000, 25, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-621, Eyepatch, 5, 1000, 500, 5, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-622, Bandana, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-627, TopHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-628, FunkyHat, 5, 3000, 1500, 20, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-629, MushHat, 5, 2500, 1250, 30, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-630, ShroomHat, 5, 3000, 1500, 30, 0, 13, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-633, ChristmasElfHat, 5, 3000, 1500, 30, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-634, FaceMask, 5, 2500, 1250, 50, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-636, WarlordHelmet, 5, 30000, 3000, 900, 0, 18, 0, -36, 0, 2, 256, 0, 0, 0, {}, {}
-637, KnightsHelmet, 5, 20000, 2000, 600, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
-638, InfantryHelmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
-639, CrusadeHelmet, 5, 25000, 2500, 1300, 0, 18, 0, -36, 0, 2, 256, 0, 0, 0, {}, {}
-643, WhiteCowboyHat, 5, 1800, 900, 30, 0, 6, 0, -12, 0, 2, 256, 0, 0, 0, {}, {}
-644, BlackCowboyHat, 5, 1800, 900, 30, 0, 6, 0, -12, 0, 2, 256, 0, 0, 0, {}, {}
-646, Crown, 5, 5000, 1000, 240, 0, 4, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-647, DevelopersCap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-654, Cap, 5, 4000000, 500, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-656, SerfHat, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-675, GraduationCap, 5, 1000, 250, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-678, NohMask, 5, 7000, 1000, 18, 0, 3, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
-679, DemonMask, 5, 10000, 5000, 23, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-721, HighPriestCrown, 5, 6000000, 5000, 400, 0, 4, 0, 20, 0, 2, 256, 0, 0, 0, {}, {bonus bMaxSP, 20;}
-722, MonsterSkullHelmet, 5, 6000000, 3000, 250, 0, 7, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 20;}
-723, DesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-724, CottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-725, GMCap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "RestrictedItem";}
-751, PinkieHat, 5, 5000, 1000, 5, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
-752, FluffyHat, 5, 7000, 2000, 10, 0, 2, 0, -5, 0, 2, 256, 0, 0, 0, {}, {}
-759, PaladinsHelmet, 5, 0, 0, 0, 0, 19, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-760, OverlordsHelmet, 5, 0, 0, 0, 0, 50, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-761, DesertHelmet, 5, 0, 0, 0, 0, 21, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-764, SailorHat, 5, 0, 0, 0, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-765, CaptainsHat, 5, 0, 0, 0, 0, 15, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-766, TerraniteHelmet, 5, 30000, 3000, 300, 0, 15, 0, -12, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-769, GuyFawkesMask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-770, FairyHat, 5, 2000, 1000, 20, 0, 5, 0, -10, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 3;}
-781, WitchDoctorsMask, 5, 20000, 100, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-795, BromenalHelmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
-800, BowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-801, PinkieHelmet, 5, 20000, 1500, 800, 0, 10, 0, -20, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 1;}
-848, Earmuffs, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-854, ElfNightcap, 5, 1000, 500, 50, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-855, Sunglasses, 5, 1000, 500, 10, 0, 2, 0, 6, 0, 2, 256, 0, 0, 0, {}, {}
-856, KnitCap, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-877, BullHelmet, 5, 90000, 60000, 1300, 0, 19, 0, -52, 0, 2, 256, 0, 90, 0, {}, {set @bStat, Str;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, Vit;set @minbStatVal, 50;callfunc "RequireStat"; set @bStat, Luk;set @minbStatVal, 50;callfunc "RequireStat"; bonus bAtkRange, -10; bonus bDoubleAddRate, 20; bonus bStr, 10; bonus bCritical, 15; bonus bAspdRate, 10; bonus bDef2Rate, -39; bonus bHit, -15;}
-882, RedEggshellHat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-883, BlueEggshellHat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-884, YellowEggshellHat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-885, GreenEggshellHat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-886, OrangeEggshellHat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-887, DarkEggshellHat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-888, MagicGMTopHat, 5, 4200, 1900, 30, 0, 60, 0, 20, 0, 2, 256, 0, 0, 0, {}, {set @minLvl, EVT_KILLTHEGM; callfunc "RestrictedItem"; bonus bMaxHP, 31000; bonus bFlee, -200; bonus bHPrecovRate, -400; bonus bCriticalDef, 250; bonus bMdef, 89;}
-889, MurdererCrown, 5, 75000, 12000, 240, 0, 4, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-890, BeanieCopter, 5, 8000, 2000, 20, 0, 4, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-897, RedRoseHat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-898, WhiteRoseHat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-899, PinkRoseHat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-900, YellowRoseHat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-901, OrangeRoseHat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-902, BlueRoseHat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-905, BucketHat, 5, 1600, 800, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1173, TamOShanter, 5, 5000, 500, 20, 0, 9, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-1174, CashiersShade, 5, 4000, 500, 15, 0, 2, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
-1175, AutumnMask, 5, 5000, 500, 10, 0, 1, 0, 4, 0, 2, 256, 0, 0, 0, {}, {}
-1190, NutcrackerHat, 5, 1000, 500, 20, 0, 5, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-1196, Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-1203, RangerHat, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-1204, AntlerHat, 5, 1000, 500, 15, 0, 4, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-1205, ChristmasTreeHat, 5, 2000, 1000, 20, 0, 2, 0, 4, 0, 2, 256, 0, 0, 0, {}, {}
-1206, SantaBeardHat, 5, 1000, 500, 20, 0, 5, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-1214, BunnyEars, 5, 5000, 2000, 20, 0, 10, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
-1216, MoubooHead, 5, 10, 1, 80, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1217, CatEars, 5, 100, 50, 20, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 3;}
-1218, PaperBag, 5, 1000, 5, 10, 0, 1, 0, -1, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, -1;}
-1219, MoubootaurHead, 5, 10, 1, 80, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {set @minLvl, 1;callfunc "RestrictedItem";}
-1220, BunchOfParsley, 5, 3, 1, 1, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDeaf, 1;}
-1221, SkullMask, 5, 10000, 5000, 150, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-1242, SnowGoggles, 5, 7500, 5000, 10, 0, 5, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-1247, HeartGlasses, 5, 7500, 5000, 20, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-1255, RabbitEars, 5, 7000, 5000, 20, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-1256, EggshellHat, 5, 7000, 5000, 15, 0, 12, 0, 0, 0, 2, 256, 0, 1, 0, {}, {bonus bAgi, -1;}
-1275, ReadingGlasses, 5, 7500, 5000, 12, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bInt, 3;}
-1276, OperaMask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1277, JesterMask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1278, WitchHat, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1279, GoblinMask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2130, RedDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2131, GreenDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2132, DarkBlueDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2133, YellowDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2134, LightBlueDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2135, PinkDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2136, BlackDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2137, OrangeDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2138, PurpleDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2139, DarkGreenDesertHat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2140, RedCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2141, GreenCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2142, DarkBlueCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2143, YellowCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2144, LightBlueCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2145, PinkCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2146, BlackCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2147, OrangeCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2148, PurpleCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2149, DarkGreenCottonHeadband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2190, RedRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2191, GreenRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2192, DarkBlueRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2193, YellowRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2194, LightBlueRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2195, PinkRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2196, BlackRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2197, OrangeRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2198, PurpleRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2199, DarkGreenRabbitEars, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2200, RedWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2201, GreenWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2202, DarkBlueWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2203, YellowWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2204, LightBlueWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2205, PinkWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2206, BlackWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2207, OrangeWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2208, PurpleWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2209, DarkGreenWizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2210, RedBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2211, GreenBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2212, DarkBlueBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2213, YellowBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2214, LightBlueBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2215, PinkBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2216, BlackBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2217, OrangeBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2218, PurpleBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2219, DarkGreenBowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2230, RedBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2231, GreenBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2232, DarkBlueBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2233, YellowBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2234, LightBlueBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2235, PinkBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2236, BlackBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2237, OrangeBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2238, PurpleBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2239, DarkGreenBowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2260, RedBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2261, GreenBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2262, DarkBlueBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2263, YellowBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2264, LightBlueBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2265, PinkBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2266, BlackBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2267, OrangeBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2268, PurpleBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2269, DarkGreenBeret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 2;}
-2270, BlinkingEvil, 5, 10000, 5000, 50, 0, 13, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-2271, BlinkingEvilRed, 5, 10000, 5000, 50, 0, 13, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-2272, BlinkingEvilBlue, 5, 10000, 5000, 50, 0, 13, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-2273, BlinkingEvilPink, 5, 10000, 5000, 50, 0, 13, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-2274, BlinkingEvilYellow, 5, 10000, 5000, 50, 0, 13, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-4020, CandleHelmet, 5, 20000, 2000, 450, 0, 16, 0, -25, 0, 2, 256, 0, 0, 0, {}, {bonus bInt, 1;bonus bAgi, -1;}
-4027, YetiMask, 5, 6000, 3000, 10, 0, 4, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
-4028, WizardHat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-4030, BowlerHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-4031, Monocle, 5, 5000, 2500, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDex, 1; bonus bLuk, 1; bonus bCritical, 10;}
-4032, PanHat, 5, 1000, 500, 400, 0, 13, 0, -20, 0, 2, 256, 0, 0, 0, {}, {}
-4033, ChefHat, 5, 1000, 500, 30, 0, 2, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-4042, RedNose, 5, 4000, 1000, 4, 0, 2, 0, 7, 0, 2, 256, 0, 0, 0, {}, {}
-5128, DarkHelm, 5, 50000, 10000, 800, 0, 19, 0, -80, 0, 2, 256, 0, 0, 0, {}, {bonus bMaxHPrate, 10; bonus bInt, -Int;}
-5129, UnderworldMask, 5, 50000, 10000, 100, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bAtkRange, 3; bonus bInt, -Int; bonus bAgi, 2; bonus bDex, 2;}
-5130, Phylactery, 5, 50000, 10000, 20, 0, 1, 0, 5, 0, 2, 256, 0, 0, 0, {}, {bonus bAspdRate, 50; bonus bDex, -(Dex/2);}
-5200, PointyWitchHat, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5201, Pipe, 5, 5000, 2500, 20, 0, 2, 0, 0, 0, 2, 256, 0, 18, 0, {}, {bonus bDex, 1; bonus bLuk, 1; bonus bCritical, 10;callfunc "DrugItem";}
-5202, PilotHat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-5203, MoonshroomHat, 5, 3000, 1500, 30, 0, 15, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-5204, CarbonGasMask, 5, 2500, 1250, 50, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5205, EskimoHat, 5, 7500, 5000, 10, 0, 5, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-5209, TerraniteHead, 5, 30000, 3000, 500, 0, 16, 0, -30, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5; bonus bAgi, 3; bonus bDex, 1;}
-5226, GroovyHat, 5, 3000, 1500, 20, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-5227, JazzyHat, 5, 3000, 1500, 20, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-5228, ChicSantaHat, 5, 400, 200, 20, 0, 2, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5229, ScentedCandleHelmet, 5, 20000, 1, 450, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bInt, 2; addtimer 1, "ScentedCandle::OnEquip";}
-5230, AnniversaryHat, 5, 100000, 1, 100, 0, 12, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bInt, 2;}
-5231, RedPresentHat, 5, 1000, 1, 60, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5232, GreenPresentHat, 5, 1000, 1, 60, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5233, BluePresentHat, 5, 1000, 1, 60, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5234, YellowPresentHat, 5, 1000, 1, 60, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5238, AFKCap, 5, 1000, 1, 60, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5239, Aureole, 5, 1000, 1, 60, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bFlee, 50;}
-5240, SmileyCap, 5, 1000, 1, 60, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5241, RedShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5242, GreenShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5243, DarkBlueShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5244, YellowShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5245, LightBlueShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5246, PinkShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5247, BlackShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5248, OrangeShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5249, PurpleShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5250, DarkGreenShades, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5255, PVPCap, 5, 500, 100, 60, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5257, GoldenPVPCap, 5, 500, 100, 60, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5258, BlinkingHocus, 5, 10000, 5000, 400, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5259, BlinkingEvilHalloween, 5, 10000, 5000, 50, 0, 13, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-5262, MovieCap, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5264, BlueWolfHelmet, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-5266, CloverHat, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 1;}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5267, AssassinMask, 5, 30000, 3000, 10, 0, 6, 0, -5, 0, 2, 256, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bMdef, 5; bonus bAgi, 9; bonus bDex, 1; bonus bMaxHP, 70; bonus bDoubleAddRate, 15; bonus bCritical, 15; bonus bAspdRate, 15;}
diff --git a/world/map/db/item_db_leg.txt b/world/map/db/item_db_leg.txt
deleted file mode 100644
index 5ff86274..00000000
--- a/world/map/db/item_db_leg.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-586, CottonShorts, 5, 1000, 500, 15, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-610, JeansShorts, 5, 2000, 1000, 25, 0, 4, 0, -8, 0, 2, 1, 0, 0, 0, {}, {}
-632, CottonSkirt, 5, 1000, 500, 10, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-642, JeansChaps, 5, 2000, 1000, 60, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, {}, {}
-648, CottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-731, AssassinPants, 5, 10000, 3000, 20, 0, 5, 0, -5, 0, 2, 1, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 5; bonus bSpeedAddRate, 5; bonus bFlee, 5;}
-768, TerraniteLegs, 5, 10000, 3000, 30, 0, 5, 0, -8, 0, 2, 1, 0, 0, 0, {}, {bonus bAgi, 1;bonus bMdef, 5;}
-771, Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-796, BromenalLegs, 5, 2000, 1000, 150, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, {}, {}
-857, LeatherTrousers, 5, 1000, 500, 25, 0, 5, 0, -4, 0, 2, 1, 0, 0, 0, {}, {bonus bHit, 2;}
-881, RaggedShorts, 5, 60, 1, 7, 0, 1, 0, -2, 0, 2, 1, 0, 1, 0, {}, {}
-1172, SilkPants, 5, 20000, 750, 10, 0, 2, 0, 0, 0, 2, 1, 0, 1, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2100, RedCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2101, GreenCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2102, DarkBlueCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2103, YellowCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2104, LightBlueCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2105, PinkCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2106, BlackCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2107, OrangeCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2108, PurpleCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2109, DarkGreenCottonSkirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2110, RedCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2111, GreenCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2112, DarkBlueCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2113, YellowCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2114, LightBlueCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2115, PinkCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2116, BlackCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2117, OrangeCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2118, PurpleCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2119, DarkGreenCottonShorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2170, RedMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2171, GreenMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2172, DarkBlueMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2173, YellowMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2174, LightBlueMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2175, PinkMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2176, BlackMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2177, OrangeMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2178, PurpleMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2179, DarkGreenMiniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2180, RedCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2181, GreenCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2182, DarkBlueCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2183, YellowCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2184, LightBlueCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2185, PinkCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2186, BlackCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2187, OrangeCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2188, PurpleCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2189, DarkGreenCottonTrousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
diff --git a/world/map/db/item_db_offhand.txt b/world/map/db/item_db_offhand.txt
deleted file mode 100644
index 1752315d..00000000
--- a/world/map/db/item_db_offhand.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-585, ScarabArmlet, 5, 8000, 4000, 200, 0, 0, 0, 5, 0, 2, 32, 0, 1, 0, {}, {}
-601, SteelShield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, {}, {}
-602, WoodenShield, 5, 10000, 2000, 1500, 0, 14, 0, -70, 0, 2, 32, 0, 0, 0, {}, {}
-603, LeatherShield, 5, 2000, 1000, 1300, 0, 7, 0, -35, 0, 2, 32, 0, 0, 0, {}, {}
-797, BromenalShield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_trinket.txt b/world/map/db/item_db_trinket.txt
deleted file mode 100644
index f230466d..00000000
--- a/world/map/db/item_db_trinket.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-702, WeddingRing, 5, 1000, 1, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, {}, {}
-742, FourLeafClover, 5, 10000, 5000, 1, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 1;}
-749, Towel, 5, 800, 250, 50, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {}
-829, CrozeniteFourLeafAmulet, 5, 10000, 1000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 1;}
-830, BromenalFourLeafAmulet, 5, 20000, 2000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 2;}
-831, SilverFourLeafAmulet, 5, 30000, 3000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 3;}
-832, GoldenFourLeafAmulet, 5, 40000, 4000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 4;}
-865, Grimoire, 5, 5000, 2500, 100, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bMaxSP, 30;}
-879, HeartOfIsis, 5, 70000, 35000, 40, 0, 0, 0, 0, 0, 2, 8, 0, 85, 0, {}, {bonus bMaxHPrate, 15; bonus bHPrecovRate, 65;}
-1227, EnchantersAmulet, 5, 0, 0, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, {}, {bonus bHit, 22;}
-1244, DarkTalisman, 5, 0, 0, 0, 0, 0, 0, 100, 0, 2, 8, 0, 0, 0, {}, {bonus bMdef, 30;}
-4008, DiamondRing, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bVit, 1;}
-4009, RubyRing, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bStr, 1;}
-4010, EmeraldRing, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bLuk, 1;}
-4011, SapphireRing, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bInt, 1;}
-4012, TopazRing, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bAgi, 1;}
-4013, AmethystRing, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bDex, 1;}
-4014, SimpleRing, 5, 100000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {}
-677, HeartNecklace, 5, 2500, 0, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {}
-5252, GuardianWings, 5, 0, 0, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, {}, {}
-5253, MageRing, 5, 0, 0, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bInt, 1;}
-5268, AssassinRing, 5, 0, 0, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 1; bonus bCritical, 5; bonus bAspdRate, 5;}
-5269, AssassinAmulet, 5, 0, 0, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 1; bonus bDoubleAddRate, 5; bonus bHit, 25;}
-5270, ManaPearl, 5, 0, 0, 0, 0, 0, 0, 11, 0, 2, 16, 0, 0, 0, {}, {callfunc "ManaPearlItem"; bonus bInt, 1; bonus bMdef, 11; bonus bMaxSP, 55;}
diff --git a/world/map/db/item_db_use.txt b/world/map/db/item_db_use.txt
deleted file mode 100644
index e8d48654..00000000
--- a/world/map/db/item_db_use.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-0, DEFAULT, 0, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-501, CactusDrink, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
-502, CactusPotion, 0, 70, 35, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 25, 0, 1;}, {}
-506, CandyCane, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 5, 0, 1;}, {}
-508, XmasCake, 0, 70, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
-509, ChocolateBar, 0, 60, 20, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 20, 0, 1;}, {}
-510, Candy, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 5, 0, 1;}, {}
-512, GingerBreadMan, 0, 50, 25, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 25, 0, 1;}, {}
-513, Cake, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
-514, XmasCandyCane, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
-519, CherryCake, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 35, 0, 1;}, {}
-520, EasterEgg, 0, 200, 100, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-527, Milk, 0, 300, 150, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 150, 0, 1;}, {}
-533, RoastedMaggot, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 150, 0, 1;}, {}
-534, OrangeCupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-535, RedApple, 0, 25, 6, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-539, Beer, 0, 175, 87, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 5, 1;}, {}
-541, BottleOfWater, 0, 200, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 250, 0, 1;getitem 540, 1;}, {}
-562, ChickenLeg, 0, 250, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 500, 0, 1;}, {}
-565, PinkPetal, 0, 100, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-566, SmallMushroom, 0, 125, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-567, IronPotion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackstrength, 60, 60;}, {}
-568, ConcentrationPotion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 60, 30;}, {}
-657, Orange, 0, 40, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
-676, Steak, 0, 275, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 250, 0, 1;}, {}
-684, TinyHealingPotion, 0, 25, 12, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-685, SmallHealingPotion, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 0, 1;}, {}
-686, MediumHealingPotion, 0, 100, 50, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 400, 0, 1;}, {}
-687, LargeHealingPotion, 0, 200, 100, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
-705, ManaPotion, 0, 2000, 300, 50, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 10, 1;callfunc "MagicGainBasic";}, {}
-714, SnakeEgg, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 30, 0, 1;}, {}
-715, MountainSnakeEgg, 0, 80, 40, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 40, 0, 1;}, {}
-716, GrassSnakeEgg, 0, 100, 50, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-717, CaveSnakeEgg, 0, 60, 30, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 20, 0, 1;}, {}
-719, GreenApple, 0, 20, 5, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 45, 0, 1;}, {}
-733, PurificationPotion, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "usePurificationPotion";}, {}
-736, WhiteCake, 0, 500, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
-737, ChocolateCake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 11, 0, 1;}, {}
-738, OrangeCake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 12, 0, 1;}, {}
-739, AppleCake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 12, 0, 1;}, {}
-743, Acorn, 0, 50, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 3, 0, 1;}, {}
-744, DilutedConcentrationPot, 0, 250, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 30, 20;}, {}
-745, DarkConcentrationPotion, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 10, 40;sc_start sc_poison, 1, 50;}, {}
-747, LacedChocolateCake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 11, 0, 1;}, {}
-748, LacedOrangeCupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-750, SlowPoisonPotion, 0, 500, 200, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 5, 0, 1;sc_start sc_slowpoison, 180000, 180;}, {}
-784, ZombieNachos, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
-785, LadyFingers, 0, 70, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 40, 0, 1;}, {}
-786, JellAhh, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-787, Snapple, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 70, 0, 1;}, {}
-788, BeetleJuice, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-789, GutBuster, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
-790, BloodWine, 0, 150, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-808, HitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "HitchhikersTowel"; callfunc "WarpTowel";}, {}
-809, WhiteHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "WhiteHitchhikersTowel"; callfunc "WarpTowel";}, {}
-810, RedHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "RedHitchhikersTowel"; callfunc "WarpTowel";}, {}
-811, GreenHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "GreenHitchhikersTowel"; callfunc "WarpTowel";}, {}
-812, BlueHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "BlueHitchhikersTowel"; callfunc "WarpTowel";}, {}
-813, YellowHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "YellowHitchhikersTowel"; callfunc "WarpTowel";}, {}
-814, PurpleHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PurpleHitchhikersTowel"; callfunc "WarpTowel";}, {}
-815, OrangeHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "OrangeHitchhikersTowel"; callfunc "WarpTowel";}, {}
-816, PinkHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PinkHitchhikersTowel"; callfunc "WarpTowel";}, {}
-817, TealHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "TealHitchhikersTowel"; callfunc "WarpTowel";}, {}
-818, LimeHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "LimeHitchhikersTowel"; callfunc "WarpTowel";}, {}
-825, TinyManaElixir, 0, 100, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 25, 1;}, {}
-826, SmallManaElixir, 0, 200, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 50, 1;}, {}
-827, MediumManaElixir, 0, 400, 40, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 100, 1;}, {}
-828, LargeManaElixir, 0, 800, 80, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 250, 1;}, {}
-838, CranberryLollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
-839, GrapeLollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
-840, OrangeLollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
-1189, PollettEgg, 0, 250, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 75, 10, 1;}, {}
-1229, CaramelApple, 0, 500, 75, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 1000, 0, 1;}, {}
-1230, LollipopColor1, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
-1231, LollipopColor2, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
-1232, LollipopColor3, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
-1248, Blueberries, 0, 50, 25, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 0, 1;}, {}
-1250, Pear, 0, 50, 25, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 150, 0, 1;}, {}
-1251, Plum, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-1252, Cherry, 0, 50, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
-1253, GoldenDeliciousApple, 0, 1000, 500, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 0, 0;}, {}
-1258, Honey, 0, 100, 80, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 45, 0, 1;}, {}
-1280, Scissors, 0, 1000, 500, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useScissors";}, {}
-1281, ShockSweet, 0, 1000, 500, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useShockSweet";}, {}
-3001, RubberBat, 0, 200, 100, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "rubberBat";}, {}
-3006, TonoriDelight, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 2, 1;}, {}
-3007, Marshmallow, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
-3009, JellySkull, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
-3010, CandyPumpkin, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
-4035, PickledBeets, 0, 100, 50, 150, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "usePickledBeets";}, {}
-4036, RoastedAcorn, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
-5126, MTJarofOwnBlood, 0, 200, 100, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal -250, 0;getitem 5127, 1;}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5210, GrassFedTofu, 0, 50, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal -10, -2, 1;}, {}
-5213, VeganWater, 0, 200, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 250, 0, 1;getitem 540, 1;}, {}
-5214, LactoseFreeAcorn, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
-5235, TMWBirthdayGift, 0, 1000000, 50, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "TMWBirthdayGift";}, {}
-5236, GumiCandy, 0, 10000, 250, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set Sex, if_then_else(Sex == 3, rand(0, 1), if_then_else(rand(0,1), 3, !Sex));}, {}
-5237, CaramelCandy, 0, 700, 350, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 350, 0, 1;}, {}
-5263, LovePotion, 0, 90000, 550, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "LovePotion";}, {}
diff --git a/world/map/db/item_db_weapon.txt b/world/map/db/item_db_weapon.txt
deleted file mode 100644
index 6f73d259..00000000
--- a/world/map/db/item_db_weapon.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-521, Dagger, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-522, SharpKnife, 4, 100, 50, 150, 10, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-529, IronArrow, 10, 4, 2, 1, 40, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-530, ShortBow, 4, 2000, 2000, 600, 50, 0, 5, 0, 0, 2, 34, 1, 4, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-536, ShortSword, 4, 8000, 4000, 2000, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-545, ForestBow, 4, 20000, 5000, 1200, 70, 0, 5, 0, 0, 2, 34, 1, 0, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-547, Bardiche, 4, 20, 10, 10, 0, 100, 1, -200, 0, 2, 2, 0, 0, 1, {}, {callfunc "UnreleasedItem";}
-548, Halberd, 4, 20, 10, 1400, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
-549, Axe, 4, 20, 10, 1200, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
-550, BlacksmithsAxe, 4, 20, 10, 1200, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
-561, Sabre, 4, 10000, 5000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-570, BoneKnife, 4, 10000, 6000, 450, 115, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-571, Setzer, 4, 20000, 8000, 900, 110, 0, 1, 0, 0, 2, 2, 1, 1, 3, {}, {}
-572, Scimitar, 4, 8000, 4000, 200, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-573, Falchion, 4, 8000, 4000, 300, 270, 0, 1, 0, 0, 2, 2, 1, 1, 6, {}, {callfunc "UnreleasedItem"; bonus bDoubleAddRate, 40; bonus bHit, -25; bonus bCritical, -25;}
-574, Scorpion, 4, 8000, 4000, 600, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-575, DesertBow, 4, 8000, 4000, 1200, 100, 0, 1, 0, 0, 2, 34, 1, 1, 11, {}, {callfunc "UnreleasedItem";set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-576, Beheader, 4, 8000, 4000, 2000, 999, 0, 1, 0, 0, 2, 2, 1, 1, 4, {}, {callfunc "NoBowItem"; set @bStat, Int; set @maxbStatVal, 1; callfunc "RequireMaxStat"; bonus bDoubleAddRate, 50; bonus bAspdRate, 10; bonus bHit, -20; bonus bCritical, -25;}
-577, BoneDarts, 4, 8000, 4000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem"; }
-578, SandCutter, 4, 30000, 15000, 1500, 140, 0, 1, 0, 0, 2, 2, 1, 80, 10, {}, {bonus bDoubleAddRate, 5;}
-579, RockKnife, 4, 15000, 7500, 500, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bVit, 3;}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-580, StaffOfLife, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-581, CrescentRod, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-582, StaffOfFire, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-583, StaffOfIce, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-584, Jackal, 4, 8000, 4000, 100, 120, 0, 1, 0, 0, 2, 2, 1, 1, 10, {}, {callfunc "UnreleasedItem";bonus bDoubleAddRate, 30;}
-587, Sword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-588, BastardSword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-//589, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//590, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-591, LongSword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-//592, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//593, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-594, Spear, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-//595, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//596, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//597, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//598, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//599, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-//605, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//606, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//607, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//608, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//609, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-623, Scythe, 4, 100, 50, 1200, 75, 0, 1, 0, 0, 2, 34, 1, 1, 3, {}, {}
-758, WoodenStaff, 4, 4000, 2000, 1000, 50, 0, 1, 10, 0, 2, 34, 1, 1, 10, {}, {set @bStat, Int;set @minbStatVal, 60;callfunc "RequireStat";}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-1171, Wand, 4, 400, 200, 100, 1, 0, 1, 5, 0, 2, 2, 1, 1, 1, {}, {set @bStat, Int;set @minbStatVal, 5;callfunc "RequireStat";}
-762, TerraniteArrow, 10, 80, 20, 1, 50, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 20;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-867, IceGladius, 4, 2000, 1000, 1000, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bLuk, 1;}
-878, BansheeBow, 4, 101000, 40000, 900, 140, 0, 6, 0, 0, 2, 34, 1, 90, 11, {}, {set @bStat, Dex;set @minbStatVal, 80;callfunc "RequireStat"; bonus2 bHPDrainRate, 100, -2; bonus bAspdRate, 20; bonus bMaxHP, -150; bonus bSpeedAddRate, 10; bonus bDefRate, -40; bonus bDef2Rate, -35;set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-903, SlingShot, 4, 500, 50, 10, 5, 0, 3, 0, 0, 2, 34, 1, 1, 11, {}, {set @LauncherType, AMMO_SLING; callfunc "CheckLauncher";}
-904, SlingBullet, 10, 1, 0, 1, 3, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_SLING; callfunc "CheckAmmo";}
-906, KidBook, 4, 10000, 5000, 100, 1, 0, 3, 0, 0, 2, 34, 1, 1, 1, {}, {}
-1199, Arrow, 10, 1, 1, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-1200, Bow, 4, 1000, 500, 20, 20, 0, 5, 0, 0, 2, 34, 1, 4, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-1201, Knife, 4, 50, 25, 120, 5, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-1215, ToySabre, 4, 2000000, 25, 1, 1, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-1282, BoneArrows, 10, 50, 20, 0, 55, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 1;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-//ID, Name___________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5260, Snowball, 10, 1, 0, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_XMAS; callfunc "CheckAmmo";}
-5261, SnowLauncher, 4, 500, 50, 10, 20, 0, 3, 0, 0, 2, 2, 1, 1, 11, {}, {set @LauncherType, AMMO_XMAS; callfunc "CheckLauncher";}
diff --git a/world/map/db/mob_db_0_19.txt b/world/map/db/mob_db_0_19.txt
deleted file mode 100644
index ff79192e..00000000
--- a/world/map/db/mob_db_0_19.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1002, Maggot, Maggot, 5, 50, 0, 0, 1, 1, 5, 10, 0, 5, 1, 1, 1, 0, 6, 5, 1, 1, 1, 3, 21, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 502, 70, 522, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1046, TameScorpion, TameScorpion, 5, 50, 0, 0, 2, 1, 7, 10, 0, 5, 1, 1, 1, 0, 15, 5, 1, 1, 1, 3, 20, 129, 2000, 1872, 672, 480, 507, 700, 510, 100, 509, 50, 518, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1050, HouseMaggot, HouseMaggot, 5, 50, 0, 0, 3, 1, 5, 7, 0, 5, 5, 5, 1, 0, 6, 5, 1, 1, 1, 3, 21, 133, 700, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 502, 70, 522, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1003, Scorpion, Scorpion, 10, 100, 0, 0, 2, 1, 10, 15, 0, 5, 1, 1, 1, 0, 15, 5, 1, 1, 1, 3, 20, 129, 2000, 1872, 672, 480, 507, 700, 510, 100, 509, 50, 518, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1029, MauvePlant, MauvePlant, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 680, 3000, 680, 3000, 680, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
-1030, CobaltPlant, CobaltPlant, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 681, 3000, 681, 3000, 681, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1031, GambogePlant, GambogePlant, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 682, 3000, 682, 3000, 682, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1032, AlizarinPlant, AlizarinPlant, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 683, 3000, 683, 3000, 683, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1037, CloverPatch, CloverPatch, 1, 1, 0, 0, 1, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 742, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1038, Squirrel, Squirrel, 15, 160, 1, 0, 5, 1, 10, 20, 1, 6, 1, 3, 1, 0, 15, 40, 1, 1, 1, 3, 20, 129, 800, 800, 672, 480, 743, 7000, 680, 1000, 681, 1000, 682, 1000, 683, 1000, 807, 800, 860, 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15
-1056, CaveMaggot, CaveMaggot, 10, 100, 0, 0, 3, 1, 10, 10, 0, 5, 5, 5, 1, 0, 6, 5, 1, 1, 1, 3, 21, 133, 700, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 502, 70, 522, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1063, Pumpkin, Pumpkin, 1, 200, 0, 0, 1, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 3000, 100, 3001, 20, 3002, 10, 3003, 15, 3011, 500, 3006, 1500, 3007, 2000, 3010, 2500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1082, Serqet, Serqet, 10, 100, 0, 0, 2, 1, 10, 15, 0, 5, 1, 1, 1, 0, 15, 5, 1, 1, 1, 3, 20, 129, 2000, 1872, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1092, SlimeBlast, SlimeBlast, 10, 100, 0, 0, 8, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 0, 61, 175, 250, 1872, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1095, WhiteBell, WhiteBell, 10, 100, 0, 0, 40, 2, 70, 75, 0, 5, 16, 12, 20, 20, 20, 50, 2, 2, 1, 3, 22, 128, 800, 800, 672, 480, 535, 100, 540, 10, 1199, 100, 526, 400, 861, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 50
-1105, ViciousSquirrel, ViciousSquirrel, 15, 140, 1, 0, 7, 1, 20, 25, 1, 6, 3, 3, 1, 0, 15, 40, 1, 1, 1, 3, 20, 133, 800, 800, 672, 480, 704, 7000, 680, 1000, 681, 1000, 682, 1000, 683, 1000, 807, 800, 4005, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15
-1162, Grinchboo, Grinchboo, 5, 50, 0, 0, 1, 1, 5, 10, 0, 5, 1, 1, 1, 0, 6, 5, 1, 1, 1, 3, 21, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 527, 50, 527, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/world/map/db/mob_db_20_39.txt b/world/map/db/mob_db_20_39.txt
deleted file mode 100644
index 7fe8ca4d..00000000
--- a/world/map/db/mob_db_20_39.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1011, FireGoblin, FireGoblin, 20, 220, 0, 0, 4, 1, 15, 20, 0, 5, 1, 1, 1, 0, 6, 30, 1, 1, 1, 3, 23, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 800, 502, 150, 521, 70, 522, 10, 701, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1017, Bat, Bat, 20, 150, 0, 0, 3, 1, 5, 25, 0, 5, 1, 1, 1, 0, 20, 25, 1, 1, 1, 3, 24, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 521, 70, 522, 1, 753, 3000, 754, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1131, ManaBug, ManaBug, 25, 300, 0, 0, 5, 2, 10, 17, 4, 6, 1, 4, 1, 4, 5, 4, 2, 1, 1, 3, 24, 137, 800, 1800, 672, 480, 505, 1000, 518, 800, 533, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1018, Pinkie, Pinkie, 30, 300, 0, 0, 7, 2, 15, 20, 0, 5, 1, 1, 1, 0, 20, 25, 2, 2, 1, 3, 20, 129, 800, 1872, 672, 480, 614, 1000, 751, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 50
-1019, SpikyMushroom, SpikyMushroom, 30, 300, 0, 0, 5, 1, 10, 13, 0, 5, 1, 1, 1, 0, 10, 10, 1, 1, 1, 3, 20, 129, 800, 1872, 672, 480, 567, 800, 501, 150, 518, 50, 613, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
-1020, Fluffy, Fluffy, 30, 500, 0, 0, 7, 1, 6, 10, 1, 5, 1, 2, 1, 0, 20, 25, 1, 1, 1, 3, 20, 129, 800, 1600, 672, 480, 611, 800, 527, 150, 535, 400, 752, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
-1021, CaveSnake, CaveSnake, 30, 800, 0, 0, 13, 1, 20, 15, 1, 5, 10, 1, 1, 0, 5, 20, 1, 1, 1, 3, 20, 129, 800, 1872, 672, 480, 612, 1000, 610, 40, 713, 500, 717, 400, 717, 400, 641, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 50
-1025, LogHead, LogHead, 30, 500, 0, 0, 5, 1, 10, 20, 50, 5, 1, 1, 1, 0, 20, 25, 1, 1, 1, 3, 22, 129, 800, 1872, 672, 480, 569, 2000, 740, 2500, 743, 3000, 569, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 50
-1027, EasterFluffy, EasterFluffy, 30, 500, 0, 0, 7, 1, 10, 12, 0, 5, 1, 1, 1, 0, 20, 25, 1, 1, 1, 3, 20, 129, 800, 1872, 672, 480, 1208, 2000, 1209, 2000, 1210, 2000, 1211, 1000, 1212, 1000, 1213, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 40
-1035, Silkworm, Silkworm, 20, 1, 0, 0, 1, 1, 0, 0, 2, 10, 20, 11, 10, 10, 40, 10, 1, 1, 1, 0, 20, 129, 1300, 1100, 672, 480, 718, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1041, Snail, Snail, 30, 900, 0, 0, 18, 1, 50, 65, 20, 15, 10, 1, 25, 0, 20, 10, 1, 1, 1, 0, 20, 129, 1800, 2500, 672, 480, 719, 500, 806, 400, 1250, 1000, 1251, 1500, 1248, 500, 1252, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
-1049, Bee, Bee, 30, 600, 0, 0, 32, 1, 5, 90, 12, 4, 15, 25, 20, 3, 40, 30, 1, 1, 1, 0, 25, 137, 380, 1500, 300, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1055, Butterfly, Butterfly, 25, 250, 0, 0, 11, 2, 10, 40, 3, 5, 10, 45, 10, 15, 35, 40, 1, 1, 1, 3, 44, 129, 350, 780, 300, 800, 718, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 60
-1057, AngryScorpion, AngryScorpion, 20, 200, 0, 0, 5, 1, 15, 15, 0, 5, 5, 5, 1, 0, 15, 5, 1, 1, 1, 3, 20, 133, 1000, 1872, 672, 480, 4000, 700, 510, 100, 509, 50, 518, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1058, IceGoblin, IceGoblin, 25, 330, 0, 0, 10, 1, 20, 25, 0, 5, 5, 5, 1, 0, 6, 30, 1, 1, 1, 3, 21, 133, 700, 1872, 672, 480, 505, 800, 501, 150, 518, 800, 502, 150, 521, 70, 522, 10, 4026, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1060, Archant, Archant, 30, 400, 0, 0, 14, 1, 20, 30, 4, 6, 10, 5, 1, 0, 12, 10, 1, 1, 1, 0, 25, 133, 1000, 1500, 672, 480, 537, 300, 535, 100, 640, 40, 4001, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1064, Bandit, Bandit, 20, 400, 0, 0, 21, 1, 40, 40, 5, 0, 10, 10, 10, 10, 10, 10, 1, 1, 1, 0, 29, 135, 500, 1500, 672, 900, 4016, 800, 521, 200, 526, 500, 535, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1083, HuntsmanSpider, HuntsmanSpider, 30, 1500, 0, 0, 363, 1, 125, 150, 10, 45, 20, 15, 10, 10, 45, 10, 1, 1, 1, 0, 45, 175, 575, 1250, 672, 480, 638, 100, 526, 500, 640, 300, 518, 1000, 719, 500, 4001, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1084, CrotcherScorpion, CrotcherScorpion, 25, 1200, 0, 0, 86, 1, 75, 175, 15, 45, 15, 30, 10, 10, 25, 25, 1, 1, 1, 0, 45, 133, 750, 1350, 672, 480, 523, 300, 518, 1000, 509, 300, 512, 300, 535, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1087, Larvern, Larvern, 20, 550, 0, 0, 26, 1, 50, 200, 30, 65, 35, 20, 50, 0, 70, 20, 1, 1, 1, 0, 25, 139, 1500, 1500, 672, 480, 836, 2000, 518, 1000, 807, 300, 806, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1089, HungryFluffy, HungryFluffy, 30, 500, 0, 0, 10, 1, 6, 10, 1, 5, 1, 2, 1, 0, 20, 25, 1, 1, 1, 3, 20, 133, 800, 1600, 672, 480, 611, 500, 527, 150, 752, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
-1093, WhiteSlime, WhiteSlime, 20, 200, 0, 0, 15, 1, 80, 120, 10, 10, 20, 30, 10, 10, 30, 20, 1, 1, 1, 0, 61, 137, 500, 1872, 672, 480, 4026, 200, 4002, 20, 541, 500, 863, 100, 864, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1094, Reinboo, Reinboo, 35, 1100, 0, 0, 29, 2, 40, 75, 35, 5, 15, 5, 15, 0, 40, 10, 2, 2, 1, 3, 20, 129, 600, 1872, 672, 480, 512, 1000, 736, 1200, 737, 1200, 738, 1200, 739, 1200, 869, 50, 4042, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
-1099, SleepingBandit, SleepingBandit, 20, 25, 0, 0, 1, 1, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 1, 1, 1, 0, 29, 0, 500, 1500, 672, 900, 4016, 800, 521, 200, 526, 500, 535, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1100, AzulSlime, AzulSlime, 20, 200, 0, 0, 10, 1, 80, 120, 10, 10, 20, 30, 10, 10, 30, 20, 1, 1, 1, 0, 61, 131, 500, 1872, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1107, Bluepar, Bluepar, 30, 350, 0, 0, 8, 2, 7, 15, 0, 5, 1, 1, 1, 0, 20, 25, 2, 2, 1, 3, 20, 133, 800, 1872, 672, 480, 567, 800, 568, 800, 4002, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 50
-1108, AngryFireGoblin, AngryFireGoblin, 30, 320, 0, 0, 12, 1, 25, 40, 0, 10, 3, 3, 3, 2, 10, 50, 1, 1, 1, 3, 23, 133, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 800, 502, 150, 521, 70, 522, 10, 701, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1113, Pollett, Pollett, 30, 500, 0, 0, 7, 1, 6, 10, 1, 5, 1, 2, 1, 0, 20, 25, 1, 1, 1, 3, 20, 129, 800, 1600, 672, 480, 4026, 1000, 4023, 500, 700, 300, 862, 100, 1189, 400, 1189, 400, 1189, 400, 611, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
diff --git a/world/map/db/mob_db_40_59.txt b/world/map/db/mob_db_40_59.txt
deleted file mode 100644
index a27c015c..00000000
--- a/world/map/db/mob_db_40_59.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1005, GreenSlime, GreenSlime, 40, 800, 0, 0, 96, 1, 80, 120, 20, 30, 20, 30, 10, 10, 30, 30, 1, 1, 1, 0, 21, 175, 1200, 1872, 672, 480, 502, 200, 4004, 20, 501, 100, 521, 250, 522, 200, 526, 500, 503, 500, 719, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1016, RudolphSlime, RudolphSlime, 50, 350, 0, 0, 8, 1, 30, 35, 10, 7, 1, 20, 1, 0, 30, 30, 1, 1, 1, 0, 21, 131, 1000, 1872, 672, 480, 504, 800, 506, 500, 508, 200, 509, 300, 510, 600, 515, 800, 516, 500, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1065, BanditLord, BanditLord, 40, 2000, 0, 0, 103, 5, 50, 50, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 0, 29, 135, 400, 1500, 672, 900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1080, BlueSpark, BlueSpark, 40, 10000, 0, 0, 392, 2, 40, 40, 20, 40, 30, 30, 30, 30, 30, 30, 1, 1, 1, 0, 20, 129, 190, 1500, 800, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1081, RedSpark, RedSpark, 40, 10000, 0, 0, 392, 2, 40, 40, 20, 40, 30, 30, 30, 30, 30, 30, 1, 1, 1, 0, 20, 129, 190, 1500, 800, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1086, FeyElement, FeyElement, 50, 5000, 0, 12500, 901, 5, 50, 125, 25, 50, 20, 70, 10, 20, 80, 1, 1, 1, 1, 0, 84, 165, 330, 740, 672, 400, 834, 5000, 680, 1000, 680, 1000, 681, 1000, 681, 1000, 682, 1000, 682, 1000, 683, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
-1088, Hyvern, Hyvern, 40, 2250, 0, 0, 346, 1, 50, 125, 0, 10, 10, 45, 5, 0, 35, 35, 1, 1, 1, 0, 85, 133, 250, 800, 672, 480, 835, 2000, 518, 1000, 657, 600, 529, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1090, Wolvern, Wolvern, 40, 900, 0, 0, 86, 1, 50, 80, 5, 5, 15, 10, 5, 0, 20, 10, 1, 1, 1, 3, 20, 133, 425, 770, 500, 200, 858, 1000, 859, 400, 4023, 200, 676, 1300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
-1091, BlueSlime, BlueSlime, 40, 2000, 0, 0, 77, 1, 100, 150, 20, 40, 40, 30, 50, 10, 50, 40, 1, 1, 1, 0, 61, 131, 1200, 1872, 672, 480, 4026, 200, 4005, 20, 501, 500, 862, 700, 863, 100, 864, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1098, CopperSlime, CopperSlime, 40, 600, 0, 0, 18, 1, 60, 90, 20, 30, 20, 30, 10, 10, 30, 30, 1, 1, 1, 0, 21, 131, 1200, 1872, 672, 480, 640, 1500, 537, 1000, 4001, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1111, CandiedSlime, CandiedSlime, 50, 800, 0, 800, 66, 3, 50, 50, 20, 30, 20, 30, 10, 10, 30, 30, 1, 1, 1, 0, 21, 175, 1200, 1872, 672, 480, 510, 1000, 509, 1000, 515, 200, 516, 200, 538, 200, 512, 200, 508, 500, 514, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1112, Santaboo, Santaboo, 50, 2200, 0, 0, 59, 2, 80, 125, 50, 10, 25, 10, 25, 0, 60, 30, 2, 2, 1, 3, 20, 129, 600, 1872, 672, 480, 512, 1000, 736, 1200, 737, 1200, 738, 1200, 739, 1200, 511, 50, 4042, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
diff --git a/world/map/db/mob_db_60_79.txt b/world/map/db/mob_db_60_79.txt
deleted file mode 100644
index 5dd9231a..00000000
--- a/world/map/db/mob_db_60_79.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1007, YellowSlime, YellowSlime, 60, 400, 0, 0, 9, 1, 35, 40, 2, 7, 9, 6, 2, 1, 34, 1, 1, 1, 1, 0, 21, 131, 1400, 1800, 672, 480, 534, 200, 519, 100, 501, 350, 502, 250, 522, 10, 640, 450, 4006, 20, 4001, 450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1008, RedSlime, RedSlime, 70, 450, 0, 0, 17, 1, 40, 45, 2, 7, 12, 8, 2, 1, 25, 1, 1, 1, 1, 0, 21, 135, 1300, 1500, 672, 480, 1201, 300, 509, 110, 521, 200, 4003, 20, 525, 80, 535, 750, 528, 250, 531, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
-1033, SeaSlime, SeaSlime, 70, 600, 0, 0, 13, 1, 30, 50, 3, 7, 1, 25, 1, 0, 30, 30, 1, 1, 1, 0, 41, 131, 1500, 1872, 672, 480, 535, 800, 657, 800, 518, 500, 510, 1000, 700, 100, 1199, 5000, 568, 100, 541, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1040, Wisp, Wisp, 70, 9300, 0, 0, 1210, 2, 215, 350, 0, 20, 45, 12, 13, 15, 0, 45, 1, 1, 1, 0, 27, 137, 380, 2000, 672, 1500, 772, 1000, 703, 150, 703, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
-1054, Troll, Troll, 65, 2000, 0, 0, 129, 1, 70, 100, 20, 10, 50, 40, 10, 10, 30, 30, 1, 1, 1, 0, 20, 137, 600, 1500, 672, 480, 1199, 2000, 529, 500, 539, 300, 526, 250, 512, 200, 906, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1061, Moggun, Moggun, 60, 800, 0, 0, 52, 1, 70, 90, 20, 10, 50, 40, 10, 10, 10, 10, 1, 1, 1, 0, 25, 137, 600, 1500, 672, 480, 611, 600, 4001, 1000, 4002, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1101, DemonicSpirit, DemonicSpirit, 72, 1505, 0, 0, 270, 1, 125, 175, 4, 6, 20, 40, 10, 10, 110, 45, 1, 1, 1, 0, 89, 133, 230, 900, 672, 480, 631, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1110, AngryGreenSlime, AngryGreenSlime, 60, 1000, 0, 0, 135, 1, 100, 160, 20, 30, 20, 30, 10, 10, 30, 30, 1, 1, 1, 0, 21, 175, 1200, 1872, 672, 480, 502, 200, 4004, 20, 501, 100, 521, 250, 522, 200, 526, 500, 503, 500, 535, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1117, UndeadTroll, UndeadTroll, 75, 3100, 0, 0, 179, 2, 60, 140, 20, 10, 50, 40, 20, 10, 40, 49, 1, 1, 1, 0, 20, 133, 650, 1500, 672, 480, 1199, 2000, 631, 1000, 529, 500, 539, 300, 526, 250, 4023, 200, 906, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
diff --git a/world/map/db/mob_db_80_99.txt b/world/map/db/mob_db_80_99.txt
deleted file mode 100644
index 40215b80..00000000
--- a/world/map/db/mob_db_80_99.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1004, RedScorpion, RedScorpion, 90, 550, 0, 0, 16, 1, 50, 55, 4, 6, 8, 8, 10, 10, 30, 10, 1, 1, 1, 0, 20, 129, 1000, 1872, 672, 480, 517, 2000, 509, 100, 518, 500, 1200, 10, 1199, 760, 1201, 540, 524, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 50
-1006, GiantMaggot, GiantMaggot, 80, 500, 0, 0, 14, 2, 45, 75, 2, 7, 8, 6, 2, 1, 22, 1, 2, 2, 1, 0, 41, 129, 2000, 1872, 672, 480, 1199, 900, 519, 100, 518, 750, 501, 5000, 502, 3000, 503, 11, 526, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25
-1028, Mouboo, Mouboo, 85, 1200, 0, 0, 16, 2, 30, 75, 65, 5, 15, 5, 15, 0, 40, 10, 2, 2, 1, 3, 20, 129, 600, 1872, 672, 480, 660, 1000, 660, 500, 541, 750, 660, 50, 806, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
-1043, Skeleton, Skeleton, 90, 6800, 0, 0, 1467, 1, 51, 284, 12, 10, 35, 18, 3, 8, 71, 65, 1, 1, 1, 0, 29, 175, 340, 1800, 672, 950, 775, 200, 775, 280, 776, 300, 631, 1000, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1044, LadySkeleton, LadySkeleton, 90, 5500, 0, 0, 957, 2, 73, 146, 31, 8, 20, 25, 15, 8, 43, 48, 1, 1, 1, 0, 29, 175, 650, 750, 672, 700, 775, 200, 775, 280, 776, 300, 631, 1000, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1047, Poltergeist, Poltergeist, 90, 9000, 0, 0, 1306, 3, 110, 150, 0, 20, 35, 0, 15, 15, 75, 50, 1, 1, 1, 0, 27, 137, 330, 740, 672, 400, 774, 1000, 703, 150, 703, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
-1059, GCMaggot, GiantCaveMaggot, 90, 2000, 0, 0, 102, 2, 60, 80, 2, 7, 10, 10, 2, 1, 22, 1, 2, 2, 1, 0, 41, 133, 1000, 1872, 672, 480, 727, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25
-1066, VampireBat, VampireBat, 80, 800, 0, 0, 9, 1, 55, 150, 10, 8, 8, 8, 1, 4, 20, 4, 6, 1, 1, 3, 24, 129, 800, 1872, 672, 480, 501, 150, 518, 400, 533, 150, 521, 70, 522, 1, 5115, 3000, 754, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1069, Scythe, Scythe, 80, 3000, 0, 0, 617, 1, 200, 350, 30, 10, 100, 250, 1, 1, 150, 90, 1, 50, 1, 0, 40, 133, 220, 700, 672, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1070, BallLightning, BallLightning, 80, 300, 0, 0, 1, 1, 5, 10, 40, 65, 1, 200, 1, 1, 1, 1, 1, 50, 1, 0, 47, 133, 110, 1500, 672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1073, TheLost, TheLost, 83, 5000, 0, 8750, 2840, 5, 125, 150, 10, 70, 5, 40, 10, 70, 70, 40, 4, 9, 1, 1, 69, 141, 500, 2000, 672, 300, 5110, 500, 5110, 500, 631, 500, 566, 500, 778, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1074, RedBone, RedBone, 90, 8000, 0, 9750, 3434, 2, 100, 330, 24, 30, 35, 25, 3, 50, 80, 75, 2, 2, 1, 1, 29, 175, 340, 1800, 672, 950, 775, 75, 775, 115, 776, 135, 631, 4, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1077, DrunkenSkeleton, DrunkenSkeleton, 90, 7200, 0, 0, 530, 1, 55, 284, 30, 10, 35, 10, 3, 8, 71, 65, 1, 1, 1, 0, 29, 137, 350, 1800, 672, 950, 790, 300, 789, 280, 3003, 100, 3000, 50, 3009, 250, 3006, 400, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1078, TipsySkeleton, TipsySkeleton, 90, 7000, 0, 0, 493, 1, 60, 284, 33, 10, 35, 10, 3, 8, 71, 65, 1, 1, 1, 0, 29, 137, 350, 1800, 672, 950, 787, 300, 788, 280, 3002, 100, 3000, 50, 3007, 400, 3010, 250, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1079, DrunkenLadySkeleton, DrunkenLadySkeleton, 90, 6000, 0, 0, 389, 2, 75, 146, 40, 8, 20, 20, 15, 8, 51, 48, 1, 1, 1, 0, 29, 137, 660, 750, 672, 700, 785, 300, 786, 280, 3001, 100, 3000, 50, 3010, 250, 3009, 250, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1097, SoulEater, SoulEater, 90, 6800, 0, 0, 1746, 1, 129, 354, 12, 10, 35, 18, 3, 8, 71, 65, 1, 1, 1, 0, 29, 175, 340, 1800, 672, 950, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1103, WitchGuard, WitchGuard, 84, 9742, 0, 0, 1060, 2, 200, 220, 25, 50, 90, 65, 45, 5, 120, 69, 1, 1, 1, 0, 89, 133, 290, 1200, 672, 30, 631, 2000, 631, 500, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 40
-1104, DemonicMouboo, DemonicMouboo, 85, 800, 0, 0, 32, 2, 40, 70, 35, 15, 15, 5, 15, 0, 40, 10, 2, 2, 1, 3, 20, 133, 600, 1872, 672, 480, 660, 1000, 660, 500, 703, 750, 4004, 50, 806, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
-1109, AngrySeaSlime, AngrySeaSlime, 80, 1200, 0, 0, 42, 1, 40, 70, 13, 17, 3, 30, 3, 0, 35, 35, 1, 1, 1, 0, 41, 135, 1500, 1872, 672, 480, 535, 800, 657, 800, 518, 500, 510, 1000, 700, 100, 1199, 5000, 568, 100, 541, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1115, SeaSlimeMother, SeaSlimeMother, 90, 8000, 0, 0, 900, 5, 100, 150, 10, 20, 1, 15, 10, 10, 10, 10, 1, 1, 1, 0, 44, 175, 1500, 1872, 672, 480, 535, 800, 657, 800, 518, 500, 510, 1000, 700, 100, 1199, 5000, 568, 100, 541, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1116, UndeadWitch, UndeadWitch, 80, 4200, 0, 0, 722, 3, 50, 110, 8, 31, 15, 20, 10, 25, 50, 40, 1, 1, 1, 0, 29, 175, 550, 1500, 672, 700, 631, 1000, 775, 400, 776, 300, 704, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1118, GreenSlimeMother, GreenSlimeMother, 90, 8000, 0, 0, 900, 5, 100, 150, 15, 20, 20, 25, 20, 30, 20, 20, 1, 1, 1, 0, 21, 175, 1400, 1872, 672, 480, 502, 200, 4004, 20, 501, 100, 521, 250, 522, 200, 526, 500, 503, 500, 535, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1124, Wight, Wight, 90, 8000, 0, 9000, 1900, 2, 56, 294, 32, 15, 28, 25, 15, 15, 50, 65, 3, 3, 1, 1, 29, 175, 340, 1400, 672, 950, 775, 100, 775, 140, 776, 150, 631, 50, 631, 500, 778, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1125, ManaGhost, ManaGhost, 82, 8000, 0, 7500, 2400, 3, 150, 300, 23, 30, 35, 15, 3, 50, 50, 40, 2, 2, 1, 1, 29, 131, 340, 1800, 672, 950, 775, 75, 775, 115, 776, 135, 631, 40, 5110, 700, 631, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
diff --git a/world/map/db/mob_db_over_100.txt b/world/map/db/mob_db_over_100.txt
deleted file mode 100644
index 607b6031..00000000
--- a/world/map/db/mob_db_over_100.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1009, BlackScorpion, BlackScorpion, 100, 600, 0, 500, 37, 1, 60, 100, 4, 6, 16, 30, 10, 10, 35, 10, 1, 1, 1, 0, 20, 133, 1000, 1500, 672, 480, 523, 150, 509, 100, 518, 800, 709, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 50
-1010, Snake, Snake, 115, 850, 0, 722, 56, 1, 75, 90, 4, 6, 20, 11, 10, 10, 35, 10, 1, 1, 1, 0, 20, 133, 900, 1300, 672, 480, 641, 150, 0, 0, 714, 400, 714, 400, 710, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1012, Spider, Spider, 125, 800, 0, 690, 115, 1, 70, 85, 4, 6, 14, 13, 10, 10, 35, 10, 1, 1, 1, 0, 25, 175, 1000, 1500, 672, 480, 537, 500, 535, 100, 638, 20, 526, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1013, EvilMushroom, EvilMushroom, 110, 650, 0, 0, 35, 1, 65, 80, 4, 6, 16, 12, 10, 10, 35, 10, 1, 1, 1, 3, 22, 137, 800, 1800, 672, 480, 535, 500, 540, 10, 534, 100, 566, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
-1014, PinkFlower, PinkFlower, 115, 700, 0, 0, 40, 2, 70, 75, 0, 5, 16, 12, 20, 20, 20, 50, 2, 2, 1, 3, 22, 128, 800, 800, 672, 480, 535, 100, 540, 10, 1199, 100, 526, 400, 565, 1000, 565, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 50
-1015, SantaSlime, SantaSlime, 120, 750, 0, 0, 58, 1, 75, 80, 2, 7, 1, 20, 1, 0, 30, 30, 1, 1, 1, 0, 21, 161, 1500, 1872, 672, 480, 512, 800, 513, 700, 514, 600, 519, 500, 527, 400, 538, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10
-1022, JackO, JackO, 175, 10000, 0, 18130, 1241, 2, 100, 500, 40, 20, 105, 40, 85, 75, 105, 95, 1, 1, 1, 0, 20, 133, 250, 1500, 672, 480, 617, 300, 622, 400, 624, 400, 620, 400, 615, 300, 1203, 400, 1198, 10000, 616, 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1023, FireSkull, FireSkull, 170, 5000, 0, 0, 721, 2, 75, 175, 35, 15, 40, 30, 30, 30, 35, 70, 1, 1, 1, 3, 23, 175, 600, 1600, 672, 480, 631, 1000, 701, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1024, PoisonSkull, PoisonSkull, 170, 5000, 0, 0, 721, 2, 75, 175, 35, 15, 40, 30, 30, 30, 35, 70, 1, 1, 1, 3, 25, 175, 600, 1600, 672, 480, 631, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1026, MountainSnake, MountainSnake, 130, 900, 0, 1024, 63, 1, 80, 125, 4, 6, 20, 40, 10, 10, 35, 45, 1, 1, 1, 0, 20, 133, 1000, 1500, 672, 480, 532, 20, 641, 350, 715, 400, 715, 400, 711, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
-1034, GrassSnake, GrassSnake, 140, 1000, 0, 1254, 103, 1, 80, 120, 2, 10, 20, 40, 10, 10, 40, 50, 1, 1, 1, 0, 20, 133, 500, 1100, 672, 480, 716, 400, 716, 400, 712, 500, 676, 500, 660, 1600, 641, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 40
-1036, Zombie, Zombie, 110, 12000, 0, 0, 1393, 2, 275, 355, 20, 15, 30, 15, 30, 3, 60, 40, 1, 1, 1, 0, 29, 133, 480, 1872, 672, 900, 631, 1000, 777, 700, 778, 500, 779, 200, 780, 150, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1042, Spectre, Spectre, 140, 6500, 0, 3978, 359, 3, 160, 220, 40, 0, 35, 70, 22, 15, 20, 70, 1, 1, 1, 0, 49, 137, 650, 1700, 800, 500, 773, 1000, 703, 150, 703, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
-1045, Fallen, Fallen, 120, 10000, 0, 7812, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 210, 775, 210, 776, 300, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
-1062, Terranite, Terranite, 110, 6000, 0, 0, 889, 1, 200, 300, 20, 40, 60, 40, 40, 30, 60, 40, 1, 1, 1, 0, 29, 133, 400, 872, 672, 900, 4001, 600, 4004, 20, 4005, 20, 4007, 20, 763, 500, 640, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1068, Reaper, Reaper, 140, 40000, 0, 0, 156, 7, 200, 350, 30, 80, 100, 120, 70, 120, 100, 75, 1, 50, 1, 1, 89, 165, 500, 1200, 800, 300, 777, 1000, 775, 500, 776, 100, 1221, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1071, IceElement, IceElement, 100, 5000, 0, 0, 689, 3, 60, 200, 5, 20, 15, 25, 40, 15, 45, 30, 1, 1, 1, 0, 41, 135, 330, 740, 672, 400, 4026, 900, 537, 750, 568, 400, 543, 900, 544, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
-1072, Yeti, Yeti, 100, 8500, 0, 0, 726, 2, 100, 400, 60, 15, 60, 5, 45, 15, 60, 32, 1, 1, 1, 0, 61, 135, 220, 1200, 672, 900, 4023, 700, 4024, 300, 4025, 400, 4027, 142, 4021, 800, 4022, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1075, Stalker, Stalker, 120, 20000, 0, 0, 4000, 2, 220, 500, 23, 30, 35, 15, 3, 50, 50, 50, 2, 2, 1, 1, 29, 175, 340, 1800, 672, 950, 775, 75, 775, 115, 776, 135, 631, 40, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1085, IceSkull, IceSkull, 170, 7000, 0, 0, 757, 2, 75, 400, 40, 15, 40, 30, 30, 30, 35, 44, 1, 1, 1, 3, 21, 141, 600, 1600, 672, 480, 4026, 5000, 862, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1096, SoulSnake, SoulSnake, 115, 850, 0, 0, 56, 1, 75, 90, 4, 6, 20, 11, 10, 10, 35, 10, 1, 1, 1, 0, 20, 137, 900, 1300, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1102, Luvia, Luvia, 127, 48044, 60, 0, 12172, 5, 339, 364, 50, 92, 1, 29, 55, 255, 255, 255, 31, 30, 1, 0, 69, 181, 220, 1200, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1106, WickedMushroom, WickedMushroom, 110, 550, 0, 0, 30, 1, 70, 80, 4, 4, 16, 12, 10, 10, 35, 10, 1, 1, 1, 3, 22, 133, 800, 1800, 672, 480, 613, 600, 4007, 50, 567, 100, 566, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1114, Nutcracker, Nutcracker, 110, 6000, 0, 0, 769, 1, 81, 281, 20, 42, 40, 20, 10, 5, 60, 40, 1, 1, 1, 0, 29, 133, 400, 872, 672, 900, 569, 1000, 660, 750, 539, 750, 503, 250, 640, 200, 4004, 200, 4001, 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1119, Thug, Thug, 170, 5000, 0, 0, 999, 1, 125, 250, 30, 6, 10, 10, 60, 10, 50, 70, 1, 10, 1, 0, 2, 175, 500, 1200, 672, 480, 539, 1000, 657, 1000, 701, 500, 703, 250, 700, 250, 764, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1120, Swashbuckler, Swashbuckler, 170, 5000, 0, 0, 999, 1, 75, 250, 23, 27, 20, 20, 40, 30, 90, 70, 1, 10, 1, 0, 2, 175, 400, 800, 672, 480, 539, 1000, 657, 1000, 701, 500, 703, 250, 700, 250, 622, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1121, Grenadier, Grenadier, 170, 6000, 0, 0, 999, 6, 100, 200, 8, 60, 12, 10, 50, 60, 90, 70, 1, 10, 1, 0, 5, 175, 500, 2000, 672, 480, 539, 1000, 657, 1000, 701, 500, 704, 250, 700, 250, 765, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1122, DreadPirateMarley, DreadPirateMarley, 180, 10000, 0, 0, 20000, 4, 175, 250, 38, 32, 10, 20, 40, 20, 90, 80, 1, 30, 1, 0, 2, 175, 400, 700, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1123, DreadPirateMarleyClone, DreadPirateMarleyClone, 150, 2000, 0, 0, 0, 4, 175, 250, 18, 22, 10, 40, 30, 20, 80, 40, 1, 30, 1, 0, 2, 175, 500, 1200, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1126, PsiBrain, PsiBrain, 100, 10000, 0, 0, 4000, 2, 220, 500, 23, 30, 35, 15, 3, 50, 50, 50, 2, 2, 1, 1, 29, 175, 340, 1800, 672, 950, 775, 75, 775, 115, 776, 135, 631, 40, 5111, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1127, GeneralKrukan, GeneralKrukan, 140, 40000, 0, 0, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 1000, 776, 1000, 631, 1000, 5128, 2, 636, 6, 637, 25, 638, 50, 639, 8, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 6, 50
-1128, GeneralRazha, GeneralRazha, 140, 40000, 0, 0, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 210, 5129, 5, 776, 300, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
-1129, GeneralTerogan, GeneralTerogan, 140, 40000, 0, 0, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 210, 5130, 1, 776, 300, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
-1130, Moonshroom, Moonshroom, 110, 550, 0, 0, 35, 4, 70, 80, 4, 4, 16, 12, 10, 10, 35, 10, 1, 1, 1, 3, 22, 133, 800, 1800, 672, 480, 566, 500, 518, 500, 730, 300, 540, 100, 703, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
-1132, LavaSlime, LavaSlime, 135, 4144, 0, 6000, 1111, 2, 105, 260, 75, 80, 30, 15, 35, 10, 70, 250, 1, 1, 1, 0, 43, 135, 900, 1300, 672, 100, 904, 10000, 703, 2500, 640, 1000, 701, 1000, 4001, 1000, 825, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
-1133, Anne, Anne, 110, 12000, 0, 1100, 889, 1, 200, 300, 20, 40, 60, 40, 40, 30, 60, 40, 1, 1, 1, 0, 29, 133, 380, 872, 672, 900, 838, 6000, 839, 6000, 840, 6000, 1229, 200, 1230, 500, 1231, 500, 1232, 500, 1281, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1134, SUSAN, SUSAN, 255, 696969, 0, 69000, 1400, 1, 0, 0, 69, 69, 69, 69, 69, 69, 69, 69, 1, 1, 1, 0, 29, 161, 1500, 1872, 672, 480, 838, 6000, 839, 6000, 840, 6000, 1229, 200, 1230, 500, 1231, 500, 1232, 500, 1281, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
-1135, LovelyMaggot, LovelyMaggot, 1, 50, 0, 1, 1, 1, 69, 6969, 0, 5, 5, 5, 1, 0, 6, 5, 1, 1, 1, 3, 21, 133, 200, 1872, 672, 480, 505, 400, 501, 70, 518, 200, 533, 75, 502, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1136, LesserGhost, LesserGhost, 1, 1, 0, 1, 1, 0, 150, 300, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 29, 131, 340, 1800, 672, 950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1137, Tormenta, Tormenta, 200, 18000, 60, 500000, 5000, 5, 360, 374, 48, 90, 1, 32, 60, 255, 255, 255, 31, 30, 1, 0, 69, 181, 210, 1200, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1138, ManaGuard, ManaGuardian, 180, 20000, 280, 27000, 5000, 2, 280, 324, 22, 67, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 210, 1200, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1139, Virus, Virus, 170, 5000, 0, 0, 721, 6, 45, 75, 37, 12, 30, 30, 20, 20, 25, 60, 1, 1, 1, 3, 25, 175, 600, 1872, 672, 480, 787, 500, 743, 1100, 5236, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
-1140, Tengu, Tengu, 180, 24000, 280, 45000, 5000, 2, 180, 224, 67, 9, 31, 22, 90, 97, 255, 95, 31, 30, 1, 0, 69, 181, 310, 1200, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1141, Sasquatch, Sasquatch, 180, 24000, 280, 45000, 5000, 1, 420, 444, 12, 27, 31, 22, 90, 97, 255, 95, 31, 30, 1, 0, 69, 181, 310, 1200, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1142, Kage, ZaxDeKagen, 200, 29999, 280, 999999, 99999, 9, 90, 124, 74, 100, 199, 2, 199, 197, 255, 175, 31, 30, 1, 0, 69, 181, 210, 672, 672, 50, 668, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1143, ManaSlayer, ManaSlayer, 180, 24000, 280, 42000, 5000, 2, 260, 274, 22, 67, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 210, 1200, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1144, Dragon, GreatDragon, 250, 29999, 280, 1, 1, 3, 60, 90, 67, 67, 199, 2, 199, 197, 255, 95, 31, 30, 1, 0, 69, 181, 210, 1200, 672, 50, 759, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1145, KageGolem, KageGolem, 180, 29999, 280, 150000, 15000, 6, 140, 174, 72, 55, 31, 22, 90, 127, 255, 125, 31, 30, 1, 0, 69, 181, 410, 1000, 672, 50, 5251, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1146, Flashmob, Flashmob, 181, 27000, 280, 72000, 5000, 1, 40, 60, 57, 57, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 160, 600, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1147, Koyntety, Koyntety, 181, 27000, 280, 72000, 5000, 4, 220, 240, 52, 52, 31, 22, 90, 127, 255, 105, 31, 30, 1, 0, 69, 181, 240, 1400, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1148, DoomGolem, DoomGolem, 180, 22000, 280, 65000, 2000, 3, 160, 180, 60, 30, 31, 22, 90, 127, 255, 105, 31, 30, 1, 0, 69, 181, 320, 1000, 672, 50, 5253, 4, 666, 30, 537, 800, 779, 150, 780, 150, 777, 70, 1198, 50, 5258, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1149, Enchanter, Enchanter, 181, 19000, 280, 55000, 2000, 8, 140, 180, 30, 60, 31, 22, 90, 127, 255, 105, 31, 30, 1, 0, 69, 181, 240, 800, 672, 50, 1227, 2, 666, 30, 537, 800, 779, 90, 780, 80, 777, 70, 1198, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1150, ManaTyrant, ManaTyrant, 180, 24000, 280, 27000, 5000, 2, 300, 325, 42, 67, 31, 22, 90, 127, 255, 95, 31, 30, 1, 0, 69, 181, 180, 1050, 672, 50, 759, 1, 5237, 20, 1253, 5, 720, 100, 825, 500, 868, 20, 1172, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
-1151, VoidFlower, VoidFlower, 115, 7000, 0, 0, 40, 12, 400, 420, 0, 5, 16, 12, 20, 20, 255, 50, 12, 12, 1, 3, 22, 128, 800, 2000, 672, 180, 535, 100, 540, 10, 1199, 100, 526, 400, 565, 1000, 565, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1152, VoidArchant, VoidArchant, 130, 6000, 0, 0, 14, 1, 140, 180, 36, 6, 10, 5, 1, 0, 12, 10, 1, 1, 1, 0, 25, 133, 800, 1500, 672, 200, 537, 300, 535, 100, 640, 40, 4001, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1153, VoidSlime, VoidSlime, 135, 4144, 0, 6000, 70, 2, 105, 160, 75, 40, 30, 15, 35, 10, 70, 250, 1, 1, 1, 0, 43, 135, 1100, 1500, 672, 200, 904, 10000, 703, 2500, 640, 1000, 701, 1000, 4001, 1000, 825, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1154, VoidSnake, VoidSnake, 130, 2000, 0, 0, 63, 1, 80, 120, 4, 6, 20, 40, 10, 10, 35, 45, 1, 1, 1, 0, 20, 133, 320, 1500, 672, 200, 532, 20, 641, 350, 715, 400, 715, 400, 711, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
-1155, VoidBat, VoidBat, 100, 400, 0, 0, 3, 1, 10, 25, 0, 5, 1, 1, 1, 0, 20, 25, 1, 1, 1, 3, 24, 133, 200, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 521, 70, 522, 1, 753, 3000, 754, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1156, VoidMaggot, VoidMaggot, 100, 400, 0, 0, 1, 1, 10, 25, 0, 5, 1, 1, 1, 0, 20, 25, 1, 1, 1, 3, 21, 133, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 502, 70, 522, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1157, VoidSoldier, VoidSoldier, 120, 8000, 0, 0, 663, 7, 20, 30, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 500, 1600, 672, 300, 779, 210, 780, 210, 698, 200, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
-1158, VoidMouboo, VoidMouboo, 100, 5000, 0, 0, 16, 2, 50, 65, 60, 5, 15, 5, 15, 0, 40, 10, 2, 2, 1, 3, 20, 129, 600, 1872, 672, 480, 660, 1000, 660, 500, 541, 750, 660, 50, 806, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
-1159, VoidScorpion, VoidScorpion, 110, 6000, 0, 0, 37, 1, 60, 90, 4, 6, 16, 30, 10, 10, 35, 10, 1, 1, 1, 0, 20, 133, 700, 1700, 672, 480, 523, 150, 509, 100, 518, 800, 709, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1160, VoidShroom, VoidShroom, 110, 5500, 0, 0, 30, 3, 70, 80, 4, 4, 16, 12, 10, 10, 35, 10, 1, 1, 1, 3, 22, 133, 550, 1700, 672, 480, 613, 600, 4007, 50, 567, 100, 566, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1161, Xakelbael, Xakelbael, 200, 29999, 280, 999999, 99999, 9, 90, 124, 74, 100, 199, 2, 199, 197, 255, 175, 31, 30, 1, 0, 69, 181, 210, 672, 672, 50, 668, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-
diff --git a/world/map/db/mob_skill_db.txt b/world/map/db/mob_skill_db.txt
deleted file mode 100644
index 3c1a0293..00000000
--- a/world/map/db/mob_skill_db.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-// Aegis zone 8.5 -> eAthena conversion by Komurka
-// + Mob Skills for Einbroch+ by Lupus
-//MOB_ID, a mostly unused character sequence (for information), STATE, SKILL_ID, SKILL_LV,
-// rate (10000 = 100%), casttime, delay, cancelable, a target, a condition type, a condition value,
-// a value 1, a value 2, a value 3, a value 4, a value 5, emotion
-//Example
-//1001,Poring@TF_POISON,attack,52,3,100,1500,10000,no,target,always,0,0,0,0,0,7
-//
-//rate refers to the chance of the skill being casted when the condition is fulfilled.
-//delay is the time in milliseconds that has to be pass before recasting the same skill.
-//
-//STATE:
-// any / idle (in standby) / walk (in movement) / attack
-//
-//target: The target of the skill can be: target (when a PC is targetted) / self
-//
-//conditions: (condition type) (value which specifies a condition value)
-// always uncondtional
-// myhpltmaxrate when the mob's hp drops to a certain %
-// notintown map does not have "town" mapflag
-// slavelt when the number of slaves is lower than the original number of specification.
-// slavele when the number of slaves is lower or equal than the original number of specification.
-
-// The only supported skills are:
-// NPC_SELFDESTRUCTION
-// NPC_SUMMONSLAVE
-// NPC_EMOTION
-// NPC_POISON
-
-// Slime Monster Skills
-1092,SlimeBlast@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,notintown,0,30,0,0,0,0,
-1091,BlueSlime@NPC_SUMMONSLAVE_blastX1,any,198,1,8000,1000,5000,no,self,slavelt,1,1092,0,0,0,0,
-1093,WhiteSlime@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,notintown,0,30,0,0,0,0,
-1015,SantaSlime@NPC_EMOTION,idle,199,1,200,0,5000,yes,self,always,0,7,0,0,0,0,
-1015,SantaSlime@NPC_EMOTION,walk,199,1,100,0,10000,yes,self,always,0,5,0,0,0,0,
-1015,SantaSlime@NPC_SUMMONSLAVE,attack,198,5,10000,2000,60000,no,self,slavele,3,1016,0,0,0,0,
-1015,SantaSlime@NPC_SUMMONSLAVE,idle,198,5,10000,2000,60000,no,self,slavele,3,1016,0,0,0,0,
-// Slime Mothers
-1115,SeaSlimeMother@NPC_SUMMONSLAVE,any,198,2,8000,1000,5000,no,self,slavelt,2,1109,0,0,0,0,
-1118,GreenSlimeMother@NPC_SUMMONSLAVE,any,198,2,8000,1000,5000,no,self,slavelt,2,1110,0,0,0,0,
-
-// Poison
-// mobid, descriptive-label STATE, SKILL-ID,SKILLLV,rate, casttime,delay, cancel?,target, condition
-1009,BlackScorpion@NPC_POISON,attack,178,30,50,0,500,yes,target,always,0,0,10,0,0,0,
-1083,EarthSpider@NPC_POISON,attack,178,5,2500,0,500,yes,target,always,0,0,10,0,0,0,
-1084,EarthScorpion@NPC_POISON,attack,178,40,5,0,500,yes,target,always,0,0,10,0,0,0,
-1050,Larvespa@NPC_POISON,attack,178,20,50,0,500,yes,target,always,0,0,10,0,0,0,
-1082,Serqet@NPC_POISON,attack,178,20,50,0,500,yes,target,always,0,0,10,0,0,0,
-1010,Snake@NPC_POISON,attack,178,20,80,0,400,yes,target,always,0,0,10,0,0,0,
-1021,CaveSnake@NPC_POISON,attack,178,10,20,0,500,yes,target,always,0,0,10,0,0,0,
-1026,MountainSnake@NPC_POISON,attack,178,60,100,0,300,yes,target,always,0,0,10,0,0,0,
-1034,GrassSnake@NPC_POISON,attack,178,45,200,0,200,yes,target,always,0,0,10,0,0,0,
-1024,PoisonSkull@NPC_POISON,attack,178,50,500,0,400,yes,target,always,0,0,10,0,0,0,
-1014,PinkFlower@NPC_SUMMONSLAVE,any,198,1,10000,1000,60000,no,self,slavelt,4,1049,0,0,0,0,
-1095,WhiteBell@NPC_SUMMONSLAVE,any,198,1,10000,1000,60000,no,self,slavelt,4,1093,0,0,0,0,
-1049,Bee@NPC_POISON,attack,178,20,1000,0,500,yes,target,always,0,0,10,0,0,0,
-1049,Bee@NPC_SELFDESTRUCTION,attack,175,1,1000,0,500,yes,self,notintown,0,30,0,0,0,0,
-1139,Virus@NPC_POISON,attack,178,50,1500,1000,600,yes,target,always,0,0,10,0,0,0,
-// The Lost Abilities
-1073,TheLost@NPC_SUMMONSLAVE_DMUSHX2X,any,198,1,8000,1000,5000,no,self,slavelt,2,1106,0,0,0,0,
-
-// Reaper Quest mob abilities
-1068,Reaper@NPC_SUMMONSLAVE_ballX1,any,198,1,8000,1000,5000,no,self,slavelt,1,1070,0,0,0,0,
-1068,Reaper@NPC_SUMMONSLAVE_scytheX2,any,198,1,8000,1000,5000,no,self,slavelt,2,1070,0,0,0,0,
-1070,BallLightning@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,notintown,0,30,0,0,0,0,
-// Rossy Quest
-1086,FeyElement@NPC_SUMMONSLAVE_earthspiderX1,any,198,1,5000,100,500,no,self,slavelt,6,1083,0,0,0,0,
-1086,FeyElement@NPC_SUMMONSLAVE_earthscorpionX1,any,198,1,5000,100,500,no,self,slavelt,6,1084,0,0,0,0,
-
-// Luvia skills
-// 7-8 permanent demonic spirits + 1 witch guard every 60s + 1 demonic spirit every 20s
-1102,Luvia@NPC_SUMMONSLAVE_witchguardX1,any,198,1,10000,1000,60000,no,self,slavelt,32,1103,0,0,0,0,
-1102,Luvia@NPC_SUMMONSLAVE_demonicspiritX2,any,198,2,10000,10,5000,no,self,slavelt,7,1101,0,0,0,0,
-1102,Luvia@NPC_SUMMONSLAVE_demonicspiritX1,any,198,1,10000,10,20000,no,self,slavelt,64,1101,0,0,0,0,
-
-//The Dread Pirate Marley Skills
-1122,TheDreadPirateMarley@NPC_SUMMONSLAVE,any,198,2,8000,1000,5000,no,self,slavelt,1,1123,0,0,0,0,
-
-// SUSAN skills
-1134,SUSAN@NPC_EMOTION,idle,199,1,200,0,5000,yes,self,always,0,118,0,0,0,0,
-//1134,SUSAN@NPC_EMOTION,idle,199,1,200,0,5000,yes,target,always,0,104,0,0,0,0, <= FIXME!
-1134,SUSAN@NPC_SUMMONSLAVE,any,198,9,1000,1000,5000,no,self,slavelt,69,1135,0,0,0,0,
-
-// Tormenta skills
-// 7-8 permanent demonic spirits + 1 jack O every 150s + 1 witch guard every 70s + 1 demonic spirit every 30s + Poison
-1137,Tormenta@NPC_SUMMONSLAVE_jackoX1,any,198,1,10000,1000,150000,no,self,slavelt,32,1022,0,0,0,0,
-1137,Tormenta@NPC_SUMMONSLAVE_witchguardX1,any,198,1,10000,1000,70000,no,self,slavelt,32,1103,0,0,0,0,
-1137,Tormenta@NPC_SUMMONSLAVE_demonicspiritX2,any,198,2,10000,10,15000,no,self,slavelt,7,1101,0,0,0,0,
-1137,Tormenta@NPC_SUMMONSLAVE_demonicspiritX1,any,198,1,10000,10,32000,no,self,slavelt,64,1101,0,0,0,0,
-1137,Tormenta@NPC_POISON,attack,178,10,300,0,500,yes,target,always,0,0,10,0,0,0,
-
-// Zax De'Kagen skills
-// I believe I'll make his fight script controlled. Or not.
-1142,Kage@NPC_SUMMONSLAVE_skelX2,any,198,2,10000,1000,30000,no,self,slavelt,32,1043,0,0,0,0,
-1142,Kage@NPC_SUMMONSLAVE_golemX1,any,198,1,10000,1000,120000,no,self,slavelt,12,1145,0,0,0,0,
-1142,Kage@NPC_SUMMONSLAVE_flashmobX1,any,198,1,10000,1000,120000,no,self,slavelt,12,1146,0,0,0,0,
-1142,Kage@NPC_SUMMONSLAVE_koyntetyX1,any,198,1,10000,1000,120000,no,self,slavelt,12,1147,0,0,0,0,
-
-// Golem skills
-// Extremely dangerous.
-1145,Golem@NPC_SUMMONSLAVE_tenguX2,any,198,2,9000,1000,155000,no,self,slavelt,6,1140,0,0,0,0,
-1145,Golem@NPC_SUMMONSLAVE_sasquatchX2,any,198,2,9000,1000,155000,no,self,slavelt,6,1141,0,0,0,0,
-1145,Golem@NPC_SUMMONSLAVE_slayerX2,any,198,2,9000,1000,155000,no,self,slavelt,6,1143,0,0,0,0,
-1145,Golem@NPC_POISON,attack,178,10,1800,0,500,yes,target,always,0,0,10,0,0,0,
-
diff --git a/world/map/db/params.txt b/world/map/db/params.txt
deleted file mode 100644
index b2ff80c8..00000000
--- a/world/map/db/params.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-// Params usable in scripts
-// see SP enum in clif.t.hpp
-
-// TODO finish that list and add comments
-// TODO refactor: make the names match their SP:: counterpart <== halfway done
-
-BASEEXP 1 1
-JOBEXP 2 1
-Hp 5 1
-MaxHp 6 1
-Sp 7 1
-MaxSp 8 1
-STATUSPOINT 9 1
-HEALXP 10 1
-BaseLevel 11 1
-SKILLPOINT 12 1
-Str 13 1
-Agi 14 1
-Vit 15 1
-Int 16 1
-Dex 17 1
-Luk 18 1
-Class 19 1
-Zeny 20 1
-Sex 21 1
-NEXTBASEEXP 22 1
-NEXTJOBEXP 23 1
-Weight 24 1
-MaxWeight 25 1
-ATK1 41 1
-ATK2 42 1
-MATK1 43 1
-MATK2 44 1
-DEF1 45 1
-DEF2 46 1
-MDEF1 47 1
-MDEF2 48 1
-HIT 49 1
-FLEE1 50 1
-FLEE2 51 1
-CRITICAL 52 1
-JOBLEVEL 55 1
-PARTNER 57 1
-GM 500 1
-ATTACKRANGE 1000 1
-ELTLVL 1001 1
-ELTTYPE 1002 1
-BASE_ATK 1014 1
-POS_X 1074 1
-POS_Y 1075 1
-PVP_CHANNEL 1076 1
-BL_ID 1077 1
-BL_TYPE 1078 1
-CHAR_ID 1079 1
-INVISIBLE 1080 1
-HIDDEN 1081 1
-MUTE_GLOBAL 1082 1
-MUTE_WHISPER 1083 1
-MUTE_PARTY 1084 1
-//MUTE_GUILD 1085 1
-AUTOMOD 1086 1
diff --git a/world/map/db/quest-log.txt b/world/map/db/quest-log.txt
deleted file mode 100644
index 37e137f3..00000000
--- a/world/map/db/quest-log.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-//Quest Log
-//Quest ID: var id used by client
-//CommonVar: Used in getq & to set
-//ServerVar: Server Varaible value is stored
-//SHIFT: Posistion shifted. (SHIFT * MASK)
-//MASK: Size of shift to make. ((1 << MASK) - 1) << (SHIFT * MASK)
-//Quest ID,CommonVar,ServerVar,SHIFT,MASK
-1,QL_BEGIN,STARTAREA,0,4
-2,QL_VALON,STARTAREA,1,4
-3,QL_MORGAN,STARTAREA,3,4
-4,QL_ZEGAS,STARTAREA,4,4
-5,QL_VINCENT,QUEST_SouthTulimshar,4,2
-6,QL_HIDENSEEK,QUEST_NorthTulimshar,0,8
-7,QL_WELL,QUEST_Nivalis_state,4,4
-8,QL_CINDY,QUEST_Nivalis_state,5,4
-9,QL_BAKTAR,QUEST_Nivalis_state,0,8
-10,QL_BSAGE_INVESTIGATE,QUEST_BlueSage,3,4
-11,QL_SOUP,QUEST_SouthTulimshar,0,4
-12,QL_SARAH,QUEST_SouthTulimshar,2,2
-13,QL_SANDRA,QUEST_SouthTulimshar,6,2
-// Not done
-14,QL_MINEALL,QUEST_SouthTulimshar,2,8
-15,QL_FIERI,QUEST_SouthTulimshar,6,4
-16,QL_IMEC,QUEST_NorthTulimshar,4,2
-17,QL_BANU,QUEST_NorthTulimshar,5,2
-18,QL_ANWAR,QUEST_NorthTulimshar,3,4
-19,QL_KYLIAN,QUEST_NorthTulimshar,5,4
-20,QL_TERRANITE_ARMOR,QUEST_NorthTulimshar,6,4
-// 21 => assassin quest
-22,QL_CELESTIA,QUEST_Hurnscald,2,8
diff --git a/world/map/db/skill_db.txt b/world/map/db/skill_db.txt
deleted file mode 100644
index 2496e25f..00000000
--- a/world/map/db/skill_db.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-//id, range, hit, inf, pl, nk, maxrse, max, list_num, castcancel, cast_defence_rate, inf2, maxcount, skill_type, blow_count, pool, stat, name
-1, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 0, 0, none, 0, no, none, Emote//NV_EMOTE
-2, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 0, 0, none, 0, no, none, Trade//NV_TRADE
-3, 0, 0, 0, 0, 0, 0, 2, 0, no, 0, 0, 0, none, 0, no, none, Party//NV_PARTY
-4, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, weapon, 0, no, none, X0//SM_SWORD
-6, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X1//SM_RECOVERY
-11, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X2//MG_SRECOVERY
-38, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X3//MC_INCCARRY
-39, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X4//MC_DISCOUNT
-40, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, none, 0, no, none, X5//MC_OVERCHARGE
-50, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, weapon, 0, no, none, X6//TF_DOUBLE
-51, 0, 0, 0, 0, 0, 0, 10, 0, no, 0, 0, 0, weapon, 0, no, none, X7//TF_MISS
-54, 1, 6, 4, 0, 0, 0, 100, 1, no, 0, 1, 0, none, 0, no, none, X8//TF_POISON
-144, 0, 6, 4, 0, 1, 0, 1, 1, no, 0, 1, 0, none, 0, no, none, X9//NV_FIRSTAID
-146, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 1, 0, none, 0, no, none, X10//SM_MOVINGRECOVERY
-148, 0, 0, 0, 0, 0, 0, 1, 0, no, 0, 1, 0, weapon, 0, no, none, X11//SM_AUTOBERSERK
-152, 0, 6, 4, 0, 1, 0, 1, 1, no, 0, 1, 0, weapon, 5, no, none, X12//TF_BACKSLIDING
-178, 1, 6, 4, 0, 0, 0, 100, 1, no, 0, 1, 0, none, 0, no, none, X13//NPC_POISON
-190, 1, 6, 4, 0, 0, 0, 100, 1, no, 0, 1, 0, none, 0, no, none, X14//NPC_POISONATTACK
-198, 0, 0, 4, 0, 1, 0, 10, 1, no, 0, 2, 0, magic, 0, no, none, X15//NPC_SUMMONSLAVE
-199, 0, 0, 4, 0, 1, 0, 10, 1, no, 0, 2, 0, none, 0, no, none, X16//NPC_EMOTION
-339, 0, 0, 0, 0, 0, 0, 3, 0, no, 0, 0, 0, none, 0, no, none, Skill_Pool//SKILL_POOL
-340, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Magic//TMW_MAGIC
-341, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Life_Magic//TMW_MAGIC_LIFE
-342, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, War_Magic//TMW_MAGIC_WAR
-343, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Transmutation_Magic//TMW_MAGIC_TRANSMUTE
-344, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Nature_Magic//TMW_MAGIC_NATURE
-345, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Astral_Magic//TMW_MAGIC_ASTRAL
-346, 0, 0, 0, 0, 0, 0, 5, 0, no, 0, 0, 0, magic, 0, no, none, Dark_Magic//TMW_MAGIC_DARK
-350, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,agi, Brawling //TMW_BRAWLING
-351, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,luk, Lucky_Counter //TMW_LUCKY_COUNTER
-352, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, none, 0, passive,agi, Speed //TMW_SPEED
-353, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, none, 0, passive,vit, Poison_Resistance //TMW_POISON_RESISTANCE
-354, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, magic, 0, passive,int, Astral_Soul //TMW_ASTRAL_SOUL
-45, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,dex, Mallard's_Eye //AC_OWL
-355, 0, 0, 0, 0, 0, 9, 10, 0, no, 0, 0, 0, weapon, 0, passive,str, Raging //SKILL_RAGING implemented
-28, 0, 6, 4, 0, 1, 0, 2, 1, yes, 0, 0, 0, magic, 0, no, none, Teleport //AL_TELEPORT
-30, 9, 6, 16, 0, 1, 0, 10, 1, yes, 0, 0, 0, magic, 0, no, none, Heal //AL_HEAL
-// maxrse describes the max. level that the skill can be raised to through the `raise skill' option. Further raising has to happen via quests.
-// maxrse < max.
-// `pool' can be `no', `active', or `passive'.
-// `stat' can be `none', `str', `dex', `agi', `vit', `int', `luk'.
-//
-// SEE COMMENT ABOVE!
diff --git a/world/map/news.d/17-beanie-easter.txt b/world/map/news.d/17-beanie-easter.txt
deleted file mode 100644
index cc99040d..00000000
--- a/world/map/news.d/17-beanie-easter.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-{title:Easter Event and Miley's Hero}
-{date:2013-03-21}
-
-Today we have a content release.
-
-As always there are a number of bugfixes,
-but also two new quests.
-
-One of them is an annual Easter event created by Pjotr Orial.
-It lasts from March, 22th to April, 25th, and can be
-repeated every year.
-Watch out around Hurnscald for some hidden Easter Eggs!
-
-The other quest is about the admiration of a little
-girl in Hurnscald that sees you growing from an
-inexperienced adventurer to an impressive hero.
-Backstage, this was also about a great community effort.
-veryape conceived of the idea for this quest and was able
-to make it happen with the help of many people who were
-assisting with the graphics, scripting, spell checking,
-testing and giving valuable feedback.
-
-Lastly, Brodomir's cave under Hurnscald has been made
-easier for attracting fighters from all over the world.
-
-{author:Jenalya}
diff --git a/world/map/news.d/18-bugfixes.txt b/world/map/news.d/18-bugfixes.txt
deleted file mode 100644
index 67d0a343..00000000
--- a/world/map/news.d/18-bugfixes.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-{title:Small Bugfixes}
-{date:2013-04-28}
-
-We're having a bugfix release today.
-
-The main areas that have been fixed are Brodomir's PvP Cave
-and Orum's quest, both in the
-caves below Hurnscald.
-
-Additionally, there were a lot of small fixes
-on maps, spelling and grammar, and more.
-
-We'd like to thank all the people who reported issues and helped
-testing!
-
-{author:Jenalya}
diff --git a/world/map/news.d/19-rollbackup.txt b/world/map/news.d/19-rollbackup.txt
deleted file mode 100644
index d5dbec51..00000000
--- a/world/map/news.d/19-rollbackup.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-{title:Server Crash and Rollback}
-{date:2013-06-05}
-
-We had a server crash, and had to restore everything from offline backup.
-
-34 hours were lost, from about 17:30 (UTC) on 4 June to about 03:30 on 6 June. This affects the game, the forums, and the wiki.
-
-We're going to set up hourly offsite backups of game, forum, and wiki data so that future outages are less painful.
-
-{author:Frost}
diff --git a/world/map/news.d/20-double-exp-drop.txt b/world/map/news.d/20-double-exp-drop.txt
deleted file mode 100644
index f1d84918..00000000
--- a/world/map/news.d/20-double-exp-drop.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{title:Double Exp and Drop Weekend}
-{date:2013-06-07}
-
-This weekend we're temporarily doubling both the
-experience rate and the drop rates for all monsters,
-to give the chance to recover from the rollback
-we had due to filesystem corruption.
-
-There are also some bug fixes and new content:
-
-The craftsmen of Tulimshar have finally moved to the
-renovated Forge at the Northern Market, so the
-Wizard's Inn is back to offering a calm stay for visitors.
-
-In the woodland area the mysterious Evil Obelisk which
-summons beings from the astral plane for the mundane
-price of gold has drastically reduced its demands.
-
-On the technical side, in case of network congestion,
-you will no longer be kicked with an invalid packet error.
-
-{author: TMW Development Team}
diff --git a/world/map/news.d/21-tulimshar-caves.txt b/world/map/news.d/21-tulimshar-caves.txt
deleted file mode 100644
index 24efd44f..00000000
--- a/world/map/news.d/21-tulimshar-caves.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-{title:Wushin overhauled caves, Ferry now goes to Nivalis}
-{date:2013-06-29}
-
-This release brings a few new additions to the game:
-
-Wushin overhauled the desert caves with an awesome
-new cave tileset. Also the sewers below Tulimshar are
-now accessible. Make sure to check them out!
-
-Malivox took the occasion to stop camping in the
-desert and moved into a small house south of
-Tulimshar.
-
-Frozenbeard has expanded his ferry service in
-Nivalis. You can now go between Nivalis and
-the other major docks both ways. Proper docks for
-Nivalis are being worked on.
-
-With a ferry now serving Nivalis, Dyrin will send you
-somehwere else in Kaizei instead, away from Nivalis.
-
-As usual there are also a lot of smaller fixes and
-changes. Thanks to everyone who reported issues
-and helped fix these things!
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/22-orum-extension.txt b/world/map/news.d/22-orum-extension.txt
deleted file mode 100644
index c2a04543..00000000
--- a/world/map/news.d/22-orum-extension.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-{title:Announcing Code update - Introducing Dark Magic}
-{date:2013-09-03}
-
-{gray}First, a technical announcement. During a future
-restart, TMW will start requiring your username
-to exactly match the case that you signed up with.
-
-Previously, this was enforced erratically, and led
-to people losing access to their accounts. If, after
-the update, you are unsure of the case of the account
-{red}and have already tried lowercase, UPPERCASE, and TitleCase,{/red}
-please contact o11c or Frost.
-
-Now, back to your regularly scheduled content news.{/gray}
-
-Today we have introduced two new pieces.
-
-First of all, the Orum extension is finished.
-Orum and his master Waric have set a new base
-to mess with Sagatha. Seek them out! They
-hide somewhere in the Caves north of Sagatha's
-Forests.
-
-Someone has seen a few new spells being used.
-No one is yet sure what exactly it is but a dark aura
-has been percieved somewhere north of Hurnscald.
-Find it! Maybe you can gain something useful!
-
-Last but not least we have to announce bad news
-for the project but good news for her:
-Jenalya has, after finishing the Orum extension,
-resigned from her position as Lead Content
-Developer. We dedicate this news to her and
-wish her only the very best for her future. She
-contributed beyond words and her leaving
-will leave a spot we will have to work hard to fill.
-Wushin and tux9th took over as Lead Content Developers
-and give their best to bring quality content to you,
-like Jenalya did.
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/23-astral-extension.txt b/world/map/news.d/23-astral-extension.txt
deleted file mode 100644
index 87d32cfa..00000000
--- a/world/map/news.d/23-astral-extension.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-{title:Astral Magic Extension}
-{date:2013-09-14}
-
-We have a small content release today.
-A witch in Tulimshar has found some daunting spells
-for mages who are experienced in Astral Magic.
-Talk to her about that. Maybe she is willing to teach you.
-
-With this update, we have added some minor bugfixes for the
-Waric script, Bluepar sprite and Wicked Mushroom sprite.
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/24-code-release.txt b/world/map/news.d/24-code-release.txt
deleted file mode 100644
index f6a180e0..00000000
--- a/world/map/news.d/24-code-release.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-{title:Fixes in Server Code}
-{date:2013-09-28}
-
-As you might have found out we had another restart yesterday.
-
-Most of the changes for this restart are under the hood: this was
-a Server Code release. Meaning the server's software was
-changed but not the content. Hence user-facing changes are minimal,
-but we'll outline below what's relevant.
-
-The restart didn't work as smoothly as expected but we
-are working hard on fixing all the issues which turned up.
-
-Currently known bugs that affect players:{ul}
- {li}None{/li}{/ul}
-
-Other bugs:{ul}
- {li}GM logs are now full-buffered (faster) instead of line-buffered.{/li}
- {li}Admin documentation is wrong.{/li}{/ul}
-
-Fixed bugs:{ul}
- {li}Problems with startup speed (possibly not new, fixed anyway).{/li}
- {li}Guildbot wouldn't start.{/li}
- {li}Some accounts and storages with corrupted items were deleted.{/li}
- {li}You can turn every direction except right.{/li}
- {li}Inability to trade, except when naked.{/li}
- {li}Warp bug related to the new Orum/Waric quest.{/li}
- {li}Elemental bonus/malus not applied to magic.{/li}
- {li}Update stats from the new CDN.{/li}
- {li}Script bug with Kylian and checkweight.{/li}
- {li}Drop order was wrong.{/li}
- {li}Rossy caves now notice when you win fights.{/li}
- {li}Fix an incorrectly marked assertion, which could fail.{/li}
-{/ul}
-
-{red}If you encounter any more bugs or problems please
-report back immediately. Post on the forums
-{link:http://forums.themanaworld.org/viewtopic.php?f=1&t=17729}{/red}
-
-A big behavioural change has been made to the Login Server
-From now on the login name is case sensitive, this means
-it matters whether you write a capital letter or not.
-{gray}e.g. if you registered an account name Test, and always
-logged in as test, this now no longer works. You have to
-log in as Test.{/gray}
-If you forgot how you originally registered your account,
-and cannot log in, please checkout the forums
-{link:http://forums.themanaworld.org/viewtopic.php?f=1&t=17737}.
-
-Please be aware that these code changes were necessary to move
-the game forward. The server was formerly very hard to work on or
-modify. This update goes a long way to fixing that and will allow the
-developers to bring you new and exciting things in the future.
-
-We are very sorry for the inconvenience. We have been working
-as hard as we can to fix all the issues above.
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/25-halloween.txt b/world/map/news.d/25-halloween.txt
deleted file mode 100644
index 208bb4ec..00000000
--- a/world/map/news.d/25-halloween.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{title:Halloween 2013}
-{date:2013-10-30}
-
-Happy Halloween!
-
-Also, some minor bugs have been fixed with Waric and Rossy.
-Alas poor Waric, Will he ever learn to behave properly?
-
-{author:MadCamel}
diff --git a/world/map/news.d/26-unequipcb.txt b/world/map/news.d/26-unequipcb.txt
deleted file mode 100644
index c692b647..00000000
--- a/world/map/news.d/26-unequipcb.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-{title:Icon and Weapon Updates}
-{date:2013-11-30}
-
-With this update we ship new and better item icons.
-Those have been done a long time ago and we
-finally finished reviewing them all.
-
-The behavior of items when you do not meet their
-requirements has changed.
-
-As a result, a new type of ranged weapon has
-been introduced: the Sling Shot. You can get it
-somewhere in Tulimshar. We are aware of some
-small graphical glitches.
-
-The behaviour of the happy-curse
-for dark mages has been changed.
-You might want to try it out. ]:-)
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/27-xmas-event.txt b/world/map/news.d/27-xmas-event.txt
deleted file mode 100644
index 85e36372..00000000
--- a/world/map/news.d/27-xmas-event.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{title:Christmas Season in The Mana World}
-{date:2013-12-25}
-
-Happy Holidays!
-
-This year has been horrible for Santa.
-Nothing turned out as it was intended, in fact he didn't
-even make it at the usual date.
-
-Gladly, Avalia, Santa's utterly attractive apprentice stepped in
-to make Christmas happen for all of the children and lonely
-people around the mana world. Go to his workshop and see if
-you can help to make the magic of christmas happen,
-
-... or make it a complete disaster,
-Orum has some helpers hidden in Nivalis who will guide your
-way sabotaging christmas.
-
-This release is very late, so we are going to change reward
-and event time accordingly.
-
-The good thing is that you will now be able to visit
-Santa's Inn throughout the year.
-Cassy breathed life into all those reinboos of last
-years Holidays.
-Fothers Candied Slimes are going to cause the sweetest nightmares
-you have ever had. Not sure if you are cruel enough to kill
-a Pollett.
-
-{author: The Mana World Development Team}
diff --git a/world/map/news.d/28-troll-map.txt b/world/map/news.d/28-troll-map.txt
deleted file mode 100644
index 2b6a35d7..00000000
--- a/world/map/news.d/28-troll-map.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-{title:Old Tree, New Grind}
-{date:2014-02-03}
-
-Today's update includes bug fixes for the
-Christmas Event (thanks to Chay).
-Also the famous Hurnscald tree is back to its usual form.
-
-Southeast of Tulimshar, in the caves, you will find the
-new map 043-4 which was designed to give you a
-better possibility to train your character at the levels
-around 60-80. Besides well-known monsters you
-will find three new mobs there: Trolls, Undead
-Trolls and Undead Witches. Thanks to Fother for
-the great Troll graphics!
-
-Have fun with this update!
-
-{author:Cassy and a bunch of lunatics with magic markers}
diff --git a/world/map/news.d/29-rc-one.txt b/world/map/news.d/29-rc-one.txt
deleted file mode 100644
index 7cddb743..00000000
--- a/world/map/news.d/29-rc-one.txt
+++ /dev/null
@@ -1,141 +0,0 @@
-{title:The more things change...}
-{date:2014-04-16}
-{red}Attention Major Release:{/red}
-{ul}
-{li}Mana EOL{/li}
-{li}Server dependencies{/li}
-{li}Script clean-up{/li}
-{li}Magic clean-up{/li}
-{li}Sprite 1.5 - Npcs As Sprites{/li}
-{li}Tilesets{/li}
-{li}Travel / Death / Warps{/li}
-{li}Client-data clean-up{/li}
-{li}Tonori Improvement{/li}
-{li}Graveyard Improvement{/li}
-{/ul}
-
-Mana EOL:
- With this release, we are finally declaring the
-Mana client obsolete. 90% of players are already
-using ManaPlus.
-
-Server dependencies:
- The next release of the server code will require
-a newer version of GCC: 4.7 instead of 4.6. This is
-possible because Ubuntu is releasing a new LTS
-so that servers can reasonably be expected to be
-able to upgrade.
-
- GCC 4.7 will be supported for much longer - a
-year and a half or two years, until the next Debian
-release.
-
- The next release will also drop the dependency
-on Flex and Bison ... which is more significant for
-making the build system simpler and the surrounding
-code cleaner than for actually being hard to acquire.
-
-Script:
- TMWA increased the level of debugging for
-script parsing. The script language no longer
-allows default fall throughs or '-' for a
-menu option. It now reports Unused & Duplicate
-labels The menu fix was added to pave the
-development of dynamic menus.
-Simply running your script in the server reports
-all errors in the scripts.
-
-Magic:
- Magic is now using a new config file format,
-which will simplify build dependencies in future.
-Anybody with local spells will need to manually
-convert them. Although we have some helper
-programs (tmwa-spell-convert and tmwa-sexpr),
-For support of these ask on IRC
-{link:irc://chat.freenode.net/themanaworld}
-
-Sprite 1.5/Npcs As Sprites:
- Sprite directory naming convention cleaned
-up. If an NPC wasn't animated it was made into
-a player sprite with equipment. Thus anything
-you see most the NPCs wearing will/can be
-wearable player gear. We fixed and added more
-gear than was currently in the main so a bunch
-of new items have been added. Additional attack
-frames add more weapon varieties and NPC
-animations. As since the npcs are a sprite any
-action the player sprite can do the NPC could.
-It allows us to implement a mobile NPC. Most of
-the sprites have dyes now. Including the player
-sprite. This will make adding new races easier.
-
- Making the NPCs player sprites makes it
-easier to create them as well. If you can edit
-an xml you can create a NPC. This will make it
-quicker to start developing. Custom/Special
-NPCs still exist, (see GY INN), They need to be
-justified as to why they can't be a Doll model.
-
- Errors in the sprite should now be clearly
-visible as we fixed the error image in the
-client-data. It will draw an ugly error tile.
-
-Tilesets:
- Naming covention enforced to make dealing
-with sets easier. Unused/old or broken sets
-fixed or removed from repo except the plain
-castle set. The Forrest was removed as it needs
-to be properly cut to make it easier to map with.
- Tilesets will begin to be collasped into each
-other. As they share a common/similiar theme
-and/or style.
- We added animated water to some of the maps.
-The tileset will work with all of the maps and
-tilesets in game.
- We've begun to fill empty spaces in the tilesets
-with a Open/Free marker. These will help us find
-maps with errors.
-
-Travel / Death / Warps:
- Plain Hitchiker Towels are now part of the
-starting gear. If you lost, sold or don't have a
-towel ask the nearest soul menhir for a replacement.
-All towel colors are available and each is set
-to a location. Only the plain undyed towel can bind
-to a soul menhir. The towels now have to wait to
-recharge to be used again.
- Death is no longer travel system. Localized
-graveyards keeps you close to the action. This
-means shorter walks back from the graveyard and
-illia doesn't reset your savepoint anymore.Using a
-towel, a warp or walking is the only way back to a
-city.
- Ship Travel does not cost anything anymore. The
-ship now moves between the major docks. The ferry
-schdules are available by the docks so you know where
-it currently is. Once aboard wait for the ship to
-come into the location you want and disembark.
- Dyrin's sect of wizards "The Travelers" have
-appeared in more locations about the world. speaking
-with 2 members of his sect will allow you to move
-between them, for a price. Members are located
-throughout the world.
-
-Tonori Improvement:
- Added major art map additions to Tulimshar &
-surrounding areas. Castle, Noble, Beach Cliffs ,
-& etc.
- Starting area clean-up. Quest now uses bitmasking.
-Sorfina gives you your first towel. Altered NPCs and
-map to make room for Beach Cliffs.
- The children playing hide & seek have been spread
-out more to encourage exploring the wider areas
-surrounding the city.
-
-Graveyard Improvement:
- Added major art map additions to the Graveyard &
-surrounding areas. More maps to grind Xp and to offer
-a change of pace. These maps also have 3 new
-mini-bosses for 60+ level characters. The Graveyard
-reset has been removed.
-{author:TMW Team}
diff --git a/world/map/news.d/30-v2014.4.21.txt b/world/map/news.d/30-v2014.4.21.txt
deleted file mode 100644
index dcada158..00000000
--- a/world/map/news.d/30-v2014.4.21.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-{title:Here we go again on our own!}
-{date:2014-04-21}
-
-Thanks for all the great feedback.
-
-{ul}
-{li}General Terragon's Battle Fixed{/li}
-{li}General Razha's Battle Fixed{/li}
-{li}Added missing resave flags to maps{/li}
-{li}Fixed minimap-render for symlink{/li}
-{li}minimap-render ignores Collision{/li}
-{li}Music naming convention enforce{/li}
-{li}Music added to all maps{/li}
-{li}Aniblaze made dyable{/li}
-{li}Minimaps added for ships{/li}
-{li}replaced desert_city_indoor & _x3{/li}
-{li}Fixed Beanie Copter update corruption{/li}
-{li}Fix Female Dark Blue Skirt Sprite{/li}
-{/ul}
-
-{author:TMW Development}
diff --git a/world/map/news.d/31-v2014.5.6.txt b/world/map/news.d/31-v2014.5.6.txt
deleted file mode 100644
index 250d2c59..00000000
--- a/world/map/news.d/31-v2014.5.6.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-{title:No one speaks English good.}
-{date:2014-05-06}
-
-Ahoy Manazins! Todays release brings new music to the boats.
-Otherwise the release is primarly for bug fixes.
-
-Server-Data:
-{ul}
-{li}Dialogue changes to NPCs{/li}
-{li}Luvia prevented from spawning infinite slaves{/li}
-{li}Price of Towels to sell is 0GP{/li}
-{li}Towel aquistion rate limited{/li}
-{li}Added cooldown to multiple towel use{/li}
-{/ul}
-
-Client-data:
-{ul}
-{li}Luvia Base model fixed{/li}
-{li}Sail away added to boats{/li}
-{li}Status Icon Adjustments{/li}
-{li}Male Robe clean-up{/li}
-{li}Skull Potion generic item added{/li}
-{li}Map atlases complete{/li}
-{li}MapFixes: 022-1, 042-1, 027-4, 043-1, 005-1{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/32-v2014.5.20.txt b/world/map/news.d/32-v2014.5.20.txt
deleted file mode 100644
index b490d04a..00000000
--- a/world/map/news.d/32-v2014.5.20.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-{title:Small Update}
-{date:2014-05-20}
-
- Small updates to change some things.
-More changes coming soon enough. As always
-TMW is looking for help; Wiki Edits, Devs,
-and Testers.
-
-{b}How to develop:{/b}
-{link:http://tinyurl.com/mxnnuez}
-{b}Whats being developed:{/b}
-{link:http://tinyurl.com/mt8r8pb}
-
-{ul}
-{li}Caretakers Wife switched to a NPC.{/li}
-{li}Fixed Mirror in Wizard's house to
- no longer randomly assign non-existent
- hairstyle "Bald"{/li}
-{li}Using a Warp Towel with multiples in
- your inventory will no longer randomly
- warp you and set your towel to that
- location. The will however still remove
- all but one when dying or using them.{/li}
-{li} Split the servers Monster Database
- up into smaller files. (it's currently
- one giant text file, now they are broken
- up by monster levels.){/li}
-{/ul}
-
-You can Always find whats going to
-be new via the set of links on this post
-{link:http://tinyurl.com/l5pko8r}
-
-{author:The Manaworld Development Team}
diff --git a/world/map/news.d/33-v2014.6.17.txt b/world/map/news.d/33-v2014.6.17.txt
deleted file mode 100644
index 15707cb5..00000000
--- a/world/map/news.d/33-v2014.6.17.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-{title:Item Split & Mob Shuffle}
-{date:2014-06-17}
-
-Item Db was split into multiple files to make
-it easier to maintain.
-
-Added Mobs/Mob improvements:
-{ul}
-{li}Existing Mushrooms Art{/li}
-{li}Moonshroom Added (Not In-game){/li}
-{li}Mana-Bug Added (Not In-Game){/li}
-{li}White Bell is now Agressive and has attacks{/li}
-{/ul}
-
-Mapflags Added to 004-3,-4,-5 to respawn local.
-
-Rasin made accessiable for lowbies (hide n seek).
-
-Banu pointing to forge to buy a knife.
-
-Towel Cooldown accurately reflects the server cooldown.
-
-monsters.xml is now relational with the Mob_db ID
-(ex: maggot is now 1002 in both files.)
-
-{author:The Mana World Development Team}
diff --git a/world/map/news.d/34-v2014.7.1.txt b/world/map/news.d/34-v2014.7.1.txt
deleted file mode 100644
index 0223d511..00000000
--- a/world/map/news.d/34-v2014.7.1.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-{title:Who let this guy write news entries?}
-{date:2014-07-01}
-
-Most of the changes this time are internal, but the
-Starting Area Redux is not. Among other things, it
-make starting with magic not completely hopeless.
-
-In content:
-{ul}
-{li}Starting Area Redux {link:https://forums.themanaworld.org/viewtopic.php?f=2&t=18299}{/li}
-{li}Increasing the compatibility requirement of Manaplus{/li}
-{li}Botcheck & Live Debug map separation{/li}
-{li}GM Island, A Place to hold GM Events so we don't interfere with Hurnscald Questing{/li}
-{li}Hurnscald Map Fixes{/li}
-{li}Sling Shot color changed to wood as it's now able to be dyed{/li}
-{li}License File updates{/li}
-{/ul}
-
-And the server code:
-{ul}
-{li}removes support for gcc 4.6{/li}
-{li}significantly increase makefile speed{/li}
-{li}adds support for libc++{/li}
-{li}removes old flex/bison generated files{/li}
-{li}generates new files for network protocol for much higher reliability (currently slow for rebuilds, waiting on evets for names to avoid conflicts while fixing){/li}
-{li}does random other cleanup{/li}
-{/ul}
-
-{author:o11c}
diff --git a/world/map/news.d/35-v2014.7.3.txt b/world/map/news.d/35-v2014.7.3.txt
deleted file mode 100644
index 52828e24..00000000
--- a/world/map/news.d/35-v2014.7.3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{title:Sounds like another bug hunt.}
-{date:2014-07-03}
-
-We had a major bug hunt and squashed a number
-of problems with the client-data and the client.
-This should clear up and help latency and other
-client bugs.
-
-{author:wushin}
diff --git a/world/map/news.d/36-v2014.7.15.txt b/world/map/news.d/36-v2014.7.15.txt
deleted file mode 100644
index 7dcf812c..00000000
--- a/world/map/news.d/36-v2014.7.15.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-{title:Lag Sickness}
-{date:2014-07-12}
-
-Just a patch fix to eliminate some nasty bugs.
-
-{ul}
-{li}Map Fixes: 003-1, 027-3, 027-4, 009-1{/li}
-{li}Minimap added for 042-3{/li}
-{li}Spawns corrected on 027-2{/li}
-{li}Splitting the Magic files{/li}
-{li}Illia stats/checker open to all devs/GMs{/li}
-{li}Illia now checks level of Helper{/li}
-{li}Properly setting tutorial var in starting area{/li}
-{li}Removing Stand animations from attacks (Hopefully last Sprite fix){/li}
-{li}Adding proper attack particle to Moonshroom{/li}
-{li}Adding proper Skeleton Charm{/li}
-{li}Adding back missing robe colors{/li}
-{/ul}
-
-{author:TMW Dev Team}
diff --git a/world/map/news.d/37-v2014.7.29.txt b/world/map/news.d/37-v2014.7.29.txt
deleted file mode 100644
index 2061d89f..00000000
--- a/world/map/news.d/37-v2014.7.29.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-{title:Sanity Check}
-{date:2014-07-29}
-
-Sanity checks added to client data to
-reflect what manaplus really sees.
-
-make checks in client-data now looks
-through all the xmls to check for
-proper format.
-
-{ul}
-{li}Fixed Sunglasses{/li}
-{li}Tonori Terranites respawn increased{/li}
-{li}Added "toothbrush" for GM events{/li}
-{li}General Code Clean up{/li}
-{li}Fixed item duplication in database{/li}
-{/ul}
-
-{author:The Mana World Dev Team}
diff --git a/world/map/news.d/38-v2014.9.1.txt b/world/map/news.d/38-v2014.9.1.txt
deleted file mode 100644
index fa63e6ae..00000000
--- a/world/map/news.d/38-v2014.9.1.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{title:Now with less spam}
-{date:2014-09-01}
-
-Heya Manakins. Valia should be back in action
-and ready for you to save the day again.
-Be warned she has less patience for fools now.
-
-The Ferry now uses a set of emblems to denote
-where it current is docked along with an audio
-cue.
-
-{ul}
-{li}Valia camper "fixed" & Illia quest
-works again.{/li}
-{li}Ferry uses a Visual and Audio Cue
-instead of annoucements.{/li}
-{li}More beds were made "sleepable"{/li}
-{li}Travelers refer to proper continenets{/li}
-{li}Towels are Worthless{/li}
-{/ul}
-
-{author:The Mana World Dev Team}
diff --git a/world/map/news.d/39-v2014.10.7.txt b/world/map/news.d/39-v2014.10.7.txt
deleted file mode 100644
index b9cddcfa..00000000
--- a/world/map/news.d/39-v2014.10.7.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-{title:Back in Business}
-{date:2014-10-07}
-
-This was a month full of fun for us. First
-if you have not seen it ManaMarket is in a
-public github repo!
-{link:https://github.com/themanaworld/manamarket}
-
-In addition, we made some good strides patching
-TMWA which you might have noticed broke stuff.
-Thanks for bearing with us as we patched and
-continue to patch code.
-
-{ul}
-{li}Kids Book added{/li}
-{li}Chairs on 009-2 fixed for fringe{/li}
-{li}Pirate Beach Fixes to mapping{/li}
-{li}ManaMarket public and working.{/li}
-{li}Mobs spawning mobs works again{/li}
-{li}Parties should have returned{/li}
-{li}Torches, barriers for waric and orum quest line fixed{/li}
-{li}Barriers in the magic school working again{/li}
-{li}Inspector and Forest Bow quest working together{/li}
-{/ul}
-
-{author:The Mana World Dev Team}
diff --git a/world/map/news.d/40-v2014.10.20.txt b/world/map/news.d/40-v2014.10.20.txt
deleted file mode 100644
index c0726a4d..00000000
--- a/world/map/news.d/40-v2014.10.20.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-{title:Happy Halloween!}
-{date:2014-10-20}
-
-Halloween is now active and annual.
-Trick or Treat will happen every year.
-Munro returns as well. He has a special
-Treat for those who are seen participating
-in Trick or Treating, but he does not give
-out his reward until later in the holiday.
-
-Two new Hats: Bucket & Autumn Mask added
-for Halloween.
-
-{ul}
-{li}Map Fixes on 021-2 & 027-2{/li}
-{li}Spelling Corrections in Museum{/li}
-{li}Fixed Contributor Shirt Colors{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/41-v2014.10.23.txt b/world/map/news.d/41-v2014.10.23.txt
deleted file mode 100644
index 21531bf1..00000000
--- a/world/map/news.d/41-v2014.10.23.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{title:Our skin is crawling with Bugs!}
-{date:2014-10-23}
-
-So you don't all get diabetis we are
-patching the treat amounts allowed and
-raising the mask limit.
-
-{ul}
-{li}Map Fixes on 022-1 & 026-1{/li}
-{li}Basic Skills work without learning{/li}
-{li}#debug spell added to test{/li}
-{li}Barbers will work with new Classes{/li}
-{li}Deadmessages added to client updates{/li}
-{li}Fixed Bucket stats in client data{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/42-v2014.11.4.txt b/world/map/news.d/42-v2014.11.4.txt
deleted file mode 100644
index b19f3536..00000000
--- a/world/map/news.d/42-v2014.11.4.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-{title:To Quest or Fight}
-{date:2014-11-4}
-
-Heya Manakins, we have a bunch of updates for you. Kylian
-has had his shop license. Hetchel in Tulimshar Noble
-district needs some help.
-
-The new Races/Species are not yet playable but this release
-requires you to upgrade to the version of Manaplus that
-will allow us to bring them in once more people have upgraded.
-Please upgrade Manaplus at your earliest convience.
-
-{ul}
-{li}Parua (Candor) won't take money if already paid{/li}
-{li}Halloween event time fixed{/li}
-{li}052-2.tmx Fixed map error{/li}
-{li}Set-up client-data Manaplus "Color" system{/li}
-{li}Set-up client-data Species/Race additions{/li}
-{li}Fixed Nigel (Beer Ghost){/li}
-{li}House Maggots Properly Credit Valon's Quest{/li}
-{li}Map Fixes on 022-1 & 042-1{/li}
-{li}Hetchel now has a quest to obtain Silk Pants{/li}
-{li}New mob: Lava Slime{/li}
-{li}The Kylian quest line is extended{/li}
-{li}Crypt bosses now have more HP and more exp{/li}
-{li}The pirates now give less exp{/li}
-{li}The mob spawns in 055-3 are changed (harder botting){/li}
-{li}The Bucket now removes your hair{/li}
-{li}New map: The Sanguine Vault (incl. the fight club){/li}
-{li}The Dimond's Cove music band can now play music{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/43-v2014.11.18.txt b/world/map/news.d/43-v2014.11.18.txt
deleted file mode 100644
index 0a38f4c7..00000000
--- a/world/map/news.d/43-v2014.11.18.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-{title:Candont is Cando again}
-{date:2014-11-18}
-
-Today we have a couple minor bug fixes to quests.
-TMWA is the big release here with the script ASN/AST.
-The script language for TMW has been sanitized.
-If you were developing, we should have updates to
-the wiki pages soon enough. Otherwise, you can
-always find us on IRC.
-{link:https://webchat.freenode.net/?channels=#themanaworld}
-
-{ul}
-{li}Divorce crashes Fixed{/li}
-{li}Poison crashes Fixed{/li}
-{li}ASN/AST script changes{/li}
-{li}#inma works on NPCs{/li}
-{li}Selim's cloth dye option more visible{/li}
-{li}All global timers comply with debug=2 means off{/li}
-{li}Parua (Candor) works again{/li}
-{li}Fight Club avatar shows properly{/li}
-{li}Fight Club mini-game{/li}
-{li}Fix krukan boss points{/li}
-{li}042-1/-2 warp fixes{/li}
-{li}Typos{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/44-v2014.12.04.txt b/world/map/news.d/44-v2014.12.04.txt
deleted file mode 100644
index 36ab4528..00000000
--- a/world/map/news.d/44-v2014.12.04.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-{title:Heathin and Inya}
-{date:2014-12-04}
-
-The big patch this release is Heathin and Inya.
-Heathin has had the price of terranite armor
-reduced, but not the materials. Inya now sells
-Simple Rings for 10 M. The Simple Ring is no
-longer a requirement to starting the Terranite
-Armor quest.
-
-{ul}
-{li}Inya now sells Simple Rings.{/li}
-{li}Terranite Armor costs 10x less to make{/li}
-{li}No Simple Ring requirement to start Terranite Armor{/li}
-{li}Reduced the amount of particle effects in Hurnscald.{/li}
-{li}1 GP Arrows returned to Tulimshar.{/li}
-{li}Lower required version of Manaplus.{/li}
-{li}Pirate Mob Stat fixes.{/li}
-{li}Fix Key Bindings for Tutorial.{/li}
-{li}All scripts use builtin mapexit.{/li}
-{li}Typo Fixes: Krukan & Ferry.{/li}
-{li}Orum Torch Warp Crash fixed.{/li}
-{li}Annual Timings fixed.{/li}
-{li}Terranite Cave and Pachua's Village given proper exits.{/li}
-{li}Added missing frames to Dead Sword (Unreleased){/li}
-{li}Corrected Troll death sequence{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/45-v2015.01.13.txt b/world/map/news.d/45-v2015.01.13.txt
deleted file mode 100644
index ea2f4cb6..00000000
--- a/world/map/news.d/45-v2015.01.13.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-{title:New tutorial, road between Hurnscald and Nivalis and more}
-{date:2015-01-13}
-
-The hugest change in this patch is the one in
-the tutorial, it's faster and more intuitive,
-making new players more comfortable and able
-to explore The Mana World faster. Also, now
-you can reach Nivalis by going through the
-Woodlands which makes a funny new way to travel.
-
-{ul}
-{li}New tutorial starting at Candor Island.{/li}
-{li}Ferry parting from Hurnscald easening access.{/li}
-{li}New travel point from North Woodlands to Nivalis.{/li}
-{li}Cleaned up maps for Desert and Snow Forest.{/li}
-{li}Fixed mixed up item requirement for Crypt quests.{/li}
-{li}Totally remodeled Tulimshar, sewers included.{/li}
-{li}Latoy now sells all kinds of silk stuff.{/li}
-{li}Now Ragged Shorts isn't that useless at all.{/li}
-{li}Nivalis counts with a new, neat tileset.{/li}
-{li}And Desert Mountains too.{/li}
-{li}Minor typos and tile corrections.{/li}
-{li}Reinboo now uses his own base sprite.{/li}
-{li}Added music for GM Island.{/li}
-{li}Tonori Delight now restores a little MP.{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/46-v2015.02.03.txt b/world/map/news.d/46-v2015.02.03.txt
deleted file mode 100644
index 40267aca..00000000
--- a/world/map/news.d/46-v2015.02.03.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-{title:New art in Kaizei and skills description}
-{date:2015-02-03}
-
-Starting with an errata: new tilesets for
-Kaizei continent were announced for the last
-update but actually they are the feature for
-this one. Lots of typos in Xmas Inn were
-corrected, and there are totally new descriptions
-for skills that are featured on Skills window.
-Parua has now some explanations about why Candor
-battle exists, for the most curious ones.
-
-{ul}
-{li}New art in Kaizei (Nivalis){/li}
-{li}Typos in Ragged Shorts and Xmas Inn{/li}
-{li}Explanations given in Candor{/li}
-{li}Bandit Cave warp fixes{/li}
-{li}Descriptions added to skills window{/li}
-{li}Fix on shop prices (according to item_db){/li}
-{li}Trader moved out of bedroom in general store{/li}
-{li}Roulette now takes coins after the bet{/li}
-{li}Selim now checks what items are in your inventory{/li}
-{li}The blankets in hurnscald are now shorter{/li}
-{li}The minimaps have been updated{/li}
-{li}Fix for the the ages-old torch cave bug{/li}
-{li}A lot of technical changes to several NPCs so they'll work better{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/47-v2015.03.10.txt b/world/map/news.d/47-v2015.03.10.txt
deleted file mode 100644
index 9be33a3f..00000000
--- a/world/map/news.d/47-v2015.03.10.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{title:New bank in Candor}
-{date:2015-03-10}
-
-This week's release is again a small release as we focus our efforts on fixing bugs to move to a new server software in the near future.
-
-{ul}
-{li}The towel now tells you the cooldown time{/li}
-{li}Candide has more personality and has been completely rewritten{/li}
-{li}A previous update made the forest bow quest impossible to complete. This is now fixed{/li}
-{li}The global announcements of several NPCs have been fixed to work better with ManaPlus{/li}
-{li}Candor now has a bank!{/li}
-{li}Garçon is renamed to Garcon to fix a Unicode problem{/li}
-{li}Lots of bug fixes for better compatibility with Hercules-Evol{/li}
-{li}The dye/bleach system is no longer vulnerable to exploits{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/48-v2015.05.04.txt b/world/map/news.d/48-v2015.05.04.txt
deleted file mode 100644
index 4fb1744d..00000000
--- a/world/map/news.d/48-v2015.05.04.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-{title:Double Header}
-{date:2015-05-04}
-
-This update includes bug fixes, quest logs for Candor,
-and a new constable in Hurnscald. Characters can also now
-use @pvp to toggle their PvP status on any map – at any time.
-
-Release Notes v15.4.20
-{ul}
-{li} Spam warnings will now appear in General chat tab{/li}
-{li} Players can now use @pvp to enter pvp mode which
-allows to attack other players in pvp mode. Basically
-it's pvp from any map with anyone (if they have it enabled)
-at any time.{/li}
-{li} The gm commands @killer and @killable have been removed
- in favor of @charpvp{/li}
-{li} GMs can now increase and decrease the rate at which
- exp is obtained{/li}
-{li} The chest in the Illia quest now displays the correct
- item. (a bug previously made it always display bull helm){/li}
-{li} Log Heads, Snails, Pinkies, Butterflies,
- House Maggots and Squirrels are (a little) more balanced{/li}
-{li} The fight club is now fixed{/li}
-{li} The well in Nivalis has been revamped{/li}
-{/ul}
-
-Release Notes v15.5.04
-{ul}
-{li} Various updates to the dialog of, well, various npcs.{/li}
-{li} Quest log for candor island quests{/li}
-{li} New gm command @npc{/li}
-{li} Sex can now be changed without being disconnected{/li}
-{li} New constable in Hurnscald{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/Ms3eG}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/49-v2015.05.18.txt b/world/map/news.d/49-v2015.05.18.txt
deleted file mode 100644
index 0b491842..00000000
--- a/world/map/news.d/49-v2015.05.18.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-{title:Candor is open}
-{date:2015-05-18}
-
-This update mainly includes bug fixes.
-
-Release Notes v15.5.26
-{ul}
-{li}Fixed Unequip Script{/li}
-{/ul}
-
-Release Notes v15.5.23.x
-{ul}
-{li}Fixed Unequip Script{/li}
-{li}Fixed Brodomir Crash{/li}
-{li}Fixed Starting Area Crash{/li}
-{li}Added better debug on crashes{/li}
-{/ul}
-
-Release Notes v15.5.18
-{ul}
-{li}Candor is fixed{/li}
-{li}Quest log entries for some quests in Kaizei.{/li}
-{li}The GM Lounge is now more cozy{/li}
-{li}Fixed typo in constable bob's dialog{/li}
-{li}Some syntactical modifications to the game rules{/li}
-{li}Chinese, Russian and French translation updates to game rules{/li}
-{li}Fixed the bug that displayed @@ in some npcs{/li}
-{li}Deprecate the debug npcs in favor of the #debug spell{/li}
-{li}The MOTD is now sent to the General chat tab{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/N7fps}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/50-v2015.06.30.txt b/world/map/news.d/50-v2015.06.30.txt
deleted file mode 100644
index ef589d96..00000000
--- a/world/map/news.d/50-v2015.06.30.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{title:PvP enhancements}
-{date:2015-06-30}
-
-This tiny update mainly includes bug fixes.
-
-Release Notes v15.6.30
-{ul}
-{li}New features for PvP.{/li}
-{li}Bug fixes for PvP.{/li}
-{li}Some enhancements to the starting area.{/li}
-{li}The blue sage quest exploit is fixed.{/li}
-{li}Some misc dialogue changes.{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/OXNl5}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/51-v2015.08.17.txt b/world/map/news.d/51-v2015.08.17.txt
deleted file mode 100644
index 95601301..00000000
--- a/world/map/news.d/51-v2015.08.17.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-{title:Another bug hunt}
-{date:2015-08-17}
-
-Primarily fixing bugs.
-
-Release Notes v15.8.17
-{ul}
-{li}Change write to send{/li}
-{li}Mob Movement{/li}
-{li}Fix Broken Nick Issue{/li}
-{li}Fix Mob Spawning in Nivalis{/li}
-{li}Fix redoable Astral Skill quest{/li}
-{li}Well quest rewritten{/li}
-{li}Selim the dyer and Bowler hat fix{/li}
-{li}Bank dialogue typo{/li}
-{li}Krukan Typo fix{/li}
-{li}Red/White Sorcerer Robe typo{/li}
-{li}Remove emotes folder from updates{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/QXRgN}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/52-v2015.09.15.txt b/world/map/news.d/52-v2015.09.15.txt
deleted file mode 100644
index 37ebaa5f..00000000
--- a/world/map/news.d/52-v2015.09.15.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-{title:Max Daily}
-{date:2015-09-15}
-
-Daily quests allow you to redeem as many as possible at once
-
-Release Notes v2015.9.15
-{ul}
-{li}Pink Flowers and White Bells spawn bees more often{/li}
-{li}All mobs removed from GM island{/li}
-{li}Max Cash in for Daily quests{/li}
-{li}Fixed bug with Nivalis Well Quest{/li}
-{li}Mylarin Dust typo{/li}
-{li}fix elf nightcap for bald head/hairstyle{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/Sdk73}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/53-v2015.10.01.txt b/world/map/news.d/53-v2015.10.01.txt
deleted file mode 100644
index f3e5845f..00000000
--- a/world/map/news.d/53-v2015.10.01.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-{title:Long-awaited bug fixes}
-{date:2015-10-01}
-
-This release brings bug fixes for long-standing bugs, along with some improvements.
-
-Release Notes v2015.10.01
-{ul}
-{li}The broken attack path detection is fixed{/li}
-{li}The "mob freeze on death" bug is fixed{/li}
-{li}The "mob freeze on warp" bug is fixed{/li}
-{li}The summon+leave trolling will no longer. Now when you summon mobs and leave they will just become normal passive monsters{/li}
-{li}The pumpkins no longer kill an innocent player if the person that killed the pumpkin is missing. This is the same bug that caused innocent people to be banned with the caretaker's wife{/li}
-{li}The frillyar farming crash is fixed{/li}
-{li}You can no longer use the following ASCII characters in char names when registering a new char: `!`, `:`, `%`, `/`, `@`{/li}
-{li}Some Tonori area quests now now have (placeholder) quest log entries{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/SO8xw}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/54-v2015.11.23.txt b/world/map/news.d/54-v2015.11.23.txt
deleted file mode 100644
index 16f99cd1..00000000
--- a/world/map/news.d/54-v2015.11.23.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-{title:Minor fixes}
-{date:2015-11-23}
-
-Some bug fixes, new auditorium.
-
-Release Notes v2015.11.23
-{ul}
-{li}lower the cost of General Razha and General Terogan{/li}
-{li}fix Golbenez exploit{/li}
-{li}fix flower spawns{/li}
-{li}fix Skytlurk typo in the #parum spell{/li}
-{li}add script formatter to makefile{/li}
-{li}run script formatter, run make maps{/li}
-{/ul}
-
-Read More: {link:http://ow.ly/UWS7q}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/55-v2016.2.9.txt b/world/map/news.d/55-v2016.2.9.txt
deleted file mode 100644
index 20269968..00000000
--- a/world/map/news.d/55-v2016.2.9.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{title:Third Gender}
-{date:2016-02-09}
-
-Some modifications pertaining to gender and char creation,
-along with the usual bug fixes.
-
-{red}This release will change your hairstyle. You can change it back by talking to the barber in Tulimshar, or Jessie in Candor.{/red}
-
-Release Notes v2016.02.09
-{ul}
-{li}You can now choose male, female or non-binary (third gender) genders.{/li}
-{li}Sex change is now free.{/li}
-{li}Barbers can perform sex change.{/li}
-{li}All characters on an account can now have a separate gender.{/li}
-{li}Character creation has been moved in-game.{/li}
-{li}You can once again register chars with a space in the name.{/li}
-{li}The Great Typo Hunt continues, with some more sentences fixed.{/li}
-{li}The towel cooldown has been reduced to 20 minutes.{/li}
-{li}Other towels will no longer be removed from your inventory upon using one.{/li}
-{li}The rubber bat now has a 2 second delay.{/li}
-{li}The Sanguine Vault bartender no longer sells Small Mana Elixir.{/li}
-{li}The potion shop in Nivalis now sells Small, Medium and Large Mana Elixirs.{/li}
-{li}A new shop in Candor sells Tiny and Small Mana Elixirs.{/li}
-{li}The restrictions on the Skeleton Charm have been lifted.{/li}
-{li}Valia (the npc for the Illia quest) has been moved indoors.{/li}
-{/ul}
-
-Read More: {link:http://bit.ly/1PLaVbx}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/56-v2016.3.31.txt b/world/map/news.d/56-v2016.3.31.txt
deleted file mode 100644
index 57f42bff..00000000
--- a/world/map/news.d/56-v2016.3.31.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-{title:Blue Sage Fix}
-{date:2016-03-31}
-
-This is a tiny release that fixes a few bugs.
-
-Release Notes v2016.03.31
-{ul}
-{li}Fix Easter Quest money exploit.{/li}
-{li}Add range check to easter eggs.{/li}
-{li}Limit the number of prizes obtained in Easter Quest.{/li}
-{li}Reset the Blue Sage quest state for some players.{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/57-v2016.4.21.txt b/world/map/news.d/57-v2016.4.21.txt
deleted file mode 100644
index 78bb095d..00000000
--- a/world/map/news.d/57-v2016.4.21.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-{title:Magic-v3}
-{date:2016-04-21}
-
-This release changes a lot server-side, but there is
-not much visible changes for the players.
-
-Release Notes v2016.04.21
-{ul}
-{li}Rewrite every single magic spells.{/li}
-{li}Fix some bugs with magic.{/li}
-{li}Add alchemy benches.{/li}
-{li}Add Celestia quest (introduces two new items).{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/58-v2016.4.24.txt b/world/map/news.d/58-v2016.4.24.txt
deleted file mode 100644
index 9e6b7cd8..00000000
--- a/world/map/news.d/58-v2016.4.24.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-{title:We are all Dead}
-{date:2016-04-24}
-
-Release Notes v2016.04.24
-{ul}
-{li}GY Inn is now a town{/li}
-{li}Numerous Magic patches{/li}
-{li}New warp pattern on Tonori Caves{/li}
-{li}Small map bug fixes{/li}
-{li}Small Quest Log fixes{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/59-v2016.4.25.txt b/world/map/news.d/59-v2016.4.25.txt
deleted file mode 100644
index 5d75afc2..00000000
--- a/world/map/news.d/59-v2016.4.25.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{title:There and There again}
-{date:2016-04-25}
-
-Release Notes v2016.04.25
-{ul}
-{li}Made ferrys more visual and easier to board{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/60-v2016.5.12.txt b/world/map/news.d/60-v2016.5.12.txt
deleted file mode 100644
index 7e11d83a..00000000
--- a/world/map/news.d/60-v2016.5.12.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{title:It's like MAGIC}
-{date:2016-05-12}
-
-Release Notes v2016.05.12
-Fixed
-{ul}
-{li}Players can no longer #inma themselves.{/li}
-{li}It is no longer possible to cast while dead.{/li}
-{li}The illia quest is fixed.{/li}
-{li}Ingrav now checks for line of sight.{/li}
-{li}Itenplz now checks for line of sight.{/li}
-{li}Players can no longer cast magic with a grey mana bar.{/li}
-{li}Spells no longer bypass m.def.{/li}
-{li}Casting several times betsanc, asorm, plugh or anwiltyp no longer yields multiple end messages.{/li}
-{li}A couple of tiny map glitches have been fixed.{/li}
-{li}The ferry message now displays properly on the dock in Candor.{/li}
-{/ul}
-
-Added
-{ul}
-{li}Any active spell can now be discharged by saying #discharge.{/li}
-{li}Morgan teaches about the discharge spell.{/li}
-{li}Players can now remove betsanc from themselves and protect against any further betsanc by saying #detsanc.{/li}
-{li}Sagatha teaches about the anti-betsanc spell.{/li}
-{li}The old Hurnscald signpost near the 4144 NPC is back.{/li}
-{li}There is now an alchemy bench in the swamp village, in the trading room.{/li}
-{li}[GM] Command alias for @pullrabbit (#pullrabbit).{/li}
-{li}[GM] Players can now be muted for up to 120 minutes with the new @mute command.{/li}
-{li}[GM] All visible players in the area can now be muted for up to 10 minutes with the new @stfu command.{/li}
-{li}[GM] GMs can now provide more immersion in events by talking directly through NPCs with @npctalk.{/li}
-{li}[GM] The music can now temporarily be changed with the @music command.{/li}
-{/ul}
-
-Changed
-{ul}
-{li}The debug tab now tells why spell casting failed (ie player is dead, cooldown is in effect, mana bar is grey, ...){/li}
-{li}[GM] The @warp command can now use anchors.{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/61-v2016.10.10.txt b/world/map/news.d/61-v2016.10.10.txt
deleted file mode 100644
index aeed8f35..00000000
--- a/world/map/news.d/61-v2016.10.10.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{title:Halloween}
-{date:2016-10-10}
-
-Release Notes v2016.10.10
-Fixed
-{ul}
-{li}Cindy should allow proper min level{/li}
-{li}Magic experience bug fixed{/li}
-{/ul}
-
-Added
-{ul}
-{li}Halloween quest for 2016 added.
-Halloween is here once again. An old friend has returned to us from his travels all over Gasaron.
-The ancient skeleton Gak can be found in the woodlands of Argaes looking to feast on as much candy as he possibly
-can before Halloween night. You will be able to collect candy that was stolen and scattered all over the world.
-All kinds of creatures have been greedily hoarding this candy. It's your mission to claim it back and make sure Gak is satisfied.
-In exchange, you will be rewarded on and after October 31st with some wonderful items that Gak has collected over
-the past few years.{/li}
-{/ul}
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/62-v2016.11.26.txt b/world/map/news.d/62-v2016.11.26.txt
deleted file mode 100644
index 996d6812..00000000
--- a/world/map/news.d/62-v2016.11.26.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-{title:Stability}
-{date:2016-11-26}
-
-Release Notes v2016.11.26
-
-This release only removes the halloween 2016 quest
-and reverts the monster drops back to normal.
-
-Removed
-{ul}
-{li}Halloween 2016 quest{/li}
-{li}Halloween 2016 drops, old drops reverted{/li}
-{/ul}
-
-Notice:
- This release marks the end of active development
-on The Mana World Legacy (this server). From now
-on, all development efforts will be directed
-towards Evol Online. Game-breaking bugs will
-still be patched but no new content will be made
-for this server.
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/63-v2017.11.12.txt b/world/map/news.d/63-v2017.11.12.txt
deleted file mode 100644
index d8f8f0c3..00000000
--- a/world/map/news.d/63-v2017.11.12.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-{title:The Mana World}
-{date:2017-11-12}
-
-Release Notes v2017.11.12
-
-Fixed
-{ul}
-{li}fixed the crash that affected pumpkins{/li}
-{li}fixed the crash that affected easter eggs{/li}
-{li}fixed the crash that affected magic summons{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/64-v2017.12.04.txt b/world/map/news.d/64-v2017.12.04.txt
deleted file mode 100644
index eb4ecd37..00000000
--- a/world/map/news.d/64-v2017.12.04.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-{title:The Mana World}
-{date:2017-12-04}
-
-Release Notes v2017.12.04
-
-Fixed
-{ul}
-{li}fixed items not showing all stats{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/65-v2018.01.01.txt b/world/map/news.d/65-v2018.01.01.txt
deleted file mode 100644
index c15b4bfe..00000000
--- a/world/map/news.d/65-v2018.01.01.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-{title:The Mana World}
-{date:2018-01-01}
-
-Release Notes v2018.01.01
-
-Changed
-{ul}
-{li}Increased the party limit from 12 to 120, as a compensation for the guild system that was never finalized{/li}
-{/ul}
-
-Fixed
-{ul}
-{li}Fixed a crash related to disposable NPCs{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/66-v2018.01.15.txt b/world/map/news.d/66-v2018.01.15.txt
deleted file mode 100644
index 81eb36ac..00000000
--- a/world/map/news.d/66-v2018.01.15.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-{title:The Mana World}
-{date:2018-01-15}
-
-New hats & misc patches.
-
-Release Notes v2018.01.15
-{ul}
-{li}Added Witch Doctor's Mask (GM event reward){/li}
-{li}Added Carbon Gas Mask (GM event reward){/li}
-{li}Added Smoking Pipe (GM event reward){/li}
-{li}Added Pilot Hat (GM event reward){/li}
-{li}Added Moonshroom Hat (GM event reward){/li}
-{li}Added Eskimo Hat (GM event reward){/li}
-{li}Added Cashiers' Shade (quest item){/li}
-{li}Added Antler Hat (quest item){/li}
-{li}Added Phylactery (ultra-rare drop){/li}
-{li}Added Underworld Mask (ultra-rare drop){/li}
-{li}Added Captain's Hat (ultra-rare drop){/li}
-{li}Added Sailor Hat (rare drop){/li}
-{li}Added Pointy Witch Hat (common Illia reward){/li}
-{li}Made the Dark Helm usable{/li}
-{li}Fixed the crypt respawn points{/li}
-{li}Fixed the bug that made xmas events last longer than intended{/li}
-{li}Fixed a broken warp in GM Lounge{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/67-v2018.01.28.txt b/world/map/news.d/67-v2018.01.28.txt
deleted file mode 100644
index 990f8f9a..00000000
--- a/world/map/news.d/67-v2018.01.28.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-{title:The Mana World}
-{date:2018-01-28}
-
-New maps, new items & long-overdue patches.
-
-Release Notes v2018.01.28
-{ul}
-{li}Added Tritan (new species){/li}
-{li}Added Ifriton (new species){/li}
-{li}Added Crimson Bra (GM event reward){/li}
-{li}Added Turquoise Bra (GM event reward){/li}
-{li}Added Orchid Bra (GM event reward){/li}
-{li}Added new GM event maps{/li}
-{li}Fixed broken frames in the Smoking Pipe item{/li}
-{li}Fixed weird tiles at Hurnscald East and South exits{/li}
-{li}Fixed a bug that allowed to get magic exp from dead players{/li}
-{li}Fixed magic attack animations not showing properly{/li}
-{li}Fixed a bug that made players able to sit while attacking{/li}
-{li}Fixed a bunch of xml issues{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/68-v2018.02.17.txt b/world/map/news.d/68-v2018.02.17.txt
deleted file mode 100644
index 87db02ac..00000000
--- a/world/map/news.d/68-v2018.02.17.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-{title:The Mana World}
-{date:2018-02-17}
-
-Bug patches & misc improvements.
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/69-v2018.03.03.txt b/world/map/news.d/69-v2018.03.03.txt
deleted file mode 100644
index 827c7b04..00000000
--- a/world/map/news.d/69-v2018.03.03.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{title:The Mana World}
-{date:2018-03-03}
-
-Bug patches & misc improvements.
-
-Release Notes v2018.03.03
-{ul}
-{li}Fixed some mapping issues{/li}
-{li}Made GM groups visible so players can find help more easily{/li}
-{li}Added a badge for bots{/li}
-{li}Added a badge for developers{/li}
-{li}Added a badge for event coordinators{/li}
-{li}Added a badge for core developers{/li}
-{li}Added a badge for administrators{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/70-v2018.03.11.txt b/world/map/news.d/70-v2018.03.11.txt
deleted file mode 100644
index 1ee6ac59..00000000
--- a/world/map/news.d/70-v2018.03.11.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-{title:The Mana World}
-{date:2018-03-11}
-
-Bug patches & misc improvements.
-
-Release Notes v2018.03.11
-{ul}
-{li}Turned skeletons into a new species: they can now have hair!{/li}
-{li}Added a new ultra-rare GM Event reward: Terranite Head.{/li}
-{li}Adjusted the stats of the Underworld Mask.{/li}
-{li}Added three new GM Event monsters.{/li}
-{li}Made bots unkillable.{/li}
-{/ul}
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/71-v2018.03.23.txt b/world/map/news.d/71-v2018.03.23.txt
deleted file mode 100644
index 2c92d5f5..00000000
--- a/world/map/news.d/71-v2018.03.23.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-{title:Quick patch}
-{date:2018-07-17}
-
-Made the ghosts that spawn in the graveyard less exploitable.
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/72-v2019.01.20.txt b/world/map/news.d/72-v2019.01.20.txt
deleted file mode 100644
index 5bcba177..00000000
--- a/world/map/news.d/72-v2019.01.20.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-{title:Fluffy hunting}
-{date:2019-01-20}
-
-Increased the fluffy hunting leaderboard from a Top 5 to Top 15.
-
-{author:TMW/Evol Development Team}
diff --git a/world/map/news.d/73-anniversary.txt b/world/map/news.d/73-anniversary.txt
deleted file mode 100644
index 614a9bd4..00000000
--- a/world/map/news.d/73-anniversary.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{title:15th Anniversary}
-{date:2019-04-09}
-
-Happy Birthday!
-We are nearing the 15th anniversary of The Mana World!
-
-Time to celebrate everyone, make sure you log in on the 11th.
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/74-anniversary.txt b/world/map/news.d/74-anniversary.txt
deleted file mode 100644
index 1ae8beca..00000000
--- a/world/map/news.d/74-anniversary.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{title:15th Anniversary}
-{date:2019-04-15}
-
-Happy Birthday!
-The Mana World is now 15 years old!
-
-Thank you for playing and making TMW great!
-
-{author:TMW Development Team}
diff --git a/world/map/news.d/75-news-2019-04-17.txt b/world/map/news.d/75-news-2019-04-17.txt
deleted file mode 100644
index dbe094c3..00000000
--- a/world/map/news.d/75-news-2019-04-17.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-{title:The Mana News}
-{date:2019-04-17}
-
-Hello to everyone, regardless of gender or race! Yes, I am addressing
-the shy Tritans among us!
-Oh, your dog might also be interested in this.
-
-So our last edition of the newspaper was on {red}March 1st{/red}.
-It was about 45 days ago, so lets do a new post!
-
-Here is the current progress report for the new server:
-
-{link:https://forums.themanaworld.org/download/file.php?id=13446}
-
-So while I would love to {red}bore everyone to death{/red}, talking about how
-many placeholders we've added this last period - from adding a hideout
-on Artis (where? It is a secret, of course!) to the fight against the Legion -
-with several bugfixes, bringing Wyara back, adding minimaps to most
-maps while still keeping Rossy's caves a secret, improving several minor
-things, and adding some skills. Because seriously, we are The Mana World.
-A Mana World without magic makes no sense, right?
-
-But the thing is, I can't.
-I know, many have missed Mona's dad's rescue operation. I know, many
-missed the incredible desync which brought 4144 to release
-ManaPlus 1.9.3.23. Throwing stuff in sewers, the Peter quest
-redesign, and making sandwiches.
-...but I don't have time for that. In case you just said "Neat, there
-are progress bars on the picture", there are also due dates!
-
-This means, as our (late) TMW birthday gift to the community,
-{red}we decided on a deadline{/red}!
-
-You know, the thing is - not even the developers can wait another year
-for this game to be playable.
-So we decided on a deadline, after lots of drama and bikeshedding on IRC,
-as tradition demands, somewhere between {red}September and October 2019{/red}!
-
-So, no more time to stop and chat, we have a game to finish if we want
-to still be able to call it The Mana World.
-
-Finally, do you know what makes The Mana World, The Mana World?
-Here is a hint:
-It is not the name. It is not the quests. It is not the graphics. And it is not
-the player data either.
-If you find out, please do not share. :>
-
-{author:Jesusalva}
diff --git a/world/map/news.d/76-milestone-news.txt b/world/map/news.d/76-milestone-news.txt
deleted file mode 100644
index 066670f1..00000000
--- a/world/map/news.d/76-milestone-news.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-{title:The Mana News}
-{date:2019-05-01}
-
-Hello Everyone!
-
-I'm making this announcement to tell you that our first
-development milestone for the new server's first release,
-titled The Mana World: rEvolt, is now 100% completed.
-The initial deadline was set at 31/05/19 but we managed to
-finish one month ahead of schedule!
-
-The milestone was called Artis Sewer and included all content
-relating to the underground maps under the city of Artis
-as well as some other bits of content that we wanted
-to be out at the same time. The next milestone, Artis Legion,
-currently sits at 75% completion with a deadline of 30/06/19,
-but given how quickly things have been moving I would say
-we're well ahead of schedule for this one as well!
-
-The third and final milestone, Hurnscald,
-encompasses the biggest part of the release:
-the town of Hurnscald and the surrounding woodland
-region of Argaes. Its deadline represents an
-approximate deadline for the entire release
-and is currently set at 06/09/19.
-
-I want to say thank you to the people who have worked
-the most and the hardest in recent weeks to get us this far.
-Check out my forum post for my rant about that
-and some links to current development!
-
-{link:https://forums.themanaworld.org/viewtopic.php?p=158479#p158479}
-
-{author:WildX}
diff --git a/world/map/news.d/77-new-website.txt b/world/map/news.d/77-new-website.txt
deleted file mode 100644
index c962e1c2..00000000
--- a/world/map/news.d/77-new-website.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-{title:Shiny new website}
-{date:2019-08-12}
-
-{b}Mobile-friendly website!{/b}
-The homepage of The Mana World has been entirely redesigned to work on
-mobile devices. It should now scale accordingly with the size of your
-display so you shouldn't need to zoom anymore. Everything should be in
-roughly the same places as before except for Account Recovery, which
-has been moved under Support. Please report any issues you may encounter.
-
-{b}TMW Hardcore{/b}
-A new "world" has been added to the world selection list: TMW Hardcore.
-This server is intended to provide a bigger challenge to players who have
-become experts on the main server. It plays like normal except for these
-important differences:
-{ul}
-{li}Death is permanent. There is no way to revive your character.{/li}
-{li}Obtaining experience and leveling is much faster.{/li}
-{li}The level cap is 127 and stats can go as high as 120.{/li}
-{li}It is possible to kill other players in any map (except towns).{/li}
-{li}Upon killing a player, you obtain all of their belongings.{/li}
-{/ul}
-
-Please note: The Hardcore server is NOT intended to be a replacement
-for the main server; it is only an experiment and may close down at
-any point in the future. Think of it more as a side-quest.
-
-{author:gumi}
diff --git a/world/map/news.d/78-halloween-2019.txt b/world/map/news.d/78-halloween-2019.txt
deleted file mode 100644
index 44445e9e..00000000
--- a/world/map/news.d/78-halloween-2019.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{title:Dangerous Halloween}
-{date:2019-10-07}
-
-Hello Everyone!
-
-Did you saw latest news? They're on the forum if you've missed!
-{link:https://forums.themanaworld.org/viewtopic.php?p=159297#p159297}
-
-{b}Higher Level Cap{/b}
-
-After a bug which caused several issues (including data loss),
-it left behind a "feature" which increased level cap to 135!
-
-We asked the community about it, and most players said that
-they're fine with a higher level cap, too.
-
-{b}Tormenta the Boss{/b}
-
-Tormenta came directly from the Abyss and is looking to run
-loose in the surface after a long time. She also stole several
-masks from previous Halloween events.
-
-Killing her might not only make her drop a rare, but will also
-give a decent amount of experience to anyone involved.
-Note: Tormenta is at least as difficult as Luvia, so be prepared!
-
-{b}Development Continues{/b}
-
-As announced previously, we're hoping to have rEvolt released
-soon. If everything goes well and as planned, we'll be releasing
-after the Halloween ends; But this depends a bit on contributors.
-
-{b}Minor corrections{/b}
-
-We've also fixed Sailor's and Captain Hat's defense.
-In case you had these decorative items, they now give
-the defense they promised.
-
-{author:Jesusalva}
diff --git a/world/map/news.d/79-news-2019-12-18.txt b/world/map/news.d/79-news-2019-12-18.txt
deleted file mode 100644
index 96287b01..00000000
--- a/world/map/news.d/79-news-2019-12-18.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-{title:The Mana News}
-{date:2019-12-18}
-
-Hello Everyone!
-
-This is a routine update, created to push the outcome of several
-polls which were on Feedback section of the Forums.
-
-{b}Nerf Banshee Bow{/b}
-
-One of the most polemic threads, but not the most polemic one.
-
-It ended up with the Banshee Bow damage being adjusted from 90 to 85.
-
-The "average value" would be lower, but nobody likes nerfing, right?
-
-{b}Increase Black Scorpion, Snakes and Spiders EXP{/b}
-
-A lot of players wanted these monsters to give more experience,
-but it was not enough to give what they wanted.
-
-In the end, the experience of these three monsters was nearly doubled.
-
-{b}Christmas Event changed{/b}
-
-The less polemic of all, Christmas Event allows players to gain a
-free level.
-But this only works if your level was smaller than 99. Now, this
-limit was raised to 135, to follow the Experience table.
-
-{author:Jesusalva}
diff --git a/world/map/news.d/80-news-2020-01-01.txt b/world/map/news.d/80-news-2020-01-01.txt
deleted file mode 100644
index 37978358..00000000
--- a/world/map/news.d/80-news-2020-01-01.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-{title:Valentine News}
-{date:2020-01-01}
-
-Hello Everyone!
-
-This update biggest objective is to give support to Valentine Day event.
-
-{b}Valentine Day Event{/b}
-
-This year, our valentine day event will NOT be hold on this server!
-It will be host on a separate server specific for this purpose.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160032#p160032}
-
-{b}Minor Corrections{/b}
-
-A lot of minor corrections and bugfixes are included.
-You should not be affected by them, as they are for very specific edge situations.
-eg. keeping up arrow pressed, walking through Iilia's Inn door multiple times
-before quest is complete, and getting killed.
-
-{b}Two new candies{/b}
-
-Part of rewards for Valentine's. Happy Valentine for all!
-
-{author:Jesusalva}
diff --git a/world/map/news.d/81-news-2020-02-25.txt b/world/map/news.d/81-news-2020-02-25.txt
deleted file mode 100644
index fcddaecb..00000000
--- a/world/map/news.d/81-news-2020-02-25.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-{title:Act 2 - The Invasion}
-{date:2020-02-25}
-
-{b}Doomsday Event - The Invasion{/b}
-
-The Mage Council of Tulimshar has monitored events
-following the Great Quake and feel that something
-ominous is spreading throughout The Mana World.
-Monsters seem to of come out of every shadowy corner
-and petty dieties has begun to make presence in dark
-places. The council has made the call and you are
-just one of the many people that will battle the
-forces of evil, sending them back to the depths they
-came from.
-
-Be it warrior, archer or mage, you have answered the
-call from the leaders of the world to fight back the
-darkness that spread after the Great Quake. Even so,
-the monsters strength is overwhelming, and not even
-Tormenta is staying behind the eternal seals any longer.
-
-And sensing adventurers and the mana world residents
-weakness, someone decided it was a good idea to send an
-invading army...
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160197#p160197}
-
-{b}Minor Corrections{/b}
-
-Minor bugfixes on Joan and Constable Bob.
-We would like to thank everyone who submitted a patch.
-
-{author:Jesusalva}
diff --git a/world/map/news.d/82-news-2020-04-01.txt b/world/map/news.d/82-news-2020-04-01.txt
deleted file mode 100644
index 0868273e..00000000
--- a/world/map/news.d/82-news-2020-04-01.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-{title:Fools Day 2020}
-{date:2020-04-01}
-
-
-{b}Brawler Class: Assassin Set Released{/b}
-
-After a huge attempt of assassination at Luvia,
-which naturally failed, the chest at Iilia's Inn
-now have a complete assassin garment available.
-
-This set can only be wore if you're unarmed!
-
-{b}New Weapon: Sand Cutter{/b}
-
-With regards to AxlTrozz's Desert Temple, which
-unfortunately was never finished of being mapped,
-a new melee weapon, superior to Setzer, is available.
-
-You'll need around level 85 to equip it, and this
-is as far as our hints will go.
-
-{b}Mana Guardians Ritual{/b}
-
-The Mana Guardians performed a ritual, which lowered
-their defense and luck permanently, but hit the Banshee
-Bow in full, and it no longer crits.
-
-However, having the curse changed by this ritual, its
-base damage was increased, and it even make the archers
-faster. Nobody knows for how long this will persist.
-
-{b}Monster Hunters Update{/b}
-
-Aidan and Ishi decided to give monster points for those
-whom defeat Mana Guardians, Tormenta, and some of the
-newer monsters ingame.
-
-They hope that this way, adventurers all over
-The Mana World prevent it falling in hands of the
-invading army.
-
-{b}Doomsday Event - The Invasion{/b}
-
-The Mage Council of Tulimshar has monitored events
-following the Great Quake and feel that something
-ominous is spreading throughout The Mana World.
-Monsters seem to of come out of every shadowy corner
-and petty dieties has begun to make presence in dark
-places. The council has made the call and you are
-just one of the many people that will battle the
-forces of evil, sending them back to the depths they
-came from.
-
-Be it warrior, archer or mage, you have answered the
-call from the leaders of the world to fight back the
-darkness that spread after the Great Quake. Even so,
-the monsters strength is overwhelming, and not even
-Tormenta is staying behind the eternal seals any longer.
-
-And sensing adventurers and the mana world residents
-weakness, someone decided it was a good idea to send an
-invading army...
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160197#p160197}
-
-{b}We're replacing Hurnscald Tree{/b}
-
-As of April 1st, we decided to replace Hurnscald Tree
-with a giant Pink Mouboo statue.
-
-We're also making the Pink Mouboo Temple the official
-TMW religion and we'll burn down all the heretics!
-
-#April1stJoke
-
-{author:Jesusalva}
diff --git a/world/map/news.d/83-news-2020-04-06.txt b/world/map/news.d/83-news-2020-04-06.txt
deleted file mode 100644
index 60a909b8..00000000
--- a/world/map/news.d/83-news-2020-04-06.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{title:Act 3 - The Great War}
-{date:2020-04-06}
-
-
-{b}Doomsday Event - The Great War{/b}
-
-Following the events from Act 2, the foreigner
-invader assembles a bigger army and prepares to move
-against Hurnscald.
-
-Even the most magicless person should be able to sense
-it arriving at Hurnscald Mines Entrance, ready to take
-over The Mana World.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160290#p160290}
-
-{b}Minor Balance Notes{/b}
-
-We did several minor balance changes, like tweaking
-Sand Cutter's damage, increasing Mana Guardians XP,
-and several other minor things which are actually
-very important but even so, are still minor.
-
-{b}Some patches you might have missed{/b}
-
-On April 1st, we pushed a whole new equipment set to
-Iilia, with brawlers in mind. We also added the quest
-for a new weapon, the Sand Cutter.
-
-{author:Jesusalva}
diff --git a/world/map/news.d/84-news-2020-04-20.txt b/world/map/news.d/84-news-2020-04-20.txt
deleted file mode 100644
index 759446d3..00000000
--- a/world/map/news.d/84-news-2020-04-20.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-{title:Act 4 - The Great War}
-{date:2020-04-20}
-
-
-{b}Doomsday Event - The Great War{/b}
-
-Following the events from Act 2, the foreigner
-invader assembles a bigger army and prepares to move
-against Hurnscald.
-
-Even the most magicless person should be able to sense
-it arriving at Hurnscald Mines Entrance, ready to take
-over The Mana World.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160290#p160290}
-
-{b}Act 4{/b}
-
-This act happens at the same time as Act 3.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160343#p160343}
-
-{author:Jesusalva}
diff --git a/world/map/news.d/85-news-2020-05-09.txt b/world/map/news.d/85-news-2020-05-09.txt
deleted file mode 100644
index c1a5d8f3..00000000
--- a/world/map/news.d/85-news-2020-05-09.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-{title:Act 4 - The Great War}
-{date:2020-05-09}
-
-
-{b}Crypt Expansion{/b}
-
-Although it was not the planned one, the crypt received a special expansion,
-with a special theme from Doomsday Event.
-
-It includes a new rare item for mages. The one who cries at crypt, shall give
-you hints, but only if you dare, to at multiple boss glare.
-
-(In other words, you must have a certain amount of Boss Points to unlock this
-quest).
-
-{b}Snake Experience Boost{/b}
-
-Grass and Mountain Snake experience was doubled.
-You can now level up in Snake Pit instead of Graveyard if you feel like it.
-
-{b}Doomsday Event - Tormenta shows up{/b}
-
-Seldomly, at 09:00 sieges, Tormenta will show up at her usual place.
-No need to force yourself to wake up this late, as she'll not be there always.
-
-{b}Doomsday Event - The Great War{/b}
-
-Following the events from Act 2, the foreigner
-invader assembles a bigger army and prepares to move
-against Hurnscald.
-
-Even the most magicless person should be able to sense
-it arriving at Hurnscald Mines Entrance, ready to take
-over The Mana World.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160290#p160290}
-
-{b}Act 4{/b}
-
-This act happens at the same time as Act 3.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160343#p160343}
-
-{author:Jesusalva}
diff --git a/world/map/news.d/86-news-2020-05-26.txt b/world/map/news.d/86-news-2020-05-26.txt
deleted file mode 100644
index b93c1e59..00000000
--- a/world/map/news.d/86-news-2020-05-26.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-{title:Act 4 - The Great War}
-{date:2020-05-26}
-
-
-{b}A Gift From Jande{/b}
-
-A gift is available in Hurnscald Town, to encourage adventurers to keep fighting
-for a future which includes them in it.
-
-It will be taken away in a later date.
-
-{b}New commands{/b}
-
-Two new commands were added:
-
-@bosspoints will show you how many boss points you have
-
-@deaths will report how many times you died D:
-
-
-{b}Doomsday Event - The Great War{/b}
-
-Following the events from Act 2, the foreigner
-invader assembles a bigger army and prepares to move
-against Hurnscald.
-
-Even the most magicless person should be able to sense
-it arriving at Hurnscald Mines Entrance, ready to take
-over The Mana World.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160290#p160290}
-
-{b}Act 4{/b}
-
-This act happens at the same time as Act 3.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160343#p160343}
-
-{author:Jesusalva}
diff --git a/world/map/news.d/87-news-2020-06-11.txt b/world/map/news.d/87-news-2020-06-11.txt
deleted file mode 100644
index 82a9289d..00000000
--- a/world/map/news.d/87-news-2020-06-11.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-{title:Act 5 - The Final Battle}
-{date:2020-06-11}
-
-{b}Doomsday Event{/b}
-
-{b}2020-06-11: Interlude (part 1){/b}
-
-This is an Interlude.
-
-Is it time to take down Zax De'Kagen, or will he best the adventurers?
-Get the Black Rose, explore the maze, seek the truth.
-
-PS. You do not need a key to open the chests.
-
-Read details on {link:https://forums.themanaworld.org/viewtopic.php?p=160774#p160774}
-
-{b}2020-06-21: Interlude (part 2){/b}
-
-And then, there was silence.
-
-Nobody heard from Jande or Zax De'Kagen for a while.
-
-In the apparence of normality amidst the doomsday, questions are left unanswered.
-Unable to return to Keshlam Maze, but in hold of the clues, one can only especulate.
-
-What is the real meaning of things.
-The calm can only mean one thing: The storm is soon to come.
-
-{red}Doomsday Act 5: Interlude - Part 2{/red}
-"The Silence"
-
-{author:Jesusalva}
diff --git a/world/map/news.d/88-news-2020-08-24.txt b/world/map/news.d/88-news-2020-08-24.txt
deleted file mode 100644
index a2d60b75..00000000
--- a/world/map/news.d/88-news-2020-08-24.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-{title:Act 5 - The Final Battle}
-{date:2020-08-24}
-
-{b}PvP Tournament Updates{/b}
-
-By popular demand, we proudly announce a few changes with PvP Tournament in mind.
-
-{ul}
-{li}You can now obtain the MONOCLE in an epic quest! ...Not exactly.{/li}
-{li}Golden Apple will now heal you instantly!{/li}
-{li}PVP Cap weight was fixed!{/li}
-{li}A golden (?) version of the PVP Cap was added.{/li}
-{li}PVP Coins were added, winning the tournament yields 1 coin.{/li}
-{li}A character can only win up to 5 coins!{/li}
-{/ul}
-
-After five victories, the char cannot participate on PVP Tournaments anymore.
-However, an alt (different char of same player) is still eligible!
-
-{b}Doomsday Event is not over yet!{/b}
-
-In case you missed the Doomsday Event, you can read a summary on:
-{link:https://wiki.themanaworld.org/index.php/Legacy:Doomsday}
-
-Doomsday Act 5 - The Final Battle, will count with a third interlude.
-Hold tight on your Black Roses, for you'll be needing them again!
-
-{author:Jesusalva}
diff --git a/world/map/news.d/89-halloween-2020.txt b/world/map/news.d/89-halloween-2020.txt
deleted file mode 100644
index 0f3fc6d9..00000000
--- a/world/map/news.d/89-halloween-2020.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-{title:Act 5 - The Final Battle}
-{date:2020-09-15}
-
-{b}Halloween 2020{/b}
-
-We'll have several events until early november! Keep watching the forums!
-
-Here is a short summary about them:
-
-{b}Halloween 2020 - Rescuing Jande{/b}
-
-{b}Jande{/b}, the Great Dragon of Earth, was kidnapped by Zax De'Kagen!
-
-According to the Sage's Council intel, Jande is currently being held in
-{b}The Underworld{/b}. But there is no way to reach the underworld, nor to rescue
-Jande from the Eternal Seals Prision...
-
-Or at least, that is what everyone thought.
-.:: HALLOWEEN 2020 - RESCUING JANDE ::.
-
-In case you missed the Doomsday Event, you can read a summary on:
-{link:https://wiki.themanaworld.org/index.php/Legacy:Doomsday}
-
-
-{b}PVP Tournament V{/b}
-
-September's PVP Tournament was cancelled due not enough participation.
-However, we will still have a special halloween PvP Tournament in october.
-Date yet to be announced by forums.
-
-Remember: You must sign up at forums to participate!
-
-
-{b}Hungry Fluffy Hunt V{/b}
-
-Crew of Red Corsair will be hosting the fifth Hunt The Hungry Fluffies event!
-
-Participate on the special scoreboard which will open from {b}Sep 18th{/b} until
-{b}Sep 30th{/b} and win prizes! Check forums for details.
-
-IMPORTANT: Scores obtained before the special event scoreboard open will {b}NOT{/b}
-be considered. The Event Scoreboard is marked as Event Scoreboard!
-
-{b}More Information{/b}
-
-More information can be obtained at the forums:
-
-{link:https://forums.themanaworld.org/viewtopic.php?f=1&t=21092}
-
-{author:Jesusalva}
diff --git a/world/map/news.d/90-christmas-2020.txt b/world/map/news.d/90-christmas-2020.txt
deleted file mode 100644
index 33241e89..00000000
--- a/world/map/news.d/90-christmas-2020.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{title:Christmas 2020}
-{date:2020-12-01}
-
-{b}Christmas 2020{/b}
-
-The Mana World Team wishes everyone a happy new Christmas!
-
-By the way, Santa seemed very concerned with something.
-Perhaps you could help him? Last I saw him, he was hanging in Nivalis.
-If you hurry, maybe you can still catch him!
-
-The Mana World: rEvolt release will be postponed at least until the event ends,
-so enjoy your time and Christmas this year.
-
-As they say: Merry Christmas and Happy New Year!
-
-{author:Jesusalva}
diff --git a/world/map/news.d/91-new-year-2021.txt b/world/map/news.d/91-new-year-2021.txt
deleted file mode 100644
index 25236be6..00000000
--- a/world/map/news.d/91-new-year-2021.txt
+++ /dev/null
@@ -1,21 +0,0 @@
- {title:New Year 2021}
-{date:2021-02-09}
-
-{b}Beheader Quest{/b}
-
-A strange man, with an even stranger weapon, has been spotted wandering The Mana
-World as of late.
-
-We advise caution, so you do not end up losing your head by accident! (got the pun?)
-
-{b}Valentine Day 2021{/b}
-
-By popular demand of people trying to take advantage of the new beheader and trying
-to behead myself, The Mana World will have a Valentine Day 2021 event.
-
-Quest opens on the saturday 13th 00:00 and closes on the monday 15th 23:59.
-Look for the cutest NPC in Hurnscald to do the quest.
-
-The Mana World Team hopes you all have a great Valentine Day.
-
-{author:Jesusalva}
diff --git a/world/map/news.d/92-news-2021-04-01.txt b/world/map/news.d/92-news-2021-04-01.txt
deleted file mode 100644
index b9a05f9b..00000000
--- a/world/map/news.d/92-news-2021-04-01.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-{title:The Mana World}
-{date:2021-04-01}
-
-{b}Iilia Rewards Change{/b}
-
-This is just a whim update which removes Iilia quests rewards and replace them with
-the assassin set (brawling only).
-
-They were too OP and unbalanced and whatever, so we decided to make them unavailable
-for the time begin.
-
-We also have donated all the already existing Iilia gear to the pink mouboo church,
-and replaced Constable Bob with the flying spaghetti monster.
-
-Happy april fools day!
-
-{author:Jesusalva}
diff --git a/world/map/news.d/93-news-2021-04-22.txt b/world/map/news.d/93-news-2021-04-22.txt
deleted file mode 100644
index 08a0285f..00000000
--- a/world/map/news.d/93-news-2021-04-22.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-{title:The Mana World}
-{date:2021-04-23}
-
-{b}ManaPlus Self-Fork Release{/b}
-
-By popular demand, Jak1's official ManaPlus fork will now be provided by default
-on our Downloads page. {link:https://themanaworld.org/downloads}
-
-It has only a few improvements over the original ManaPlus.
-You're not required to use it, but it is a good idea if you plan playing in...
-
-{b}TMW Evolved Public Beta{/b}
-
-The Mana World Development Team has a surprise for all of you.
-
-We have decided to deprecate tmwAthena definitely. Instructions for building TMWA
-servers were already removed from the wiki; Other tmwa sections will soon follow.
-
-We have begun a side-project, dubbed TMW Evolved (working name "The Mess World").
-It contains all TMW Legacy data, as faithfully as possible, but in the new, modern
-Evol2 servers. It has new bugs which needs to be found, reported and fixed.
-
-There is no ETA for when the player data will be transfered from TMW Legacy to
-TMW Evolved and the current tmwa-based server shut down forever.
-
-If you are using the self-fork release, select our test server, opt for using
-"TMW Evolved updates", and then select "TMW Evolved" for world selection.
-
-Official ManaPlus will require a workaround which will be on forums later.
-
-{b}FAQ - How different is Evolved from Legacy?{/b}
-
-TMW Evolved {b}is{/b} TMW Legacy, but in a more modern code. This does have some
-implications, specially with magic. Spells will remain mostly the same, but the
-way to obtain and use them have changed. It also allows stats to go up to 100 and
-max level is 140 instead of 135. Not that we think anyone will reach, anyway.
-
-We're also working on Magic Tier 3 code, which was flat out ruled as impractical
-to be done on TMWA but is not so impossible on Evol2 code. At least that's what
-was on the comments. It is not on the beta yet.
-
-{b}FAQ - What about TMW rEvolt?{/b}
-
-It is not immediately affected by these changes.
-
-For now, please bear with us (and help us!) to make TMW Legacy transition between
-code bases the smoothest possible; And in due time we'll reveal the plan for TMW
-rEvolt and Steam Release.
-
-{b}Unofficial new quests{/b}
-
-To celebrate the end of TMWA and because HoraK volunteered to write them, we have
-added a new quest for the Assassin Gear. As Magic Tier 2 is finally coming to a
-close, HoraK added a nice parting gift for it.
-
-Both new quests will be different on TMW Evolved. For one, because Magic Tier 3.
-For two, because magic in overall has changed.
-
-That's it for today, HAVE FUN!
-
-{author:Jesusalva}
diff --git a/world/map/news.d/94-news-2021-05-28.txt b/world/map/news.d/94-news-2021-05-28.txt
deleted file mode 100644
index 6de82ecb..00000000
--- a/world/map/news.d/94-news-2021-05-28.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-{title:IRC Migration}
-{date:2021-05-28}
-
-{b}We are moving to Libera.Chat on IRC.{/b}
-
-Game Chat, Discord Integration, et cetera are unaffected. All our bots have moved
-as well. For those whom do not use IRC directly, no action is needed.
-
-There weren't many votes on our community poll, but after witnessing with our own
-eyes a channel being taken over without any sort of warning or whatsoever, we
-have decided that Freenode no longer provides any sort of reliable operational
-stability.
-
-We are NOT taking this decision based on rumors - both true and fake - which are
-circulating from both sides; We are taking this decision based on what we witnessed.
-
-Therefore, we have settled to move all our infrastructure to Libera Chat, based
-among other things, on the community will.
-
-This is a strictly technical decision; Operational stability has always been a
-priority for us, from backup to the choice of applications which are exposed to
-the public, like our wiki and forums backbone. IRC is no exception to this rule.
-
-We also have decided to DROP the bridge which was maintaining a link between
-both networks for the reasons mentioned above. Therefore, users connecting to the
-old network WON'T be able to receive any support whatsoever. Our other bots have
-also withdrawn.
-
-{b}Improvements to #upmarmu{/b}
-
-dangerDuck did some improvements to upmarmu (brawling skill).
-
-Check it out if you are a brawler!
-
-{author:Jesusalva}
diff --git a/world/map/news.d/news.template b/world/map/news.d/news.template
deleted file mode 100644
index dcd10d69..00000000
--- a/world/map/news.d/news.template
+++ /dev/null
@@ -1,23 +0,0 @@
-{title:Exciting News!}
-{date:YYYY-MM-DD}
-
-This is a really exciting news entry!
-
-Leave a blank line between paragraphs, and wrap
-each line at about 50 characters.
-
-If you ever need to use actual curly braces, just
-use {{ and }}.
-
-This is our homepage: {link:http://themanaworld.org}
-
-{red}You can do colors {green}and they nest{/green}
-and restore properly, even across multiple lines{/red}
-
-{ul}
-{li}You can also do lists{/li}
-{li}But they're kind of annoying{/li}
-{/ul}
-{li}And don't do as much error checking as they should{/li}
-
-{author:demo}
diff --git a/world/map/news.php b/world/map/news.php
deleted file mode 100644
index d9f4d2e5..00000000
--- a/world/map/news.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-// configuration variables
-$min_manaplus = '1.3.6.9';
-
-// utility functions
-function failure_headers()
-{
- header('HTTP/1.0 403 Upgrade your client');
- common_headers();
-}
-
-function common_headers()
-{
- header('Content-type: text/plain');
- header('Cache-Control: no-store, no-cache, must-revalidate');
- header('Cache-Control: post-check=0, pre-check=0', false);
- header('Pragma: no-cache');
-}
-
-function starts_with($haystack, $needle)
-{
- // avoid allocation
- return strpos($haystack, $needle, 0) === 0;
-}
-
-function record_version($agent)
-{
- $file = 'versions/' . date('Y-m-d') . '.txt';
- // is touching this really needed?
- touch($file);
- file_put_contents($file, '[' . date('H:i') . "] $agent\n", FILE_APPEND);
-}
-
-// response functions
-function handle_tmw($agent)
-{
- failure_headers();
- echo "##1 The client you're using is really old!\n",
- "##1 Please upgrade to the ManaPlus client.\n",
- "##1 http://manaplus.org/\n",
- "##1 TMW Staff\n \n";
-}
-
-function handle_mana($agent)
-{
- failure_headers();
- echo "##1 The client you're using is no longer\n".
- "##1 supported! Please upgrade to ManaPlus\n".
- "##1 http://manaplus.org/\n \n".
- "##1 TMW Staff\n \n";
-}
-
-function handle_manaplus($agent, $min_version)
-{
- $version_pos = strpos($agent, '4144 v') + 6;
- $version_end = strpos($agent, ')', $version_pos);
- $agent_version = substr($agent, $version_pos, $version_end - $version_pos);
- if (version_compare($agent_version, $min_version) < 0)
- {
- failure_headers();
- echo "##1 The client you're using is no longer\n",
- "##1 supported! Please upgrade to $min_version or\n",
- "##1 higher!\n \n",
- "##1 TMW Staff\n \n";
- }
- else
- {
- common_headers();
- }
-}
-
-function handle_other($agent)
-{
- common_headers();
- echo "##1 I have no clue what client you're using. Good luck!\n";
-}
-
-function handle_browser($agent)
-{
- common_headers();
- echo "##1 It looks like this is a web browser, not a game client\n";
-}
-
-// main body
-$agent = $_SERVER['HTTP_USER_AGENT'];
-
-if (starts_with($agent, 'TMW'))
-{
- handle_tmw($agent);
- record_version($agent);
-}
-else if (starts_with($agent, 'Mana'))
-{
- if (starts_with($agent, 'ManaPlus'))
- {
- handle_manaplus($agent, $min_manaplus);
- }
- else if (starts_with($agent, 'Mana/'))
- {
- handle_mana($agent);
- }
- else
- {
- handle_other($agent);
- }
- record_version($agent);
-}
-else
-{
- handle_browser($agent);
-}
-
-echo "##7 TMW Staff will never ask you for your password.\n";
-echo "##7 Anyone doing so is trying to scam you.\n \n";
-
-print file_get_contents('news.txt');
-?>
diff --git a/world/map/npc/001-1/_import.txt b/world/map/npc/001-1/_import.txt
deleted file mode 100644
index 3122724c..00000000
--- a/world/map/npc/001-1/_import.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-// Map 001-1: Tulimshar Port
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 001-1
-npc: npc/001-1/_mobs.txt
-npc: npc/001-1/_nodes.txt
-npc: npc/001-1/_warps.txt
-npc: npc/001-1/adrian.txt
-npc: npc/001-1/ched.txt
-npc: npc/001-1/children.txt
-npc: npc/001-1/constable.txt
-npc: npc/001-1/dock.txt
-npc: npc/001-1/eomie.txt
-npc: npc/001-1/ferry_master.txt
-npc: npc/001-1/gate_guards.txt
-npc: npc/001-1/gossip.txt
-npc: npc/001-1/guards.txt
-npc: npc/001-1/inac.txt
-npc: npc/001-1/mapflags.txt
-npc: npc/001-1/north_shops.txt
-npc: npc/001-1/npcs.txt
-npc: npc/001-1/sewer_east.txt
-npc: npc/001-1/sewer_north.txt
-npc: npc/001-1/stat_reset.txt
-npc: npc/001-1/tinris.txt
-npc: npc/001-1/tombstones.txt
-npc: npc/001-1/weellos.txt
diff --git a/world/map/npc/001-1/_mobs.txt b/world/map/npc/001-1/_mobs.txt
deleted file mode 100644
index ebc1b007..00000000
--- a/world/map/npc/001-1/_mobs.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Port mobs
-
-001-1,32,59,10,11|monster|GreenSlime|1005,8,100000ms,30000ms
-001-1,45,100,10,11|monster|GreenSlime|1005,8,100000ms,30000ms
-001-1,37,75,8,34|monster|SeaSlime|1033,8,100000ms,30000ms
-001-1,86,84,65,55|monster|Maggot|1002,11,100000ms,30000ms
-001-1,86,84,65,55|monster|SeaSlime|1033,8,100000ms,30000ms
diff --git a/world/map/npc/001-1/_nodes.txt b/world/map/npc/001-1/_nodes.txt
deleted file mode 100644
index 8d82cc96..00000000
--- a/world/map/npc/001-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Port nodes
-
-// (no nodes)
diff --git a/world/map/npc/001-1/_warps.txt b/world/map/npc/001-1/_warps.txt
deleted file mode 100644
index 2b3f2dfd..00000000
--- a/world/map/npc/001-1/_warps.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Port warps
-
-001-1,63,119|warp|3,-1,002-1,63,21
-001-1,103,119|warp|3,-1,002-1,103,21
-001-1,55,71|warp|-1,-1,001-2,31,27
-001-1,52,71|warp|-1,-1,001-2,28,27
-001-1,49,71|warp|-1,-1,001-2,25,27
-001-1,114,99|warp|-1,-1,001-2,25,64
-001-1,27,32|warp|-1,-1,001-2,28,101
-001-1,37,32|warp|-1,-1,001-2,71,101
-001-1,55,34|warp|0,-1,001-2,104,101
-001-1,52,22|warp|-1,-1,001-2,95,52
-001-1,57,22|warp|-1,-1,001-2,114,52
-001-1,28,23|warp|-1,-1,001-2,28,87
-001-1,28,44|warp|-1,-1,021-3,29,61
-001-1,59,98|warp|-1,-1,001-2,65,25
diff --git a/world/map/npc/001-1/adrian.txt b/world/map/npc/001-1/adrian.txt
deleted file mode 100644
index 9582cba5..00000000
--- a/world/map/npc/001-1/adrian.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-001-1,113,64,0|script|Adrian|213
-{
- mes "[Adrian]";
- mes "\"Hello. Are you here to pick up some luggage?\"";
- if (QL_KYLIAN == 1)
- menu
- "Yes. Kylian sent me to get his luggage.",L_Get,
- "No.",L_No;
- menu
- "No.",L_No;
-L_No:
- next;
- mes "[Adrian]";
- mes "\"Too bad. I'd like to go get a beer, but I have to wait here until all the luggage is picked up.\"";
- mes "He sighs.";
- goto L_Close;
-
-L_Get:
- next;
- mes "[Adrian]";
- mes "\"Wonderful! Please show me your ticket.\"";
- mes "He checks the paper Kylian gave you and then gives you a critical look.";
- next;
- getinventorylist;
- if ((checkweight("LeatherSuitcase", 1) == 0) || (@inventorylist_count == 100))
- goto L_Inventory;
- mes "[Adrian]";
- mes "\"Alright. Here it is. Good luck carrying that thing.\"";
- mes "Adrain hands you a very heavy suitcase.";
- getitem "LeatherSuitcase", 1;
- set QL_KYLIAN, 2;
- goto L_Close;
-
-L_Inventory:
- mes "[Adrian]";
- mes "\"The suitcase is rather heavy. No offense, but you don't look like you can carry it.\"";
- mes "Maybe you should get rid of some of the other stuff you're carrying.\"";
- goto L_Close;
-
-L_Close:
- set @inventorylist_count, 0;
- close;
-}
diff --git a/world/map/npc/001-1/ched.txt b/world/map/npc/001-1/ched.txt
deleted file mode 100644
index 1710ff1e..00000000
--- a/world/map/npc/001-1/ched.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Student at Tulimshar's magic academy
-
-001-1,43,48,0|script|Ched|113
-{
- mes "[Ched]";
- mes "\"I'm trying to get work on my Alchemy homework, but I'm having some trouble.\"";
- mes "\"I'm supposed to combine two potions to create a " + getitemlink("ConcentrationPotion") + ", but I can't seem to figure out which two to combine...\"";
- next;
- mes "\"Maybe I should go back to practicing '" + get(.invocation$, "detect-magic") + "' until I can make potions properly.\" %%6";
- close;
-}
diff --git a/world/map/npc/001-1/children.txt b/world/map/npc/001-1/children.txt
deleted file mode 100644
index 83718566..00000000
--- a/world/map/npc/001-1/children.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-// Aisha
-
-001-1,102,27,0|script|Aisha|108
-{
- set @TEMP,rand(10);
- if(@TEMP == 1) goto L_1;
- if(@TEMP == 2) goto L_2;
- if(@TEMP == 3) goto L_3;
- if(@TEMP == 4) goto L_4;
- if(@TEMP == 5) goto L_5;
- if(@TEMP == 6) goto L_6;
- if(@TEMP == 7) goto L_7;
- if(@TEMP == 8) goto L_8;
- if(@TEMP == 9) goto L_9;
- goto L_1;
-
-L_1:
- mes "[Aisha]";
- mes "\"Maggots are so slimey!\" %%^";
- goto L_Close;
-
-L_2:
- mes "[Aisha]";
- mes "\"Want to play ball with me?\"";
- goto L_Close;
-
-L_3:
- mes "[Aisha]";
- mes "\"There are so many monsters! I hate scorpions!\" %%3";
- goto L_Close;
-
-L_4:
- mes "[Aisha]";
- mes "\"When I grow up, I want to be strong enough to kill a scorpion!\" %%=";
- goto L_Close;
-
-L_5:
- mes "[Aisha]";
- mes "\"Mommy told me that you can sell the things that monsters drop.\"";
- goto L_Close;
-
-L_6:
- mes "[Aisha]";
- mes "\"Have you tried to eat a roasted maggot? They're sooo yummy! Mommy says they're healthy too!\" %%8";
- goto L_Close;
-
-L_7:
- mes "[Aisha]";
- mes "\"I want to be a Doctor when I grow up!\"";
- goto L_Close;
-
-L_8:
- mes "[Aisha]";
- mes "\"That earthquake was sooo scary! The earth was shaking and everything was breaking down... but now they've rebuilt everything.\"";
- goto L_Close;
-
-L_9:
- mes "\"I know a very bad word. But I can't say it because monsters will come and get me if I do!\"";
- next;
- menu
- "A bad word?", L_tell,
- "Oh. You better keep it to yourself then.", L_Close;
-
-L_tell:
- mes "[Aisha]";
- mes "\"I heard my mother say it once, and she made me promise her to never say it. ##BNever##b!\"";
- next;
- menu
- "If I promise to never tell anyone, can you tell me the word?", L_keepword,
- "I understand. You don't need to tell me...", L_giveword,
- "Goodbye!", L_Close;
-
-L_keepword:
- mes "[Aisha]";
- mes "\"No.\"";
- goto L_Close;
-
-L_giveword:
- mes "[Aisha]";
- mes "Aisha looks around as she leans in and hushes you to silence. After a few seconds, she whispers to you:";
- mes "\"I like you, so I'll tell you the bad word. But you can't tell anyone else about it! The bad word is '" + get(.invocation$, "spell-aggravate") + ".'\"";
- next;
-
- mes "[Aisha]";
- mes "Terrified, she looks around once more.";
- mes "\"But you can't tell anyone!\" %%>";
- goto L_Close;
-
-L_Close:
- set @TEMP, 0;
- close;
-}
diff --git a/world/map/npc/001-1/constable.txt b/world/map/npc/001-1/constable.txt
deleted file mode 100644
index ecc8a0d4..00000000
--- a/world/map/npc/001-1/constable.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-
-001-1,50,74,0|script|Constable Perry Graf|150
-{
- mes "[Constable Perry Graf]";
- mes "\"Hello. Make sure to follow the rules!\"";
- callfunc "GameRules";
- close;
-}
diff --git a/world/map/npc/001-1/dock.txt b/world/map/npc/001-1/dock.txt
deleted file mode 100644
index 077e3ce6..00000000
--- a/world/map/npc/001-1/dock.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-// The ferry dock
-// Author: Wushin
-
-001-1,75,70,0|script|Tulimshar Koga|395,9,4
-{
- set @npc_distance, 10;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardFerry";
- end;
-
-OnTouch:
- addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard";
- end;
-
-OnBoard:
- callfunc "BoardFerry";
- end;
-}
-
-001-1,68,72,0|script|Tulimshar Dock|400,2,2
-{
- set @npc_distance, 3;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardFerry";
- end;
-}
-
-001-1,70,70,0|script|#TulimsharDock|32767
-{
- end;
-OnCommandArrive:
- disablenpc "Tulimshar Dock";
- enablenpc "Tulimshar Koga";
- areatimer 0, "001-1", 66, 71, 77, 73, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock
- end;
-
-OnAreaWarp:
- callfunc "BoardFerry";
- end;
-
-OnCommandWarp:
- disablenpc "Tulimshar Koga";
- enablenpc "Tulimshar Dock";
- end;
-}
diff --git a/world/map/npc/001-1/eomie.txt b/world/map/npc/001-1/eomie.txt
deleted file mode 100644
index 65cee42e..00000000
--- a/world/map/npc/001-1/eomie.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-001-1,71,23,0|script|Eomie|164
-{
- set @grass_amount, 5;
- set @water_amount, 2;
- set @ice_amount, 2;
-
- set @silk_exp, 600;
-
- if (QL_ANWAR >= 14) goto L_Done;
- if (QL_ANWAR >= 9) goto L_CastedSpell;
- if (QL_ANWAR == 8) goto L_GetStuff;
-
- mes "[Eomie]";
- mes "\"I maintain this little oasis in the desert.\"";
- if (QL_ANWAR != 7)
- goto L_Close;
- menu
- "I need to learn a spell to use Tinris' magic fertilizer. Can you help me out?",L_Next;
-
-L_Next:
- mes "[Eomie]";
- mes "\"Oh? Well, that's a rather difficult task.";
- mes "I'd be glad to help you, but unfortunately, I can't. If I were to interrupt the magic I use to keep this alive, it would die.\"";
- next;
- mes "\"It's unusually hot at the moment – even for this desert area – so it's really out of the question.\"";
- menu
- "Is there any chance you could help me?",L_Continue;
-
-L_Continue:
- mes "She hesitates.";
- set QL_ANWAR, 8;
- goto L_GetStuff;
-
-L_GetStuff:
- // QL_ANWAR == 8
- mes "[Eomie]";
- mes "\"I could try to briefly interrupt my magic and then cast the spell on the fertilizer, but I would need to prepare the grass beforehand.";
- mes "Bring me " + @grass_amount + " " + getitemlink("GrassSeed") + ", " + @water_amount + " " + getitemlink("BottleOfWater") + ", and " + @ice_amount + " " + getitemlink("IceCube") + ".\"";
- menu
- "I've got everything.",L_More,
- "Where can I get Grass Seeds?",L_Hurnscald,
- "How can I get Ice Cubes? We're in the middle of the desert!",L_Mine,
- "Ok. I'll go and get them.",L_Close;
-L_More:
- if ((countitem("GrassSeed") < @grass_amount) || (countitem("BottleOfWater") < @water_amount) || (countitem("IceCube") < @ice_amount))
- goto L_NoItem;
-
- delitem "GrassSeed", @grass_amount;
- delitem "BottleOfWater", @water_amount;
- delitem "IceCube", @ice_amount;
- set QL_ANWAR, 9;
- mes "[Eomie]";
- mes "\"Very good!\"";
- mes "She takes the ingredients you brought her and uses them to cast a cool mist into the air.";
- misceffect sfx_magic_nature;
- next;
- mes "[Eomie]";
- mes "\"That should last long enough to keep the plants alive while I cast the spell on the fertilizer. Besides, I can replant anything that dies with the seeds you brought me.\"";
- next;
- mes "She takes the fertilizer and casts some invocations. After a minute, she hands the now-glowing substance back to you.";
- mes "[Eomie]";
- mes "\"That should work now. I'm glad you're taking care of the plants! Not enough people do that nowadays.\" %%1";
- goto L_Close;
-
-L_Hurnscald: // player asked how to get Grass Seeds
- mes "[Eomie]";
- mes "\"Squirrels tend to pick up " + getitemlink("GrassSeed") + " as they gather food. You can find them around Hurnscald if you ride the ferry over.\"";
- goto L_Close;
-
-L_Mine: // player asked how to get Ice Cubes
- mes "[Eomie]";
- mes "\"Quite the quandary – isn't it? Naturally, you can easily find them on the continent of Kaizei, which is far up north and covered with snow most time of the year. But it might be a bit difficult to get there.\"";
- next;
- mes "\"I heard that Ice Goblins were seen in the caves surrounding Nivalis. Maybe you can find " + getitemlink("IceCube") + " there.\"";
- goto L_Close;
-
-L_CastedSpell: // QL_ANWAR >= 9 but below 14
- mes "[Eomie]";
- mes "\"Thankfully, the grass wasn't damaged. I hope Anwar finds the magic fertilizer to be useful.\"";
- if (QL_ANWAR != 13)
- goto L_Close;
- menu
- "It was. He even created this Silk Headband as a present for you!",L_Present,
- "(Mumble something and leave)",L_Close;
-
-L_Present:
- if (countitem("SilkHeadband") < 1)
- goto L_NoItem;
- delitem "SilkHeadband", 1;
- getexp @silk_exp, 0;
- set QL_ANWAR, 14;
- mes "[Eomie]";
- mes "\"Oh, that's so nice of him! Please tell him that I really like it!\"";
- mes "She smiles.";
- goto L_Close;
-
-L_Done: // QL_ANWAR >= 14
- mes "[Eomie]";
- mes "\"Hello! I'm happy to see someone like you so dedicated to the environment.\" %%8";
- goto L_Close;
-
-L_NoItem:
- mes "[Eomie]";
- mes "\"Where is it?\" %%3";
- goto L_Close;
-
-L_Close:
- set @grass_amount, 0;
- set @water_amount, 0;
- set @ice_amount, 0;
- close;
-}
diff --git a/world/map/npc/001-1/ferry_master.txt b/world/map/npc/001-1/ferry_master.txt
deleted file mode 100644
index c1e6cbb6..00000000
--- a/world/map/npc/001-1/ferry_master.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-
-001-1,64,75,0|script|Ferry Master#tulimshar|138
-{
- mes "[Ferry Master]";
- mes "\"Hello! Do you need something?\"";
- goto L_Main;
-
-L_Main:
- menu
- "How do I use the ferry?", L_Explain,
- "Nothing, I guess.", L_Close;
-
-L_Explain:
- mes "[Ferry Master]";
- callfunc "FerryHelp";
- goto L_Main;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-1/gate_guards.txt b/world/map/npc/001-1/gate_guards.txt
deleted file mode 100644
index 4370036d..00000000
--- a/world/map/npc/001-1/gate_guards.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-// Guard near the magic school
-001-1,39,33,0|script|Guard#school|104
-{
- mes "[Guard]";
- mes "\"My presence here is just a formality. The mages inside can easily defend themselves.\"";
- close;
-}
-001-1,56,47,0|script|Guard#castle|104
-{
- mes "[Guard]";
- mes "\"Tulimshar is a resilient city; its citizens have made quite a comeback after the earthquake.\"";
- close;
-}
-
-001-1,61,99,0|script|Guard#east3|104
-{
- mes "[Guard]";
- mes "\"Just north of here is a palace where you can find both the Council of Wizards and the Magic Institute of Tulimshar.\"";
- close;
-}
-001-1,53,72,0|script|Guard#govt_out|123
-{
- mes "[Guard]";
- mes "\"There are government officials inside who can help you form a party, obtain a trade license, or even get married.\"";
- close;
-}
diff --git a/world/map/npc/001-1/gossip.txt b/world/map/npc/001-1/gossip.txt
deleted file mode 100644
index a2266498..00000000
--- a/world/map/npc/001-1/gossip.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-// NPC to provide hints on progression of linear quest chain in Tulimshar
-
-001-1,66,104,0|script|Gladys|154
-{
- mes "[Gladys]";
- mes "\"Hello deary! I hear some of the most fascinating rumors!\"";
- next;
- mes "\"Would you like me to let you in on the good stuff?\"";
- menu
- "Tell me about Lt. Dausen.", L_Intro,
- "Tell me about Fieri.", L_Cook,
- "Tell me about Sarah.", L_Sarah,
- "Tell me about Sandra.", L_Sandra,
- "Tell me about the Desert Mine.", L_Desert,
- "Tell me about the Ferry.", L_Ferry,
- "No thanks.", L_No;
-
-L_No:
- mes "[Gladys]";
- mes "\"Very well. Come back later if you want to hear some juicy news!\"";
- goto L_Close;
-
-L_Intro:
- mes "[Gladys]";
- mes "\"Have you met our lovely guard captain yet? He usually keeps post just outside the gates to keep an eye on things. He likes to talk to new adventurers too.\"";
- goto L_Close;
-
-L_Cook:
- mes "[Gladys]";
- mes "\"I hear the kitchen at the Magic Institute of Tulimshar is in need of some help.\"";
- next;
- mes "\"The only thing bigger then a wizard's ego is their waistline. Hehe.\" %%8";
- goto L_Close;
-
-L_Sarah:
- mes "[Gladys]";
- mes "\"Do you believe what parents will let their kids do these days?! I heard about this girl in the southeast side of town who does nothing but eat sweets all day! Honestly, what is this world coming to?\"";
- goto L_Close;
-
-L_Sandra:
- mes "[Gladys]";
- mes "\"The students and wizards at the Magic Institute of Tulimshar are always looking for people to gather the reagents they need for spells as they are far too busy studying to gather the materials themselves.\"";
- goto L_Close;
-
-L_Desert:
- mes "[Gladys]";
- mes "\"If you're still looking for adventure, I would suggest talking to some of the guards. I hear there's a sizable monster threat outside the city walls!\"";
- goto L_Close;
-
-L_Ferry:
- mes "[Gladys]";
- mes "\"There's a ferry in the northern part of town that takes travelers to exotic new places!\"";
- next;
- mes "\"I haven't been on it myself, but I hear it travels all over the world!\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-1/guards.txt b/world/map/npc/001-1/guards.txt
deleted file mode 100644
index df25a13e..00000000
--- a/world/map/npc/001-1/guards.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-
-001-1,103,99,0|script|Ekinu|104
-{
- mes "[Ekinu the Town Guard]";
- mes "\"What a disaster... I can't believe that we managed to rebuild the town so quickly.\"";
- next;
- menu "Can you give me any tips?", L_Tip,
- "Do you have any information?", L_Info,
- "What disaster?", L_disaster;
-
-L_Tip:
- set @TEMP,rand(7);
- if(@TEMP == 1) goto L_1;
- if(@TEMP == 2) goto L_2;
- if(@TEMP == 3) goto L_3;
- if(@TEMP == 4) goto L_4;
- if(@TEMP == 5) goto L_5;
- if(@TEMP == 6) goto L_6;
- goto L_0;
-
-L_1:
- mes "[Ekinu the Town Guard]";
- mes "\"Try to carry spare food when on quests or in dungeons – they will come in handy. I always take beer, but don't tell the Sergeant...\"";
- goto L_Close;
-
-L_2:
- mes "[Ekinu the Town Guard]";
- mes "\"If you ever get lost, check your map to get your bearings and figure out where you need to go.\"";
- goto L_Close;
-
-L_3:
- mes "[Ekinu the Town Guard]";
- mes "\"When in a dungeon, monsters are more aggressive – and often more powerful – than if they were outside.\"";
- goto L_Close;
-
-L_4:
- mes "[Ekinu the Town Guard]";
- mes "\"When gambling in casinos, make sure to not bet too much or you might become broke.\"";
- goto L_Close;
-
-L_5:
- mes "[Ekinu the Town Guard]";
- mes "\"Never underestimate your enemy.\"";
- goto L_Close;
-
-L_6:
- mes "[Ekinu the Town Guard]";
- mes "\"When fighting more than one enemy, try to focus on one at a time.\"";
- goto L_Close;
-
-L_0:
- mes "[Ekinu the Town Guard]";
- mes "\"Let me think of something... Oh! Do NOT attack the red or black scorpions unless you're sure you can kill it!\"";
- goto L_Close;
-
-L_Info:
- mes "[Ekinu the Town Guard]";
- mes "\"Everyone seems to want information... You won't get it – at least not here. I'm not even sure what you mean, to be honest.\"";
- goto L_Close;
-
-L_disaster:
- mes "[Ekinu the Town Guard]";
- mes "\"What do you mean, 'what disaster?' Weren't you there? That huge volcano ex...rusion... – whatever they call it – and then the earthquake!\"";
- next;
- mes "[Ekinu the Town Guard]";
- mes "\"Half the town was reduced to rubble! Somehow, no one was seriously injured, so I guess we were lucky...\"";
- next;
- mes "[Ekinu the Town Guard]";
- mes "\"Well, the mayor rebuilt everything quickly, but I still have no idea where he got all the GP from...\"";
- goto L_Close;
-
-L_Close:
- set @TEMP, 0;
- close;
-}
-
-001-1,107,42,0|script|Ryan|104
-{
- if (getskilllv(SKILL_MAGIC)) goto L_message;
-
- mes "[Ryan the Town Guard]";
- mes "Zzzz... Zzzz...";
- next;
- mes "[Ryan the Town Guard]";
- mes "\"Hmmmmmmh...?";
- mes "Oh, what? I wasn't sleeping! I was just resting my eyes!\"";
- close;
-
-L_message:
- mes "[Ryan the Town Guard]";
- mes "\" Watch out for Black Scorpions. They are extremely dangerous!\"";
- next;
- mes "\"Whenever one approaches the town gate, Ekinu has me run around shouting '" + $@SPELL_AGGRAVATE$ + ".' Somehow, this distracts it so Ekinu can kill it.\"";
- close;
-}
diff --git a/world/map/npc/001-1/inac.txt b/world/map/npc/001-1/inac.txt
deleted file mode 100644
index 2eb6e0a5..00000000
--- a/world/map/npc/001-1/inac.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-001-1,58,81,0|script|Inac|156
-{
- set @halloween_npc_id, $@halloween_npc_inac;
- callfunc "TrickOrTreat";
-
- mes "[Inac]";
- mes "\"This cities water system is amazing. It was built centuries ago after the cataclysm that turned Tonori into this desert.\"";
- next;
- mes "[Inac]";
- mes "\"They say that not much maintenance is needed, even though it's so old.\"";
- next;
- mes "[Inac]";
- mes "\"They also say monsters have moved into the underground tunnels that bring and distribute water.\"";
- close;
-}
diff --git a/world/map/npc/001-1/mapflags.txt b/world/map/npc/001-1/mapflags.txt
deleted file mode 100644
index 5815d542..00000000
--- a/world/map/npc/001-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-001-1|mapflag|town
-001-1|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/001-1/north_shops.txt b/world/map/npc/001-1/north_shops.txt
deleted file mode 100644
index a99e09ff..00000000
--- a/world/map/npc/001-1/north_shops.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Northern shopping plaza
-001-1,106,105,0|shop|Neko|101,TonoriDelight:*10,CactusDrink:*1,CactusPotion:*1,RoastedMaggot:*1,Beer:*1,ChickenLeg:*2
-001-1,111,108,0|shop|Inar|108,CottonShirt:*1,SerfHat:*1,CottonShorts:*1,CottonBoots:*1,DesertShirt:*1,CottonHeadband:*1,DesertHat:*4
-001-1,48,79,0|script|Well|400
-{
- callfunc "WaterBottle";
- end;
-}
diff --git a/world/map/npc/001-1/npcs.txt b/world/map/npc/001-1/npcs.txt
deleted file mode 100644
index 2e10dbd1..00000000
--- a/world/map/npc/001-1/npcs.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-001-1,49,82,0|script|Cyndala|210
-{
- set @npcname$, "Cyndala";
-
- mes "[" + @npcname$ + "]";
- mes "\"I used to visit the beach, but then the green slimes went crazy. I heard they ate a bunch of pirates that robbed some of Tulimshar's gold ships.\"";
- next;
- mes "\"Good riddance!\"";
- set @npcname$, "";
- close;
-}
-001-1,100,79,0|script|Marikel|211
-{
- set @npcname$, "Marikel";
-
- mes "[" + @npcname$ + "]";
- mes "\"Working on the docks can be hard nowadays.\"";
- next;
- mes "\"At least it pays well.\"";
- menu
- "Why does it pay well?",L_Marikel_1,
- "Pfft! Working on the docks is for the birds.",L_Marikel_2;
-
-L_Marikel_1:
- mes "[" + @npcname$ + "]";
- mes "\"Tulimshar is the wealthiest and most powerful city in the world!\"";
- close;
-
-L_Marikel_2:
- mes "[" + @npcname$ + "]";
- mes "\"Yeah, killing monsters may pay well, but I'd need more hazard pay than a tower mason to hunt monsters.\"";
- next;
- mes "\"I'll just play safe and stick to putting our stock away. Be careful, the monsters outside the city can be dangerous.\"";
- next;
- mes "\"The Sandstorm mine, just South of Tulimshar, is blocked from most but miners, soldiers and seasoned monster slayers.\"";
- close;
-}
-
-001-1,105,53,0|script|Joelin|212
-{
- set @npcname$, "Joelin";
-
- mes "[" + @npcname$ + "]";
- mes "\"My ship's to set sail soon. We'll tour around the Acean Isles, then back around to Argaes, then here in Tonori.\"";
- next;
- mes "\"Tulimshar's Fleets also are sending exploration teams to build a dock in Nivalis on Kaizei, which I'm not really hoping for. It's cold up there!\"";
- close;
-}
-
-001-1,107,53,0|script|Harper|213
-{
- set @npcname$, "Harper";
-
- mes "[" + @npcname$ + "]";
- mes "\"My captain knows an awlful lot about the world's continents.\"";
- close;
-}
-001-1,75,99,0|script|Swezanne|206
-{
- set @npcname$, "Swezanne";
-
- mes "[" + @npcname$ + "]";
- mes "\"Just through over this bridge is the bazaar. I go to the Bazaar and shop at Neko's.\"";
- close;
-}
-001-1,92,107,0|script|Michel|215
-{
- set @npcname$, "Michel";
-
- mes "[" + @npcname$ + "]";
- mes "\"Elanore is a magician in Southern Tulimshar that helps young adventurers by healing their battle wounds. When they are experienced enough, she stops healing them.\"";
- next;
- mes "\"You can find her by going out the south gate and to the east.\"";
- set @npcname$, "";
- close;
-}
diff --git a/world/map/npc/001-1/sewer_east.txt b/world/map/npc/001-1/sewer_east.txt
deleted file mode 100644
index 70a10cfc..00000000
--- a/world/map/npc/001-1/sewer_east.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// The Sewer Grate
-
-001-1,117,110,0|script|#tulimsharsewer2|45,0,0
-{
- mes "Descend into the sewers?";
- next;
- menu
- "Yes.", L_Sewer,
- "Nevermind.", L_Close;
-
-L_Sewer:
- warp "021-3",143,129;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-1/sewer_north.txt b/world/map/npc/001-1/sewer_north.txt
deleted file mode 100644
index 1e2419d3..00000000
--- a/world/map/npc/001-1/sewer_north.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// The Sewer Grate
-
-001-1,58,83,0|script|#tulimsharsewer1|45,0,0
-{
- mes "Descend into the sewers?";
- next;
- menu
- "Yes.", L_Sewer,
- "Nevermind.", L_Close;
-
-L_Sewer:
- warp "021-3",57,100;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-1/stat_reset.txt b/world/map/npc/001-1/stat_reset.txt
deleted file mode 100644
index e8c61ca3..00000000
--- a/world/map/npc/001-1/stat_reset.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-
-001-1,117,105,0|script|Malivox|103
-{
- set @npcname$, "Malivox";
- callfunc "StatReset";
- close;
-}
diff --git a/world/map/npc/001-1/tinris.txt b/world/map/npc/001-1/tinris.txt
deleted file mode 100644
index 2ae908bc..00000000
--- a/world/map/npc/001-1/tinris.txt
+++ /dev/null
@@ -1,187 +0,0 @@
-001-1,69,29,0|script|Tinris|160
-{
- set @cake_exp, 50;
- set @sweater_exp, 400;
-
- set @slime_amount1, 6;
- set @slime_amount2, 4;
- set @bugleg_amount1, 4;
- set @bugleg_amount2, 5;
- set @stinger_amount1, 3;
- set @stinger_amount2, 2;
- set @ash_amount1, 1;
- set @ash_amount2, 2;
- set @cactusp_amount, 1;
-
- if (QL_ANWAR >= 12) goto L_Done;
- if (QL_ANWAR == 11) goto L_GiveGift;
- if (QL_ANWAR == 9) goto L_FertilizerDone;
- if (QL_ANWAR >= 7) goto L_Eomie;
- if (QL_ANWAR == 6) goto L_SecondTry;
- if (QL_ANWAR >= 4) goto L_FirstTryDone;
- if (QL_ANWAR == 3) goto L_FirstTry;
- if (QL_ANWAR == 2) goto L_Annual;
-
- mes "[Tinris]";
- mes "\"This is a magic school. I'm a student here and focus on ways to magically enhance growth of plants.";
- mes "That topic is very important in a desert area.\"";
- if (QL_ANWAR != 1)
- goto L_Close;
- menu
- "The farmer Anwar sent me to ask for exactly that! Can you give me something for his field?",L_Next;
-
-L_Next:
- mes "[Tinris]";
- mes "\"Well... in principle yes. I can try to prepare something for him. But...\"";
- next;
- mes "\"The thing is, my girlfriend and I have our anniversary today. And the teachers won't let me leave the campus to get something for her!";
- mes "Please go to the bakery and buy a Chocolate Cake for me. She loves Chocolate Cakes.\"";
- next;
- mes "\"When I have a present for her I can focus on creating some magic fertilizer.\"";
- set QL_ANWAR, 2;
- goto L_Close;
-
-L_Annual: // QL_ANWAR == 2
- mes "[Tinris]";
- mes "\"Hello, did you get the Chocolate Cake for my girlfriend? After that I can focus on creating some magic fertilizer for you.\"";
- menu
- "Fresh from the bakery!",L_FreshFrom,
- "I didn't get it yet.",L_Close;
-
-L_FreshFrom:
- if (countitem("ChocolateCake") < 1)
- goto L_NoItem;
- delitem "ChocolateCake", 1;
- getexp @cake_exp, 0;
- set QL_ANWAR, 3;
- mes "[Tinris]";
- mes "\"Oh, thank you! You saved me!";
- mes "All right, now we can start with the magic fertilizer.\"";
- next;
- goto L_FirstTry;
-
-L_FirstTry:
- // QL_ANWAR == 3
- mes "[Tinris]";
- mes "\"You need to bring me some ingredients.";
- mes "The ingredients are " + @slime_amount1 + " Maggot Slimes, " + @bugleg_amount1 + " Bug Legs, " + @stinger_amount1 + " Scorpion Stingers and " + @ash_amount1 + " Piles of Ash.\"";
- menu
- "I have it.",L_Continue,
- "Ok, I'll go and get it.",L_Close;
-
-L_Continue:
- if ((countitem("MaggotSlime") < @slime_amount1) || (countitem("BugLeg") < @bugleg_amount1) || (countitem("ScorpionStinger") < @stinger_amount1) || (countitem("PileOfAsh") < @ash_amount1))
- goto L_NoItem;
- delitem "MaggotSlime", @slime_amount1;
- delitem "BugLeg", @bugleg_amount1;
- delitem "ScorpionStinger", @stinger_amount1;
- delitem "PileOfAsh", @ash_amount1;
- set QL_ANWAR, 4;
- mes "Tinris takes the things and starts to mix them together while mumbling some invocations.";
- misceffect sfx_magic_nature;
- next;
- mes "[Tinris]";
- mes "\"Ok. This should do it. But I'm not sure. I'm still researching this topic.";
- mes "Here, bring this to Anwar.\"";
- mes "He gives you a bottle with the magic fertilizer. You put it away in a separate pocket, so it doesn't get mixed with your inventory.";
- goto L_Close;
-
-L_FirstTryDone: // QL_ANWAR >= 4 but below 6
- mes "[Tinris]";
- mes "\"Bring the fertilizer to Anwar and let me know if it worked.\"";
- if (QL_ANWAR != 5)
- goto L_Close;
- menu
- "I did, the plants went brown and shriveled.",L_More;
-
-L_More:
- set QL_ANWAR, 6;
- goto L_SecondTry;
-
-L_SecondTry:
- // QL_ANWAR == 6
- mes "[Tinris]";
- mes "\"Oh no! All right, we need to do another try.";
- mes "Bring me " + @slime_amount2 + " Maggot Slimes, " + @bugleg_amount2 + " Bug Legs, " + @stinger_amount2 + " Scorpion Stingers, " + @ash_amount2 + " Piles of Ash and " + @cactusp_amount + " Cactus Potion.\"";
- menu
- "Here it is.",L_HereItIs,
- "Ok, I'll go and get it.",L_Close;
-
-L_HereItIs:
- if ((countitem("MaggotSlime") < @slime_amount2) || (countitem("BugLeg") < @bugleg_amount2) || (countitem("ScorpionStinger") < @stinger_amount2) || (countitem("PileOfAsh") < @ash_amount2) || (countitem("CactusPotion") < @cactusp_amount))
- goto L_NoItem;
- delitem "MaggotSlime", @slime_amount2;
- delitem "BugLeg", @bugleg_amount2;
- delitem "ScorpionStinger", @stinger_amount2;
- delitem "PileOfAsh", @ash_amount2;
- delitem "CactusPotion", @cactusp_amount;
- set QL_ANWAR, 7;
- mes "Tinris takes the things and starts to mix and mumble again.";
- misceffect sfx_magic_nature;
- next;
- mes "It takes quite a while.";
- next;
- mes "He looks rather stressed while working on the mixture.";
- next;
- mes "He sighs.";
- mes "[Tinris]";
- mes "\"Mh, I think the mixture itself is good. But I can't get the spells right. Maybe you should ask Professor Eomie to cast it; she's a genius with nature magic.\"";
- mes "He gives you the bottle with the magic fertilizer.";
- goto L_Close;
-
-L_Eomie:
- // QL_ANWAR >= 7 but below 9
- mes "[Tinris]";
- mes "\"I did the best I could, but it seems I'm not experienced enough to cast the spells correctly. Better ask Professor Eomie for help.\"";
- goto L_Close;
-
-L_FertilizerDone:
- // QL_ANWAR == 9
- mes "[Tinris]";
- mes "\"I heard Eomie cast the spell? I really hope it'll work this time. Bring the magic fertilizer to Anwar now.\"";
- goto L_Close;
-
-L_GiveGift:
- // QL_ANWAR == 11
- mes "[Tinris]";
- mes "\"Ah, did Anwar try the new fertilizer?\"";
- menu
- "Yes, it works great and he asked me to give you this Green V-Neck Sweater he made.",L_ItWorksGreat,
- "Not yet.",L_Close;
-
-L_ItWorksGreat:
- if (countitem("GreenVNeckSweater") < 1)
- goto L_NoItem;
- delitem "GreenVNeckSweater", 1;
- getexp @sweater_exp, 0;
- set QL_ANWAR, 12;
- mes "[Tinris]";
- mes "\"Hey, that's really nice. Tell him my thanks.\"";
- goto L_Close;
-
-L_Done:
- // QL_ANWAR >= 12
- mes "[Tinris]";
- mes "\"My girlfriend was delighted with the Chocolate Cake and Professor Eomie was happy with my work on the magic fertilizer.\"";
- mes "He twinkles.";
- mes "[Tinris]";
- mes "\"We're a good team.\"";
- goto L_Close;
-
-L_NoItem:
- mes "[Tinris]";
- mes "\"You don't have it!\"";
- goto L_Close;
-
-L_Close:
- set @slime_amount1, 0;
- set @slime_amount2, 0;
- set @bugleg_amount1, 0;
- set @bugleg_amount2, 0;
- set @stinger_amount1, 0;
- set @stinger_amount2, 0;
- set @ash_amount1, 0;
- set @ash_amount2, 0;
- set @cactusp_amount, 0;
- close;
-}
diff --git a/world/map/npc/001-1/tombstones.txt b/world/map/npc/001-1/tombstones.txt
deleted file mode 100644
index 45fc026d..00000000
--- a/world/map/npc/001-1/tombstones.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-// RIPs in Noble memorial
-
-001-1,56,103,0|script|RIP#1|400
-{
-
- mes "~ wushin ~";
- mes "\"Tonori swallowed him whole.\"";
- close;
-}
-
-001-1,57,103,0|script|RIP#2|400
-{
-
- mes "~ Nard ~";
- mes "\"Crushed by a loom.\"";
- close;
-}
-
-001-1,58,103,0|script|RIP#3|400
-{
-
- mes "~ tux9th ~";
- mes "\"Eaten by bugs.\"";
- close;
-}
-
-001-1,59,103,0|script|RIP#4|400
-{
-
- mes "~ o11c ~";
- mes "\"He asked for it, so they gave it to him.\"";
- close;
-}
-
-001-1,60,103,0|script|RIP#5|400
-{
-
- mes "~ " + strcharinfo(0) + " ~";
- mes "The epitaph is blank and the grave freshly dug.";
- close;
-}
-001-1,56,106,0|script|RIP#6|400
-{
-
- mes "~ Cassy ~";
- mes "\"Eaten by trolls.\"";
- close;
-}
-
-001-1,57,106,0|script|RIP#7|400
-{
- mes "~ George ~";
- mes "\"Eaten by snakes.\"";
- close;
-}
-
-001-1,58,106,0|script|RIP#8|400
-{
- mes "~ Kieron ~";
- mes "\"He was right; monsters were in the cave.\"";
- close;
-}
-
-001-1,59,106,0|script|RIP#9|400
-{
- mes "~ William ~";
- mes "\"Kieron was definitely right.\"";
- close;
-}
-
-001-1,60,106,0|script|RIP#10|400
-{
- mes "~ Tyer ~";
- mes "\"An experiment went wrong.\"";
- close;
-}
diff --git a/world/map/npc/001-1/weellos.txt b/world/map/npc/001-1/weellos.txt
deleted file mode 100644
index d5b76a27..00000000
--- a/world/map/npc/001-1/weellos.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-001-1,55,25,0|script|Weellos|103
-{
- set @halloween_npc_id, $@halloween_npc_weellos;
- callfunc "TrickOrTreat";
-
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowWeellosNT;
-
- if (isin("001-1", 48, 20, 61, 28)) goto L_In;
-
- mes "[Weellos]";
- mes "\"This is a very historic building – in fact, it's one of the oldest in the area.\"";
- next;
- mes "\"It's also the current seat of both the Council of Wizards and the Magic Institute of Tulimshar.\"";
- next;
- mes "\"Due to its historical significance, part of it has been turned into a museum.\"";
- goto L_BeforeClose;
-
-L_In:
- mes "[Weellos]";
- mes "\"What did you think? Isn't the building intriguing?\"";
- goto L_BeforeClose;
-
-L_BeforeClose:
- if (QL_KYLIAN != 4)
- goto L_Close;
- next;
- mes "You wonder if Kylian would be interested in seeing this historic landmark...";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-2/_import.txt b/world/map/npc/001-2/_import.txt
deleted file mode 100644
index ee75d70e..00000000
--- a/world/map/npc/001-2/_import.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// Map 001-2: South Tulimshar Indoor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 001-2
-npc: npc/001-2/_mobs.txt
-npc: npc/001-2/_nodes.txt
-npc: npc/001-2/_warps.txt
-npc: npc/001-2/bank.txt
-npc: npc/001-2/david.txt
-npc: npc/001-2/fieri.txt
-npc: npc/001-2/forge_shops.txt
-npc: npc/001-2/government_building.txt
-npc: npc/001-2/heathin.txt
-npc: npc/001-2/jhedia.txt
-npc: npc/001-2/manakins.txt
-npc: npc/001-2/mapflags.txt
-npc: npc/001-2/pauline.txt
-npc: npc/001-2/sandra.txt
-npc: npc/001-2/tathin.txt
-npc: npc/001-2/tondar.txt
-npc: npc/001-2/wizards.txt
-npc: npc/001-2/yanis.txt
diff --git a/world/map/npc/001-2/_mobs.txt b/world/map/npc/001-2/_mobs.txt
deleted file mode 100644
index 570c1234..00000000
--- a/world/map/npc/001-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// South Tulimshar Indoor mobs
-
diff --git a/world/map/npc/001-2/_nodes.txt b/world/map/npc/001-2/_nodes.txt
deleted file mode 100644
index 2bf62e74..00000000
--- a/world/map/npc/001-2/_nodes.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// South Tulimshar Indoor nodes
-
-001-2,0,0,0|script|Node001-2|32767
-{
- end;
-OnInit:
- setarray .m$, "_N-Alchemy", "001-2", "001-2", "001-2", "001-2";
- setarray .x1, "_N-Alchemy", 92, 92, 98, 98;
- setarray .y1, "_N-Alchemy", 76, 89, 76, 89;
- setarray .x2, "_N-Alchemy", 0, 0, 0, 0;
- setarray .y2, "_N-Alchemy", 0, 0, 0, 0;
- setarray .id, "_N-Alchemy", 0, 0, 0, 0;
- donpcevent "_N-Alchemy::OnMaybeStart";
- destroy;
-}
diff --git a/world/map/npc/001-2/_warps.txt b/world/map/npc/001-2/_warps.txt
deleted file mode 100644
index 07ebce6d..00000000
--- a/world/map/npc/001-2/_warps.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// South Tulimshar Indoor warps
-
-001-2,25,65|warp|-1,-1,001-1,114,100
-001-2,28,102|warp|-1,-1,001-1,27,33
-001-2,28,86|warp|-1,-1,001-1,28,22
-001-2,105,102|warp|0,-1,001-1,54,35
-001-2,25,28|warp|-1,-1,001-1,49,72
-001-2,28,28|warp|-1,-1,001-1,52,72
-001-2,31,28|warp|-1,-1,001-1,55,72
-001-2,71,102|warp|-1,-1,001-1,37,33
-001-2,105,73|warp|2,-1,001-2,104,42
-001-2,105,43|warp|2,-1,001-2,104,74
-001-2,114,53|warp|-1,-1,001-1,57,23
-001-2,95,53|warp|-1,-1,001-1,52,23
-001-2,57,90|warp|-1,-1,001-2,35,94
-001-2,36,95|warp|-1,0,001-2,58,90
-001-2,65,26|warp|-1,-1,001-1,59,99
diff --git a/world/map/npc/001-2/bank.txt b/world/map/npc/001-2/bank.txt
deleted file mode 100644
index b4286240..00000000
--- a/world/map/npc/001-2/bank.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// A Banker
-001-2,63,17,0|script|Hydusun|149
-{
- set @npcname$, "Hydusun";
- callfunc "Banker";
- close;
-}
-
diff --git a/world/map/npc/001-2/david.txt b/world/map/npc/001-2/david.txt
deleted file mode 100644
index 4f6c40f4..00000000
--- a/world/map/npc/001-2/david.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-001-2,92,88,0|script|David|120
-{
- set @Potion_EXP, 2000;
-
- if (Rossy_Quest == 17) goto L_FinalEnd;
- if (Rossy_Quest == 14) goto L_Julia;
- if (Rossy_Quest >= 8) goto L_Done;
-
- mes "[David]";
- mes "\"Learning magic is hard...\"";
- if (Rossy_Quest == 7) goto L_Help;
- close;
-
-L_Help:
- menu
- "Do you know Rossy?", L_Set,
- "I can tell, it is hard.", L_No;
-
-L_Set:
- mes "[David]";
- mes "\"Yes, I do. I am her teacher. Actually, that reminds me about her final exam... she didn't hand in her potion yet. Time is running out.\"";
- menu
- "A potion? Oh, uhm... Strange kind of exam. Bye.", L_No,
- "Right, I have her potion in my pocket. She asked me to bring it to you. Here it is.", L_Next;
-
-L_Next:
- mes "[David]";
- mes "\"Let me see.\"";
- set Rossy_Quest, 8;
- mes "\"This potion is... perfect! Tell Rossy that she successfully made her potion; it is flawless!\"";
- getexp @Potion_EXP, 0;
- close;
-
-L_Done:
- mes "[David]";
- mes "\"I am really happy that my best student successfully passed her exam!\"";
- close;
-
-L_No:
- close;
-
-L_Julia:
- mes "[David]";
- mes "\"I heard Rossy's sister got kidnapped. We're counting on you to find her!\"";
- next;
- mes "\"If you do find her, talk to her sister and her mother.\"";
- close;
-
-L_FinalEnd:
- mes "[David]";
- mes "Well done! Thanks for finding Julia!";
- close;
-}
diff --git a/world/map/npc/001-2/fieri.txt b/world/map/npc/001-2/fieri.txt
deleted file mode 100644
index 0d122fb2..00000000
--- a/world/map/npc/001-2/fieri.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-001-2,114,89,0|script|Fieri|117
-{
- if (QL_FIERI >= 4) goto L_Done2;
- if (QL_FIERI == 3) goto L_Progress2;
- if (QL_FIERI == 2) goto L_Done1;
- if (QL_FIERI == 1) goto L_Progress;
-
- set @TEMP, rand(2);
- if(@TEMP == 1) goto L_Opening1;
- goto L_Opening0;
-
-L_Opening0:
- mes "[Fieri]";
- mes "\"The Wizards are always hungry. All the magic all the time, sapping their energy.";
- mes "Could I ask a favor of you?\"";
- next;
- goto L_Ask;
-
-L_Opening1:
- mes "[Fieri]";
- mes "\"These Wizards eat like a store house full of maggots.";
- mes "At this rate I'll have nothing left to cook. Can you help me with a task?\"";
- next;
- goto L_Ask;
-
-L_Ask:
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- set @TEMP, rand(2);
- if(@TEMP == 1) goto L_Req1;
- goto L_Req0;
-
-L_Req0:
- mes "[Fieri]";
- mes "\"Great! I need a Beer for my Tonori Delight.\"";
- next;
- goto L_Set;
-
-L_Req1:
- mes "[Fieri]";
- mes "\"Bring me a Beer. I'll give you something if you do.\"";
- next;
- goto L_Set;
-
-L_Set:
- set QL_FIERI, 1;
- mes "[Fieri]";
- mes "\"Please bring it to me!\"";
- goto L_Close;
-
-L_Progress:
- if (countitem("Beer") < 1) goto L_NotEnough;
- mes "[Fieri]";
- mes "\"Oooh, perfect! It's perfect!";
- mes "You brought me my Beer! Here, have some cake for your troubles.\"";
- getinventorylist;
- if (@inventorylist_count - (countitem("Beer") == 1) > 99 - (countitem("CherryCake") == 0) ) goto L_TooMany;
- delitem "Beer", 1;
- getexp 100, 0;
- getitem "CherryCake", 5;
- set QL_FIERI, 2;
- next;
- mes "\"Now let's see...\"";
- goto L_Close;
-
-L_Progress2:
- if (countitem("MaggotSlime") < 3) goto L_NotEnough1;
- mes "[Fieri]";
- mes "\"Nice! They're perfect, just perfect!";
- mes "You brought me the 3 Maggot Slimes! Here, have some Tonori Delight as reward.\"";
- getinventorylist;
- if ((@inventorylist_count - (countitem("MaggotSlime") == 3) > 99 - (countitem("TonoriDelight") == 0) )) goto L_TooMany;
- delitem "MaggotSlime", 3;
- getexp 100, 0;
- getitem "TonoriDelight", 3;
- set QL_FIERI, 4;
- goto L_Close;
-
-L_NotEnough:
- mes "[Fieri]";
- mes "\"Oh, please hurry and bring me a Beer. The Wizards need their Tonori Delight!\"";
- goto L_Close;
-
-L_NotEnough1:
- mes "[Fieri]";
- mes "\"Please do hurry and bring me 3 Maggot Slimes, so I can finish the Tonori Delight!\"";
- goto L_Close;
-
-L_Done1:
- mes "[Fieri]";
- mes "\"Thank you so much!\"";
- mes "\"But... I need some more ingredients.\"";
- next;
- mes "\"I need 3 Maggot Slimes for that.\"";
- mes "\"Bring them to me, and I'll give you something nice.\"";
- set QL_FIERI, 3;
- goto L_Close;
-
-L_Done2:
- mes "[Fieri]";
- mes "\"I hope you like Tonori Delight as much as I do, because, you see...\"";
- next;
- mes "\"Tonori Delight is life!\"";
- goto L_Close;
-
-L_Close:
- set @TEMP, 0;
- close;
-
-L_TooMany:
- next;
- mes "[Fieri]";
- mes "\"You don't have room for my reward. I'll wait until you do.\"";
- goto L_Close;
-}
diff --git a/world/map/npc/001-2/forge_shops.txt b/world/map/npc/001-2/forge_shops.txt
deleted file mode 100644
index 31a4d25e..00000000
--- a/world/map/npc/001-2/forge_shops.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// Forge Shops
-
-001-2,30,60,0|shop|Gungnir|311,SlingShot:*1,SlingBullet:*1,ShortBow:*4,Arrow:1,IronArrow:*1
-001-2,25,59,0|shop|Mjolnir|377,Knife:*1,SharpKnife:*1,Dagger:*1,LeatherShirt:*1,LeatherShield:*1
diff --git a/world/map/npc/001-2/government_building.txt b/world/map/npc/001-2/government_building.txt
deleted file mode 100644
index 03c3eaf7..00000000
--- a/world/map/npc/001-2/government_building.txt
+++ /dev/null
@@ -1,159 +0,0 @@
-// The government building in the south west
-
-// A clerk
-001-2,25,21,0|script|Estard|107
-{
- mes "[Estard]";
- mes "\"Hello. What can I do for you?\"";
- next;
- if (PARTNER)
- goto L_main_married;
-
- menu
- "I'd like to get married.", L_marry,
- "Never mind.", L_Close;
-
-L_main_married:
- menu
- "I'd like to file for divorce.", L_divorce,
- "Never mind.", L_Close;
-
-L_marry:
- if (BaseLevel < WEDDING_MIN_LEVEL)
- goto L_marry_too_young;
- if (Zeny < WEDDING_FEE)
- goto L_marry_too_poor;
-
- mes "";
- mes "[Estard]";
- mes "\"Are you sure that you want to get married? It'll cost you ##B" + WEDDING_FEE + " GP##b.\"";
- menu
- "Yes!", L_marry_do,
- "I'm having second thoughts...", L_Close;
-
-L_marry_do:
- callsub S_give_rings;
- mes "";
- mes "[Estard]";
- mes "\"Here are your rings. In order to marry each other, you both must stand within one of the designated areas (like that small rug over there in the corner), wear your rings, and say '#marry (your partner's name).'\"";
- close;
-
-L_marry_too_young:
- mes "";
- mes "[Estard]";
- mes "\"I'm sorry, but you are too young to get married. You must be at least " + WEDDING_MIN_LEVEL + " levels old.\"";
- next;
-
- menu
- "Can I at least get the wedding rings now?", L_get_rings,
- "Thanks anyways.", L_Close;
-
-L_marry_too_poor:
- mes "";
- mes "[Estard]";
- mes "\"It costs ##B" + WEDDING_FEE + " GP##b to get married. That covers all the processing fees for the marriage and provides you with two wedding rings.\"";
- close;
-
-L_get_rings:
- mes "";
- mes "[Estard]";
- mes "\"Yes! You certainly can. They're ##B" + WEDDING_FEE + " GP##b. That covers all the processing fees for the marriage and provides you with two wedding rings.\"";
-
- if (Zeny < WEDDING_FEE)
- menu
- "Thanks, but I don't have enough with me right now.", L_Close;
- if (Zeny >= WEDDING_FEE)
- menu
- "Sounds great!", L_get_rings_pay,
- "No thanks.", L_Close;
- goto L_get_rings_pay;
-
-L_get_rings_pay:
- callsub S_give_rings;
-
- mes "";
- mes "[Estard]";
- mes "\"There you go! %%1\"";
- close;
-
-L_divorce:
- set @divorce_cost, DIVORCE_FEE_PER_LEVEL * BaseLevel;
-
- if (Zeny < @divorce_cost)
- goto L_divorce_not_enough;
-
- mes "[Estard]";
- mes "\"I'm sorry to hear that. If you're sure you want a divorce, it'll cost you %%B" + @divorce_cost + " GP%%b.\"";
- next;
- menu
- "I'm sure.", L_do_divorce,
- "I'm having second thoughts...", L_Close;
-
-L_do_divorce:
- if (Zeny < @divorce_cost)
- goto L_not_enough_money;
-
- set PARTNER, 0, PARTNER; // divorce the partner first, which will also divorce the rid if succesful
- if (PARTNER < 1) goto L_divorce_done;
-
- mes "";
- mes "[Estard]";
- mes "\"I'm having trouble finding your documents. Please come back later.\"";
- mes "";
- mes "[Server]";
- mes "There was an unexpected error when processing your divorce. Please report this to the developers.";
- close;
-
-L_divorce_done:
- set Zeny, Zeny - @divorce_cost;
-
- mes "";
- mes "[Estard]";
- mes "\"You have now officially divorced your spouse.\"";
- close;
-
-L_divorce_not_enough:
- mes "";
- mes "[Estard]";
- mes "\"I'm sorry, but you don't have enough money to get a divorce. You need ##B" + @divorce_cost + " GP##b.\"";
- close;
-
-L_not_enough_money:
- mes "";
- mes "[Estard]";
- mes "\"I'm sorry, but it seems as though you don't have enough money.\"";
- close;
-
-L_no_room_for_rings:
- mes "";
- mes "[Estard]";
- mes "\"Hm... it doesn't look like you have enough room to carry these rings.";
- mes "Free up some space, and then I'd be happy to give them to you.\"";
- close;
-
-L_Close:
- mes "";
- mes "[Estard]";
- mes "\"OK. Just come back whenever you're ready.\"";
- close;
-
-S_give_rings:
- if (Zeny < WEDDING_FEE)
- goto L_not_enough_money;
- getinventorylist;
- if (@inventorylist_count > 98)
- goto L_no_room_for_rings;
-
- set Zeny, Zeny - WEDDING_FEE;
- getitem "WeddingRing", 1;
- getitem "WeddingRing", 1;
- return;
-}
-
-// Guard
-001-2,22,21,0|script|Guard#govt_in|123
-{
- mes "[Guard]";
- mes "\"You're not allowed back here.\"";
- close;
-}
diff --git a/world/map/npc/001-2/heathin.txt b/world/map/npc/001-2/heathin.txt
deleted file mode 100644
index 53cc8b68..00000000
--- a/world/map/npc/001-2/heathin.txt
+++ /dev/null
@@ -1,337 +0,0 @@
-001-2,23,55,0|script|Heathin|147
-{
- set @TARROW_REQ_TERRA_ORE, 1;
- set @TARROW_REQ_COAL, 5;
- set @TARROW_REQ_GP, 3000;
- set @heathin_xp_bonus, (100 * BaseLevel);
-
- if (QL_TERRANITE_ARMOR == 14) && (BaseLevel >= 80) goto L_Arrows_Trade;
- if (QL_TERRANITE_ARMOR == 13) && (BaseLevel >= 80) goto L_Arrows_Ready;
- if (QL_TERRANITE_ARMOR == 12) && (BaseLevel >= 80) goto L_Arrows_Forge;
- if (QL_TERRANITE_ARMOR == 11) && (BaseLevel >= 80) goto L_Arrows;
- if (QL_TERRANITE_ARMOR == 10) && (BaseLevel >= 80) goto L_Chest_Armor_Ready;
- if (QL_TERRANITE_ARMOR == 9) && (BaseLevel >= 80) goto L_Chest_Armor_Forge;
- if (QL_TERRANITE_ARMOR == 8) && (BaseLevel >= 80) goto L_Chest_Armor;
- if (QL_TERRANITE_ARMOR == 7) && (BaseLevel >= 80) goto L_Legs_Ready;
- if (QL_TERRANITE_ARMOR == 6) && (BaseLevel >= 80) goto L_Legs_Forge;
- if (QL_TERRANITE_ARMOR == 5) && (BaseLevel >= 80) goto L_Legs;
- if (QL_TERRANITE_ARMOR == 4) && (BaseLevel >= 70) goto L_Hood_Ready;
- if (QL_TERRANITE_ARMOR == 3) && (BaseLevel >= 70) goto L_Hood_Forge;
- if (QL_TERRANITE_ARMOR == 2) && (BaseLevel >= 70) goto L_Hood;
- if (QL_TERRANITE_ARMOR == 2) && (BaseLevel >= 60) goto L_Forge_Thanks;
- if (QL_TERRANITE_ARMOR == 1) && (BaseLevel >= 60) goto L_Forge_Award;
- if (QL_TERRANITE_ARMOR < 1) && (BaseLevel >= 60) goto L_Start;
-
- mes "[Heathin]";
- mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \"";
- close;
-
-L_Start:
- mes "[Heathin]";
- mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \"";
- next;
- mes "\"By the order of the Wizard's Council, I've been commissioned to forge armor for the upcoming expediation. However, I am but a simple smith and cannot complete all this effort by myself. I need individuals that can gather Coal to heat my forge.\"";
- next;
- mes "\"Perhaps you would be interested in helping me out? Would you be willing to help me gather Coal and help me fulfill my commission? I am asking any and all willing souls to get me 50 coal, as that would put a significant dint in my goal.\"";
- menu
- "Sure, I'll help!", L_Help,
- "I'd rather keep my Coal for my own purposes, thank you very much.", L_No,
- "Wait, what kind of award are we talking about?", L_Interested;
-
-L_Help:
- set QL_TERRANITE_ARMOR, 1;
- mes "[Heathin]";
- mes "\"Excellent! I am always glad when someone can be of service not just to me, but to all of Tulimshar. Please get me 50 Coal and you will be compensated for your efforts.\"";
- close;
-
-L_Interested:
- mes "[Heathin]";
- mes "\"Well, I can compensate you from the commision I getting from the council.\"";
- next;
- mes "\"How does 20,000 GP and I'll offer my smithing services for a discount?\"";
- next;
- mes "\"Does this sound like something you might be interested in?\"";
- menu
- "Sure, I'll help!", L_Help,
- "I'd rather keep my Coal.", L_No,
- "Can you repeat that again?", L_Interested;
-
-L_Forge_Award:
- if (countitem ("Coal") < 50) goto L_Forge_Wait;
- getinventorylist;
- set QL_TERRANITE_ARMOR, 2;
- delitem "Coal", 50;
- getexp @heathin_xp_bonus, 0;
- set Zeny, Zeny + 20000;
- mes "[Heathin]";
- mes "\"You have brought the Coal. This is most excellent! As promised, I have a reward for you. Hopefully you will find it useful.\"";
- next;
- mes "\"Time to make some armor. The Council will be pleased. Thank you for your efforts!\"";
- close;
-
-L_Forge_Wait:
- mes "[Heathin]";
- mes "\"Hello again. Making armor keeps me pretty busy. I certainly hope I can fulfill my commission soon so that I can move on to bigger and better things.\"";
- next;
- mes "\"The pay is good, certainly, but I am a far better smith than this. If you can bring me 50 Coal, it would surely get me to my goal faster.\"";
- next;
- mes "\"I will be sure to provide an apt award once you are done.\"";
- close;
-
-L_Forge_Thanks:
- mes "[Heathin]";
- mes "\"Thank you again for helping me fulfil my commission. It has made a signficant dint in what the Council requires of me. Perhaps I may be of service to you again one day!\"";
- close;
-
-L_Hood:
- mes "[Heathin]";
- mes "\"Hello again friend, I just found out about this great metal called terranite.\"";
- next;
- mes "\"This metal is almost as strong as steel, but is also very ductile.\"";
- next;
- mes "\"With some effort, I can make this metal form rings tighter than any chain mail. It isn't the prettiest in hue, but its uses can be many.\"";
- next;
- mes "\"Unfortunately, it seems to be difficult to gather. Most that have searched for Terranite Ore either cannot find it or have never returned...\"";
- next;
- mes "\"I may be an excellent smith, but I certainly am no combatant. However, I would enjoy turning this ore into something useful, perhaps some type of armor to help those that may be braver.\"";
- next;
- mes "\"So, what do you say? Are you interested?\"";
- menu
- "No, thank you. Maybe later.", L_No,
- "Armor, you say? Definitely!", L_Yes;
-
-L_No:
- mes "[Heathin]";
- mes "\"Ah, that is too bad. Come back anytime.\"";
- close;
-
-L_Yes:
- set QL_TERRANITE_ARMOR, 3;
- mes "[Heathin]";
- mes "\"Great, this is going to be fun! As I have not had much practice with this armor, I'd like to get started soon.\"";
- next;
- mes "Heathin thinks for a moment.";
- next;
- mes "\"Ah, I know! I will make a helm... Well, more like a hood, since it will be woven.\"";
- next;
- mes "\"It will require a great amount of heat, if the rumors are to be believed. For this, I will need 100 Coal to keep my forge burning hot. I will also need 10 Terranite Ore to make the armor. Of course, such work does not come cheap. While I may enjoy my work, my time and effort is very valuable. Since you have been a great help I will only need 20,000 gold pieces, well below my going rate. Please come back with the gold, Coal and ore and I'll make this hood for you.\"";
- close;
-
-L_Hood_Forge:
- if ( (Zeny < 20000)
- || (countitem("Coal") < 100)
- || (countitem("TerraniteOre") < 10) )
- goto L_Hood_Wait;
- set QL_TERRANITE_ARMOR, 4;
- delitem "Coal", 100;
- delitem "TerraniteOre", 10;
- getexp @heathin_xp_bonus, 0;
- set Zeny, Zeny - 20000;
- mes "[Heathin]";
- mes "\"Great, you brought everything! Come back later and I'll have the helm ready for you.\"";
- close;
-
-L_Hood_Wait:
- mes "[Heathin]";
- mes "\"I am very busy right now. If you could bring me 10 Terranite Ore, 100 Coal and 20,000 gold pieces, I will make that terranite hood for you.\"";
- close;
-
-L_Hood_Ready:
- getinventorylist;
- if ((checkweight("TerraniteHelmet", 1) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- set QL_TERRANITE_ARMOR, 5;
- getitem "TerraniteHelmet", 1;
- mes "[Heathin]";
- mes "\"I am all done with your terranite hood. I hope you enjoy it! I have some work to wrap up for the Council, but come back later and I might be able to assist you again.\"";
- close;
-
-L_Legs:
- set QL_TERRANITE_ARMOR, 6;
- mes "[Heathin]";
- mes "\"I am glad you are back! I've just finished up some more of my commission. Now I can get back to making terranite armor for you. This time I will make some pants, but they need more ore, more Coal to heat my forge and of course, more gold for my efforts.\"";
- next;
- mes "\"To make terranite pants, I need 200 Coal, 30 Terranite Ore and 40,000 gold pieces. The faster you bring this to me, the faster I can have your terranite pants ready.\"";
- close;
-
-L_Legs_Forge:
- if ( (Zeny < 40000)
- || (countitem("Coal") < 200)
- || (countitem("TerraniteOre") < 30) )
- goto L_Legs_Wait;
- set QL_TERRANITE_ARMOR, 7;
- delitem "Coal", 200;
- delitem "TerraniteOre", 30;
- getexp @heathin_xp_bonus, 0;
- set Zeny, Zeny - 40000;
- mes "[Heathin]";
- mes "\"Great, you have brought everything! Come back later and I will have those terranite pants ready for you.\"";
- close;
-
-L_Legs_Wait:
- mes "[Heathin]";
- mes "\"I am very busy right now. If you could bring me 30 Terranite Ore, 200 Coal and 40,000 gold pieces, I will make those terranite pants for you.\"";
- close;
-
-L_Legs_Ready:
- getinventorylist;
- if ((checkweight("TerraniteLegs", 1) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- set QL_TERRANITE_ARMOR, 8;
- getitem "TerraniteLegs", 1;
- mes "[Heathin]";
- mes "\"I am all done with your terranite pants. Hope you enjoy them! I have some more work to complete for the Council. Come back later and I might be able to assist you again.\"";
- close;
-
-L_Chest_Armor:
- set QL_TERRANITE_ARMOR, 9;
- mes "[Heathin]";
- mes "\"Good to see you again. I have just finished up some more of my commission. Now I can get back to making terranite armor for you. This time, I will make some terranite chest armor, but it needs more ore, more Coal for my forge and of course, more gold to compensate for my efforts.\"";
- next;
- mes "\"To make terranite chest armor, I need 250 Coal, 40 Terranite Ore and 50,000 gold pieces. The faster you bring this to me, the faster I can have your terranite armor ready.\"";
- close;
-
-L_Chest_Armor_Forge:
- if ( (Zeny < 50000)
- || (countitem("Coal") < 250)
- || (countitem("TerraniteOre") < 40) )
- goto L_Chest_Armor_Wait;
- set QL_TERRANITE_ARMOR, 10;
- delitem "Coal", 250;
- delitem "TerraniteOre", 40;
- getexp @heathin_xp_bonus, 0;
- set Zeny, Zeny - 50000;
- mes "[Heathin]";
- mes "\"Splendid, you have brought everything! Come back later and I will have the terranite chest armor ready for you.\"";
- close;
-
-L_Chest_Armor_Wait:
- mes "[Heathin]";
- mes "\"I am very busy right now. If you could bring me 40 Terranite Ore, 250 Coal and 50,000 gold pieces, I will make that chest armor for you.\"";
- close;
-
-L_Chest_Armor_Ready:
- getinventorylist;
- if ((checkweight("TerraniteChestArmor", 1) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- set QL_TERRANITE_ARMOR, 11;
- getitem "TerraniteChestArmor", 1;
- mes "[Heathin]";
- mes "\"I have completed your terranite chest armor. I hope you enjoy it! I have some work to wrap up for the Council again, but come back later and I might be able to assist you once more.\"";
- close;
-
-L_Arrows:
- mes "[Heathin]";
- mes "\"How good to see you. I have experimented a little with Terranite Ore to see what else can be done with it. It seems to have some qualities suitable for weapons, but I have only tested it with arrows. If you would like, I can make Terranite Arrows, but as as with the armor, I need Coal, Terranite Ore and payment for my efforts.\"";
- next;
- mes "\"Also, it might be a while until I have time to see what else I can make with terranite other than arrows, as right now the Council is keeping me rather busy with my commission. So, would you like some Terranite Arrows?\"";
- menu
- "No, thank you.", L_Arrows_No,
- "Sure, I could use some arrows.", L_Arrows_Yes;
-
-L_Arrows_No:
- mes "[Heathin]";
- mes "\"Well, if you change your mind, I'm not going anywhere.\"";
- close;
-
-L_Arrows_Yes:
- set QL_TERRANITE_ARMOR, 12;
- mes "[Heathin]";
- mes "\"Good, good. I shall begin crafting these arrows as soon as you come back. However, I cannot just make small handfuls as it would not be worth my time and effort to have my concentration interrupted for small tasks. I will make 1,000 Terranite Arrows per request, for which I will need "+@TARROW_REQ_TERRA_ORE+" Terranite Ore, "+@TARROW_REQ_COAL+" Coal and "+@TARROW_REQ_GP+" gold pieces.\"";
- next;
- mes "\"See you soon!\"";
- close;
-
-L_Arrows_Forge:
- if ( (Zeny < @TARROW_REQ_GP)
- || (countitem("Coal") < @TARROW_REQ_COAL)
- || (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) )
- goto L_Arrows_Wait;
- set QL_TERRANITE_ARMOR, 13;
- delitem "Coal", @TARROW_REQ_COAL;
- delitem "TerraniteOre", @TARROW_REQ_TERRA_ORE;
- getexp @heathin_xp_bonus, 0;
- set Zeny, Zeny - @TARROW_REQ_GP;
- mes "[Heathin]";
- mes "\"Wonderful! You have everything I asked for. I will start working on the arrows right away.\"";
- close;
-
-L_Arrows_Wait:
- mes "[Heathin]";
- mes "\"If you want Terranite Arrows, please get me "+@TARROW_REQ_TERRA_ORE+" Terranite Ore, "+@TARROW_REQ_COAL+" Coal and "+@TARROW_REQ_GP+" gold pieces.\"";
- close;
-
-L_Arrows_Ready:
- getinventorylist;
- if ((checkweight("TerraniteArrow", 1000) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- set QL_TERRANITE_ARMOR, 14;
- getitem "TerraniteArrow", 1000;
- mes "[Heathin]";
- mes "\"All done, here you go! I hope you like them. I am still working on my commission, but if you ever need any more Terranite Arrows, just come on by with "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces and I will make another 1,000 arrows for you. By now I have enough Terranite Ore in reserve that you can just trade me my requirements to keep my resources up. Thank you for all your efforts!\"";
- close;
-
-L_Arrows_Trade:
- mes "[Heathin]";
- mes "\"Hello, there. If you have "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces, I will trade you 1,000 Terranite Arrows. Would you like some Terranite Arrows?\"";
- menu
- "No.", L_Arrows_Trade_No,
- "Yes.", L_Arrows_Trade_Yes;
-
-L_Arrows_Trade_No:
- mes "[Heathin]";
- mes "\"Come back again if you would like to get Terranite Arrows.\"";
- close;
-
-L_Arrows_Trade_Yes:
- if ( (Zeny < @TARROW_REQ_GP)
- || (countitem("Coal") < @TARROW_REQ_COAL)
- || (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) )
- goto L_Arrows_Trade_Wait;
- getinventorylist;
- if ((checkweight("TerraniteArrow", 1500) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- delitem "Coal", @TARROW_REQ_COAL;
- delitem "TerraniteOre", @TARROW_REQ_TERRA_ORE;
- set Zeny, Zeny - @TARROW_REQ_GP;
- set @lucky, 5 * rand(Luk);
- set @lucky$, "";
- getitem "TerraniteArrow", 1000 + @lucky;
- mes "[Heathin]";
- if(@lucky>0)
- set @lucky$, " You are lucky, I could forge "+@lucky+" more arrows than expected.";
- mes "Here you go!" + @lucky$ + " Come back again if you want more Terranite Arrows.\"";
- close;
-
-L_Arrows_Trade_Wait:
- mes "[Heathin]";
- mes "\"It seems that you do not have the necessary resources for me to trade you. Please come back with "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces if you want another 1,000 Terranite Arrows.\"";
- close;
-
-L_InventoryNoSpace:
- mes "[Heathin]";
- mes "\"Hm no. You can't carry this right now. Make some room and come back.\"";
- close;
-
-}
-001-2,25,55,0|script|HeathinDebug|147
-{
- mes "[Heathin Debug]";
- mes "Debug Action";
- menu
- "Reset", L_Reset,
- "Exit", L_End;
-
-L_Reset:
- set QL_TERRANITE_ARMOR, 0;
- mes "Reset!";
- goto L_End;
-
-L_End:
- end;
-
-OnInit:
- if (!debug)
- disablenpc "HeathinDebug";
- end;
-}
diff --git a/world/map/npc/001-2/jhedia.txt b/world/map/npc/001-2/jhedia.txt
deleted file mode 100644
index bca7d113..00000000
--- a/world/map/npc/001-2/jhedia.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-// Ingot maker takes iron ore, gives ingots for future crafting purposes.
-
-001-2,23,50,0|script|Jhedia|160
-{
- set @Cost_Per_Ingot, 1000;
- set @Iron_Ore_Per, 5;
- set @Coal_Per, 10;
-
- mes "[Jhedia]";
- mes "\"I forge Iron Ore into ingots. Ingots are more useful for skilled smiths, like armorers, because the ore is refined and made into useful units which can be worked with. To make ingots, I need " + @Iron_Ore_Per + " Iron Ore and " + @Cost_Per_Ingot + " gp per ingot. I also need " + @Coal_Per + " Coal for my forge.\"";
- next;
- mes "[Jhedia]";
- mes "\"How many ingots would you like?\"";
- input @ingot_count;
-
- if (@ingot_count == 0)
- goto L_Jhedia_Bye;
- set @Zeny_cost, @ingot_count * @Cost_Per_Ingot;
- if (countitem("IronOre") < @Iron_Ore_Per * @ingot_count)
- goto L_Jhedia_NotEnough_Ore;
- if (countitem("Coal") < @Coal_Per * @ingot_count)
- goto L_Jhedia_NotEnough_Coal;
- if (Zeny < @Zeny_cost)
- goto L_Jhedia_NotEnough_Zeny;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("IronIngot") == 0
- && countitem("IronOre") > @ingot_count * @Iron_Ore_Per
- | countitem("Coal") > @ingot_count * @Coal_Per)
- goto L_Jhedia_NotEnoughSlots;
- set Zeny, Zeny - @Zeny_cost;
- delitem "IronOre", @ingot_count * @Iron_Ore_Per;
- delitem "Coal", @ingot_count * @Coal_Per;
- getitem "IronIngot", @ingot_count;
- close;
-
-L_Jhedia_Bye:
- mes "[Jhedia]";
- mes "\"Goodbye then.\"";
- close;
-
-L_Jhedia_NotEnough_Ore:
- mes "[Jhedia]";
- mes "\"You do not seem to have enough Iron Ore.\"";
- close;
-
-L_Jhedia_NotEnough_Coal:
- mes "[Jhedia]";
- mes "\"You do not seem to have enough Coal.\"";
- close;
-
-L_Jhedia_NotEnough_Zeny:
- mes "[Jhedia]";
- mes "\"You do not seem to have enough gold pieces.\"";
- close;
-
-L_Jhedia_NotEnoughSlots:
- mes "[Jhedia]";
- mes "\"You do not seem to have enough room to carry this many ingots.\"";
- close;
-
-}
diff --git a/world/map/npc/001-2/manakins.txt b/world/map/npc/001-2/manakins.txt
deleted file mode 100644
index ef1e2982..00000000
--- a/world/map/npc/001-2/manakins.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// Display Manakins.
-
-// Forge
-001-2,29,57,0|script|Terranite Armor#Female|401
-{
- mes "A complete set of female Terranite armor stands on display. These appear to be made to order.";
- next;
- mes "An inscription on the helmet reads \"Made by Heathin.\"";
- close;
-}
-
-001-2,34,57,0|script|Terranite Armor#Male|402
-{
- mes "A complete set of male Terranite armor stands on display. These appear to be made to order.";
- next;
- mes "An inscription on the helmet reads \"Made by Heathin.\"";
- close;
-}
-
-001-2,34,62,0|script|Terranite|403
-{
- mes "Ahhh! A Terranite!";
- next;
- mes "Wait a minute...";
- next;
- mes "It appears to just be a display model.";
- close;
-}
-
-// Museum
-
-001-2,91,39,0|script|Talponian#Female|404
-{
- mes "A female Talponian manakin stands on display.";
- close;
-}
-
-001-2,91,44,0|script|Talponian#Male|405
-{
- mes "A male Talponian manakin stands on display.";
- close;
-}
-
-001-2,118,39,0|script|Gispaan#Female|406
-{
- mes "A female Gispaan manakin stands on display.";
- close;
-}
-
-001-2,118,44,0|script|Gispaan#Male|407
-{
- mes "A male Gispaan manakin stands on display.";
- close;
-}
-
diff --git a/world/map/npc/001-2/mapflags.txt b/world/map/npc/001-2/mapflags.txt
deleted file mode 100644
index 38689f49..00000000
--- a/world/map/npc/001-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-001-2|mapflag|town
-001-2|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/001-2/pauline.txt b/world/map/npc/001-2/pauline.txt
deleted file mode 100644
index 05287653..00000000
--- a/world/map/npc/001-2/pauline.txt
+++ /dev/null
@@ -1,320 +0,0 @@
-//Author: tux9th
-//This is the continuation of Astral Magic Level 2.
-//This uses the QUEST_MAGIC2 variable Nibble 4.
-//Quest States:
-// @pauline_state 1: Got Magic, started to talk to her about Magic.
-// @pauline_state 2: Finished Talking to her about new Astral Spells, learnt invocations.
-// @pauline_state 3: Told her the correct ingredients to the Mouboo summon spell.
-// @pauline_state 4: Told her the correct ingredients to the Pinkie summon spell.
-//
-//Variables:
-// @pauline_ingredient1$ First ingredient input.
-// @pauline_ingredient2$ Second ingredient input.
-// @pauline_REWARD amount of XP gained for telling her ingredients for each spell.
-
-001-2,77,78,0|script|Pauline|208
-{
-
-//Bitmasking
-// QUEST_MAGIC2 - Nibble4
- set @Pauline_MASK, NIBBLE_4_MASK;
- set @Pauline_SHIFT, NIBBLE_4_SHIFT;
-
- set @pauline_state, ((QUEST_MAGIC2 & @Pauline_MASK) >> @Pauline_SHIFT);
-
-//Bitmasks END
-
- set @pauline_REWARD, 10000;
-
- if (@pauline_state == 4) goto L_MoreMagic;
- if (@pauline_state == 3) goto L_KnowIngredientsPinkie;
- if (@pauline_state == 2) goto L_Ingredients;
- if (@pauline_state == 1) goto L_Back;
-
- if (getskilllv(SKILL_MAGIC_ASTRAL) > 0)
- goto L_Magic;
- mes "[Pauline]";
- mes "\"I've mastered several schools of magic and fought the Yeti in Kaizei.\"";
- next;
- mes "\"The path of magic is a long and difficult one.\"";
- goto L_Close;
-
-L_Magic:
- mes "[Pauline]";
- mes "\"Ah. I see you are skilled in the Art of Astral Magic.\"";
- mes "\"Who taught you?\"";
- menu
- "I learnt it myself!", L_Next,
- "Sagatha is my teacher.", L_Sagatha,
- "You must be mistaken.", L_Close;
-
-L_Next:
- mes "\"You did? Not bad. I guess then there is nothing I can teach you. Or are you interested in sharing knowledge?\"";
- menu
- "Yes, please.", L_Spells,
- "No, thanks.", L_Close;
-
-L_Sagatha:
- mes "[Pauline]";
- mes "\"Ah, that Witch!\"";
- mes "\"Very well.\"";
- next;
- mes "\"Do you want me to teach you things Sagatha doesn't know yet?\"";
- next;
- menu
- "Yes.", L_Spells,
- "No.", L_Close;
-
-L_Back:
- mes "[Pauline]";
- mes "\"So, you're back. Are you ready to share knowledge now?\"";
- menu
- "Yes.", L_Spells,
- "No.", L_Close;
-
-L_Spells:
- set @pauline_state, 1;
- callsub S_Update_Mask;
- mes "[Pauline]";
- mes "\"Okay.\"";
- mes "\"Not long ago I discovered some new caves near Tulimshar. In an abandond chamber I found some paintings on the wall.\"";
- next;
- mes "\"They weren't typical for this region, so I examined them closely. I found some invocations I have never heard before.\"";
- mes "\"I thought that they would fit better into the Woodland area. I could only decipher two invocations so far. Those are two spells used to summon creatures.\"";
- next;
- mes "\"One was for summoning Mouboos and the other one was for summoning Pinkies.\"";
- mes "\"Have you ever heared about those?\"";
- next;
- menu
- "Yes. I thought you had something new to tell. [Walk Away]", L_Close,
- "No, tell me more.", L_Next1;
-
-L_Next1:
- mes "[Pauline]";
- mes "\"Well I could only read the invocations. So I don't exactly know what kind of ingredients you are going to need.\"";
- mes "\"The first one for the mouboo was " + get(.invocation$, "smmouboo") + " and the one for the pinkie was " + get(.invocation$, "smpinkie") +".\"";
- next;
- mes "\"For the pinkie spell my suggestion is to try similar ingredients to the other Astral spells. Try a root and some item typical for pinkies.\"";
- mes "\"The mouboo spell might be more complicated. From what I could translate, one of the spell components is crafted by magic.\"";
- next;
- mes "\"When you find the right ingredients, come back and bring them to me to try those spells out.\"";
- next;
- mes "\"Goodbye.\"";
- set @pauline_state, 2;
- callsub S_Update_Mask;
- next;
- mes "##1WARNING: Summoning spells DO NOT work inside towns.##0";
- goto L_Close;
-
-L_Ingredients:
- mes "[Pauline]";
- mes "\"Hello, have you found out what ingredients to use yet?\"";
- menu
- "Yes.", L_KnowIngredientsMouboo,
- "No.", L_Next2;
-
-L_Next2:
- mes "\"Okay. Come back as soon as you know.\"";
- goto L_Close;
-
-L_KnowIngredientsMouboo:
- mes "\"Did you bring them?\"";
- menu
- "Yes." , L_Next3,
- "No.", L_ComeBackLater;
-
-L_Next3:
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items$, "AlizarinHerb", "GambogeHerb", "SilkCocoon", "PinkAntenna", "MaggotSlime", "BugLeg", "GrassSeeds", "ReedBundle", "RoastedAcorn", "Candy", "Milk", "BottleOfWater", "ChickenLeg", "Steak", "Root", "RawLog", "Beer", "CactusDrink", "MoubooFigurine", "Acorn", "Iten", "WarpedLog";
- setarray @item_names$, "Alizarin Herb", "Gamboge Herb", "Silk Cocoon", "Pink Antenna", "Maggot Slime", "Bug Leg", "Grass Seeds", "Reed Bundle", "Roasted Acorn", "Candy", "Milk", "Bottle of Water", "Chicken Leg", "Steak", "Root", "Raw Log", "Beer", "Cactus Drink", "Mouboo Figurine", "Acorn", "Iten", "Warped Log";
- mes "\"Then tell me the ingredients for the mouboo summoning spell and give them to me. Start with the first ingredient and then tell me the second one separately.\"";
- next;
- callfunc "DynamicItemMenu$";
- set @pauline_ingredient1$, @item$;
- mes "Next ingredient.";
- callfunc "DynamicItemMenu$";
- set @pauline_ingredient2$, @item$;
- if (@pauline_ingredient1$ == "")
- goto L_Wrong;
- if (@pauline_ingredient2$ == "")
- goto L_Wrong;
- if (countitem(@pauline_ingredient1$) < 1)
- goto L_NotEnough;
- if (countitem(@pauline_ingredient2$) < 1)
- goto L_NotEnough;
- mes "\"Do you want to give me these items?\"";
- menu
- "No.", L_ComeBackLater,
- "Yes.", L_Next4;
-
-L_Next4:
- delitem @pauline_ingredient1$, 1;
- delitem @pauline_ingredient2$, 1;
- mes "\"Okay let me try this.\"";
- if (@pauline_ingredient1$ == "Root")
- goto L_Pass1Mouboo;
- if (@pauline_ingredient1$ == "MoubooFigurine")
- goto L_Pass2Mouboo;
- goto L_DidNotWorkMouboo;
-
-L_DidNotWorkMouboo:
- mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + get(.invocation$, "summon-mouboo") + ".";
- mes "Nothing happens.";
- mes "[Pauline]";
- mes "\"It seems you did not tell me the correct ingredients. Come back when you find the correct ones.\"";
- goto L_Close;
-
-L_Pass1Mouboo:
- if (@pauline_ingredient2$ == "MoubooFigurine")
- goto L_TrySpellMouboo;
- goto L_DidNotWorkMouboo;
-
-L_Pass2Mouboo:
- if (@pauline_ingredient2$ == "Root")
- goto L_TrySpellMouboo;
- goto L_DidNotWorkMouboo;
-
-L_TrySpellMouboo:
- mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + get(.invocation$, "summon-mouboo") + ".";
- monster "001-1", 55,68, "", 1028, 1;
- mes "[Pauline]";
- mes "\"It worked!\"";
- set @pauline_state, 3;
- callsub S_Update_Mask;
- getexp @pauline_REWARD, 0;
- goto L_Close;
-
-L_KnowIngredientsPinkie:
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items$, "AlizarinHerb", "GambogeHerb", "SilkCocoon", "PinkAntenna", "MaggotSlime", "BugLeg", "GrassSeeds", "ReedBundle", "RoastedAcorn", "Candy", "Milk", "BottleOfWater", "ChickenLeg", "Steak", "Root", "RawLog", "Beer", "CactusDrink", "MoubooFigurine", "Acorn", "Iten", "WarpedLog";
- setarray @item_names$, "Alizarin Herb", "Gamboge Herb", "Silk Cocoon", "Pink Antenna", "Maggot Slime", "Bug Leg", "Grass Seeds", "Reed Bundle", "Roasted Acorn", "Candy", "Milk", "Bottle of Water", "Chicken Leg", "Steak", "Root", "Raw Log", "Beer", "Cactus Drink", "Mouboo Figurine", "Acorn", "Iten", "Warped Log";
- mes "[Pauline]";
- mes "\"Now give me the ingredients for the pinkie spell.\"";
- next;
- callfunc "DynamicItemMenu$";
- set @pauline_ingredient1$, @item$;
- mes "Next ingredient.";
- callfunc "DynamicItemMenu$";
- set @pauline_ingredient2$, @item$;
- if (@pauline_ingredient1$ == "")
- goto L_Wrong;
- if (@pauline_ingredient2$ == "")
- goto L_Wrong;
- if (countitem(@pauline_ingredient1$) < 1)
- goto L_NotEnough;
- if (countitem(@pauline_ingredient2$) < 1)
- goto L_NotEnough;
- mes "\"Do you want to give me these items?\"";
- menu
- "No.", L_ComeBackLater,
- "Yes.", L_Next5;
-
-L_Next5:
- delitem @pauline_ingredient1$, 1;
- delitem @pauline_ingredient2$, 1;
- mes "\"Okay, let me try this.\"";
- if (@pauline_ingredient1$ == "Root")
- goto L_Pass1Pinkie;
- if (@pauline_ingredient1$ == "PinkAntenna")
- goto L_Pass2Pinkie;
- goto L_DidNotWorkPinkie;
-
-L_DidNotWorkPinkie:
- mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + get(.invocation$, "summon-pinkie") + ".";
- mes "Nothing happens.";
- mes "[Pauline]";
- mes "\"It seems you did not tell me the correct ingredients. Come back when you find the correct ones.\"";
- goto L_Close;
-
-L_Pass1Pinkie:
- if (@pauline_ingredient2$ == "PinkAntenna")
- goto L_TrySpellPinkie;
- goto L_DidNotWorkPinkie;
-
-L_Pass2Pinkie:
- if (@pauline_ingredient2$ == "Root")
- goto L_TrySpellPinkie;
- goto L_DidNotWorkPinkie;
-
-L_TrySpellPinkie:
- mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + get(.invocation$, "summon-pinkie") + ".";
- monster "001-1", 54,68, "", 1018, 1;
- mes "[Pauline]";
- mes "\"It worked!\"";
- set @pauline_state, 4;
- callsub S_Update_Mask;
- getexp @pauline_REWARD, 0;
- goto L_Close;
-
-L_MoreMagic:
- mes "[Pauline]";
- mes "\"Thanks for telling me the ingredients. As soon as I find out more about those wall paintings I will let you know.\"";
- goto L_Close;
-
-L_Wrong:
- mes "The Witch looks at you and snorts.";
- mes "[Pauline]";
- mes "\"You told me the wrong ingredients. Come back as soon as you know the correct ones.\"";
- goto L_Close;
-
-L_NotEnough:
- mes "[Pauline]";
- mes "\"Hey, you don't have this with you!\"";
- mes "\"Come back when you have the right ingredients.\"";
- goto L_Close;
-
-L_ComeBackLater:
- mes "[Pauline]";
- mes "\"Then come back later.\"";
- goto L_Close;
-
-L_Close:
- set @pauline_ingredient1$, "";
- set @pauline_ingredient2$, "";
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- set @pauline_state, 0;
- set @pauline_REWARD, 0;
- close;
-
-//Bitmasks
-S_Update_Mask:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Pauline_MASK)) | (@pauline_state << @Pauline_SHIFT);
- return;
-}
-
-001-2,79,74,0|script|PaulineDebug|208
-{
-//load Bitmasks;
- set @Pauline_MASK, NIBBLE_4_MASK;
- set @Pauline_SHIFT, NIBBLE_4_SHIFT;
-
- set @pauline_state, ((QUEST_MAGIC2 & @Pauline_MASK) >> @Pauline_SHIFT);
-
- mes "Reset Quest State";
- mes @pauline_state;
- menu
- "Yes.", L_Next,
- "No.", L_Close;
-
-L_Next:
- set @pauline_state, 0;
- callsub S_Update_Mask;
- mes "Done";
- close;
-
-L_Close:
- set @pauline_state, 0;
- close;
-
-S_Update_Mask:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Pauline_MASK)) | (@pauline_state << @Pauline_SHIFT);
- return;
-
-OnInit:
- if (!debug)
- disablenpc "PaulineDebug";
- end;
-}
diff --git a/world/map/npc/001-2/sandra.txt b/world/map/npc/001-2/sandra.txt
deleted file mode 100644
index 2465290b..00000000
--- a/world/map/npc/001-2/sandra.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-001-2,98,88,0|script|Sandra|114
-{
- if (QL_SANDRA >= 2) goto L_Done;
- if (QL_SANDRA == 1) goto L_Progress;
-
- mes "[Sandra]";
- mes "\"Hunting monsters for potion ingredients can sometimes be a difficult task.\"";
- next;
-
- set @TEMP, rand(4);
- if(@TEMP == 1) goto L_Opening1;
- if(@TEMP == 2) goto L_Opening2;
- if(@TEMP == 3) goto L_Opening3;
- goto L_Opening0;
-
-L_Opening0:
- mes "\"In the outskirts of Tulimshar, there are some scorpions... I need help! Will you help?\"";
- next;
- goto L_Ask;
-
-L_Opening1:
- mes "\"When you venture to the outskirts of Tulimshar, you can spot scorpions. Will you help me kill some?\"";
- next;
- goto L_Ask;
-
-L_Opening2:
- mes "\"The Scorpion Stinger carries many properties used in potions. Would you get some for me?\"";
- next;
- goto L_Ask;
-
-L_Opening3:
- mes "\"You look sturdy enough, will you help me get something?\"";
- next;
- goto L_Ask;
-
-L_Ask:
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- set @TEMP, rand(3);
- if(@TEMP == 1) goto L_Req1;
- if(@TEMP == 2) goto L_Req2;
- goto L_Req0;
-
-L_Req0:
- mes "[Sandra]";
- mes "\"I need 5 Scorpion Stingers.\"";
- next;
- goto L_Set;
-
-L_Req1:
- mes "[Sandra]";
- mes "\"I heard a while ago that stingers from scorpions can be used for medical purposes. I need you to help me get 5 Scorpion Stingers.\"";
- next;
- goto L_Set;
-
-L_Req2:
- mes "[Sandra]";
- mes "\"Bring me 5 Scorpion Stingers. I'll give you something if you do!\"";
- next;
- goto L_Set;
-
-L_Set:
- set QL_SANDRA, 1;
- mes "\"Please get them for me!\"";
- goto L_Close;
-
-L_Progress:
- if (countitem("ScorpionStinger") < 5)
- goto L_NotEnough;
- mes "[Sandra]";
- mes "\"Excellent! You brought me 5 Scorpion Stingers!";
- mes "Here's something for you.\"";
- getinventorylist;
- if (@inventorylist_count + (countitem("ScorpionStinger") == 5) - (countitem("Arrow") == 0) > 99)
- goto L_TooMany;
- delitem "ScorpionStinger", 5;
- getitem "Bow", 1;
- getitem "Arrow", 100;
- set QL_SANDRA, 2;
- goto L_Close;
-
-L_NotEnough:
- mes "[Sandra]";
- mes "\"Please hurry and bring me 5 Scorpion Stingers.\"";
- goto L_Close;
-
-L_Done:
- mes "[Sandra]";
- mes "\"Thank you for all your help!\"";
- goto L_Close;
-
-L_Close:
- set @TEMP, 0;
- close;
-
-L_TooMany:
- next;
- mes "[Sandra]";
- mes "\"You don't have room for my reward. I'll wait until you do.\"";
- goto L_Close;
-}
diff --git a/world/map/npc/001-2/tathin.txt b/world/map/npc/001-2/tathin.txt
deleted file mode 100644
index dda26009..00000000
--- a/world/map/npc/001-2/tathin.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-001-2,28,21,0|script|Tathin|107
-{
- mes "[Tathin]";
- mes "\"Hello what Can I do for you?\"";
- next;
-
- menu
- "I'd like to join a party.", L_Give_Party,
- "I'd like to create my own party.", L_Give_Make_Party,
- "Nothing, I guess.", L_Close;
-
-L_Give_Party:
- mes "[Tathin]";
- mes "\"You'll need to be invited by an existing member of a party to join it. You may also create your own party.\"";
- next;
- mes "[Tathin]";
- mes "\"Remember, parties cannot share experience if any members are more than 10 levels apart.\"";
- menu
- "I'd like to create my own party.", L_Give_Make_Party,
- "Goodbye.", L_Close;
-
-L_Give_Make_Party:
- mes "[Tathin]";
- mes "\"You can create parties with the 'new' or 'create' commands on the Party tab in the client. Parties need to have unique names.\"";
- close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-2/tondar.txt b/world/map/npc/001-2/tondar.txt
deleted file mode 100644
index d7fd3531..00000000
--- a/world/map/npc/001-2/tondar.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-// A professor at Tulimshar's magic academy
-
-001-2,95,79,0|script|Tondar|168
-{
- mes "[Tondar]";
- mes "\"We're not accepting any new students right now.\"";
- if (getskilllv(SKILL_MAGIC) > 0)
- goto L_may_ask;
- goto L_end;
-
-L_may_ask:
- next;
- menu
- "Can you teach me a spell?", L_askspell,
- "Do you have a magic library?", L_library,
- "Are you sure? I can pay well...", L_nopay,
- "That's unfortunate.", L_end,
- "Goodbye, then.", L_end;
-
-L_library:
- mes "[Tondar]";
- mes "\"Of course we do. It is only for graduate students, alumni, and faculty.\"";
- next;
- menu
- "Thank you, and goodbye.", L_end,
- "Nobody else is allowed inside?", L_Next;
-
-L_Next:
- mes "[Tondar]";
- mes "\"Well, it is possible to get a special permit from the headmaster. But he is currently on sabbatical.\"";
- close;
-
-L_askspell:
- mes "[Tondar]";
- mes "\"We only teach spells to students.\"";
- next;
- menu
- "Oh, come on... just one little spell!", L_nopay,
- "Pretty please?", L_spell,
- "I can pay you, too...", L_nopay;
-
-L_spell:
- mes "[Tondar]";
- mes "\"Well, all right; this one can't do much harm. Press your hands together and say `" + get(.invocation$, "spell-experience") + "'.\"";
- mes "\"This will release a steady flow of magic within you. Focus and try to control it; it is a good meditative practice.\"";
- close;
-
-L_nopay:
- mes "[Tondar]";
- mes "The wizard frowns angrily.";
- mes "\"Do not tempt me to teach you a different kind of lesson, young one! Begone!\"";
- goto L_end;
-
-L_end:
- close;
-}
diff --git a/world/map/npc/001-2/wizards.txt b/world/map/npc/001-2/wizards.txt
deleted file mode 100644
index e51e7a66..00000000
--- a/world/map/npc/001-2/wizards.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-// Council of Ruling Wizards Room
-
--|script|Magic Council|32767
-{
- explode .@n, strnpcinfo(0), "#";
- if (.@n[1] == 9) mes "The arch wizard seems to be busy.";
- elif (.@n[1]) mes "The wizard seems to ignore you.";
- else mes "Strangely, you feel nothing – as if its membrane is closed to you.";
- next;
- mes "Perhaps you should come back later.";
- close;
-
-OnInit:
- if (puppet("001-2", 104, 19, "Desert Mana Seed#_M", 166) < 1) mapexit;
- if (puppet("001-2", 99, 22, "Wizard#1", 355) < 1) mapexit;
- if (puppet("001-2", 92, 24, "Wizard#2", 356) < 1) mapexit;
- if (puppet("001-2", 92, 30, "Wizard#3", 357) < 1) mapexit;
- if (puppet("001-2", 99, 32, "Wizard#4", 358) < 1) mapexit;
- if (puppet("001-2", 110, 22, "Wizard#5", 359) < 1) mapexit;
- if (puppet("001-2", 117, 24, "Wizard#6", 360) < 1) mapexit;
- if (puppet("001-2", 117, 30, "Wizard#7", 361) < 1) mapexit;
- if (puppet("001-2", 110, 32, "Wizard#8", 362) < 1) mapexit;
- if (puppet("001-2", 104, 27, "Arch-Wizard#9", 354) < 1) mapexit;
- end;
-}
diff --git a/world/map/npc/001-2/yanis.txt b/world/map/npc/001-2/yanis.txt
deleted file mode 100644
index 31a91f77..00000000
--- a/world/map/npc/001-2/yanis.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-// Government official taking care about shop licenses
-// involved in quest given by 021-1/imec.txt and 021-2/kylian.txt
-
-001-2,31,21,0|script|Yanis|107
-{
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowYanisNT;
- set @halloween_npc_id, $@halloween_npc_yanis;
- callfunc "TrickOrTreat";
-
- goto L_Base_Menu;
-
-L_Base_Menu:
-
- mes "[Yanis]";
- mes "\"Welcome. I'm handling issues with trading licenses for the shop owners in Tulimshar. Can I help you?\"";
- if (QL_IMEC != 1)
- menu
- "Nothing right now.",L_BeforeClose;
- menu
- "Imec asked me to bring this petition.",L_Next,
- "Nothing right now.",L_BeforeClose;
-
-L_Next:
- mes "[Yanis]";
- mes "\"Imec? I see. Give it to me.\"";
- mes "Yanis has a disapproving look on his face. He takes the letter and writes something on another paper.";
- next;
- mes "[Yanis]";
- mes "\"Here you have a letter of acknowledgement. You can bring that back to Imec. We will have a look at his case.\"";
- set QL_IMEC, 2;
- goto L_BeforeClose;
-
-L_BeforeClose:
- if (QL_KYLIAN != 3)
- goto L_Close;
- next;
- mes "You think that this is the person Kylian needs to talk to. You should tell him.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/001-3/_import.txt b/world/map/npc/001-3/_import.txt
deleted file mode 100644
index 5c821ae4..00000000
--- a/world/map/npc/001-3/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 001-3: Tulimshar Arena
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 001-3
-npc: npc/001-3/_mobs.txt
-npc: npc/001-3/_nodes.txt
-npc: npc/001-3/_warps.txt
-npc: npc/001-3/guards.txt
-npc: npc/001-3/mapflags.txt
-npc: npc/001-3/pvpflag.txt
diff --git a/world/map/npc/001-3/_mobs.txt b/world/map/npc/001-3/_mobs.txt
deleted file mode 100644
index 63e16e8c..00000000
--- a/world/map/npc/001-3/_mobs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Arena mobs
-
-001-3,0,0,0,0|monster|Maggot|1002,10,0ms,0ms
diff --git a/world/map/npc/001-3/_nodes.txt b/world/map/npc/001-3/_nodes.txt
deleted file mode 100644
index 8a03ab93..00000000
--- a/world/map/npc/001-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Arena nodes
-
-// (no nodes)
diff --git a/world/map/npc/001-3/_warps.txt b/world/map/npc/001-3/_warps.txt
deleted file mode 100644
index 7cb9c212..00000000
--- a/world/map/npc/001-3/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Arena warps
-
-001-3,73,28|warp|-1,-1,002-2,74,59
diff --git a/world/map/npc/001-3/guards.txt b/world/map/npc/001-3/guards.txt
deleted file mode 100644
index 5fd08a9e..00000000
--- a/world/map/npc/001-3/guards.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-001-3,77,37,0|script|Phaet#arena|125
-{
- mes "[Phaet the Royal Guard]";
- mes "\"Do you want to go back?\"";
- next;
- menu
- "Yes", L_Sure,
- "No", L_Next;
-
-L_Next:
- mes "Have fun.";
- close;
-
-L_Sure:
- mes "[Phaet the Royal Guard]";
- mes "\"Ok.\"";
- next;
- if(DUELS & $@DuelPvpBit) goto L_FightClub;
- warp "002-2", 74, 59;
- close;
-
-L_FightClub:
- set DUELS, DUELS &~ $@DuelPvpBit;
- warp "009-7", 39, 37;
- close;
-}
-
-001-3,69,37,0|script|Aradin|126
-{
- mes "[Aradin the Royal Guard]";
- mes "\"Don't touch me...";
- mes "You wouldn't enjoy the consequences.\"";
- close;
-}
diff --git a/world/map/npc/001-3/mapflags.txt b/world/map/npc/001-3/mapflags.txt
deleted file mode 100644
index c3a71c5c..00000000
--- a/world/map/npc/001-3/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-001-3|mapflag|nosave|002-2,74,59
-001-3|mapflag|resave|002-2,74,59
diff --git a/world/map/npc/001-3/pvpflag.txt b/world/map/npc/001-3/pvpflag.txt
deleted file mode 100644
index 68e1b53a..00000000
--- a/world/map/npc/001-3/pvpflag.txt
+++ /dev/null
@@ -1 +0,0 @@
-001-3|mapflag|pvp
diff --git a/world/map/npc/002-1/_import.txt b/world/map/npc/002-1/_import.txt
deleted file mode 100644
index b052f96e..00000000
--- a/world/map/npc/002-1/_import.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-// Map 002-1: Tulimshar South
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 002-1
-npc: npc/002-1/_mobs.txt
-npc: npc/002-1/_nodes.txt
-npc: npc/002-1/_warps.txt
-npc: npc/002-1/anwar.txt
-npc: npc/002-1/bard.txt
-npc: npc/002-1/elanore.txt
-npc: npc/002-1/gaurds.txt
-npc: npc/002-1/itka.txt
-npc: npc/002-1/lieutenant_dausen.txt
-npc: npc/002-1/luca.txt
-npc: npc/002-1/mapflags.txt
-npc: npc/002-1/mine_debug.txt
-npc: npc/002-1/nickos.txt
-npc: npc/002-1/nomads.txt
-npc: npc/002-1/npcs.txt
-npc: npc/002-1/sarah.txt
-npc: npc/002-1/soul-menhir.txt
-npc: npc/002-1/stewen.txt
-npc: npc/002-1/traveler.txt
diff --git a/world/map/npc/002-1/_mobs.txt b/world/map/npc/002-1/_mobs.txt
deleted file mode 100644
index 63282a48..00000000
--- a/world/map/npc/002-1/_mobs.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar South mobs
-
-002-1,93,62,24,9|monster|Maggot|1002,11,100000ms,30000ms
-002-1,112,62,11,9|monster|Maggot|1002,11,100000ms,30000ms
-002-1,108,73,11,9|monster|Maggot|1002,11,100000ms,30000ms
-002-1,62,28,3,15|monster|Maggot|1002,6,100000ms,30000ms
-002-1,74,96,24,33|monster|Scorpion|1003,12,100000ms,30000ms
-002-1,113,114,10,7|monster|Maggot|1002,11,100000ms,30000ms
-002-1,43,61,10,70|monster|Scorpion|1003,6,100000ms,30000ms
-002-1,70,92,49,19|monster|Scorpion|1003,10,100000ms,30000ms
-002-1,40,93,19,20|monster|RedScorpion|1004,10,100000ms,30000ms
-002-1,42,40,8,29|monster|SeaSlime|1033,8,100000ms,30000ms
-002-1,33,75,9,40|monster|SeaSlime|1033,8,100000ms,30000ms
-002-1,99,62,37,9|monster|Scorpion|1003,6,100000ms,30000ms
-002-1,73,105,20,21|monster|FireGoblin|1011,6,100000ms,30000ms
diff --git a/world/map/npc/002-1/_nodes.txt b/world/map/npc/002-1/_nodes.txt
deleted file mode 100644
index 7e192e45..00000000
--- a/world/map/npc/002-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar South nodes
-
-// (no nodes)
diff --git a/world/map/npc/002-1/_warps.txt b/world/map/npc/002-1/_warps.txt
deleted file mode 100644
index 55271d57..00000000
--- a/world/map/npc/002-1/_warps.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar South warps
-
-002-1,63,20|warp|3,-1,001-1,63,118
-002-1,103,20|warp|3,-1,001-1,103,118
-002-1,119,95|warp|-1,1,006-1,21,47
-002-1,92,114|warp|-1,-1,002-3,85,49
-002-1,33,109|warp|-1,-1,002-3,51,35
-002-1,109,45|warp|-1,-1,002-2,75,100
-002-1,115,45|warp|-1,-1,002-2,83,100
-002-1,99,43|warp|-1,-1,002-2,120,66
-002-1,114,35|warp|-1,-1,002-2,78,131
-002-1,110,29|warp|-1,-1,002-2,68,122
-002-1,73,35|warp|-1,-1,002-2,44,33
-002-1,57,35|warp|-1,-1,002-2,120,94
-002-1,67,29|warp|-1,-1,002-2,23,109
-002-1,113,107|warp|-1,-1,005-3,52,37
-002-1,49,20|warp|-1,-1,004-3,24,94
-002-1,57,26|warp|-1,-1,002-2,119,131
diff --git a/world/map/npc/002-1/anwar.txt b/world/map/npc/002-1/anwar.txt
deleted file mode 100644
index bdae05c2..00000000
--- a/world/map/npc/002-1/anwar.txt
+++ /dev/null
@@ -1,173 +0,0 @@
-002-1,95,67,0|script|Anwar|156
-{
- set @cloth_amount, 3;
- set @silk_amount, 30;
-
- set @firstTry_exp, 400;
- set @secondTry_exp, 700;
- set @material_exp, 1000;
- set @final_exp, 2000;
-
- if (QL_ANWAR >= 15) goto L_Done;
- if (QL_ANWAR >= 13) goto L_GiveEomie;
- if (QL_ANWAR >= 11) goto L_GiveTinris;
- if (QL_ANWAR == 10) goto L_GiftMaterial;
- if (QL_ANWAR >= 5) goto L_SecondTry;
- if (QL_ANWAR >= 1) goto L_FirstTry;
-
- mes "[Anwar]";
- mes "\"Hello. You look like one of those young people who come here to go on an adventure.";
- mes "Would you be interested in doing some small errand for me?\"";
- menu
- "Sure!",L_Sure,
- "I'm busy, sorry.",L_Close;
-
-L_Sure:
- mes "[Anwar]";
- mes "\"That's the spirit! Ok, I'm tired of spending most of my time working on this field. I heard the magicians at the magic school are researching ways to enhance the growth of plants with magic.\"";
- next;
- mes "\"I can't go there myself, since this area of the city is full of sneaky ragtags and they will rob my field if I leave here. Could you go to the magic school and ask for some magic enhancement for my field?\"";
- next;
- mes "\"To find the school just follow the street north back into town. The school is the castle at the north end of town.\"";
- set QL_ANWAR, 1;
- goto L_Close;
-
-L_FirstTry: // QL_ANWAR >= 1 but below 5
- mes "[Anwar]";
- mes "\"I hope the wizards at the magic school can help me with the field. I'd really like to have more free time. I want to make clothing, but I'm not experienced enough to make a living out of that.\"";
- if (QL_ANWAR != 4)
- goto L_Close;
- menu
- "Tinris gave me a magic fertilizer for your field, but he isn't sure if it works.",L_Next;
-
-L_Next:
- mes "[Anwar]";
- mes "\"Really? Well, let's try it out!\"";
- mes "He takes the fertilizer and starts to bespatter the field.";
- next;
- mes "But it doesn't seem to be good for the plants, they start to shrivel and get brown.";
- mes "[Anwar]";
- mes "\"Oh no! What is this? It's damaging my plants! Go back to Tinris and tell him it doesn't work!\"";
- getexp @firstTry_exp, 0;
- set QL_ANWAR, 5;
- goto L_Close;
-
-L_SecondTry: // QL_ANWAR >= 5 but below 10
- mes "[Anwar]";
- mes "\"I hope Tinris can come up with a better fertilizer. My plants are suffering from the first try.\"";
- if (QL_ANWAR != 9)
- goto L_Close;
- menu
- "Here is another one. Eomie cast a spell on it.",L_Continue;
-
-L_Continue:
- mes "[Anwar]";
- mes "\"Eomie? I heard she's amazingly skilled with nature magic. I'll try if this works better.\"";
- mes "He takes the fertilizer and puts it on only a few plants, then waits a moment to see the result.";
- next;
- mes "The plants recover a bit and become green again.";
- mes "[Anwar]";
- mes "\"Ah, this one is better. I'll put it on the entire field.\"";
- getexp @secondTry_exp, 0;
- set QL_ANWAR, 10;
- next;
- goto L_GiftMaterial;
-
-L_GiftMaterial: // QL_ANWAR == 10
- mes "[Anwar]";
- mes "\"I want to show my gratitude to Tinris and Eomie. Can you help me once again? I would like to make some clothes for them and need " + @cloth_amount + " pieces of Cotton Cloth and " + @silk_amount + " Silk Cocoons.\"";
- menu
- "I have it.",L_GiveGiftStuff,
- "Where can I get that?",L_Hint,
- "I'll see what I can do.",L_Close;
-
-L_GiveGiftStuff:
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- if ((countitem("CottonCloth") < @cloth_amount) || (countitem("SilkCocoon") < @silk_amount))
- goto L_NoItem;
- delitem "CottonCloth", @cloth_amount;
- delitem "SilkCocoon", @silk_amount;
- getexp @material_exp, 0;
-
- getitem "GreenVNeckSweater", 1;
- set QL_ANWAR, 11;
- mes "[Anwar]";
- mes "\"Great! I'll start right away with the present for Tinris. That shouldn't take long.\"";
- mes "After a short while of cutting and sewing he holds a V-Neck Sweater in his hands. Then he dyes it green.";
- next;
- mes "[Anwar]";
- mes "\"Wonderful! Could you please bring this to Tinris to show him my gratitude?\"";
- goto L_Close;
-
-L_Hint:
- mes "[Anwar]";
- mes "\"As far as I know Cotton Cloth is given out as reward for hunting monsters. You should talk to Aidan in Candor.\"";
- next;
- mes "\"Otherwise Cotton Cloth can be sheared from Mouboo and silk cocoons come from Silkworms.";
- mes "They live in the woodland area around Hurnscald. You can get there by taking the ferry.\"";
- goto L_Close;
-
-L_GiveTinris: // QL_ANWAR >= 11 but below 13
- mes "[Anwar]";
- mes "\"Did you already bring the Green V-Neck Sweater to Tinris?\"";
- if (QL_ANWAR != 12)
- menu
- "Not yet.",L_Close;
- menu
- "Yes, he was very happy.",L_Happy;
-
-L_Happy:
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- mes "[Anwar]";
- mes "\"Wonderful! I also finished the present for Eomie. Can you bring it to her?\"";
- getitem "SilkHeadband", 1;
- set QL_ANWAR, 13;
- goto L_Close;
-
-L_GiveEomie: // QL_ANWAR >= 13 but below 15
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- mes "[Anwar]";
- mes "\"Did you give the Silk Headband to Eomie?\"";
- if (QL_ANWAR != 14)
- menu
- "Not yet.",L_Close;
- menu
- "Yes. She asked me to thank you.",L_ThankYou;
-
-L_ThankYou:
- mes "Anwar smiles.";
- mes "[Anwar]";
- mes "\"I'm so happy. Thank you so much for your help. I made this for you while you went to see Eomie.\"";
- getexp @final_exp, 0;
- getitem "DarkGreenCottonTrousers", 1;
- set QL_ANWAR, 15;
- goto L_Close;
-
-L_Done: // QL_ANWAR == 15
- mes "[Anwar]";
- mes "\"Thank you so much for your help. The plants are growing much better now. I don't have to spend all my time working in the field any more.";
- mes "Finally I can do what I'm really interested in and work on getting better at sewing clothes.\"";
- goto L_Close;
-
-L_NoItem:
- mes "[Anwar]";
- mes "\"You don't have it!\"";
- goto L_Close;
-
-L_Full_Inv:
- mes "[Anwar]";
- mes "\"You carry a lot of stuff. Come back when you have more room.\"";
- goto L_Close;
-
-L_Close:
- set @cloth_amount, 0;
- set @silk_amount, 0;
- set @inventorylist_count, 0;
- close;
-}
diff --git a/world/map/npc/002-1/bard.txt b/world/map/npc/002-1/bard.txt
deleted file mode 100644
index c8e67582..00000000
--- a/world/map/npc/002-1/bard.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-//
-
-002-1,91,33,0|script|Bard|152
-{
- setarray @songs$, "\"There once was a bard, who had it hard, because a man in dark green, was very mean.\"",
- "\"At Hurnscald inn, there was a person of fairest skin, declining wedding bands from quite a many hands.\"",
- "\"As the Sun sets down in the forest's brown, she whom the fragrance holds counts her gold.\"";
- set @name$, "Bill Ballshaker the Bard";
- mes "[" + @name$ + "]";
- mes "\"Greetings, traveler! Have you come to listen to my stories?\"";
- next;
- goto L_Main;
-
-L_Main:
- menu
- "Sing me a song, lute man!", L_Song,
- "Have you heard any news?", L_News,
- "What do you know about...", L_Question,
- "Farewell!", L_Close;
-
-L_News:
-// mes "[" + @name$ + "]";
-// mes "\"Quite, quite! Rumour has it that Luca the Hunter, from this very town of Tulimshar, has returned from a long journey.\"";
-// next;
-// mes "[" + @name$ + "]";
-// mes "\"Many perilous battles he fought, or so his tales go... I am still working on a sonnet that I wish to dedicate to his exploits.\"";
-// next;
-// mes "[" + @name$ + "]";
-// mes "\"He says that he learned some new skills along the way and wishes to pass them on to others like him, who do not fear the fire of battle!\"";
-// next;
-// mes "[" + @name$ + "]";
-// mes "\"If you are experienced enough, perhaps he will teach you?\"";
-// next;
-// goto L_Main;
-
- mes "[" + @name$ + "]";
- mes "\"News I have for you indeed, lest you have already overheard (for then it would no longer be news to you!)\"";
- next;
- mes "[" + @name$ + "]";
- mes "\"Rumor has it that an ancient source of magic, a Mana Seed, has been sighted in the west, beyond the fair town of Hurnscald.\"";
- next;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_MANASEED_RUMOUR;
- mes "[" + @name$ + "]";
- mes "\"Whence it came, nobody knows... but they say that sometimes such Mana Seeds may choose a powerful individual to impart some of its mystic power to!\"";
- next;
- mes "[" + @name$ + "]";
- mes "\"I wonder who might be qualified?\"";
- next;
- goto L_Main;
-
-L_Question:
- callfunc "MagicTalkOptionsSetup";
- set @ignore, @QQ_ASTRALSOUL;
- callfunc "MagicTalkMenu";
-
- if (@c == 0) goto L_Main;
- if (@c == @QQ_ELANORE) goto L_Q_elanore;
- if (@c == @QQ_MANASEED) goto L_Q_manaseed;
- if (@c == @QQ_WYARA) goto L_Q_wyara;
- if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
- if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
- if (@c == @QQ_OLDWIZ) goto L_Q_oldwiz;
-
- mes "[" + @name$ + "]";
- mes "\"Alas, I know very little about this matter.\"";
- next;
- goto L_Main;
-
-L_Q_oldwiz:
- mes "[" + @name$ + "]";
- mes "\"The old wizard has been an old man for as long as I remember, living near the mountains in his magic hut – a hut that is bigger on the inside, just like in the old tales of Gyer Filla the Wise....\"";
- next;
- mes "[" + @name$ + "]";
- mes "\"I doubt that they are the same person, though. For one, I have never seen his hut fly. For another, Gyer never took apprentices.\"";
- next;
- goto L_Main;
-
-L_Q_elanore:
- mes "[" + @name$ + "]";
- mes "\"Elanore is this town's healer. Rumor has it that she traveled far and wide when she was younger, to learn the deepest secrets of healing magic, after her brother caught a mysterious illness.\"";
- next;
- goto L_Main;
-
-L_Q_manaseed:
- mes "[" + @name$ + "]";
- mes "\"The Mana Seed is said to be a source of great magic. Perhaps some witch or wizard might know more about it?\"";
- next;
- goto L_Main;
-
-L_Q_wyara:
- mes "[" + @name$ + "]";
- mes "\"Wyara is not actually from Hurnscald. As a young witch, she decided to settle down there to help the people of Hurnscald. She is kind and gentle, except towards the Doctor, who seems to have little respect for her potions.\"";
- next;
- goto L_Main;
-
-L_Q_sagatha:
- mes "[" + @name$ + "]";
- mes "\"Sagatha! Ah, such a wonderful and mysterious being; the center of many a tale...\"";
- next;
- mes "[" + @name$ + "]";
- mes "\"Some say that she is the most powerful witch in all of Argaes. I don't know whether that is true or not, but I am quite certain that she is the most beautiful witch of all! Alas, she will let no man touch her...\"";
- mes "He sighs.";
- next;
- mes "[" + @name$ + "]";
- mes "\"I met her only twice, back in my traveling days, but there are two pieces of advice I can give you:\"";
- next;
- mes "[" + @name$ + "]";
- mes "\"First, she will suffer no fool easily, particularly no man.\"";
- next;
- mes "[" + @name$ + "]";
- mes "\"Second, the creatures of the forest mean everything to her. Harm them, and you may find her an enemy – and a powerful one at that...\"";
- next;
- goto L_Main;
-
-L_Q_auldsbel:
- mes "[" + @name$ + "]";
- mes "\"Auldsbel is a wizard further north. From what I have gathered he bought a hut near Hurnscald some years back and often comes here to experiment on things. This is probably because he is not allowed to do these experiments where he comes from.\"";
- next;
- goto L_Main;
-
-L_Song:
- mes "[" + @name$ + "]";
- set @id, rand(3);
- mes @songs$[@id];
- goto L_Close;
-
-L_Close:
- set @name$, "";
- set @id, 0;
- cleararray @songs$[0], "", 2;
- close;
-}
diff --git a/world/map/npc/002-1/elanore.txt b/world/map/npc/002-1/elanore.txt
deleted file mode 100644
index b235c5b4..00000000
--- a/world/map/npc/002-1/elanore.txt
+++ /dev/null
@@ -1,622 +0,0 @@
-//
-
-function|script|ElanoreFix
-{
- set @Q_MASK, NIBBLE_1_MASK;
- set @Q_SHIFT, NIBBLE_1_SHIFT;
-
- set @Q_STATUS_MAX, 3; // FIXME once level 3 magic was released
-
- set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
- if (@Q_status > @Q_STATUS_MAX)
- set @Q_status, @STATUS_INITIAL;
- if (@Q_status > 1 && (getskilllv(SKILL_MAGIC_LIFE) < 2))
- set @Q_status, @STATUS_INITIAL;
-
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
-
-function|script|elanore_decrease_exp
-{
- set @Q_heal_exp, MAGIC_EXPERIENCE >> 24;
- if (@Q_heal_exp < 8) goto L_OnPcKillWipe;
- set @Q_heal_exp, @Q_heal_exp - 8;
- goto L_OnPcKillFinish;
-
-L_OnPcKillWipe:
- set @Q_heal_exp, 0;
- goto L_OnPcKillFinish;
-
-L_OnPcKillFinish:
- set MAGIC_EXPERIENCE, (MAGIC_EXPERIENCE & ~(255 << 24)) | (@Q_heal_exp << 24);
- goto L_Return;
-
-L_Return:
- return;
-}
-
-002-1,75,62,0|script|Elanore#_M|108
-{
- set @has_magic, getskilllv(SKILL_MAGIC);
-
- set @Q_MASK, NIBBLE_1_MASK;
- set @Q_SHIFT, NIBBLE_1_SHIFT;
-
- set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
- set @Q_heal_exp, MAGIC_EXPERIENCE >> 24;
-
- // Set up SkillUp function
- set @SUP_id, SKILL_MAGIC_LIFE;
- set @SUP_name$, "Life Magic";
-
- set @STATUS_INITIAL, 0;
- set @STATUS_LEARNED_LIGHT_HEAL, 1;
- set @STATUS_MASTERED_LIGHT_HEAL, 2;
- set @STATUS_LEARNED_LAY_ON_HANDS, 3;
- set @STATUS_WAITING_FOR_KADIYA, 4;
- set @STATUS_READY_TO_LEARN_CURE_POISON, 5;
- set @STATUS_LEARNED_CURE_POISON, 6;
-
- callfunc "ElanoreFix";
-
- // This operation works around an earlier possible corruption of this state
- if (@Q_status > @Q_STATUS_MAX)
- set @Q_status, @STATUS_INITIAL;
- callsub S_update_var;
- if (sc_check(sc_poison)) goto L_CurePoison;
- if (BaseLevel > 20) goto L_NoHeal;
- set @TEMP,rand(4);
- if(@TEMP == 1) goto L_Heal2;
- if(@TEMP == 2) goto L_Heal3;
- if(@TEMP == 3) goto L_Heal4;
- goto L_Heal1;
-
-L_Heal1:
-
- mes "[Elanore the Healer]";
- mes "\"You don't look too well; let me treat your wounds.\"";
- next;
- goto L_Heal_L;
-
-L_Heal2:
-
- mes "[Elanore the Healer]";
- mes "\"I will make quick work of your wounds.\"";
- next;
- goto L_Heal_L;
-
-L_Heal3:
-
- mes "[Elanore the Healer]";
- mes "\"Need a healing?\"";
- next;
- goto L_Heal_L;
-
-L_Heal4:
-
- mes "[Elanore the Healer]";
- mes "\"Sometimes you just need to run from battle.\"";
- next;
- goto L_Heal_L;
-
-L_Heal_L:
- set @TEMP,rand(3);
- if(@TEMP == 1) goto L_Heal_2;
- if(@TEMP == 2) goto L_Heal_3;
- if(@TEMP == 3) goto L_Heal_4;
- goto L_Heal_1;
-
-L_Heal_1:
-
- mes "[Elanore the Healer]";
- mes "\"Here you go!\"";
- heal 10000,10000;
- goto L_Close;
-
-L_Heal_2:
-
- mes "[Elanore the Healer]";
- mes "\"Painless, wasn't it?";
- heal 10000,10000;
- goto L_Close;
-
-L_Heal_3:
-
- mes "[Elanore the Healer]";
- mes "\"You should be more careful.\"";
- heal 10000,10000;
- goto L_Close;
-
-L_Heal_4:
-
- mes "[Elanore the Healer]";
- mes "\"Much better, right?!\"";
- heal 10000,10000;
- goto L_Close;
-
-L_NoHeal:
- if (MAGIC_FLAGS)
- goto L_Chat;
- goto L_NoHealMessage;
-
-L_NoHealMessage:
- mes "[Elanore the Healer]";
- mes "\"I'm sorry but unless you are young and in need, I can't help you, and your level is already higher than twenty.";
- mes "With so many gaurds still injured, I really have no time to help.";
- mes "You can get some rest in the inn near here.\"";
- goto L_Close;
-
-L_Chat:
- mes "[Elanore the Healer]";
- mes "\"Hello! Can I help you?\"";
- next;
- goto L_Main;
-
-L_Main:
- if (@has_magic && (@Q_status == @STATUS_INITIAL))
- menu
- "Can you heal me?", L_NoHealMessage,
- "Can you teach me magic?", L_Teach,
- "What do you know about...", L_Question,
- "Goodbye!", L_bye;
- if (@has_magic && (@Q_status > @STATUS_INITIAL))
- menu
- "Can you heal me?", L_NoHealMessage,
- "Can you teach me more?", L_Teach,
- "Where can I get more lifestones?", L_Lifestones,
- "What do you know about...", L_Question,
- "Goodbye!", L_bye;
- if (!@has_magic)
- menu
- "Can you heal me?", L_NoHealMessage,
- "What do you know about...", L_Question,
- "Goodbye!", L_bye;
- goto L_Close;
-
-L_Lifestones:
- mes "[Elanore the Healer]";
- mes "\"I always need components for my own healing spells. If you bring me ten gamboge leaves, ten alizarin leaves, ten mauve leaves and ten cobalt leaves, I can make ten lifestones; I will give you half of them.\"";
- next;
- menu
- "OK, I will get them.", L_Close,
- "No way!", L_Close,
- "Here you are!", L_Trade,
- "Can I make them myself?", L_MakeSelf;
-
-L_Trade:
- if (countitem("MauveHerb") < 10) goto L_Trade_Missing;
- if (countitem("GambogeHerb") < 10) goto L_Trade_Missing;
- if (countitem("AlizarinHerb") < 10) goto L_Trade_Missing;
- if (countitem("CobaltHerb") < 10) goto L_Trade_Missing;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("Lifestone") == 0
- && countitem("MauveHerb") > 10
- && countitem("GambogeHerb") > 10
- && countitem("AlizarinHerb") > 10
- && countitem("CobaltHerb") > 10) goto L_NoRoom;
-
- delitem "MauveHerb", 10;
- delitem "GambogeHerb", 10;
- delitem "AlizarinHerb", 10;
- delitem "CobaltHerb", 10;
- getitem "Lifestone", 5;
- getexp 200, 1;
- mes "[Elanore the Healer]";
- mes "Elanore carefully goes over your leaves, then smiles.";
- mes "\"These will do just fine.\"";
- mes "She picks up all fourty and presses them together in her hands, then whispers something.";
- next;
- mes "[Elanore the Healer]";
- mes "As she opens her hands again, the leaves have turned into ten golden crystals.";
- mes "\"Five for you and five for me.\"";
- mes "She smiles.";
- mes "[200 experience points]";
- goto L_Close;
-
-L_NoRoom:
- mes "[Elanore the Healer]";
- mes "\"Oh... it seems that you have no room for the lifestones. But please do come back later when you have made a little space.\"";
- goto L_Close;
-
-L_Trade_Missing:
- mes "[Elanore the Healer]";
- mes "Elanore counts the leaves you show her.";
- mes "\"No, I am sorry. Please bring me ten leaves each of gamboge, alizarin, mauve, and cobalt.\"";
- goto L_Close;
-
-L_MakeSelf:
- mes "[Elanore the Healer]";
- if (@has_magic < 2) goto L_MakeSelf_no;
- goto L_MakeSelf_yes;
-
-L_MakeSelf_yes:
- mes "\"Oh, but of course! You are powerful enough to make your own lifestones, using the enchantment '" + get(.invocation$, "enchant-lifestone") + "'. This will consume a bug leg or a maggot slime or one of each of the four healing herbs, though.\"";
- goto L_Close;
-
-L_MakeSelf_no:
- mes "\"No, you are not powerful enough yet. Please come back and ask me again when you have learned to control more powerful magic, though!\"";
- goto L_Close;
-
-L_Teach:
- if (@Q_status == @STATUS_INITIAL) goto L_T_Initial;
- if (@Q_status == @STATUS_LEARNED_LIGHT_HEAL) goto L_T_ChkAdvTo2;
- if (@Q_status == @STATUS_MASTERED_LIGHT_HEAL) goto L_T_ChkAdvToLOH;
- if (@Q_status == @STATUS_LEARNED_LAY_ON_HANDS) goto L_T_Explain3;
- if (@Q_status == @STATUS_WAITING_FOR_KADIYA) goto L_T_ChkAdvTo3;
- if (@Q_status == @STATUS_READY_TO_LEARN_CURE_POISON) goto L_T_CurePosion;
- if (@Q_status == @STATUS_LEARNED_CURE_POISON) goto L_T_dunno;
-
- mes "[Elanore the Healer]";
- mes "\"You have made good progress, but you lack the magical power to advance further. Also, I would like to observe you some more to be certain that you will make a good healer.\"";
- goto L_Close;
-
-L_T_Initial:
- mes "[Elanore the Healer]";
- mes "\"I will only teach you magic of the school of Life, and that only if you prove yourself to be a good healer – that is, if you use your powers to help others.\"";
- mes "She hesistates.";
- next;
- mes "[Elanore the Healer]";
- mes "\"I don't know you very well, but I don't think that there is any harm in teaching you a simple spell.\"";
- mes "She reaches inside her satchel and pulls out a piece of crystal, glittering in the sun.";
- mes "\"This here is a lifestone, life energy encased in a crystal shell. You will need it for most healing magic.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"To heal someone, first locate the injury. As a beginner, you have to touch the wound; with practice, it will be enough to think about it. Hold the lifestone in one hand, touching the wound with the other.\"";
- mes "\"Then say, '" + get(.invocation$, "lesser-heal") + "', followed by the name of the one you wish to heal.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"You might want to write that down, actually. In fact, you might want to make sure to keep notes of all spells you hear, for you never know if you will hear them again!\"";
- mes "\"The invocation was '" + get(.invocation$, "lesser-heal") + "'.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"This will only cure cuts and bruises, though, and it will take some time to take effect. It will be useless to mend broken bones or more severe injuries!\"";
- mes "\"To heal yourself, it's enough to just say '" + get(.invocation$, "lesser-heal") + "' by itself.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"Let me give you a lifestone to get started with.\"";
- next;
- getinventorylist;
- if ((@inventorylist_count == 100) && (countitem("Lifestone") == 0)) goto L_T_Initial_Noroom;
- getitem "Lifestone", 1;
- set @Q_status, @STATUS_LEARNED_LIGHT_HEAL;
- callsub S_update_var;
-
- mes "[Elanore the Healer]";
- mes "Elanore hands you the crystal.";
- mes "\"Here you are. I hope that it will allow you to do good!\"";
- goto L_Close;
-
-L_T_Initial_Noroom:
- mes "[Elanore the Healer]";
- mes "\"Oh... you managed to put things into every little nook and pocket, haven't you? Well, come back later, I will give it to you then.\"";
- goto L_Close;
-
-L_T_ChkAdvTo2:
- mes "[Elanore the Healer]";
- if (@Q_heal_exp < 20) goto L_T_ChkAdvTo2_fail;
- mes "Elanore smiles at you.";
- mes "\"From what I have been hearing, you seem to be doing well on your way to becoming a healer. I have decided to accept you as a student of the School of Life Magic.\"";
- next;
- if (getskilllv(SKILL_MAGIC) < 2) goto L_T_AdvTo2_warn;
- goto L_T_AdvTo2_skip;
-
-L_T_AdvTo2_warn:
- mes "[Elanore the Healer]";
- mes "\"But be warned: you won't be able to use advanced healing magic until you are more capable in your regular magic usage.\"";
- next;
- goto L_T_AdvTo2_skip;
-
-L_T_AdvTo2_skip:
- mes "[Elanore the Healer]";
- mes "\"Please stand still.\"";
- mes "She walks up to you, holds your shoulders, and smiles at you.";
- next;
- mes "[Elanore the Healer]";
- mes "Then, she rises up on her tiptoes and kisses you on your forehead.";
- next;
- mes "[Elanore the Healer]";
- mes "You feel a strange, tingling kind of warmth spread through your body.";
- set @Q_status, @STATUS_MASTERED_LIGHT_HEAL;
- callsub S_update_var;
- set @SUP_xp, 5000;
- set @SUP_lvl, 2;
- callfunc "SkillUp";
- goto L_Close;
-
-L_T_ChkAdvTo2_fail:
- mes "\"I think I would like to observe you for a little longer to see if you would make a good healer.\"";
- if (@Q_heal_exp < 5)
- mes "\"You are still at the beginning of your path, but do keep practicing.\"";
- if ((@Q_heal_exp >= 5) && (@Q_heal_exp < 15))
- mes "\"You are making progress, but you still need more practice.\"";
- if (@Q_heal_exp >= 15)
- mes "\"You have made good progress, but please do continue in your efforts.\"";
- goto L_Close;
-
-L_T_ChkAdvToLOH:
- if (getskilllv(SKILL_MAGIC) < 2) goto L_T_LOH_adv_abort0;
- if (@Q_heal_exp < 30) goto L_T_LOH_adv_abort1;
-
- mes "[Elanore the Healer]";
- mes "\"I will now teach you how to heal by laying on your hands. The technique is similar to the spell I taught you at the beginning, but this time you transfer your own health instead of drawing health from a lifestone.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"First, lay your hand on the person you wish to heal. You needn't touch the injury itself, though you have to touch the skin until you are a little more experienced. Then, medidate on the word '" + get(.invocation$, "lay-on-hands") + "'\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"This will let your own life force flow into the person you are healing. If you are badly injured yourself, you will not be able to do this.\"";
- mes "[1000 experience points]";
- getexp 1000, 0;
- set @Q_status, @STATUS_LEARNED_LAY_ON_HANDS;
- callsub S_update_var;
- goto L_Close;
-
-L_T_LOH_adv_abort0:
- mes "[Elanore the Healer]";
- mes "\"You don't have enough magical power to learn the next healing spell yet.\"";
- goto L_Close;
-
-L_T_LOH_adv_abort1:
- mes "[Elanore the Healer]";
- mes "\"I'm sorry, but I am not yet convinced that you are a good enough healer. Please continue in your endeavours.\"";
- goto L_Close;
-
-L_T_Explain3:
- if (getskilllv(SKILL_MAGIC) < 3) goto L_T_Explain3_abort;
- if (@Q_heal_exp < 50) goto L_T_Explain3_fail;
-
- mes "[Elanore the Healer]";
- mes "Elanore smiles.";
- mes "\"You seem to be ready to advance as a healer. There is one favour I must ask of you first, though.\"";
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(NIBBLE_3_MASK)); // Initialise Kadiya quest
- set @Q_status, @STATUS_WAITING_FOR_KADIYA;
- callsub S_update_var;
- next;
-
- mes "[Elanore the Healer]";
- mes "\"There is a man here in Tulimshar with a beautiful young daughter; his name is Omar, and his daughter's name is Kadiya.\"";
- mes "\"Once, when I was a young apprentice, I made a mistake treating Omar. Ever since, he no longer trusts me.\"";
- next;
-
- mes "[Elanore the Healer]";
- mes "\"But his daugher has contracted Mopox, so she needs help. He doesn't trust me, but perhaps he will trust you; you have been helping quite a few people, after all.\"";
- next;
- goto L_3_menu;
-
-L_3_menu:
- menu
- "What should I do?", L_3_what_to_do,
- "Where can I find the sick girl?", L_3_where,
- "How did you mess up?", L_3_messup,
- "I will get started right away.", L_Main,
- "Maybe later.", L_Main;
-
-L_3_what_to_do:
- mes "[Elanore the Healer]";
- mes "\"You will have to brew a Mopox cure potion and give it to her. You should ask Caul to help you, he knows the recipe.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"First, you will need a concentration potion and an iron potion – together, they will give her her strength back. You also need a lifestone, and a gamboge leaf against the toxins in her body.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"You then have to add in roots, water, mauve leaves and sulphur powder until the brew is gooey and neither light nor dark. Caul will explain the details to you.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"There is a transmutation spell to make sulphur powder. If you don't know the magic, perhaps you can ask a transmutation mage to help you with this part.\"";
- next;
- goto L_3_menu;
-
-L_3_messup:
- mes "[Elanore the Healer]";
- mes "\"Ah... well, Omar is a trader, and a frequent traveler. One day he came back from a journey with fleas in his beard and asked me to get rid of them.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"Unfortunately I used the wrong lotion on the fleas, so instead of being scared away, they grew to enormous proportions and ate up all of his beard.\"";
- next;
- mes "[Elanore the Healer]";
- mes "Elanore blushes.";
- mes "\"Ever since then he hasn't been very trusting towards my skills, and I suppose that I can't blame him. But I don't want poor Kadiya to suffer because of that.\"";
- next;
- goto L_3_menu;
-
-L_3_where:
- mes "[Elanore the Healer]";
- mes "\"Kadiya and Omar live relatively close by. See this corner in the inner city wall east of here? Turn past it, then go north. It's the second house.\"";
- next;
- goto L_3_menu;
-
-L_T_Explain3_abort:
- mes "[Elanore the Healer]";
- mes "\"I'm sorry, but you lack the magical power to advance.\"";
- goto L_Close;
-
-L_T_Explain3_fail:
- mes "[Elanore the Healer]";
- if (@Q_heal_exp < 30)
- mes "\"You seem to have regressed as a healer. This is worrisome; please mend your ways or I will not teach you any further.\"";
- if ((@Q_heal_exp >= 30) && (@Q_heal_exp < 40))
- mes "\"You still need more practice in the art of healing.\"";
- if ((@Q_heal_exp >= 40))
- mes "\"You are doing well, but you need some more practice as a healer first.\"";
- goto L_Close;
-
-L_T_ChkAdvTo3:
- callfunc "KadiyaSubquestConsts";
-
- if (@Q_kadiya_status >= @Q_STATUS_COMPLETED) goto L_T_AdvTo3Ready;
-
- mes "[Elanore the Healer]";
- mes "\"Please help Kadiya.\"";
- next;
- goto L_3_menu;
-
-L_T_AdvTo3Ready:
- mes "[Elanore the Healer]";
- mes "\"I have heard of what you did. Hiding the potion in her favorite food – that was clever.\"";
- mes "She smiles at you.";
- mes "\"Omar let me have a look at her earlier, and she seems to be recovering. You did very well.";
- next;
- mes "[Elanore the Healer]";
- mes "Elanor turns towards you, rises up on her toes and kisses you on the forehead.";
- next;
- set @xp, 30000;
- if (@Q_kadiya_status == @Q_STATUS_COMPLETED_ELANORE)
- set @xp, 50000;
- mes "[Elanore the Healer]";
- mes "You feel a strange, tingling kind of warmth spread through your body.";
- mes "[" + @xp + " experience points]";
- mes "[Level 3 in Life Magic]";
-
- set @Q_status, @STATUS_READY_TO_LEARN_CURE_POISON;
- callsub S_update_var;
- getexp @xp, 0;
- if (getskilllv(SKILL_MAGIC_LIFE) < 3)
- setskill SKILL_MAGIC_LIFE, 3;
- next;
-
- if (@Q_kadiya_status != @Q_STATUS_COMPLETED_ELANORE) goto L_Main;
-
- mes "[Elanore the Healer]";
- mes "\"Overall I am impressed by your progress. If you continue as you are doing now, you might become a great healer.\"";
- mes "She hands you a handful of lifestones.";
- mes "\"Please come back soon; there is more that I would like to teach you.\"";
- next;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_ELANORE_OMAR;
- getitem "Lifestone", 20;
-
- goto L_Main;
-
-L_T_CurePosion:
- mes "[Elanore the Healer]";
- mes "\"Thank you again for your help with Kadiya!\"";
- mes "\"Curing sicknesses is often quite difficult; most of them require complicated potions to be brewed.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"Fortunately, things are much easier with most poisons. For those we have a simple spell that only requires a Gamboge leaf.\"";
- mes "\"This is the next spell that I would like to teach you.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"If you would like to cure someone who is poisoned, first rub a Gamboge leaf between your hands. Your hands must be covered in Gamboge liquid for this to work.\"";
- mes "\"Speak the invocation, `" + get(.invocation$, "cure-poison") + "'.\"";
- mes "\"Next, you either touch the poisoned person with your hands, or speak their name. You have to be close for this to work, though.\"";
- next;
- mes "[Elanore the Healer]";
- mes "\"Once again, the invocation is `" + get(.invocation$, "cure-poison") + "'.\"";
- mes "\"Come back again soon; there is another spell I would like to teach you.\"";
- next;
- set @Q_status, @STATUS_LEARNED_CURE_POISON;
- callsub S_update_var;
- goto L_Main;
-
-L_T_dunno:
- mes "[Elanore the Healer]";
- mes "\"Hmm. I wanted to teach you something, but I've forgotten what it was... please come back later.\"";
- next;
- goto L_Main;
-
-L_Question:
- callfunc "MagicTalkOptionsSetup";
- set @ignore, @QQ_ELANORE;
- callfunc "MagicTalkMenu";
-
- if (@c == 0) goto L_Main;
- if (@c == @QQ_MANASEED) goto L_Q_manaseed;
- if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
- if (@c == @QQ_WYARA) goto L_Q_wyara;
- if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
- if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
- if (@c == @QQ_OLDWIZ) goto L_Q_oldwiz;
- if (@c == @QQ_ASTRALSOUL) goto L_Q_astralsoul;
-
- mes "[Elanore the Healer]";
- mes "Elanore shakes her head.";
- mes "\"I am sorry, but I don't think that I know anything that would help you.\"";
- next;
- goto L_Main;
-
-L_Q_astralsoul:
- mes "[Elanore the Healer]";
- mes "\"The astral soul skill is one of the most important skills for mages. I learned this focus long time ago. Without that skill your magic is quite useless, isn't it? If the rumors are really true, there is an experienced mage in the Woodlands around Hurnscald.\"";
- next;
- goto L_Main;
-
-L_Q_oldwiz:
- mes "[Elanore the Healer]";
- mes "\"He is a kind old man. He stays mostly with his books and his apprentice, though we have chatted a few times.\"";
- next;
- goto L_Main;
-
-L_Q_manaseed:
- mes "[Elanore the Healer]";
- mes "She smiles.";
- mes "\"If the rumors are true and there really is a Mana Seed, then that would be wonderful news – perhaps we will have a few more healers soon!\"";
- next;
- goto L_Main;
-
-L_Q_manapotion:
- mes "[Elanore the Healer]";
- mes "\"I'm sorry, but I can't help you with that.\"";
- next;
- goto L_Main;
-
-L_Q_wyara:
- mes "[Elanore the Healer]";
- mes "\"Wyara is the Hurnscald town witch. She was also the town healer before the Doctor moved there.\"";
- next;
- goto L_Main;
-
-L_Q_sagatha:
- mes "[Elanore the Healer]";
- mes "\"Oh, I have only met Sagatha once or twice, while collecting herbs. She is a warm and gentle person, but she tries to hide it.\"";
- next;
- goto L_Main;
-
-L_Q_auldsbel:
- mes "[Elanore the Healer]";
- mes "\"Oh, sorry – I don't really know him very well.\"";
- next;
- goto L_Main;
-
-L_CurePoison:
- mes "[Elanore the Healer]";
- mes "\"Oh dear! That looks like poison; hang on...\"";
- mes "She performs a complicated gesture.";
- sc_end(sc_poison);
- sc_end(sc_slowpoison);
- misceffect sfx_magic_life, strcharinfo(0);
- misceffect sfx_magic_life;
- next;
- mes "[Elanore the Healer]";
- mes "\"There you are, right as rain! Now you take care, all right?\"";
- goto L_Close;
-
-L_bye:
- mes "[Elanore the Healer]";
- mes "\"Goodbye!\"";
- goto L_Close;
-
-L_Close:
- set @Q_MASK, 0;
- set @Q_SHIFT, 0;
- set @has_magic, 0;
- set @Q_STATUS_MAX, 0;
- set @Q_heal_exp, 0;
- set @Q_status, 0;
- set @SUP_id, 0;
- set @SUP_name$, "";
- set @ignore, 0;
- set @STATUS_LEARNED_LIGHT_HEAL, 0;
- set @STATUS_MASTERED_LIGHT_HEAL, 0;
- set @STATUS_LEARNED_LAY_ON_HANDS, 0;
- set @STATUS_WAITING_FOR_KADIYA, 0;
- set @STATUS_READY_TO_LEARN_CURE_POISON, 0;
- set @STATUS_LEARNED_CURE_POISON, 0;
- set @TEMP,0;
- set @xp, 0;
- close;
-
-S_update_var:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/002-1/gaurds.txt b/world/map/npc/002-1/gaurds.txt
deleted file mode 100644
index 6700a1b8..00000000
--- a/world/map/npc/002-1/gaurds.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Guards by the gates to the port
-002-1,100,21,0|script|Guard#port1|104
-{
- mes "[Guard]";
- mes "\"Lots of stuff happens in the port district. Those sailors can get quite rowdy.\"";
- close;
-}
-002-1,61,27,0|script|Guard#port2|104
-{
- mes "[Guard]";
- mes "\"You wouldn't believe the refuse that comes in from the docks.\"";
- close;
-}
-002-1,83,48,0|script|Guard#east1|104
-{
- mes "[Guard]";
- mes "\"I make sure less desirables don't bother the Nobles.\"";
- close;
-}
diff --git a/world/map/npc/002-1/itka.txt b/world/map/npc/002-1/itka.txt
deleted file mode 100644
index 3cc8457f..00000000
--- a/world/map/npc/002-1/itka.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// Outside the Hotel
-002-1,66,39,0|script|Itka|114
-{
- mes "[Itka]";
- mes "\"This hotel is the best!\"";
- next;
- mes "\"It has a Baker, a Barber, a Casino and a Theatre.\"";
- next;
- mes "\"Come on inside now!\"";
- close;
-
-OnTimer300000:
- npctalk strnpcinfo(0), "Come to The Wizard's Rest!";
- setnpctimer 0;
- end;
-
-OnInit:
- if (debug >= 2) end;
- initnpctimer;
- end;
-}
diff --git a/world/map/npc/002-1/lieutenant_dausen.txt b/world/map/npc/002-1/lieutenant_dausen.txt
deleted file mode 100644
index 33e88da3..00000000
--- a/world/map/npc/002-1/lieutenant_dausen.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-002-1,63,67,0|script|Lieutenant Dausen|122
-{
- if (QL_MINEALL == 21) goto L_LD_Key;
- if (QL_MINEALL == 7) goto L_LD_Miners;
- if (QL_MINEALL == 6) goto L_LD_Orders;
- if (QL_MINEALL == 5) goto L_LD_Nickos_Waits;
- if (QL_MINEALL == 4) goto L_LD_Nickos;
- if (QL_MINEALL == 3) goto L_LD_Waits;
- if (QL_MINEALL == 2) goto L_LD_Woe_Is_Me;
- if (QL_MINEALL == 1) goto L_LD_Drinks;
-
- mes "[Lieutenant Dausen]";
- mes "\"Hello. I am Lieutenant Dausen. I monitor the monster threat around the city to ensure the safety of its citizens.\"";
- if (QL_MINEALL)
- goto L_Close;
- goto L_LD_Start;
-
-L_LD_Start:
- set QL_MINEALL, 1;
- next;
- mes "\"Out here in the desert, it sure does get hot! My men and I get thirsty rather quickly. Cactus Drinks are our favourite; if you can get some for us, we'd surely appreciate your effort. About 10 would do.\"";
- goto L_Close;
-
-L_LD_Drinks:
- if (countitem ("CactusDrink") < 10)
- goto L_LD_NotEnough_Drink;
- getinventorylist;
- if (@inventorylist_count - (countitem("CactusDrink") == 10) > 99)
- goto L_LD_TooMany;
- set QL_MINEALL, 2;
- delitem "CactusDrink", 10;
- getitem "Boots", 1;
- mes "[Lieutenant Dausen]";
- mes "\"Great! This will help us make it through the hot day. As a gift for your troubles, take these boots to keep your feet from burning on the sand. Have a good day...\"";
- next;
- mes "Lieutenant Dausen mumbles to himself and rubs his head.";
- next;
- mes "\"I have another problem, though. I mixed up the orders to my men, Nickos and Stewen. Someone needs to let them know they're going to have to hold their post for a while longer instead of taking a break. However, I can't leave my post! Oh, what to do, what to do...\"";
- menu
- "I can help you out, since you helped me too.", L_LD_Help,
- "Thanks for the boots, gotta run now.", L_LD_NoHelp;
-
-L_LD_NotEnough_Drink:
- mes "[Lieutenant Dausen]";
- mes "\"Hi again. My men and I sure are thirsty for our favorite drink, the Cactus Drink. If we had about 10, it would help us out a great deal in this sandstorm.\"";
- goto L_Close;
-
-L_LD_TooMany:
- mes "[Lieutenant Dausen]";
- mes "\"Oh, it seems you have too many items for me to give you a reward. Come back after you drop or sell some items.\"";
- goto L_Close;
-
-L_LD_Woe_Is_Me:
- mes "[Lieutenant Dausen]";
- mes "\"I have a problem. I mixed up the orders to my men! Someone needs to let them know they're going to have to hold their post for a while longer instead of taking a break. However, I can't leave my post. Oh, what to do, what to do...\"";
- menu
- "I can help you out, since you helped me out too.", L_LD_Help,
- "Bye-bye.", L_LD_NoHelp;
-
-L_LD_Help:
- set QL_MINEALL, 3;
- mes "[Lieutenant Dausen]";
- mes "\"Oh! Would you? You are ever most helpful! Could you let Stewen know first? I'm the most worried about the monsters from the eastern desert and he should know first to hold his post. Come back to me after you see him. Hope to hear from you soon!\"";
- goto L_Close;
-
-L_LD_NoHelp:
- mes "[Lieutenant Dausen]";
- mes "\"See you later then.\"";
- goto L_Close;
-
-L_LD_Waits:
- mes "[Lieutenant Dausen]";
- mes "\"I do hope Stewen holds his post. If you could tell them to do so, it would help me out a great deal.\"";
- goto L_Close;
-
-L_LD_Nickos:
- set QL_MINEALL, 5;
- mes "[Lieutenant Dausen]";
- mes "\"Thanks for letting Stewen know. Can you now tell Nickos to hold his post too? He guards the mine to the south, monitoring the monster threat and protecting the miners when he can.\"";
- goto L_Close;
-
-L_LD_Nickos_Waits:
- mes "[Lieutenant Dausen]";
- mes "\"Could you let Nickos know to hold his post? It would be very helpful. He is guarding the mine south of here.\"";
- goto L_Close;
-
-L_LD_Orders:
- set QL_MINEALL, 7;
- set Zeny, Zeny + 500;
- mes "[Lieutenant Dausen]";
- mes "\"Thank you for clearing up the orders to my men! Here's some gold for your efforts.\"";
- next;
- mes "\"If you think you can handle the monsters lurking out here, I'm sure Nickos and the miners could use some help. Talk to you later.\"";
- goto L_Close;
-
-L_LD_Miners:
- mes "[Lieutenant Dausen]";
- mes "\"I monitor the monster threat around the city to ensure the safety of its citizens.\"";
- next;
- mes "\"If you think you can handle the monsters lurking out here, I'm sure Nickos and the miners could use some help. Talk to you later.\"";
- goto L_Close;
-
-L_LD_Key:
- set QL_MINEALL, 22;
- mes "[Lieutenant Dausen]";
- mes "\"Oh, Naem lost his key? Here, take this spare. It should help you get into the underground palace.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-1/luca.txt b/world/map/npc/002-1/luca.txt
deleted file mode 100644
index 4a05b757..00000000
--- a/world/map/npc/002-1/luca.txt
+++ /dev/null
@@ -1,563 +0,0 @@
-//
-
-002-1,112,26,0|script|Luca|102
-{
- set @EXP_BRAWLING, 2000;
-
- setarray @luca_reward_item_id,
- 756, // "AssassinGloves", // player learned all six Focus Skills
- 757, // "AssassinBoots", // player got 2 Focus Skills at lvl 9
- 731, // "AssassinPants", // player got 4 Focus Skills at lvl 9
- 5267; // "AssassinMask"; // player got 6 Focus Skills at lvl 9
-
- setarray @luca_reward_exp,
- 60000, // player learned all six Focus Skills
- 70000, // player got 2 Focus Skills at lvl 9
- 80000, // player got 4 Focus Skills at lvl 9
- 90000; // player got 6 Focus Skills at lvl 9
-
- if (BaseLevel >= 35) goto L_teach;
-
- if (BaseLevel >= 25) goto L_teach_soon;
-
- mes "[Luca the Hunter]";
- mes "\"Ouch! It hurts, this wound I got from battle.\"";
- next;
- menu "Tell me about it",L_Exp,"Nevermind",L_Nev;
-
-L_Exp:
- mes "[Luca the Hunter]";
- mes "\"I was just coming back from a long journey. I ran into a group of scorpions and started fighting them for experience.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"Then, out of a cave came a BLACK one! I had NEVER seen it before!\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"Luckily I had a camera with me! Here's a picture of it... Let me find it, I put it in my pocket somewhere...\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"Oh man! My pockets have been ripped clean off!\"";
- goto L_Close;
-
-L_Nev:
- mes "[Luca the Hunter]";
- mes "\"Hmpf!\"";
- goto L_Close;
-
-L_teach_soon:
- mes "[Luca the Hunter]";
- mes "\"You've grown quite a bit stronger since I first saw you, strolling around town like that! You know, if you train a little more, maybe we can help each other out a little?\"";
- goto L_Close;
-
-L_teach:
- // Bugfix death
- if (!(FLAGS & FLAG_LUCA_FIX)) goto L_Nev;
- if (getskilllv(SKILL_POOL)) goto L_teachmore;
-
- mes "[Luca the Hunter]";
- mes "\"Hey there! You've become quite the adventurer, haven't you? I think it's time that someone taught you some basic skills.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"If you want, I can help with that!\"";
- next;
- menu
- "Sure, that sounds fun!", L_Next,
- "I'm not interested.", L_Nev;
-
-L_Next:
- mes "[Luca the Hunter]";
- mes "\"All right! It's not all that easy, though. First you have to learn how to focus. That's because you can learn many skills, but you can't focus on all of them all the time.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"When you can do that, you can learn some real skills, and when you know them, you can come back to me to tell me which ones you want to focus on. Deal?\"";
- next;
- menu
- "Yeah!", L_teach0_follow,
- "Certainly!", L_teach0_follow,
- "Wait... what do you mean?", L_Explain,
- "Please explain some more.", L_Explain,
- "No.", L_Nev;
-
-L_teach0_follow:
- if (getskilllv(SKILL_POOL)) goto L_teachmore;
-
- mes "[Luca the Hunter]";
- mes "\"Great! Now, before I can give you that skill, I have to make sure that those stories about you are all true and that you really are experienced enough.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"So I'm going to ask you some easy questions.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"First, who is the man who guards the entrance to the old Tulimshar underground arena?\"";
- next;
- input @answer$;
- if (@answer$ != "Phaet" && @answer$ != "phaet") goto L_wronganswer;
- mes "[Luca the Hunter]";
- mes "\"Good. Next, what's the name of the pipe-smoker who lives on top of Lore Mountain and makes leathery goods there?\"";
- next;
- input @answer$;
- if (@answer$ != "Pachua" && @answer$ != "pachua") goto L_wronganswer;
- mes "[Luca the Hunter]";
- mes "\"Great! One more: Who was the adventurer who built Dimond's Cove for Dimond?\"";
- next;
- input @answer$;
- if (@answer$ != "Merlin" && @answer$ != "merlin") goto L_wronganswer;
- mes "[Luca the Hunter]";
- mes "Luca laughs in excitement.";
- mes "\"All right! You're the real thing, my friend!\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"Now stand over there. This should only take a second...\"";
- mes "He takes off a pendant he is wearing and holds it up.";
- next;
- mes "[Luca the Hunter]";
- mes "\"See that fang at the end of the chain? Keep staring at it.\"";
- next;
- mes "[Luca the Hunter]";
- mes "He starts swinging the pendant back and forth.";
- mes "\"And whatever you do, don't blink. Don't look away, and don't blink.\"";
- next;
- mes "[Luca the Hunter]";
- mes "The world slows down around you as you focus on the pendant going back...";
- next;
- mes "and forth...";
- next;
- mes "and back...";
- next;
- mes "and forth...";
- next;
- mes "and back...";
- next;
- mes "and...";
- next;
- mes "You feel relaxed.";
- next;
- mes "[Luca the Hunter]";
- mes "\"... still there?\"";
- mes "You hear the sound of fingers snapping. Why would someone do that on such a calm day?";
- next;
- mes "[Luca the Hunter]";
- mes "\"Oh, good... I think it worked. Nice job!\"";
- mes "He grins.";
- mes "[You gain 10,000 experience points]";
- mes "[You learned Skill Focus]";
- setskill SKILL_POOL, 1;
- getexp 10000, 0;
- next;
- goto L_teachmore2;
-
-L_wronganswer:
- mes "[Luca the Hunter]";
- mes "\"No, that was wrong. I suppose you're not as experienced as I thought you'd be.\"";
- goto L_Close;
-
-L_Explain:
- mes "[Luca the Hunter]";
- mes "\"Alright, what do you want to know?\"";
- next;
- goto L_Explain_loop;
-
-L_Explain_loop:
- menu
- "What's skill focus?", L_explain_focus,
- "What skills are there?", L_explain_skills,
- "How do skills work?", L_explain_work,
- "Thanks, I think I got it!", L_Next;
-
-L_explain_focus:
- mes "[Luca the Hunter]";
- mes "\"Well, you can learn many, many skills. But you can't really use all of them at once, not even old Auldsbels' head is big enough for that! So you have to focus.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"But you can change that focus whenever you want. It works like this: You come to me, you tell me what you want to focus on, and we do exercises until it's stuck in your head.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"If there's not enough space in your head, you'll first have to stop thinking about some other thing. There's an exercise I learned to do that, so when you talk to me you can just let me know what you want to forget.\"";
- next;
- mes "[Luca the Hunter]";
- if (getskilllv(SKILL_POOL) == 0)
- mes "\"Right now you can't focus on anything yet, so I'll first have to teach you a simple skill to keep your focus.\"";
- if (getskilllv(SKILL_POOL) == 1)
- mes "\"Right now you can only focus on one thing at a time. So if you want to change what your focus is, you have to forget whatever else you've focused on.\"";
- if (getskilllv(SKILL_POOL) > 1)
- mes "\"You can focus on " + getskilllv(SKILL_POOL) + " skills right now.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"You can come back to me to focus or unfocus a skill whenever you want, I'm here all day.\"";
- next;
- mes "\"For unfocusing you need to bring a potion; a special potion. That potion is not the easiest to get, but I am sure you are able to.\"";
- next;
- goto L_Explain_loop;
-
-L_explain_skills:
- mes "[Luca the Hunter]";
- mes "\"Well, I don't really know... lots, I think. I can teach you brawling, which is good when you've run out of arrows or don't have a weapon around.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"But there's other skills around. Some mages need special skills to concentrate, so ask around in that crowd, if that's your thing.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"I've also heard that there is someone in Hurnscald who can help you make your body more resistant against some things. But body and mind belong together, so you probably have to focus for that, too.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"Other than that, just ask around! There have to be some people who can teach you something...\"";
- next;
- goto L_Explain_loop;
-
-L_explain_work:
- mes "[Luca the Hunter]";
- mes "\"Well, skills allow you to be better in some things, or allow to do what you couldn't do without them. When you've learned a skill and are focusing on it, then it affects what you do.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"Now, when you start out with a skill, you won't be very good at it yet. But if you keep practicing you'll learn how to get better.\"";
- next;
- mes "[Luca the Hunter]";
- mes "\"My old teacher always called that getting `skill points' and that you can see them with [F5], whoever that is.\"";
- next;
- //TODO:
- //mes "[Luca the Hunter]";
- //mes "\"She also said that with this [F5] thing you can get better at those skills, and that it costs you as many skill points as the level you want to go to.\"";
- //next;
- mes "[Luca the Hunter]";
- mes "\"She always would have one cactus potion too many... but she was an amazing teacher.\"";
- mes "He nods emphatically.";
- next;
- goto L_Explain_loop;
-
-L_teachmore:
- mes "[Luca the Hunter]";
- mes "\"Good to see you again!\"";
- next;
-
- set @mallard, getskilllv(SKILL_MALLARDS_EYE);
- set @brawling, getskilllv(SKILL_BRAWLING);
- set @speed, getskilllv(SKILL_SPEED);
- set @poison, getskilllv(SKILL_RESIST_POISON);
- set @astralsoul, getskilllv(SKILL_ASTRAL_SOUL);
- set @raging, getskilllv(SKILL_RAGING);
-
- set @lvl9skills, 0;
- if (@mallard >= 9)
- set @lvl9skills, @lvl9skills + 1;
- if (@brawling >= 9)
- set @lvl9skills, @lvl9skills + 1;
- if (@speed >= 9)
- set @lvl9skills, @lvl9skills + 1;
- if (@poison >= 9)
- set @lvl9skills, @lvl9skills + 1;
- if (@astralsoul >= 9)
- set @lvl9skills, @lvl9skills + 1;
- if (@raging >= 9)
- set @lvl9skills, @lvl9skills + 1;
-
- if ((FLAGS & FLAG_LUCA_GOT_SIX_SKILLS) &&
- (FLAGS & FLAG_LUCA_2SKILLS_MAXED) &&
- (FLAGS & FLAG_LUCA_4SKILLS_MAXED) &&
- (FLAGS & FLAG_LUCA_6SKILLS_MAXED)) goto L_CheckSkillsEnd;
-
- if (!(@mallard && @brawling && @speed && @poison && @astralsoul && @raging) || (FLAGS & FLAG_LUCA_GOT_SIX_SKILLS)) goto L_Check2Skills;
- mes "[Luca the Hunter]";
- mes "I've heard you learned all six Focus Skills.";
- mes "For that, the other teachers and I want to give you a reward!";
- next;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_InvFull;
- mes "Here take the [@@" + @luca_reward_item_id[0] + "|@@].";
- mes "[" + @luca_reward_exp[0] + " experience points]";
- getitem @luca_reward_item_id[0], 1;
- getexp @luca_reward_exp[0], 0;
- set FLAGS, FLAGS | FLAG_LUCA_GOT_SIX_SKILLS;
- next;
- goto L_Check2Skills;
-
-L_Check2Skills:
- if (@lvl9skills < 2 || (FLAGS & FLAG_LUCA_2SKILLS_MAXED)) goto L_Check4Skills;
- mes "[Luca the Hunter]";
- mes "I sense you have maxed out two Focus Skills!";
- mes "For that I give you a reward!";
- next;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_InvFull;
- mes "Here take the [@@" + @luca_reward_item_id[1] + "|@@].";
- mes "[" + @luca_reward_exp[1] + " experience points]";
- getitem @luca_reward_item_id[1], 1;
- getexp @luca_reward_exp[1], 0;
- set FLAGS, FLAGS | FLAG_LUCA_2SKILLS_MAXED;
- next;
- goto L_Check4Skills;
-
-L_Check4Skills:
- if (@lvl9skills < 4 || (FLAGS & FLAG_LUCA_4SKILLS_MAXED)) goto L_Check6Skills;
- mes "[Luca the Hunter]";
- mes "I sense you have maxed out four Focus Skills!";
- mes "For that I give the next reward!";
- next;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_InvFull;
- mes "Here take the [@@" + @luca_reward_item_id[2] + "|@@].";
- mes "[" + @luca_reward_exp[2] + " experience points]";
- getitem @luca_reward_item_id[2], 1;
- getexp @luca_reward_exp[2], 0;
- set FLAGS, FLAGS | FLAG_LUCA_4SKILLS_MAXED;
- next;
- goto L_Check6Skills;
-
-L_Check6Skills:
- if (@lvl9skills < 6 || (FLAGS & FLAG_LUCA_6SKILLS_MAXED)) goto L_CheckSkillsEnd;
- mes "[Luca the Hunter]";
- mes "I sense you have maxed out six Focus Skills!";
- mes "For that I give the final reward!";
- next;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_InvFull;
- mes "Here take the [@@" + @luca_reward_item_id[3] + "|@@].";
- mes "[" + @luca_reward_exp[3] + " experience points]";
- getitem @luca_reward_item_id[3], 1;
- getexp @luca_reward_exp[3], 0;
- set FLAGS, FLAGS | FLAG_LUCA_6SKILLS_MAXED;
- next;
- goto L_CheckSkillsEnd;
-
-L_InvFull:
- mes "[Luca the Hunter]";
- mes "Looks like your bag is full!";
- mes "To get your reward you must make some room first!";
- next;
- goto L_CheckSkillsEnd;
-
-L_CheckSkillsEnd:
- goto L_teachmore2;
-
-L_teachmore2:
- setarray @choices, 0,0,0,0,0;
- setarray @choice$, "", "", "", "", "";
- set @choice_nr, 0;
-
- set @C_focus, 1;
- set @C_unfocus, 2;
- set @C_teachbrawling, 3;
- set @C_teachnothing, 4;
- set @C_explainagain, 5;
- set @C_nvm, 6;
- set @C_focusoverview, 7;
-
- getactivatedpoolskilllist;
- if (!((getskilllv(SKILL_POOL) - @skilllist_count) > 0)) goto L_teachmore2_nof;
- getunactivatedpoolskilllist;
- if (@skilllist_count == 0) goto L_teachmore2_nof;
- set @choices[@choice_nr], @C_focus;
- set @choice$[@choice_nr], "I would like to focus.";
- set @choice_nr, @choice_nr + 1;
- goto L_teachmore2_nof;
-
-L_teachmore2_nof:
- getactivatedpoolskilllist;
- if (@skilllist_count == 0) goto L_teachmore2_nounf;
- set @choices[@choice_nr], @C_unfocus;
- set @choice$[@choice_nr], "I would like to unfocus.";
- set @choice_nr, @choice_nr + 1;
- goto L_teachmore2_nounf;
-
-L_teachmore2_nounf:
- if (!(getskilllv(SKILL_BRAWLING)))
- set @choices[@choice_nr], @C_teachbrawling;
- if (getskilllv(SKILL_BRAWLING))
- set @choices[@choice_nr], @C_teachnothing;
- set @choice$[@choice_nr], "Can you teach me a skill?";
- set @choice_nr, @choice_nr + 1;
-
- set @choices[@choice_nr], @C_explainagain;
- set @choice$[@choice_nr], "Can you explain skills again?";
- set @choice_nr, @choice_nr + 1;
-
- if (!(getskilllv(SKILL_POOL))) goto L_teachmore2_noovv;
- set @choices[@choice_nr], @C_focusoverview;
- set @choice$[@choice_nr], "Can you tell me what skills I'm currently focused on?";
- set @choice_nr, @choice_nr + 1;
- goto L_teachmore2_noovv;
-
-L_teachmore2_noovv:
- set @choices[@choice_nr], @C_nvm;
- set @choice$[@choice_nr], "I'm done for now, thanks!";
- set @choice_nr, @choice_nr + 1;
-
- menu
- @choice$[0],L_MenuItems,
- @choice$[1],L_MenuItems,
- @choice$[2],L_MenuItems,
- @choice$[3],L_MenuItems,
- @choice$[4],L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
- if (@choices[@menu] == 0) goto L_Close;
- if (@choices[@menu] == @C_focus) goto L_focus;
- if (@choices[@menu] == @C_unfocus) goto L_unfocus;
- if (@choices[@menu] == @C_teachbrawling) goto L_teach_brawling;
- if (@choices[@menu] == @C_teachnothing) goto L_teach_nothing;
- if (@choices[@menu] == @C_explainagain) goto L_teachmore_explain;
- if (@choices[@menu] == @C_focusoverview) goto L_focus_overview;
- if (@choices[@menu] == @C_nvm) goto L_Close;
- goto L_Close;
-
-L_teachmore_explain:
- goto L_Explain;
-
-L_focus:
- getunactivatedpoolskilllist;
- set @skilllist_id[@skilllist_count], 0;
- set @skilllist_name$[@skilllist_count], "Nevermind";
- set @skilllist_name$[@skilllist_count + 1], "";
- menu
- @skilllist_name$[0], L_MenuItems1,
- @skilllist_name$[1], L_MenuItems1,
- @skilllist_name$[2], L_MenuItems1,
- @skilllist_name$[3], L_MenuItems1,
- @skilllist_name$[4], L_MenuItems1,
- @skilllist_name$[5], L_MenuItems1,
- @skilllist_name$[6], L_MenuItems1,
- @skilllist_name$[7], L_MenuItems1;
-
-L_MenuItems1:
- set @menu, @menu - 1;
- if (@skilllist_id[@menu] == 0) goto L_teachmore2;
-
- poolskill @skilllist_id[@menu];
- goto L_teachmore2;
-
-L_unfocus:
- if (countitem("GrimaceOfDementia") > 0) goto L_unfocus_menu;
-
- if (MAGIC_FLAGS & MFLAG_KNOWS_UNFOCUS_RECIPE) goto L_nopotion;
-
- mes "[Luca the Hunter]";
- mes "\"Unfocusing is one of the harder parts though, because it is sunk in. You see?\"";
- next;
- mes "\"So to remove that mental focus we will need a special potion.\"";
- next;
- mes "\"Maybe you should consult some very skilled alchemists.\"";
- next;
- mes "\"Ah yes, of course you will need a recipe. Although the alchemist usually knows it.\"";
- next;
- mes "\"The potion is called Grimace of Dementia. So the alchemist will know for sure.\"";
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_UNFOCUS_RECIPE;
- menu
- "Ok, I will get a Grimace of Dementia potion", L_Close,
- "Alright, be right back!", L_Close;
-
-L_nopotion:
- mes "[Luca the Hunter]";
- mes "\"Hey, you really need that dementia potion for unfocusing.\"";
- next;
- mes "\"Come back when you've found a suitable alchemist who can mix such a potion.\"";
- next;
- goto L_teachmore2;
-
-L_unfocus_menu:
- mes "[Luca the Hunter]";
- mes "\"Ahh, I see you have a dementia potion.\"";
- next;
- mes "\"What skill would you like to unfocus?\"";
-
- getactivatedpoolskilllist;
-
- set @skilllist_id[@skilllist_count], 0;
- set @skilllist_name$[@skilllist_count], "Nevermind";
- set @skilllist_name$[@skilllist_count + 1], "";
- menu
- @skilllist_name$[0], L_MenuItems2,
- @skilllist_name$[1], L_MenuItems2,
- @skilllist_name$[2], L_MenuItems2,
- @skilllist_name$[3], L_MenuItems2,
- @skilllist_name$[4], L_MenuItems2,
- @skilllist_name$[5], L_MenuItems2,
- @skilllist_name$[6], L_MenuItems2,
- @skilllist_name$[7], L_MenuItems2;
-
-L_MenuItems2:
- set @menu, @menu - 1;
- if (@skilllist_id[@menu] == 0) goto L_teachmore2;
-
- if (countitem("GrimaceOfDementia") == 0) goto L_nopotion;
- delitem "GrimaceOfDementia", 1;
-
- unpoolskill @skilllist_id[@menu];
- goto L_Close;
-
-L_focus_overview:
- getactivatedpoolskilllist;
-
- if (@skilllist_count != 0) goto L_focus_overview1;
- mes "[Luca the Hunter]";
- mes "\"You aren't focused on a skill at the moment.\"";
- next;
- goto L_teachmore2;
-
-L_focus_overview1:
- mes "[Luca the Hunter]";
- set @message$, "\"At the moment you are focused on ";
- goto L_focus_overview2;
-
-L_focus_overview2:
- set @skilllist_count, @skilllist_count-1;
- set @message$, @message$ + @skilllist_name$[@skilllist_count];
- if (@skilllist_count == 0) goto L_focus_overview3;
- set @message$, @message$ + ", ";
- goto L_focus_overview2;
-
-L_focus_overview3:
- set @message$, @message$ + ".\"";
- mes @message$;
- next;
- goto L_teachmore2;
-
-L_teach_brawling:
- mes "[Luca the Hunter]";
- mes "\"Well, yes, I can teach you brawling. It's a nice thing, if you have nothing left but your hands to defend yourself.\"";
- next;
- mes "He is laughing.";
- mes "\"And is handy, if some sapling starts getting naughty.\"";
- next;
- mes "He raises his hands in front of his face and clenches his fists.";
- mes "\"Ok, let's go! Hold your hands like this.\"";
- next;
- mes ".......";
- next;
- mes "Some bruises later.";
- mes "\"Great! I think, you got it.\"";
- next;
- set @SUP_id, SKILL_BRAWLING;
- set @SUP_lvl, 1;
- set @SUP_name$, "Brawling";
- set @SUP_xp, @EXP_BRAWLING;
- callfunc "SkillUp";
- goto L_Close;
-
-L_teach_nothing:
- mes "[Luca the Hunter]";
- mes "\"I was able to teach you brawling. For other professions you should visit someone else.\"";
- next;
- mes "\"You see, I am an adventurer. Everybody has his tricks. But you really should visit someone who is a teacher, not an adventurer, now.\"";
- next;
- goto L_teachmore2;
-
-L_Close:
- set @SUP_id, 0;
- set @SUP_lvl, 0;
- set @SUP_name$, "";
- set @SUP_xp, 0;
- set @EXP_BRAWLING, 0;
- set @answer$, "";
- set @message$, "";
- cleararray @choices[0], 0, 4;
- cleararray @choice$[0], "", 4;
- set @choice_nr, 0;
- set @C_focus, 0;
- set @C_unfocus, 0;
- set @C_teachbrawling, 0;
- set @C_teachnothing, 0;
- set @C_explainagain, 0;
- set @C_nvm, 0;
- set @C_focusoverview, 0;
- close;
-}
diff --git a/world/map/npc/002-1/mapflags.txt b/world/map/npc/002-1/mapflags.txt
deleted file mode 100644
index ac3e9967..00000000
--- a/world/map/npc/002-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-002-1|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/002-1/mine_debug.txt b/world/map/npc/002-1/mine_debug.txt
deleted file mode 100644
index 6ffbe49a..00000000
--- a/world/map/npc/002-1/mine_debug.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-// Mine Debug
-// Author: Wushin
-
-function|script|DesertMineDebug
-{
- mes "[Mine Debug]";
- mes "What would you like to do?";
- menu
- "Reset", L_Reset,
- "Set", L_Set,
- "Show", L_Show,
- "nothing.", L_Close;
-
-L_Reset:
- set QL_MINEALL, 0;
- set FLAGS, FLAGS &~ FLAG_GOT_NAEM_GLOVES;
- set FLAGS, FLAGS &~ FLAG_OPENED_UNDERGROUND;
- goto L_Close;
-
-L_Set:
- mes "Values are between 0 and 28";
- mes "8 is Mine Start";
- mes "18 is Angry Scorpions Start";
- mes "20 is Underground Palace Start";
- mes "26 is Giant Cave Maggot Start";
- input QL_MINEALL;
- goto L_Close;
-
-L_Show:
- mes "Current State: " + QL_MINEALL;
- goto L_Close;
-
-L_Close:
- return;
-}
-002-1,61,69,0|script|Mine Debug#1|122
-{
- callfunc "DesertMineDebug";
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Mine Debug#1";
- end;
-}
-002-3,45,49,6|script|Mine Debug#2|109
-{
- callfunc "DesertMineDebug";
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Mine Debug#2";
- end;
-}
-002-4,88,99,6|script|Mine Debug#3|109
-{
- callfunc "DesertMineDebug";
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Mine Debug#3";
- end;
-}
-002-5,43,96,6|script|Mine Debug#4|340
-{
- callfunc "DesertMineDebug";
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Mine Debug#4";
- end;
-}
diff --git a/world/map/npc/002-1/nickos.txt b/world/map/npc/002-1/nickos.txt
deleted file mode 100644
index 97b1c6a7..00000000
--- a/world/map/npc/002-1/nickos.txt
+++ /dev/null
@@ -1,114 +0,0 @@
-002-1,46,108,0|script|Nickos|123
-{
- if (QL_MINEALL == 20) goto L_UGQ;
- if (QL_MINEALL == 19) goto L_AS_Done;
- if (QL_MINEALL == 18) goto L_AS_Start;
- if (QL_MINEALL >= 11) && (QL_MINEALL < 18) goto L_Guards;
- if (QL_MINEALL == 10) goto L_Check_Happy;
- if (QL_MINEALL > 7) && (QL_MINEALL < 10) goto L_Waits;
- if (QL_MINEALL == 7) goto L_Mine;
- if (QL_MINEALL == 6) goto L_Orders_Received;
- if (QL_MINEALL == 5) goto L_Orders;
- if (QL_MINEALL < 5) goto L_See_Dausen_First;
-
- mes "[Nickos]";
- mes "\"I'm watching this mine to make sure the monsters don't harm the miners.\"";
- goto L_Close;
-
-L_See_Dausen_First:
- mes "[Nickos]";
- mes "\"I'm watching this mine to make sure the monsters don't harm the miners.\"";
- next;
- mes "[Nickos]";
- mes "\"The mines are closed from tourists due to the monster threat. If you want to get in you will need to prove yourself first. Talk to Lieutenant Dausen, my superior, if you want to make a formal complaint.\"";
- goto L_Close;
-
-L_Orders:
- set QL_MINEALL, 6;
- mes "[Nickos]";
- mes "\"I have to hold my post longer? Argh! I was looking forward to my break. Oh well, thanks for letting me know.\"";
- goto L_Close;
-
-L_Orders_Received:
- mes "[Nickos]";
- mes "\"Thanks for letting me know Lieutenant Dausen wants me to stick it out for a while longer. Even though I would've liked my break, I'm sure these miners could use my watchful eye.\"";
- goto L_Close;
-
-L_Mine:
- mes "[Nickos]";
- mes "\"I haven't heard from the miners in a while, but I've got to keep to my post unless there is due reason to investigate. Normally the miners take care of themselves without any problem.\"";
- next;
- mes "[Nickos]";
- mes "\"Could you check on them for me, though?\"";
- menu
- "Yes.", L_Mine_Open,
- "No.", L_Disappoint;
-
-L_Disappoint:
- mes "Nickos looks disappointed.";
- goto L_Close;
-
-L_Mine_Open:
- set QL_MINEALL, 8;
- mes "[Nickos]";
- mes "\"Excellent! You now have my permission to enter the mine. Your assistance helps ease my worries.\"";
- goto L_Close;
-
-L_Waits:
- mes "[Nickos]";
- mes "\"Please be sure to get word from Nathan and Naem to make sure everthing is okay down there. Your assistance helps ease my worries.\"";
- goto L_Close;
-
-L_Check_Happy:
- set QL_MINEALL, 11;
- set Zeny, Zeny + 500;
- mes "[Nickos]";
- mes "\"Oh, everything is okay? That's great! I think they are pretty busy and could use some help. Feel free to give them a hand. Here's some gold for your troubles.\"";
- goto L_Close;
-
-L_Guards:
- mes "[Nickos]";
- mes "\"I'm watching this mine to make sure the monsters don't harm the miners.\"";
- next;
- mes "\"Talk to Nathan the miner, I'm sure the miners could use some help down there.\"";
- goto L_Close;
-
-L_AS_Start:
- set QL_MINEALL, 19;
- mes "[Nickos]";
- mes "\"Oh, the angry scorpions are becoming a problem? We could thin down their numbers a bit. I can make it worth your time, but of course, I'll need something to show your work. Bring me 10 Angry Scorpion Stingers to demonstrate your effectiveness, and you will be rewarded for your efforts.\"";
- goto L_Close;
-
-L_AS_Done:
- if (countitem ("AngryScorpionStinger") < 10)
- goto L_AS_NotDone;
- getinventorylist;
- if (@inventorylist_count - (countitem("AngryScorpionStinger") == 10) > 99)
- goto L_TooMany;
- set QL_MINEALL, 20;
- delitem "AngryScorpionStinger", 10;
- getitem "LeatherShield", 1;
- mes "[Nickos]";
- mes "\"Ah, you are a fine combatant! Take this Leather Shield, it might be useful for your future battles.\"";
- next;
- mes "\"You might be ready to take on the underground palace. If you are interested, go talk to Naem about unlocking the barrier, he's got the key and the code to open it.\"";
- goto L_Close;
-
-L_AS_NotDone:
- mes "[Nickos]";
- mes "\"Bring me 10 Angry Scorpion Stingers and I'll know their numbers are down. You will be rewarded for your efforts.\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Nickos]";
- mes "\"Oh, it seems you have too many items. Please get rid some some and I'll give you a reward.\"";
- goto L_Close;
-
-L_UGQ:
- mes "[Nickos]";
- mes "\"You might be ready to take on the underground palace. If you are interested, talk to the miners about unlocking the barrier, they've got the key to open it.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-1/nomads.txt b/world/map/npc/002-1/nomads.txt
deleted file mode 100644
index 07d10972..00000000
--- a/world/map/npc/002-1/nomads.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-
-002-1,101,114,0|script|Samuel|132
-{
- mes "[Samuel the Nomad]";
- mes "\"This is really a nice place.\"";
- mes "Don't you think so?\"";
- close;
-}
-
-002-1,105,114,0|script|Elijah|128
-{
- mes "[Elijah the Nomad]";
- mes "\"It's nice to find a respite like this...\"";
- close;
-}
diff --git a/world/map/npc/002-1/npcs.txt b/world/map/npc/002-1/npcs.txt
deleted file mode 100644
index e7fa55c2..00000000
--- a/world/map/npc/002-1/npcs.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-002-1,96,23,0|script|Jeric|214
-{
- set @npcname$, "Jeric";
-
- mes "[" + @npcname$ + "]";
- mes "\"My father is an adventurer.\"";
- next;
- mes "\"After he proved himself around town, the guards let him fight monsters in the Sandstorm mine.\"";
- set @npcname$, "";
- close;
-}
-002-1,112,48,0|script|Silvia|207
-{
- set @npcname$, "Silvia";
-
- mes "[" + @npcname$ + "]";
- mes "\"If you follow the road west, then north, you will arrive at the Bazaar in Northern Tulimshar.\"";
- next;
- mes "\"If you go west, then north, you'll see the Wizard Academy my parents just sent me to.\"";
- next;
- mes "\"The Academy is good, but I wish I had more free time. It takes a lot of intelligence to get what the teachers are talking about.\"";
- set @npcname$, "";
- close;
-}
diff --git a/world/map/npc/002-1/sarah.txt b/world/map/npc/002-1/sarah.txt
deleted file mode 100644
index e70f36eb..00000000
--- a/world/map/npc/002-1/sarah.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-002-1,93,43,0|script|Sarah|106
-{
- if (QL_SARAH >= 2) goto L_Done;
- if (QL_SARAH == 1) goto L_Progress;
-
- mes "[Sarah]";
- mes "\"Boy, am I hungry or what!\"";
- next;
-
- set @TEMP, rand(2);
- if(@TEMP == 1) goto L_Opening1;
- goto L_Opening0;
-
-L_Opening0:
- mes "\"Cherry Cake is the best!\"";
- next;
- goto L_Ask;
-
-L_Opening1:
- mes "\"Mmm, Cherry Cake... I love it!\"";
- next;
- goto L_Ask;
-
-L_Ask:
- mes "\"Can you bring me a piece of Cherry Cake? Pretty please?\"";
- menu
- "Yes.", L_Req0,
- "No.", L_Close;
-
-L_Req0:
- mes "[Sarah]";
- mes "\"Yippee! Bring me a piece of Cherry Cake, and I'll give you a nice hat!\"";
- next;
- set QL_SARAH, 1;
- mes "[Sarah]";
- mes "\"Please bring it to me!\"";
- goto L_Close;
-
-L_Progress:
- if (countitem("CherryCake") < 1)
- goto L_NotEnough;
- mes "[Sarah]";
- mes "\"Whee!\"";
- next;
- mes "You brought me Cherry Cake! Here is your new hat, as promised.\"";
- getinventorylist;
- if ((@inventorylist_count - (countitem("CherryCake") == 1)) > 99) goto L_TooMany;
- delitem "CherryCake", 1;
- getitem "SerfHat", 1;
- set QL_SARAH, 2;
- close2;
- emotion EMOTE_TONGUE, strcharinfo(0);
- end;
-
-L_NotEnough:
- mes "[Sarah]";
- mes "\"Oh, I'm starving! Please bring me Cherry Cake!\"";
- goto L_Close;
-
-L_Done:
- mes "[Sarah]";
- mes "\"It was so tasty, I can't eat anything more... Thank you!\"";
- close2;
- emotion EMOTE_TONGUE, strcharinfo(0);
- end;
-
-L_Close:
- set @TEMP, 0;
- close;
-
-L_TooMany:
- next;
- mes "[Sarah]";
- mes "\"You don't have room for my reward. I'll wait until you do.\"";
- goto L_Close;
-}
diff --git a/world/map/npc/002-1/soul-menhir.txt b/world/map/npc/002-1/soul-menhir.txt
deleted file mode 100644
index fa2a4508..00000000
--- a/world/map/npc/002-1/soul-menhir.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-002-1,58,60,0|script|Soul Menhir#tulimshar|345
-{
- set @map$, "001-1";
- setarray @Xs, 57, 58, 59, 57, 59, 57, 59;
- setarray @Ys, 59, 59, 59, 60, 60, 61, 61;
- set @x, 0;
- set @y, 0;
- callfunc "SoulMenhir";
- set @map$, "";
- cleararray @Xs[0], 0, 7;
- cleararray @Ys[0], 0, 7;
- set @x, 0;
- set @y, 0;
- close;
-}
diff --git a/world/map/npc/002-1/stewen.txt b/world/map/npc/002-1/stewen.txt
deleted file mode 100644
index 7daca790..00000000
--- a/world/map/npc/002-1/stewen.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-002-1,116,93,0|script|Stewen|123
-{
- if (QL_MINEALL == 4) goto L_TMW_Quest_Received;
- if (QL_MINEALL == 3) goto L_TMW_Quest;
-
- mes "[Stewen]";
- mes "\"I'm keeping a watchful eye on the monsters to the east so they don't threaten Tulimshar's citizens. They are pretty strong.\"";
- goto L_Close;
-
-L_TMW_Quest:
- set QL_MINEALL, 4;
- mes "[Stewen]";
- mes "\"I don't get a break?! Lieutenant Dausen needs to ask the Wizard's Council for more help out here. Either that or give me a raise! Oh well. Thanks for letting me know.\"";
- goto L_Close;
-
-L_TMW_Quest_Received:
- mes "[Stewen]";
- mes "\"Thanks again for letting me know Lieutenant Dausen isn't letting me take a break. Once I get out of here, I'll let him know I want a raise!\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-1/traveler.txt b/world/map/npc/002-1/traveler.txt
deleted file mode 100644
index 975786ae..00000000
--- a/world/map/npc/002-1/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-002-1,60,41,0|script|Nina the Traveler|103
-{
- set @npcname$, "Nina";
- set @NpcTravelBit, $@tulimshar_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/002-2/_import.txt b/world/map/npc/002-2/_import.txt
deleted file mode 100644
index e6688c6a..00000000
--- a/world/map/npc/002-2/_import.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-// Map 002-2: Sandstorm Desert Indoors
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 002-2
-npc: npc/002-2/_mobs.txt
-npc: npc/002-2/_nodes.txt
-npc: npc/002-2/_warps.txt
-npc: npc/002-2/bakery.txt
-npc: npc/002-2/barber.txt
-npc: npc/002-2/bleacher.txt
-npc: npc/002-2/casino.txt
-npc: npc/002-2/dedication.txt
-npc: npc/002-2/hetchel.txt
-npc: npc/002-2/imec.txt
-npc: npc/002-2/inya.txt
-npc: npc/002-2/kps.txt
-npc: npc/002-2/kylian.txt
-npc: npc/002-2/latoy.txt
-npc: npc/002-2/mapflags.txt
-npc: npc/002-2/omar.txt
-npc: npc/002-2/phaet.txt
-npc: npc/002-2/rebecca.txt
-npc: npc/002-2/shops.txt
-npc: npc/002-2/stranger.txt
-npc: npc/002-2/troupe_leader.txt
diff --git a/world/map/npc/002-2/_mobs.txt b/world/map/npc/002-2/_mobs.txt
deleted file mode 100644
index 0d9b84e4..00000000
--- a/world/map/npc/002-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Sandstorm Desert Indoors mobs
-
diff --git a/world/map/npc/002-2/_nodes.txt b/world/map/npc/002-2/_nodes.txt
deleted file mode 100644
index 875c3c60..00000000
--- a/world/map/npc/002-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Sandstorm Desert Indoors nodes
-
-// (no nodes)
diff --git a/world/map/npc/002-2/_warps.txt b/world/map/npc/002-2/_warps.txt
deleted file mode 100644
index b3db1c6d..00000000
--- a/world/map/npc/002-2/_warps.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Sandstorm Desert Indoors warps
-
-002-2,44,34|warp|-1,-1,002-1,73,36
-002-2,44,20|warp|0,-1,002-2,45,78
-002-2,46,79|warp|0,-1,002-2,43,21
-002-2,46,55|warp|0,-1,002-2,44,109
-002-2,45,110|warp|0,-1,002-2,45,56
-002-2,23,110|warp|-1,-1,002-1,67,30
-002-2,34,20|warp|-1,-1,002-2,79,69
-002-2,37,20|warp|-1,-1,002-2,72,31
-002-2,72,32|warp|-1,-1,002-2,37,21
-002-2,79,70|warp|-1,-1,002-2,34,21
-002-2,75,101|warp|-1,-1,002-1,109,46
-002-2,83,101|warp|-1,-1,002-1,115,46
-002-2,78,132|warp|-1,-1,002-1,114,36
-002-2,68,121|warp|-1,-1,002-1,110,28
-002-2,120,67|warp|-1,-1,002-1,99,44
-002-2,120,95|warp|-1,-1,002-1,57,36
-002-2,119,132|warp|-1,-1,002-1,57,27
diff --git a/world/map/npc/002-2/bakery.txt b/world/map/npc/002-2/bakery.txt
deleted file mode 100644
index 28a16b3a..00000000
--- a/world/map/npc/002-2/bakery.txt
+++ /dev/null
@@ -1,159 +0,0 @@
-// The bakery
-
-// The chef
-002-2,21,22,0|script|Riskim|148
-{
- mes "[Riskim]";
- mes "";
- mes "\"Welcome to our bakery!\"";
-
- callfunc "KadiyaSubquestConsts";
- if ((@Q_kadiya_status == @Q_STATUS_WANTS_CHOCOCAKE)
- && (countitem ("MopoxCurePotion") > 0))
- goto L_lace_chococake;
-
- if ((@Q_kadiya_status == @Q_STATUS_WANTS_ORANGECUPCAKE)
- && (countitem ("MopoxCurePotion") > 0))
- goto L_lace_cupcake;
-
- mes "\"Would you mind bringing me ##B6 acorns##b please? I need them to make flour so I can bake some chocolate cakes. I will be so delicious!\"";
- next;
- mes "\"Uh... I mean... the cakes will be delicious...\" %%;";
- next;
-
- set @dq_level, 15;
- set @dq_cost, 3;
- set @dq_count, 6;
- set @dq_name$, "Acorn";
- set @dq_friendly_name$, "acorns";
- set @dq_money, 250;
- set @dq_exp, 50;
-
- callfunc "DailyQuest";
-
- next;
- mes "\"Don't forget: our bakery is the best!\"";
- close;
-
-L_lace_chococake:
- next;
- menu
- "Thanks! Let me have a look around...", L_End,
- "Can you put this potion into a Chocolate Cake?", L_Next,
- "Goodbye!", L_End;
-
-L_Next:
- mes "[Riskim]";
- mes "";
- mes "You take the potion out and attempt to show it to Riskim, but he takes a step back.";
- mes "\"Oh! I remember that smell...\"";
- mes "\"Elanore's Mopox potion, right? She made me drink that too...\"";
- mes "He chuckles.";
- mes "\"Yes. Well, you definitely want to hide that somehow.\"";
- next;
- mes "[Riskim]";
- mes "";
- mes "\"We'll need extra chocolate for that one. If you can give me ten pieces of chocolate, the Mopox potion, and a payment of 400 GP, I'll bake you a special Chocolate Cake that hides the taste.\"";
- next;
- menu
- "I will get them for you.", L_End,
- "Here you are!", L_Continue,
- "Maybe later.", L_End;
-
-L_Continue:
- if (countitem("ChocolateBar") < 10)
- goto L_lacking_ingredients;
- if (countitem("MopoxCurePotion") < 1)
- goto L_lacking_ingredients;
- if (Zeny < 400)
- goto L_lacking_Zeny;
- delitem "MopoxCurePotion", 1;
- delitem "ChocolateBar", 10;
- getitem "LacedChocolateCake", 1;
- set Zeny, Zeny - 400;
-
- mes "[Riskim]";
- mes "";
- mes "\"Please have a seat!\"";
- mes "You watch as Riskim melts the chocolate, stirs in the potion, and then glazes a cake with the mixture.";
- mes "\"It's a bit more chocolaty than your average chocolate cake, so it should help mask that awful taste.\"";
- next;
- mes "[Riskim]";
- mes "";
- mes "Riskim hands you the cake.";
- mes "\"Here you are! I hope this helps.\"";
- close;
-
-L_lacking_Zeny:
- mes "[Riskim]";
- mes "";
- mes "\"I'm sorry, but I have to charge 400 GP. I've got to make a living somehow.\"";
- close;
-
-L_lacking_ingredients:
- mes "[Riskim]";
- mes "";
- mes "\"Sorry, but I need both the ten Chocolate Bars and your potion for this. Please come back later when you have everything.\"";
- close;
-
-L_lace_cupcake:
- next;
- menu
- "Thanks! Let me have a look around...", L_End,
- "Can mix a potion into an Orange Cupcake?", L_More,
- "Goodbye!", L_End;
-
-L_More:
- mes "[Riskim]";
- mes "";
- mes "\"Orange Cupcakes? Oh dear... I'm sorry, but I have a very bad allergy to oranges.\"";
- next;
- mes "[Riskim]";
- mes "";
- mes "\"Perhaps the Chef at Dimond's Cove can help you. We get all of our cupcakes from him.\"";
- next;
- goto L_End;
-
-L_End:
- close;
-}
-
-// Server
-002-2,28,31,0|script|Sara|108
-{
- mes "[Sara]";
- mes "";
- mes "\"Hello!\"";
- mes "\"If you'd like to buy something, just ask Drabur.\"";
- mes "\"If you need something made-to-order, talk to Riskim.\"";
- close;
-}
-
-// The cashier
-002-2,25,22,0|shop|Drabur|112,WhiteCake:*1,ChocolateCake:*1,OrangeCake:*1,AppleCake:*1,Cake:*1,CherryCake:*1,OrangeCupcake:*1,Milk:*1,XmasCake:*1
-
-// Bus boy
-002-2,21,28,0|script|Iormo|160
-{
- mes "[Iormo]";
- mes "";
- mes "\"The cake sure is good, but this room can get messy with all the flour.\"";
- close;
-}
-
-// An old couple eating at the bakery
-002-2,24,27,0|script|Rynoh|159
-{
- mes "[Rynoh]";
- mes "";
- mes "\"The cakes may be expensive, but they sure are delicious!\"";
- close;
-}
-
-002-2,26,27,0|script|Ontas|154
-{
- mes "[Ontas]";
- mes "";
- mes "\"We come here almost every week! This place has some of the best bread I've ever eaten!\"";
- close;
-}
diff --git a/world/map/npc/002-2/barber.txt b/world/map/npc/002-2/barber.txt
deleted file mode 100644
index 3de89005..00000000
--- a/world/map/npc/002-2/barber.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// A barber (later we can make it so certain styles need to come from him, for a price)
-002-2,22,77,0|script|Issay|156
-{
- mes "[Issay the Barber]";
- mes "\"Want to change your hairstyle?\"";
- next;
- callfunc "Barber";
- mes "[Issay the Barber]";
- mes "\"Come again!\"";
- close;
-}
-
diff --git a/world/map/npc/002-2/bleacher.txt b/world/map/npc/002-2/bleacher.txt
deleted file mode 100644
index 3935fe24..00000000
--- a/world/map/npc/002-2/bleacher.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-// IMPORTANT: add your items to DyeConfig, do not edit Candide
-
-002-2,72,92,0|script|Candide|156
-{
- mes "[Candide]";
- mes "\"Greetings! I am Candide the Bleacher.";
- mes "Tulimshar is my homeland, where I learned the ancient art of bleaching.\"";
- next;
- mes "\"Bleaching was originally done by the sun, but now we use ash combined with special ingredients to remove color from fabric.\"";
- next;
- menu
- "What is needed for the bleaching process?", L_Materials,
- "I'd like to bleach something.", L_bleach_menu,
- "So long.", L_Close;
-
-L_Materials:
- mes "[Candide]";
- mes "\"For each item, I will need 3 piles of ash and 5,000 GP for the special ingredients.\"";
- next;
- menu
- "I'd like to bleach something.", L_bleach_menu,
- "So long.", L_Close;
-
-L_bleach_menu:
- if (countitem("PileOfAsh") < 3) goto L_no_ash;
- if (Zeny < 5000) goto L_no_money;
- cleararray @CANDIDE_items,0,getarraysize(@CANDIDE_items);
- cleararray @CANDIDE_color,0,getarraysize(@CANDIDE_color);
- cleararray @CANDIDE_menu$,"",getarraysize(@CANDIDE_menu$);
- set @w, 0;
- freeloop 1; // do not check for infinity loop
- callsub S_LoopArray;
- freeloop 0; // re-enable infinity loop check
- set @w, 0;
- set @c, 0;
- set @p, 0;
- if(@CANDIDE_menu$[0] == "") goto L_Nothing;
- mes "[Candide]";
- mes "\"Yes?\"";
- next;
- menu
- "Nevermind.", L_Close,
- @CANDIDE_menu$[0], L_MenuItems, // base array was too big for a dynamic menu so we can't use it
- @CANDIDE_menu$[1], L_MenuItems,
- @CANDIDE_menu$[2], L_MenuItems,
- @CANDIDE_menu$[3], L_MenuItems,
- @CANDIDE_menu$[4], L_MenuItems,
- @CANDIDE_menu$[5], L_MenuItems,
- @CANDIDE_menu$[6], L_MenuItems,
- @CANDIDE_menu$[7], L_MenuItems,
- @CANDIDE_menu$[8], L_MenuItems,
- @CANDIDE_menu$[9], L_MenuItems,
- @CANDIDE_menu$[10], L_MenuItems,
- @CANDIDE_menu$[11], L_MenuItems,
- @CANDIDE_menu$[12], L_MenuItems,
- @CANDIDE_menu$[13], L_MenuItems,
- @CANDIDE_menu$[14], L_MenuItems,
- @CANDIDE_menu$[15], L_MenuItems,
- @CANDIDE_menu$[16], L_MenuItems,
- @CANDIDE_menu$[17], L_MenuItems;
-
-S_LoopArray:
- set @c, 0;
- callsub S_LoopColor;
- set @w, @w + 1;
- if(@w < getarraysize($@DYE_items$)) goto S_LoopArray;
- return;
-
-S_LoopColor:
- if(countitem($@DYE_colors$[@c] + $@DYE_items$[@w]) > 0)
- goto L_AddToMenu;
- goto L_LoopColor2;
-
-L_AddToMenu:
- set @CANDIDE_items[@p], @w;
- set @CANDIDE_color[@p], @c;
- set @CANDIDE_menu$[@p], $@DYE_color_names$[@c]+" "+$@DYE_item_names$[@w];
- set @p, @p + 1;
- goto L_LoopColor2;
-
-L_LoopColor2:
- set @c, @c + 1;
- if(@c < getarraysize($@DYE_colors$)) goto S_LoopColor;
- return;
-
-L_Nothing:
- mes "[Candide]";
- mes "\"Sorry, you have nothing to bleach.\"";
- next;
- goto L_Close;
-
-L_MenuItems:
- if (countitem("PileOfAsh") < 3) goto L_no_ash;
- if (Zeny < 5000) goto L_no_money;
- set @m, @menu - 2;
- set @it$, $@DYE_colors$[@CANDIDE_color[@m]] + $@DYE_items$[@CANDIDE_items[@m]];
- if(getitemlink(@it$) == "Unknown Item") mapexit;
- delitem @it$, 1;
- delitem "PileOfAsh", 3;
- set Zeny, Zeny - 5000;
- getitem $@DYE_items$[@CANDIDE_items[@m]], 1;
- goto L_again;
-
-L_again:
- mes "[Candide]";
- mes "\"Would you like to bleach something else?\"";
- next;
- menu
- "Yes.", L_bleach_menu,
- "No.", L_Close;
-
-L_no_ash:
- mes "[Candide]";
- mes "\"You don't have enough ash for me to bleach anything.";
- mes "I need three piles.\"";
- next;
- goto L_Close;
-
-L_no_money:
- mes "[Candide]";
- mes "\"You don't have enough gold for me to bleach anything.";
- mes "I need 5,000 GP for supplies.\"";
- next;
- goto L_Close;
-
-L_Close:
- mes "[Candide]";
- mes "\"Come again.\"";
- close2;
- emotion EMOTE_GRIN, strcharinfo(0);
- end;
-}
diff --git a/world/map/npc/002-2/casino.txt b/world/map/npc/002-2/casino.txt
deleted file mode 100644
index 5e3999ac..00000000
--- a/world/map/npc/002-2/casino.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-002-2,79,68,0|script|#CasinoEntrance|32767,13,0
-{
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowCasinoNT;
- if (QL_KYLIAN != 6)
- goto L_End;
- message strcharinfo(0), "You wonder if Kylian would be interested in visiting the Casino.";
- goto L_End;
-
-L_End:
- end;
-}
-
-002-2,86,29,0|script|Valdo|117
-{
- mes "[Valdo the Worker]";
- mes "\"Please let me work. I've got a lot to do and not enough time to do it!\"";
- close;
-}
-
-002-2,84,62,0|script|Slots#1|400
-{
- callfunc "SlotMachine";
- close;
-}
-
-002-2,86,62,0|script|Slots#2|400
-{
- callfunc "SlotMachine";
- close;
-}
-
-002-2,88,62,0|script|Slots#3|400
-{
- callfunc "SlotMachine";
- close;
-}
-
-002-2,78,56,0|shop|MoneyChanger|124,CasinoCoins:*1
-
-002-2,75,60,0|script|BlackJack|107
-{
- mes "[Croupier]";
- mes "\"Would you like to play Black Jack?";
- mes "You will need 15 casino coins.\"";
- next;
- menu
- "Sure.", L_Begin,
- "Not now.", L_Close;
-
-L_Begin:
- if(countitem("CasinoCoins") < 15) goto L_NoCoin;
- delitem "CasinoCoins", 15;
- set @croupier, rand(0, 4);
- set @croupier, @croupier + 17;
- set @player, rand(4, 21);
- mes "Your cards are worth " + @player + " points.";
- if(@player == 21) goto L_End;
- mes "Do you want another card?\"";
- menu
- "Yes.", L_Another,
- "No.", L_End;
-
-L_Another:
- set @tempace, rand(2, 11);
- if (@tempace == 11) goto L_Ace;
- set @player, @player + @tempace;
- if (@player > 21) goto L_Lost;
- if (@player == 21) goto L_End;
- mes "Your cards are worth " + @player + " points.";
- mes "Do you want another card?\"";
- menu
- "Yes.", L_Another,
- "No.", L_End;
-
-L_End:
- if (@player <= @croupier) goto L_Lost;
- mes "Your cards are worth " + @player + " points.";
- mes "\"I have " + @croupier + " points.";
- mes "Congratulations! You won!";
- mes "You get 45 casino coins!\"";
- getitem "CasinoCoins", 45;
- goto L_Close;
-
-L_NoCoin:
- mes "\"Sorry, but you need at least 15 coins to play.\"";
- goto L_Close;
-
-L_Lost:
- mes "\"I'm sorry, but you lost.";
- mes "Your cards are worth " + @player + " points.";
- mes "I have " + @croupier + " points.\"";
- goto L_Close;
-
-L_Ace:
- set @player, @player + 11;
- if (@player > 21) set @player, @player - 10;
- if (@player > 21) goto L_Lost;
- if (@player == 21) goto L_End;
- mes "Your cards are worth " + @player + " points.";
- mes "Do you want to take another card?";
- menu
- "Yes", L_Another,
- "No", L_End;
-
-L_Close:
- mes "\"Be sure to come back again.\"";
- set @croupier, 0;
- set @player, 0;
- set @tempace, 0;
- close;
-}
-
-002-2,69,67,0|script|Roulette|107
-{
- mes "[Croupier]";
- mes "\"Good evening monsieur...";
- mes "How much would you like to bet?\"";
- next;
- menu
- "1 coin", L_b1,
- "5 coins", L_b5,
- "10 coins", L_b10,
- "50 coins", L_b50,
- "100 coins", L_b100,
- "Maybe I'll play later.", L_Close;
-
-L_b1:
- set @bet, 1;
- goto L_Check;
-
-L_b5:
- set @bet, 5;
- goto L_Check;
-
-L_b10:
- set @bet, 10;
- goto L_Check;
-
-L_b50:
- set @bet, 50;
- goto L_Check;
-
-L_b100:
- set @bet, 100;
- goto L_Check;
-
-L_Check:
- if(countitem("CasinoCoins") < @bet) goto L_NoCoin;
- menu
- "Choose a color...", L_PickColor,
- "Choose a number...", L_Number;
-
-L_PickColor:
- menu
- "Black.", L_Color,
- "Red.", L_Color;
-
-L_Color:
- delitem "CasinoCoins", @bet;
- set @color,rand(2);
- if(@color == 1) goto L_Lost;
- mes "You won!";
- getitem "CasinoCoins", @bet * 2;
- goto L_Close;
-
-L_Number:
- menu
- "0", L_Menuitems, "00", L_Menuitems, "1", L_Menuitems, "2", L_Menuitems, "3", L_Menuitems, "4", L_Menuitems, "5", L_Menuitems, "6", L_Menuitems, "7", L_Menuitems, "8", L_Menuitems,
- "9", L_Menuitems, "10", L_Menuitems, "11", L_Menuitems, "12", L_Menuitems, "13", L_Menuitems, "14", L_Menuitems, "15", L_Menuitems, "16", L_Menuitems, "17", L_Menuitems, "18", L_Menuitems,
- "19", L_Menuitems, "20", L_Menuitems, "21", L_Menuitems, "22", L_Menuitems, "23", L_Menuitems, "24", L_Menuitems, "25", L_Menuitems, "26", L_Menuitems, "27", L_Menuitems, "28", L_Menuitems,
- "29", L_Menuitems, "30", L_Menuitems, "31", L_Menuitems, "32", L_Menuitems, "33", L_Menuitems, "34", L_Menuitems, "35", L_Menuitems, "36", L_Menuitems;
-
-L_Menuitems:
- delitem "CasinoCoins", @bet;
- if (@menu == 1) set @number, 0;
- if (@menu == 2) set @number, 37;
- if (@menu >= 3) set @number, @menu - 2;
-
- set @roulette, rand(38);
- if (@roulette == 37) mes "The ball stopped on 00.";
- if (@roulette < 37) mes "The ball stopped on " + @roulette + ".";
- if (@number != @roulette) goto L_Lost;
- mes "\"You won!\"";
- getitem "CasinoCoins", @bet * 10;
- goto L_Close;
-
-L_NoCoin:
- mes "\"You don't have enough coins to play.\"";
- goto L_Close;
-
-L_Lost:
- mes "\"I'm sorry, but you lost.\"";
- goto L_Close;
-
-L_Close:
- mes "Come again!";
- set @number, 0;
- set @roulette, 0;
- set @color, 0;
- set @bet, 50;
- close;
-}
diff --git a/world/map/npc/002-2/dedication.txt b/world/map/npc/002-2/dedication.txt
deleted file mode 100644
index dfd507ca..00000000
--- a/world/map/npc/002-2/dedication.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Dedication to Irene Christina
-
-002-2,116,123,0|script|#IreneDedication|400
-{
- mes "~ Irene Christina ~";
- mes "The song in this house is dedicated to Irene.";
- next;
- mes "She had seen only twenty hours of this world when she died in her father's arms.";
- close;
-}
diff --git a/world/map/npc/002-2/hetchel.txt b/world/map/npc/002-2/hetchel.txt
deleted file mode 100644
index f6910149..00000000
--- a/world/map/npc/002-2/hetchel.txt
+++ /dev/null
@@ -1,447 +0,0 @@
-// Hetchel the Silk Weaver
-// bh28
-// 2013-03, GPLv2.
-//
-// Hetchel is referred to by Lora Tay.
-// She weaves and sells standard double elbow square silk sheets.
-// She could also sell, dyed sheets, Silk robes from Lora Tay.
-// (6000 with cocoons, 40000 (?) with no cocoons).
-//
-// @wg_state: variable indicating winter gloves status.
-// Lora Tay proposes silk Robe if (@wg_state>= 11).
-// @SHEET_COCOONS_NR:* Number of cocoons required per sheet.
-// Might ne calculated from @ROBE_COCOONS_NR/@ROBE_SHEETS_NR
-// Actually: 150∕6 = 25
-// @SHEET_ZENY :* Money to pay per sheet: A sixth of 10000-2*500-6000
-// @SheetCount Number of sheets to buy (variable).
-//
-// @silkpants_state: variable indicating silkpant quest status.
-
-002-2,76,92,0|script|Hetchel|376
-{
- set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
- set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
- set @SHEET_COCOONS_NR, 25;
- set @SHEET_ZENY, 500;
- set @spants_minlvl, 45;
- setarray @spants_req_hmn$, "Silk Cocoons", "Pieces of Cotton Cloth", "Silk Headbands";
- setarray @spants_req$, "SilkCocoon", "CottonCloth", "SilkHeadband";
- setarray @spants_req_amt, 154, 14, 2;
- set @spants_reward, 45000;
- set @spants_job_reward, 10000;
- set @SheetCount, 0;
-
- if (@wg_state < 11)
- goto L_WG_quest_not_done;
- if ( BaseLevel > @spants_minlvl && @spants_state < 1 ) goto L_Spants_Cry;
- if ( @spants_state == 1 ) goto L_Spants_Cry_2;
- if ( @spants_state == 2 ) goto L_Spants_Start;
- if ( @spants_state > 2 && @spants_state < 8 ) goto L_Spants_Steal;
- if ( @spants_state == 8 ) goto L_Spants_Make;
-
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
- menu
- "Sorry to bother, I'm just visiting.", L_Close,
- "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu;
-
-L_WG_quest_not_done:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles.";
- mes "My best client is Lora Tay, at Dimond's.";
- mes "What can I do for you?\"";
- menu
- "Sorry to bother, I'm new to this country, just visting.", L_Close,
- "What are you selling?", L_main_menu;
-
-L_Spants_Cry:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
- menu
- "Sorry to bother, I'm just visiting.", L_Close,
- "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_Spants_Cry_Cont_1;
-
-L_Spants_Cry_2:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
- menu
- "Sorry to bother, I'm just visiting.", L_Close,
- "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
- "Hey you have been crying so badly, can I help you somehow?", L_Spants_Reply_Cry,
- "Give Hetchel something to dry her tears", L_Spants_Tears;
-
-L_Spants_Start:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
- menu
- "Sorry to bother, I'm just visiting.", L_Close,
- "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
- "So you are looking for new goals in your life?", L_Spants_No_Cry;
-
-L_Spants_Steal:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
- menu
- "Sorry to bother, I'm just visiting.", L_Close,
- "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
- "About the Pants...", L_Spants_Steal_Cont;
-
-L_Spants_Make:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\"";
- menu
- "Sorry to bother, I'm just visiting.", L_Close,
- "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu,
- "Hey what about the Pants you were planning to make?", L_Spants_Make_Cont;
-
-L_Spants_Cry_Cont_1:
- mes "You notice how the tiny woman blushes, she suddenly bursts into tears.";
- next;
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Hello\"";
- mes "Hetchel hides her face in her hands";
- mes "";
- mes "";
- menu
- "\"Hey, what is the problem?\"", L_Spants_Reply_Cry,
- "Give Hetchel something to dry her tears", L_Spants_Tears,
- "\"Oh really? Just sell me some Silk Sheets if you have them\"", L_main_menu;
-
-L_Spants_Tears:
- mes "Choose the item you want to give her.";
- next;
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items$, "RedCottonCloth", "GreenCottonCloth", "DarkBlueCottonCloth", "YellowCottonCloth", "LightBlueCottonCloth", "PinkCottonCloth", "BlackCottonCloth", "OrangeCottonCloth", "PurpleCottonCloth", "DarkGreenCottonCloth", "HitchhikersTowel", "WhiteHitchhikersTowel", "RedHitchhikersTowel", "GreenHitchhikersTowel", "BlueHitchhikersTowel", "YellowHitchhikersTowel", "PurpleHitchhikersTowel", "OrangeHitchhikersTowel", "PinkHitchhikersTowel", "TealHitchhikersTowel", "LimeHitchhikersTowel", "SnakeSkin", "LeatherPatch", "SnakeTongue", "MountainSnakeTongue", "GrassSnakeTongue", "CaveSnakeTongue", "BatWing", "RottenRags", "BrokenDoll", "RedDottedWrap", "BlueDottedWrap", "PurpleStripedWrap", "RedGoldenStripedWrap", "GreenRedStripedWrap", "YellowWrap", "WhiteWrap", "BlueWrap", "PurpleWrap", "GreenWrap", "Doll", "BookPage";
- setarray @item_names$, "Red Cotton Cloth", "Green Cotton Cloth", "Dark Blue Cotton Cloth", "Yellow Cotton Cloth", "Light Blue Cotton Cloth", "Pink Cotton Cloth", "Black Cotton Cloth", "Orange Cotton Cloth", "Purple Cotton Cloth", "Dark Green Cotton Cloth", "Hitchhiker's Towel", "White Hitchhiker's Towel", "Red Hitchhiker's Towel", "Green Hitchhiker's Towel", "Blue Hitchhiker's Towel", "Yellow Hitchhiker's Towel", "Purple Hitchhiker's Towel", "Orange Hitchhiker's Towel", "Pink Hitchhiker's Towel", "Teal Hitchhiker's Towel", "Lime Hitchhiker's Towel", "Snake Skin", "Leather Patch", "Snake Tongue", "Mountain Snake Tongue", "Grass Snake Tongue", "Cave Snake Tongue", "Bat Wing", "Rotten Rags", "Broken Doll", "Red Dotted Wrap", "Blue Dotted Wrap", "Purple Striped Wrap", "Red Golden Striped Wrap", "Green Red Striped Wrap", "Yellow Wrap", "White Wrap", "Blue Wrap", "Purple Wrap", "Green Wrap", "Doll", "Book Page";
- callfunc "DynamicItemMenu$";
- set @spants_wipe_thingy$, @item$;
- if (@spants_wipe_thingy$ == "") goto L_Close;
- if (countitem(@spants_wipe_thingy$) < 1) goto L_Spants_No_Item;
- if (@spants_wipe_thingy$ == "RedCottonCloth") goto L_Spants_Tears_Cont;
- if (@spants_wipe_thingy$ == "RedHitchhikersTowel") goto L_Spants_Tears_Towel;
- mes "Hetchel looks at you, then looks at the" + @spants_wipe_thingy$ + ".";
- mes "She hangs her head and weeps more";
- mes "Red is the only color I have ever loved, bring me something red to dry my tears";
- goto L_Close;
-
-L_Spants_Tears_Towel:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"No, I recognize this towel, it is one of those warping towels, are you trying to mess with me?\"";
- goto L_Close;
-
-L_Spants_No_Item:
- mes "Oh you do not have it.";
- goto L_Close;
-
-L_Spants_Tears_Cont:
- mes "Hetchel dries her tears with the Red Piece of Cloth you gave her.";
- mes "This seems to have consoled her.";
- delitem "RedCottonCloth", 1;
- set @spants_state, 2;
- callsub S_Update_Spants;
- goto L_Spants_No_Cry;
-
-L_Spants_No_Cry:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Oh thank you my dear friend.";
- mes "Yes, to some extent.";
- next;
- mes "I am just so sad because I realized that this is going to be the thing I will be doing for the rest of my life\"";
- menu
- "\"You are still young, Hetchel, You can still accomplish things\"", L_Spants_Cry_Cont_2,
- "\"Yes, you are probably correct.\"", L_Close;
-
-L_Spants_Cry_Cont_2:
- mes "[Hetchel the weaver]";
- mes "";
- mes "Hetchel thinks for a while";
- mes "";
- mes "\"Oh my friend, I have been dreaming of making a garment of my own.";
- mes "It always bothered me to see all those wizards and witches here being naked under their cloaks\"";
- mes "\"They must be so embarrassed - they are true heroes to give up their dignity to be able to fight the perils of this world\"";
- mes "Hetchel sobs";
- menu
- "\"So you want to make pants for mages?\"", L_Spants_Cry_Cont_3,
- "\"This sounds ridiculous. Good Bye.\"", L_Close;
-
-L_Spants_Cry_Cont_3:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Ok, so I figured I could make some trousers like Lora Tay makes but from the much finer Material the Silk Worms are making for us\"";
- mes "\"But I really need the base plans for the trousers, otherwise I do not know how to attempt this.";
- mes "Can you get me those plans from her?\"";
- menu
- "\"No, sorry I am too busy for that\"", L_Close,
- "\"Of course!\"", L_Spants_Cry_Cont_4;
-
-L_Spants_Cry_Cont_4:
- set @spants_state, 3;
- callsub S_Update_Spants;
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Oh wait! I am not sure if it is such a good idea to ask her about that, I think she would not give the plans to you anyway.";
- mes "Maybe you can find a way to get those plans on a different way?";
- mes "I think there are some people in Hurnscald who have their means of getting you every possible item there is\"";
- next;
- mes "[Hetchel the weaver]";
- mes "";
- mes "Please please please - I need those plans";
- goto L_Close;
-
-L_Spants_Reply_Cry:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"...\"";
- set @spants_state, 1;
- callsub S_Update_Spants;
- goto L_Close;
-
-
-L_Spants_Steal_Cont:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Have you gotten hold of the plans?\"";
- menu
- "Yes I have them somewhere here", L_Spants_Steal_Cont2,
- "No, not yet", L_Close;
-
-L_Spants_Steal_Cont2:
- if @spants_state < 7 goto L_Spants_No_Item;
- set @spants_state, 8;
- callsub S_Update_Spants;
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Oh this is miraculous\"";
- mes "";
- mes "Hetchel sheds some tears of joy";
- next;
- mes "You hand her the crumpled plans Crastur the Ugly gave you.";
- next;
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"I need to figure out how to do this now... \"";
- next;
- mes "Hetchel adjusts her glasses and reads carefully";
- next;
- mes "She seems to be very busy, maybe you should come back later.";
- goto L_Close;
-
-L_Spants_Make_Cont:
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Yes, I already made a prototype but it cost me a lot of time and effort.";
- mes "I can give it to you if you are willing to pay for my expenses though.\"";
- menu
- "What do you want for those silken pants?", L_Spants_Make_Cont_2,
- "No, I am not particularly interested.", L_Close;
-
-L_Spants_Make_Cont_2:
- if(getarraysize(@spants_req_amt) < 3 || getarraysize(@spants_req$) < 3 || getarraysize(@spants_req_hmn$) < 3)
- goto L_Spants_Error;
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"I need you to bring me " + @spants_req_amt[0] +" "+ @spants_req_hmn$[0] + ", " + @spants_req_amt[1] +" "+ @spants_req_hmn$[1] + " and " + @spants_req_amt[2] +" "+ @spants_req_hmn$[2];
- next;
- mes "You will not have to pay for my time, I am so proud to have accomplished this on my own!\"";
- menu
- "\"I have those items with me\"", L_Spants_Pay,
- "\"I am still looking for them\"", L_Close,
- "\"What do you need again?\"", L_Spants_Make_Cont_2;
-
-L_Spants_Pay:
- if (countitem(@spants_req$[0]) < @spants_req_amt[0] || countitem(@spants_req$[1]) < @spants_req_amt[1] || countitem(@spants_req$[2]) < @spants_req_amt[2])
- goto L_Spants_No_Item;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_TooMany;
- mes "Hetchel takes your items.";
- delitem @spants_req$[0], @spants_req_amt[0];
- delitem @spants_req$[1], @spants_req_amt[1];
- delitem @spants_req$[2], @spants_req_amt[2];
- getitem "SilkPants", 1;
- set @spants_state, 9;
- callsub S_Update_Spants;
- next;
- mes "[Hetchel the weaver]";
- mes "";
- mes "\"Here are your pants my dear.";
- mes "Keep them safe I do not know if I will ever try this again.\"";
- getexp @spants_reward, @spants_job_reward;
- goto L_Close;
-
-L_Spants_Error:
- mes "Something went wrong in the script, please inform a developer about that";
- close;
-
-L_main_menu:
- mes "[Hetchel]";
- mes "\"I have some silk sheets: double-elbow squares.\"";
- menu
- "I'm not interested at the moment, maybe later; thanks anyway.", L_Close,
- "Can I buy some?", L_Next;
-// "Do you have a silk robe I could buy?", L_robe,
-// "Goodbye.", L_Close;
-
-L_Next:
- mes "[Hetchel]";
- mes "";
- mes "\"Sure but you need to provide raw materials.";
- mes "I'll need " + @SHEET_COCOONS_NR +" silk cocoons per sheet,";
- mes "and also " + @SHEET_ZENY +" GP per sheet for my work.\"";
- next;
- if (countitem("SilkCocoon") == 0)
- goto L_sheet_no_cocoon;
- goto L_sheet_menu;
-
-L_sheet_menu:
- menu
- "I have what you asked for.", L_Next1,
- "Sorry I didn't pay attention enough, what do you need?", L_how_many_cocoons,
- "Oops! Sorry, I'll come back soon with them.", L_Close;
-
-L_Next1:
- mes "[Hetchel]";
- mes "";
- mes "\"How many would you like?\"";
- input @SheetCount;
- if (@SheetCount == 0)
- goto L_zero_sheet;
- if (countitem("SilkCocoon") < @SheetCount * @SHEET_COCOONS_NR)
- goto L_sheet_missing_cocoons;
- if (Zeny < @SheetCount * @SHEET_ZENY)
- goto L_sheet_missing_Zeny;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("SilkSheet") < 1 && countitem("SilkCocoon") > @SheetCount * @SHEET_COCOONS_NR)
- goto L_TooMany;
- set Zeny, Zeny - @SheetCount * @SHEET_ZENY;
- delitem "SilkCocoon", @SheetCount * @SHEET_COCOONS_NR;
- getitem "SilkSheet", @SheetCount;
- mes "[Hetchel]";
- mes "";
- mes "\"Thank you, I hope the sheets will fit your needs.";
- mes "Please greet Lora for me when you see her.\"";
- emotion EMOTE_HAPPY, strcharinfo(0);
- goto L_Close;
-
-L_sheet_missing_cocoons:
- mes "[Hetchel]";
- mes "";
- mes "\"I'm sorry, but I need " + @SheetCount * @SHEET_COCOONS_NR + ", not " + countitem("SilkCocoon") + ".\"";
- goto L_Close;
-
-L_sheet_missing_Zeny:
- mes "[Hetchel]";
- mes "";
- mes "\"No, no no. The way this works is that you give me the GP first and I give you the sheets afterwards.";
- mes "You're " + (@SheetCount * @SHEET_ZENY - Zeny) + " GP short, so come back when you can afford the sheets you asked for!\"";
- goto L_Close;
-
-L_how_many_cocoons:
- mes "[Hetchel]";
- mes "";
- mes "\"I need an average of " + @SHEET_COCOONS_NR + " cocoons per sheet";
- mes "and also " + @SHEET_ZENY + " GP per sheet for my work.\"";
- next;
- goto L_sheet_menu;
-
-L_sheet_no_cocoon:
- mes "[Hetchel]";
- mes "";
- mes "\"You don't have any cocoon? I'm sorry I can't do anything for you.\"";
- menu
- "I'll seek for them.", L_Close,
- "Where can I get cocoons?", L_Next2;
-
-L_Next2:
- mes "[Hetchel]";
- mes "\"Silk cocoons come from Silkworms. Silkworms live in the woodland area around Hurnscald.";
- mes "Silkworms like especially woods and dark areas. You can go there by ferry.\"";
- goto L_Close;
-
-//L_robe:
-// mes "[Hetchel]";
-// mes "\"I am not a seamstress but I have a few silk robes from Lora Tay left.";
-// mes "It is not your size as Lora made them for me, but Tondar was kind enough";
-// mes "to cast a spell on it, so that it will fit to you as soon as you wear it.";
-// mes "However his prices are not that low.\"";
-// next;
-// goto L_main_menu;
-
-L_zero_sheet:
- mes "[Hetchel]";
- mes "";
- mes "\"It's the best way to get quickly served!\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Hetchel]";
- mes "";
- mes "\"Your bag hasn't room enough. Store some things and come back.\"";
- goto L_Close;
-
-S_Update_Spants:
- set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
- return;
-
-L_Close:
- set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
- set @wg_state, 0;
- set @spants_state, 0;
- set @spants_minlvl, 0;
- set @spants_reward, 0;
- set @spants_job_reward, 0;
- set @spants_wipe_thingy, "";
- set @SHEET_COCOONS_NR, 0;
- set @SHEET_ZENY, 0;
- set @SheetCount, 0;
- set @wg_state, 0;
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- close;
-}
-
-002-2,73,95,0|script|HetchelDebug|376
-{
-set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
-set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
-
-mes "Lora Tay Quest State: "+ @wg_state;
-mes "Silk Pants Quest State: "+ @spants_state;
-
-menu
- "Set Lora Tay Quest State", L_Lora_Tay,
- "Set Silk Pants Quest State", L_Spants,
- "Close", L_Close;
-
-L_Lora_Tay:
- mes "Set Lora Tay Visited State (0 - reset , 11 - enough for SilkPants Quest)";
- input @wg_state;
- goto L_Close;
-
-L_Spants:
- mes "Set SilkPants Quest State (0 - reset)";
- input @spants_state;
- goto L_Close;
-
-L_Close:
- set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT));
- set @wg_state, 0;
- set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
- set @spants_state, 0;
- close;
-
-OnInit:
- if (!debug)
- disablenpc "HetchelDebug";
- end;
-}
diff --git a/world/map/npc/002-2/imec.txt b/world/map/npc/002-2/imec.txt
deleted file mode 100644
index 6bb00065..00000000
--- a/world/map/npc/002-2/imec.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-002-2,36,75,0|script|Imec|162
-{
- set @EXP, 90;
- set @money, 500;
- set @lvl, 10;
-
- if (QL_IMEC >= 3) goto L_Stingers;
- if (QL_IMEC == 2) goto L_Return;
- if (QL_IMEC == 1) goto L_Bring;
-
- mes "[Imec]";
- mes "%%9";
- mes "\"The Wizard's Council shut down my shop!";
- mes "Why'd they have to make such a fuss over a little poison?\"";
- next;
- mes "\"Someday, I'm going to get my permit back from those self-righteous snobs!\"";
- next;
- mes "He looks at you.";
- next;
- mes "[Imec]";
- mes "%%D";
- mes "\"Hey... I've got an idea!";
- next;
- mes "I just finished writing an appeal to the Council. If you bring it to the government building near the docks, they might be less... closed-minded.\"";
- goto L_Offer;
-
-L_Offer:
- menu
- "Just tell me how to get there.",L_Explain,
- "I'll do it.",L_Next,
- "No way!",L_Close;
-
-L_Next:
- mes "";
- mes "[Imec]";
- mes "\"Great! Here's the appeal.\"";
- mes "Imec gives you a sealed letter, which you store in a safe pocket outside of your inventory.";
- set QL_IMEC, 1;
- goto L_Close;
-
-L_Explain:
- mes "";
- mes "[Imec]";
- mes "\"Head north until you get to the docks – it's just west of the ferry.\"";
- next;
- mes "\"There are a couple of other offices inside. You can form a party if you want, but don't take too long.\"";
- if (BaseLevel < WEDDING_MIN_LEVEL) mes "\"Once you're older, you can even get married there.\"";
- next;
- mes "\"So... will you submit my appeal for me?\"";
- if (QL_IMEC == 0)
- goto L_Offer;
- goto L_Close;
-
-L_Bring:
- mes "[Imec]";
- mes "\"What are you waiting for? I'm not paying you till after the job is done!\"";
- menu
- "Where is it again?",L_Explain,
- "I'm on my way.",L_Close;
-
-L_Return:
- mes "[Imec]";
- mes "\"Ah! You're back! How'd it go?\"";
- mes "You hand the letter of acknowledgment over to Imec.";
- next;
- mes "[Imec]";
- mes "\"Great! I'm sure I'll be able to open my shop again soon.\"";
- next;
- mes "It seems as though Imec has lost interest in you already.";
- menu
- "You mentioned a reward...",L_Next1;
-
-L_Next1:
- mes "";
- mes "[Imec]";
- mes "\"What? Oh, right. Here, have this.\"";
- getexp @EXP, 0;
- set Zeny, Zeny + @money;
- set QL_IMEC, 3;
- next;
- if (BaseLevel >= @lvl)
- goto L_Transition_Stingers;
- if (BaseLevel < @lvl)
- mes "\"Come back to see me once you grow stronger; I might have a job for you later on.\"";
- goto L_Close;
-
-L_Transition_Stingers:
- mes "\"Actually, you could be of further use to me.\"";
- next;
- goto L_Stingers;
-
-L_Stingers:
- mes "[Imec]";
- set @dq_level, @lvl;
- set @dq_cost, 3;
- set @dq_count, 3;
- set @dq_name$, "ScorpionStinger";
- set @dq_friendly_name$, "Scorpion Stingers";
- set @dq_money, 200;
- set @dq_exp, 40;
-
- callfunc "DailyQuest";
- goto L_Close;
-
-L_Close:
- set @money, 0;
- set @dq_level, 0;
- set @dq_cost, 0;
- set @dq_count, 0;
- set @dq_name$, "";
- set @dq_friendly_name$, "";
- set @dq_money, 0;
- set @dq_exp, 0;
- set @dq_return, 0;
- close;
-}
diff --git a/world/map/npc/002-2/inya.txt b/world/map/npc/002-2/inya.txt
deleted file mode 100644
index 475c73b6..00000000
--- a/world/map/npc/002-2/inya.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-//Gemstones: Diamond (white) , Ruby (red), Emerald (green), Sapphire (blue), Topaz (yellow), Amethyst (purple)
-//The power of the gems is important to future balance of these rings. Are they related to stats, tiers of power, schools of magic?
-
-002-2,116,61,0|shop|#InyaShop|32767,SimpleRing:*1
-
-002-2,116,61,0|script|Inya|106
-{
- mes "[Inya]";
- mes "\"I am Inya, a jeweler of fine rings. I sell and make rings.\"";
- next;
- mes "\"If you have a Simple Ring and a gem, I can set the gem in it for 100,000 gold pieces.\"";
- next;
- mes "\"Also, if you have a ring with gems on it, I can remove the gems and return the Simple Ring to you for 50,000 gold pieces.\"";
- next;
- mes "\"So, how can I help you?\"";
- menu
- "What jewelry do you have for sale?", L_Inya_Shop,
- "I have a wedding ring, will that do?", L_Inya_Wedding_Ring,
- "I'd like to remove a gem (50000 GP).", L_Inya_Remove_RingGem,
- "I'd like to add a gem (100000 GP).", L_Inya_Add_RingGem,
- "Not interested.", L_Inya_NotInterested;
-
-L_Inya_Shop:
- close2;
- shop "#InyaShop";
-
-L_Inya_Wedding_Ring:
- mes "[Inya]";
- mes "\"No, sorry. I do not alter wedding rings at this time.\"";
- close;
-
-L_Inya_Remove_RingGem:
- mes "[Inya]";
- mes "\"What kind of gem would you like to have removed?\"";
- menu
- "Diamond.", L_Inya_Remove_Diamond,
- "Ruby.", L_Inya_Remove_Ruby,
- "Emerald.", L_Inya_Remove_Emerald,
- "Sapphire.", L_Inya_Remove_Sapphire,
- "Topaz.", L_Inya_Remove_Topaz,
- "Amethyst.", L_Inya_Remove_Amethyst,
- "I've changed my mind.", L_Inya_NotInterested;
-
-L_Inya_Add_RingGem:
- mes "[Inya]";
- mes "\"What kind of gem would you like to add?\"";
- menu
- "Diamond.", L_Inya_Add_Diamond,
- "Ruby.", L_Inya_Add_Ruby,
- "Emerald.", L_Inya_Add_Emerald,
- "Sapphire.", L_Inya_Add_Sapphire,
- "Topaz.", L_Inya_Add_Topaz,
- "Amethyst.", L_Inya_Add_Amethyst,
- "I've changed my mind.", L_Inya_NotInterested;
-
-L_Inya_Remove_Diamond:
- if ( (Zeny < 50000)
- | (countitem ("DiamondRing") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 50000;
- delitem "DiamondRing", 1;
- getitem "SimpleRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Remove_Ruby:
- if ( (Zeny < 50000)
- | (countitem ("RubyRing") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 50000;
- delitem "RubyRing", 1;
- getitem "SimpleRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Remove_Emerald:
- if ( (Zeny < 50000)
- | (countitem ("EmeraldRing") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 50000;
- delitem "EmeraldRing", 1;
- getitem "SimpleRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Remove_Sapphire:
- if ( (Zeny < 50000)
- | (countitem ("SapphireRing") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 50000;
- delitem "SapphireRing", 1;
- getitem "SimpleRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Remove_Topaz:
- if ( (Zeny < 50000)
- | (countitem ("TopazRing") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 50000;
- delitem "TopazRing", 1;
- getitem "SimpleRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Remove_Amethyst:
- if ( (Zeny < 50000)
- | (countitem ("AmethystRing") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 50000;
- delitem "AmethystRing", 1;
- getitem "SimpleRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Add_Diamond:
- if ( (Zeny < 100000)
- | (countitem ("SimpleRing") < 1)
- | (countitem ("Diamond") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 100000;
- delitem "SimpleRing", 1;
- delitem "Diamond", 1;
- getitem "DiamondRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Add_Ruby:
- if ( (Zeny < 100000)
- | (countitem ("SimpleRing") < 1)
- | (countitem ("Ruby") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 100000;
- delitem "SimpleRing", 1;
- delitem "Ruby", 1;
- getitem "RubyRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Add_Emerald:
- if ( (Zeny < 100000)
- | (countitem ("SimpleRing") < 1)
- | (countitem ("Emerald") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 100000;
- delitem "SimpleRing", 1;
- delitem "Emerald", 1;
- getitem "EmeraldRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Add_Sapphire:
- if ( (Zeny < 100000)
- | (countitem ("SimpleRing") < 1)
- | (countitem ("Sapphire") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 100000;
- delitem "SimpleRing", 1;
- delitem "Sapphire", 1;
- getitem "SapphireRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Add_Topaz:
- if ( (Zeny < 100000)
- | (countitem ("SimpleRing") < 1)
- | (countitem ("Topaz") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 100000;
- delitem "SimpleRing", 1;
- delitem "Topaz", 1;
- getitem "TopazRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_Add_Amethyst:
- if ( (Zeny < 100000)
- | (countitem ("SimpleRing") < 1)
- | (countitem ("Amethyst") < 1) )
- goto L_Inya_Not_Enough;
- set Zeny, Zeny - 100000;
- delitem "SimpleRing", 1;
- delitem "Amethyst", 1;
- getitem "AmethystRing", 1;
- mes "[Inya]";
- mes "\"Here you go.\"";
- close;
-
-L_Inya_NotInterested:
- mes "[Inya]";
- mes "\"Come back later and I will try to be of assistance.\"";
- close;
-
-L_Inya_Not_Enough:
- mes "[Inya]";
- mes "\"I am sorry, you simply do not seem to have the necessary items for me to help you. Please come back when you do, and I would be more than happy to help you out.\"";
- close;
-}
diff --git a/world/map/npc/002-2/kps.txt b/world/map/npc/002-2/kps.txt
deleted file mode 100644
index 176b7ba8..00000000
--- a/world/map/npc/002-2/kps.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-002-2,120,89,0|script|KPS Manager|191
-{
- set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
- set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT);
- if (QL_KYLIAN == 15)
- goto L_SeeKylian;
- if (QL_KYLIAN == 14)
- goto L_RunComplete;
- if (QL_KYLIAN == 13)
- goto L_RunStarted;
- if (QL_KYLIAN == 12)
- goto L_JobSelect;
- if (QL_KYLIAN == 11)
- goto L_AcceptJob;
- if (QL_KYLIAN == 10)
- goto L_OfferJob;
- goto L_Default;
-
-L_Default:
- mes "[KPS Manager]";
- mes "\"A rich salesman named Kylian bought this shop recently.\"";
- mes "\"I'm waiting for him to give the go-ahead on opening it up, but I haven't heard from him in a while.\"";
- next;
- mes "\"I wonder if he needs any help...\"";
- next;
- mes "\"If you could go over and check on him in the inn while I tend to the store, I'd really appreciate it.\"";
- goto L_Close;
-
-L_OfferJob:
- mes "[KPS Manager]";
- mes "\"Hello! How can I help you today?\"";
- menu
- "My name is " + strcharinfo(0) + ".", L_MyName,
- "Nothing.", L_Close;
-
-L_MyName:
- set QL_KYLIAN, 11;
- mes "\"Ah. Kylian said you would be dropping by.\"";
- next;
- mes "\"I assume you are looking for some work?\"";
- menu
- "Yes.", L_StartJob,
- "No.", L_Close;
-
-L_AcceptJob:
- mes "[KPS Manager]";
- mes "\"Interested in some work?\"";
- menu
- "Yes.", L_StartJob,
- "No.", L_Close;
-
-L_StartJob:
- set @run, 0;
- callfunc "SetKylianRun";
- set @run_cnt, 0;
- callfunc "SetKylianRunCnt";
- set QL_KYLIAN, 12;
- goto L_JobSelect;
-
-L_StartJobAgain:
- set @run, 0;
- callfunc "SetKylianRun";
- set QL_KYLIAN, 12;
- goto L_JobSelect;
-
-L_JobSelect:
- if ((gettimetick(2) - Kylian_Timer) < 86400)
- goto L_NoPackages;
- mes "[KPS Manager]";
- mes "\"We have a number of deliveries that need to go all over the world.\"";
- next;
- goto L_RandJob;
-
-L_RandJob:
- set @rand_quest, rand(1,3);
- goto L_JobInfo;
-
-L_JobInfo:
- mes "\"We have a delivery for ##B" + $@random_quests$[@rand_quest] + "##b.\"";
- menu
- "I'll take it.", L_StartRun,
- "Anything else?", L_RandJob,
- "I need a break.", L_Close;
-
-L_StartRun:
- set QL_KYLIAN, 13;
- set @run, @rand_quest;
- callfunc "SetKylianRun";
- set Kylian_Timer, gettimetick(2);
- goto L_Close;
-
-L_RunStarted:
- mes "Deliver this package to ##B" + $@random_quests$[@run] + "##b.\"";
- goto L_Close;
-
-L_RunComplete:
- set @elapsed_time, (gettimetick(2) - Kylian_Timer);
- if (@elapsed_time > 600)
- goto L_Failed;
- set @run_cnt, (@run_cnt + 1);
- callfunc "SetKylianRunCnt";
- // Set Kylian wants to see you reward state
- if (@run_cnt > 3)
- goto L_KylianReward;
- goto L_RunAgain;
-
-L_SeeKylian:
- mes "\"You need to go see Kylian before I can give you any more work.\"";
- goto L_Close;
-
-L_Failed:
- mes "\"If you're faster next time, you can earn a bonus.\"";
- next;
- goto L_RunAgain;
-
-L_KylianReward:
- set Zeny, Zeny + $@delivery_money;
- getexp ($@delivery_exp_mod * BaseLevel), 0;
- callfunc "SetKylianRun";
- set QL_KYLIAN, 15;
- mes "[" + $@delivery_money + " money]";
- mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
- next;
- mes "\"I've got news for you! Kylian wants me to send you over right away.\"";
- goto L_Close;
-
-L_RunAgain:
- set Zeny, Zeny + $@delivery_money;
- getexp ($@delivery_exp_mod * BaseLevel), 0;
- callfunc "SetKylianRun";
- mes "[" + $@delivery_money + " money]";
- mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
- next;
- mes "\"Good job! Keep up the nice work, and I'm sure the boss will give you a bonus.\"";
- next;
- goto L_StartJobAgain;
-
-L_NoPackages:
- mes "\"Sorry, but we don't have any more jobs open right now.\"";
- mes "\"Come back tomorrow; maybe we will have some more work then.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-function|script|SetKylianRun
-{
- set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_8_MASK)) | (@run << TWOBIT_8_SHIFT);
- return;
-}
-function|script|SetKylianRunCnt
-{
- set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_9_MASK)) | (@run_cnt << TWOBIT_9_SHIFT);
- return;
-}
diff --git a/world/map/npc/002-2/kylian.txt b/world/map/npc/002-2/kylian.txt
deleted file mode 100644
index 33df4ba7..00000000
--- a/world/map/npc/002-2/kylian.txt
+++ /dev/null
@@ -1,403 +0,0 @@
-// Kylian is a businessman from Argeas who wants to eventually open a shop in Tulimshar
-// asks the player for several information about the city
-// Quest uses Nibble 4 and 5 of QUEST_NorthTulimshar
-// Author: Jenalya
-
-// Nibble 4 is used as flags to indicate if the player knows certain places/persons
-// Bit 0: player talked to Yanis in the government building
-// Bit 1: player talked to Latoy on the market in North Tulimshar
-// Bit 2: player talked to Weellos as the historic building
-// Bit 3: player was in the casino rooms
-
-// Nibble 5 is used to save the quest progress with Kylian
-// state 1: player has the task to get the luggage from the harbor
-// state 2: Adrian gave the luggage to the player
-// state 3: player gave luggage to Kylian and Kylian asks who to talk to for the shop license
-// after the player answered this, @KylianNTLicense is set.
-// the player can only continue the quest when logging out and therefore setting that value to 0 again
-// state 4: Kylian asks for a historical building to get some cultural knowledge
-// state 5: Kylian asks where to get some typical food
-// after the player answered this, @KylianNTSightSeeing is set.
-// the player can only continue the quest when logging out and therefore setting that value to 0 again
-// state 6: Kylian asks where to go to have some fun in the evening (casino)
-// state 7: Kylian asks where to get exquisite clothing before going out in the evening
-// after the player answered this, @KylianNTSightSeeing is set.
-// the player can only continue the quest when logging out and therefore setting that value to 0 again
-// state 8: Kylian was in the casino and gives a desert hat as reward
-// state 9: Shop approved, go talk Kylian's shopkeeper if you are looking for work.
-// state 10: Meet Shop keeper
-// state 11: Start Time Trial
-// state 12: Return
-// state 13: Start Daily Timed
-// state 14: Return
-// state 15: Completed
-// Kylian_Timer is used to denote start time.
-
-// temporary variables used to check if the player logged out or left the building in the meanwhile
-// this is to ensure some 'time in between' different actions of the quest
-// @KylianNTLicense
-// @KylianNTSightSeeing
-// @KylianNTCasino
-
--|script|#businessmanNTconfig|32767
-{
- end;
-
-OnInit:
- // Nibble 4
- // Used in Random Quest later as a Nibble
- set $@knowYanisNT, (1 << 16);
- set $@knowLatoyNT, (1 << 17);
- set $@knowWeellosNT, (1 << 18);
- set $@knowCasinoNT, (1 << 19);
-
- // Random Quests for Later
- setarray $@random_quests$, "None", "Falkurn", "Old Wizard", "Baktar";
- set $@delivery_money, 100;
- set $@delivery_exp_mod, 10;
- end;
-}
-002-2,44,107,0|script|#KylianOut|32767,1,1
-{
- set @KylianNTLicense, 0;
- set @KylianNTSightSeeing, 0;
- set @KylianNTCasino, 0;
- end;
-}
-002-2,43,101,0|script|Kylian|193
-{
- set @acorn_amount, 12;
- set @suitcase_money, 100;
- set @suitcase_exp, 50;
- set @license_money, 50;
- set @license_exp, 20;
- set @sightseeing_money, 50;
- set @sightseeing_exp, 20;
- set @food_money, 50;
- set @food_exp, 20;
- set @clothes_money, 50;
- set @clothes_exp, 20;
- set @fun_money, 50;
- set @fun_exp, 20;
-
- if (QL_KYLIAN == 15) goto L_Done;
- if (QL_KYLIAN >= 11) goto L_Helping;
- if (QL_KYLIAN == 10) goto L_OfferedJob;
- if (QL_KYLIAN == 9) goto L_Shop;
- if (@KylianNTCasino) goto L_CasinoDone;
- if (QL_KYLIAN == 8) goto L_DesertHat;
- if (QL_KYLIAN == 7) goto L_Clothes;
- if (@KylianNTSightSeeing) goto L_SightSeeingDone;
- if (QL_KYLIAN == 6) goto L_Casino;
- if (QL_KYLIAN == 5) goto L_Food;
- if (@KylianNTLicense) goto L_LicenseDone;
- if (QL_KYLIAN == 4) goto L_SightSeeing;
- if (QL_KYLIAN == 3) goto L_ShopLicense;
- if (QL_KYLIAN >= 1) goto L_Suitcase;
-
- mes "[Kylian]";
- mes "\"Ah! Are you the room service? I've some requests.\"";
- menu
- "Sure... What can I do for you?",L_Luggage,
- "No I'm not!",L_Next;
-
-L_Next:
- mes "[Kylian]";
- mes "\"Too bad. Would you be interested in earning some quick money with some errands regardless?\"";
- menu
- "I'm a great adventurer! I don't do petty errands.",L_Close,
- "No. I'm busy.",L_Close,
- "Well... OK.",L_Luggage;
-
-L_Luggage:
- mes "[Kylian]";
- mes "\"I need you to get my luggage from the docks. Just show this paper to the sailor who's watching the luggage.\"";
- mes "He gives you his ticket, which you promptly store in a safe pocket outside of your inventory.";
- set QL_KYLIAN, 1;
- goto L_Close;
-
-L_Suitcase: // QL_KYLIAN >= 1, but below 3
- mes "[Kylian]";
- mes "\"Did you get my luggage from the docks?\"";
- if (QL_KYLIAN != 2)
- goto L_Close;
- menu
- "Here it is.",L_Continue,
- "Don't worry; I'm on my way.",L_Close;
-
-L_Continue:
- if (countitem("LeatherSuitcase") < 1)
- goto L_NoItem;
- delitem "LeatherSuitcase", 1;
- set Zeny, Zeny + @suitcase_money;
- getitem "Acorn", @acorn_amount;
- getexp @suitcase_exp, 0;
- set QL_KYLIAN, 3;
- next;
- mes "[Kylian]";
- mes "\"Ah! Very good. I have some urgent paperwork that I've been needing to attend to.\"";
- mes "He gives you some money.";
- next;
- mes "[Kylian]";
- mes "\"Before you go, I also happen to have some acorns left over from my trip.\"";
- mes "\"You can have them if you wish; they're rather tasty.\"";
- mes "If, however, you don't like them, you could take them to the Tulimshar bakery. I heard they use them to make a special kind of flour.\"";
- next;
- goto L_ShopLicense;
-
-L_ShopLicense: // QL_KYLIAN == 3
- mes "[Kylian]";
- mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here.\"";
- mes "\"While I'm going through my papers, could you find out whom I have to talk to about opening up a shop in this city?\"";
- if (!(QUEST_NorthTulimshar & $@knowYanisNT))
- goto L_Close;
- menu
- "You need to go and talk to Yanis in the government building.",L_GovBuild,
- "I'll see what I can do.",L_Close;
-
-L_GovBuild:
- set Zeny, Zeny + @license_money;
- getexp @license_exp, 0;
- set QL_KYLIAN, 4;
- set @KylianNTLicense, 1;
- mes "[Kylian]";
- mes "\"Ah... excellent! That's very helpful. Could you tell me how to get to that building?\"";
- mes "You give him directions to the building.";
- next;
- goto L_LicenseDone;
-
-L_LicenseDone: // the player didn't log out yet after telling about Yanis
- mes "[Kylian]";
- mes "\"I need to prepare my papers now. I might have some more questions later on though.\"";
- goto L_Close;
-
-L_SightSeeing: // QL_KYLIAN == 4 and logged out sometime between getting to that state and now
- mes "[Kylian]";
- mes "\"You came here at just the right moment! I have finished my business affairs, and I think I should use my time here to learn a bit about the culture in the area. Can you tell me if there are any historical places or landmarks to visit?\"";
- if (!(QUEST_NorthTulimshar & $@knowWeellosNT))
- goto L_Close;
- menu
- "There's a very old building not far from here.",L_HistBuild,
- "I don't know, but I'll have a look around.",L_Close;
-
-L_HistBuild:
- set Zeny, Zeny + @sightseeing_money;
- getexp @sightseeing_exp, 0;
- set QL_KYLIAN, 5;
- mes "[Kylian]";
- mes "\"This sounds interesting. Please tell me the way.\"";
- mes "You tell him how to get to the historic building.";
- next;
- goto L_Food;
-
-L_Food: // QL_KYLIAN == 5
- mes "[Kylian]";
- mes "\"While I'm out, I could also get something to eat. Do you have any suggestions for local cuisine?\"";
- if (QL_FIERI < 4) // didn't yet help Fieri make Tonori Delight
- goto L_Close;
- menu
- "A man named Fieri makes a tasty Tonori Delight over at the castle.",L_SoupBer,
- "No idea. I'll try to find out.",L_Close;
-
-L_SoupBer:
- set Zeny, Zeny + @food_money;
- getexp @food_exp, 0;
- set QL_KYLIAN, 6;
- set @KylianNTSightSeeing, 1;
- goto L_SightSeeingDone;
-
-L_SightSeeingDone:
- mes "[Kylian]";
- mes "\"I'm going to see the historic building you told me about and try the local food at the castle. Thank you for the suggestions.\"";
- goto L_Close;
-
-L_Casino: // QL_KYLIAN == 6 and logged out sometime between getting to that state and now
- mes "[Kylian]";
- mes "\"Hello. I just came back from my sight-seeing tour, and this Tonori Delight really was delicious. I wonder what it's made of...\"";
- next;
- mes "\"However, I was wondering if you know about some evening attractions. Maybe somewhere to have fun?\"";
- if (!(QUEST_NorthTulimshar & $@knowCasinoNT))
- goto L_Close;
- menu
- "Of course! The casino!",L_CasinoFound,
- "Not really.",L_Close;
-
-L_CasinoFound:
- set Zeny, Zeny + @casino_money;
- getexp @casino_exp, 0;
- set QL_KYLIAN, 7;
- mes "[Kylian]";
- mes "\"Oh! There's a casino in this city? That's wonderful! Where can I find it?\"";
- mes "You explain how to get to the casino.";
- next;
- goto L_Clothes;
-
-L_Clothes: // QL_KYLIAN == 7
- mes "[Kylian]";
- mes "\"I should acquire proper clothing before I go to the casino tonight. Do you know a reputable shop where high-quality clothing is sold?\"";
- if (!(QUEST_NorthTulimshar & $@knowLatoyNT))
- goto L_Close;
- menu
- "Latoy's shop. It's on the west side of Tulimshar.",L_HarborDistrict,
- "Hmmm... I don't know.",L_Close;
-
-L_HarborDistrict:
- set Zeny, Zeny + @clothes_money;
- getexp @clothes_exp, 0;
- set QL_KYLIAN, 8;
- set @KylianNTCasino, 1;
- mes "You explain about Latoy and the quality of his shop.";
- next;
- mes "[Kylian]";
- mes "\"This seems to be exactly what I need. Thanks a lot.\"";
- goto L_Close;
-
-L_CasinoDone:
- mes "[Kylian]";
- mes "\"I'm looking forward to going to the casino tonight. See me tomorrow, and I might have more requests.\"";
- goto L_Close;
-
-L_DesertHat: // QL_KYLIAN == 8
- mes "Kylian looks a bit tired.";
- next;
- mes "[Kylian]";
- mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\"";
- next;
- getinventorylist;
- mes "\"You helped me out a lot, so I bought a souvenir for you while I was out shopping.\"";
- if ((checkweight("DesertHat", 1) == 0) || (@inventorylist_count == 100))
- goto L_Inventory;
- getitem "DesertHat", 1;
- set QL_KYLIAN, 9;
- next;
- goto L_Close;
-
-L_Shop:
- mes "[Kylian]";
- mes "\"The Council of Wizards approved my shop license!\"";
- mes "\"I purchased a store just across the way from the inn.\"";
- next;
- mes "\"If you are looking for work, go see the shop keeper I have working for me there.\"";
- mes "\"Mention your name, and he will know I sent you.\"";
- set QL_KYLIAN, 10;
- goto L_Close;
-
-L_OfferedJob:
- mes "[Kylian]";
- mes "\"I spoke with the shopkeeper, and he said you haven't stopped in yet.\"";
- next;
- mes "\"I wish you would consider working for me.\"";
- next;
- mes "\"KPS needs a determined, experienced adventurer like you.\"";
- goto L_Close;
-
-L_Helping:
- mes "[Kylian]";
- mes "\"I've heard you decided to come work for me. That's great news!\"";
- mes "\"Keep up the good work, and I might have something a little extra for you.\"";
- goto L_Close;
-
-L_Done:
- mes "[Kylian]";
- mes "\"Thanks a bunch, business is booming!\"";
- mes "\"Please, take this for all your hard work.\"";
- next;
- set Zeny, Zeny + $@delivery_money;
- getexp ($@delivery_exp_mod * BaseLevel), 0;
- set @run_cnt, 0;
- callfunc "SetKylianRunCnt";
- set QL_KYLIAN, 12;
- mes "[" + $@delivery_money + " money]";
- mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
- next;
- goto L_Close;
-
-L_Inventory:
- mes "[Kylian]";
- mes "\"Oh my. You're carrying quite a lot. Come back when you have more room.\"";
- goto L_Close;
-
-L_NoItem:
- mes "[Kylian]";
- mes "\"I don't see it! Are you trying to tease me? This isn't funny!\"";
- goto L_Close;
-
-L_Close:
- set @acorn_amount, 0;
- set @suitcase_money, 0;
- set @suitcase_exp, 0;
- set @license_money, 0;
- set @license_exp, 0;
- set @sightseeing_money, 0;
- set @sightseeing_exp, 0;
- set @food_money, 0;
- set @food_exp, 0;
- set @clothes_money, 0;
- set @clothes_exp, 0;
- set @fun_money, 0;
- set @fun_exp, 0;
- set @inventorylist_count, 0;
- // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino
- // those are used to check if the player logged out in the meanwhile
- close;
-}
-function|script|KylianDebug
-{
- set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
- set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT);
- goto L_Menu;
-
-L_Menu:
- mes "[Kylian Debug]";
- menu
- "Show Quest State", L_ShowState,
- "Set Quest State", L_SetState,
- "Reset Timer to Now", L_WorkTimer,
- "Reset Timer + 24 Hours", L_MoreWorkTimer,
- "Close.", L_Close;
-
-L_ShowState:
- mes "State: " + QL_KYLIAN;
- mes "Timer: " + Kylian_Timer;
- mes "Time: " + gettimetick(2);
- mes "Elapsed Time: " + (gettimetick(2) - Kylian_Timer);
- mes "Reset Timer: 86400 > " + (gettimetick(2) - Kylian_Timer);
- mes "Run: " + @run;
- mes "Run NPC: " + $@random_quests$[@run];
- mes "Run Count: " + @run_cnt;
- goto L_Menu;
-
-L_SetState:
- mes "\"Input the quest state desired.\"";
- input QL_KYLIAN;
- goto L_Menu;
-
-L_WorkTimer:
- set Kylian_Timer, gettimetick(2);
- goto L_Menu;
-
-L_MoreWorkTimer:
- set Kylian_Timer, (gettimetick(2) - 86401);
- goto L_Menu;
-
-L_Close:
- return;
-}
-002-2,40,101,0|script|KylianDebug#1|193
-{
- callfunc "KylianDebug";
- close;
-OnInit:
- if (!debug)
- disablenpc "KylianDebug#1";
- end;
-}
-002-2,118,89,0|script|KylianDebug#2|193
-{
- callfunc "KylianDebug";
- close;
-OnInit:
- if (!debug)
- disablenpc "KylianDebug#2";
- end;
-}
diff --git a/world/map/npc/002-2/latoy.txt b/world/map/npc/002-2/latoy.txt
deleted file mode 100644
index 90dfe9bb..00000000
--- a/world/map/npc/002-2/latoy.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-002-2,86,93,0|shop|#LatoyShop|32767,SilkHeadband:*4,SilkGloves:*4,SilkPants:*4,SilkRobe:*4
-002-2,86,93,0|script|Latoy|106
-{
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT;
-
- mes "[Latoy]";
- mes "\"Is there something I can help you with?\"";
- if (QL_KYLIAN != 7)
- goto L_Shop;
- next;
- mes "Maybe this is the kind of shop Kylian is looking for?";
- goto L_Shop;
-
-L_Shop:
- mes "[Latoy]";
- mes "\"How would you like to browse my wares?\"";
- menu
- "Yes.", L_LatoyShop,
- "No.", L_Close;
-
-L_LatoyShop:
- close2;
- shop "#LatoyShop";
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-2/mapflags.txt b/world/map/npc/002-2/mapflags.txt
deleted file mode 100644
index 8f0bef6b..00000000
--- a/world/map/npc/002-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-002-2|mapflag|resave|001-1,60,105
-002-2|mapflag|town
diff --git a/world/map/npc/002-2/omar.txt b/world/map/npc/002-2/omar.txt
deleted file mode 100644
index 6e51a706..00000000
--- a/world/map/npc/002-2/omar.txt
+++ /dev/null
@@ -1,335 +0,0 @@
-//
-function|script|KadiyaSubquestConsts
-{
- set @Q_kadiya_status, (QUEST_MAGIC2 & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
-
- set @Q_STATUS_NONE, 0;
- set @Q_STATUS_KNOWS_MOPOX, 1;
- set @Q_STATUS_MADE_MOPOX, 2;
- set @Q_STATUS_DIDNT_DRINK, 3;
- set @Q_STATUS_WANTS_CHOCOCAKE, 4;
- set @Q_STATUS_WANTS_ORANGECUPCAKE, 5;
- set @Q_STATUS_COMPLETED, 6;
- set @Q_STATUS_COMPLETED_ELANORE, 7;
- set @Q_STATUS_COMPLETED_NOELANORE, 8;
- set @Q_STATUS_COMPLETED_POST_ELANORE, 9;
-
- if (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) < 4) set @Q_kadiya_status, @Q_STATUS_NONE;
-
- if (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) > 4) set @Q_kadiya_status, @Q_STATUS_COMPLETED_POST_ELANORE;
-
- return;
-}
-
-002-2,117,126,0|script|Omar|162
-{
- callfunc "ElanoreFix";
- callfunc "KadiyaSubquestConsts";
-
- set @Q_status, @Q_kadiya_status;
-
- if (@Q_status >= @Q_STATUS_COMPLETED) goto L_cured;
-
- if (@Q_status == @Q_STATUS_DIDNT_DRINK) goto L_didnt_drink;
-
- if (@Q_status > @Q_STATUS_DIDNT_DRINK) goto L_make_food;
-
- mes "[Omar]";
- mes "\"Welcome to my humble abode.\"";
- next;
- menu
- "Well met! May I ask who you are?", L_omar,
- "What's wrong with your daughter?", L_kadiya_sick,
- "Thank you!", L_Close;
-
-L_omar:
- mes "[Omar]";
- mes "\"My name is Omar; I am a trader of oils and spices.\"";
- goto L_Close;
-
-L_kadiya_sick:
- mes "[Omar]";
- mes "\"Kadiya has caught Ponderpox, I fear.\"";
- mes "He sighs.";
- mes "\"She's has been feverish for many days now. I wish there were something I could do.\"";
- next;
- menu
- "Have you asked Elanore the healer?", L_sick_elanore,
- "How about the Hurnscald hospital?", L_sick_hospital,
- "Can I help?", L_sick_self,
- "I'm sorry to hear that.", L_Next;
-
-L_Next:
- mes "[Omar]";
- mes "\"Well, she is a strong girl. I am sure that she will get over it eventually.\"";
- mes "He smiles, but you see doubt in his eyes.";
- goto L_Close;
-
-L_sick_elanore:
- mes "[Omar]";
- mes "\"Elanore?\"";
- mes "He frowns.";
- mes "\"She knows nothing. I see no point in talking to her.\"";
- goto L_Close;
-
-L_sick_hospital:
- mes "[Omar]";
- mes "\"Hurnscald is too far away. I don't think that it would be good for her to go on such a long trip.\"";
- goto L_Close;
-
-L_sick_self:
- mes "[Omar]";
- mes "\"You are very kind, but I don't think there is anything you can do.\"";
- goto L_Close;
-
-L_didnt_drink:
- mes "[Omar]";
- mes "\"So she has Mopox, not Ponderpox, you say? Hmm. That is much harder to cure, I think.\"";
- mes "\"I am grateful for the effort you put into brewing a potion for her. But it does smell vile...\"";
- next;
- mes "[Omar]";
- mes "\"I promised my dear wife that I would never make Kadiya eat or drink anything she doesn't like. So I won't force her to drink this.\"";
- next;
- mes "[Omar]";
- set @Q_status, (@Q_STATUS_WANTS_CHOCOCAKE + rand(2));
- callsub S_update_var;
- if (@Q_status == @Q_STATUS_WANTS_ORANGECUPCAKE)
- mes "\"If only we could make it smell and taste like orange cupcakes... she really loves those cupcakes.\"";
- if (@Q_status == @Q_STATUS_WANTS_CHOCOCAKE)
- mes "\"If only this were a chocolate cake and not a potion... she really loves chocolate cakes.\"";
- goto L_Close;
-
-L_make_food:
- mes "[Omar]";
- mes "\"I should stay here to watch over her. I wish I could think of a way to convince her to drink the potion...\"";
- if (@Q_status == @Q_STATUS_WANTS_ORANGECUPCAKE)
- mes "\"Alas, it is not an orange cupcake.\"";
- if (@Q_status == @Q_STATUS_WANTS_CHOCOCAKE)
- mes "\"If only it were to smell and taste like her favourite chocolate cake...\"";
- goto L_Close;
-
-L_cured:
- if (@Q_status == @Q_STATUS_COMPLETED) goto L_cured_choice;
- mes "[Omar]";
- mes "\"She is sleeping now, but she seems to be much better. I am sure that she will be up and running around again soon.\"";
- goto L_Close;
-
-L_cured_choice:
- mes "[Omar]";
- mes "\"I am very grateful for your help. I really was sure that it was Ponderpox, not Mopox, that she had.\"";
- next;
- menu
- "Oh, it was nothing.", L_cured_nothing,
- "I didn't do it alone; Elanore helped.", L_cured_elanore,
- "That will be 5000 GP.", L_Next1;
-
-L_Next1:
- mes "[Omar]";
- mes "\"Ah, certainly.\"";
- mes "He hands you a small bag of money.";
- next;
- set @Q_status, @Q_STATUS_COMPLETED_NOELANORE;
- callsub S_update_var;
- set Zeny, Zeny + 5000;
- goto L_Close;
-
-L_cured_nothing:
- mes "[Omar]";
- mes "\"No, this wasn't nothing. She is everything to me. Here, you deserve a reward.\"";
- mes "He hands you a bag of money containing 10,000 GP and two pearls.";
- mes "\"And feel free to drop by again whenever you would like!\"";
- set @Q_status, @Q_STATUS_COMPLETED_NOELANORE;
- callsub S_update_var;
- getitem "Pearl", 2;
- set Zeny, Zeny + 10000;
- goto L_Close;
-
-L_cured_elanore:
- mes "[Omar]";
- mes "Omar frowns.";
- mes "\"That witch? You worked with her without telling me?\"";
- mes "He looks over to his daughter, concern suddenly in his eyes.";
- mes "\"She is looking better, though...\"";
- next;
- mes "[Omar]";
- mes "Omar shakes his head.";
- mes "\"I will have to think about this. Please leave me alone.\"";
- next;
- set @Q_status, @Q_STATUS_COMPLETED_ELANORE;
- callsub S_update_var;
- goto L_Close;
-
-L_Close:
- set @Q_STATUS_KNOWS_MOPOX, 0;
- set @Q_STATUS_MADE_MOPOX, 0;
- set @Q_STATUS_DIDNT_DRINK, 0;
- set @Q_STATUS_WANTS_CHOCOCAKE, 0;
- set @Q_STATUS_WANTS_ORANGECUPCAKE, 0;
- set @Q_STATUS_COMPLETED, 0;
- set @Q_STATUS_COMPLETED_ELANORE, 0;
- set @Q_STATUS_COMPLETED_NOELANORE, 0;
- set @Q_STATUS_COMPLETED_POST_ELANORE, 0;
- set @Q_status, 0;
- close;
-
-
-S_update_var:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(NIBBLE_3_MASK) | (@Q_status << NIBBLE_3_SHIFT));
- return;
-}
-
-002-2,124,124,0|script|Kadiya|174
-{
- set @child_number, 7;
- callfunc "XmasList";
-
- callfunc "ElanoreFix";
- set @Q_MASK, NIBBLE_3_MASK;
- set @Q_SHIFT, NIBBLE_3_SHIFT;
- callfunc "KadiyaSubquestConsts";
- set @Q_status, @Q_kadiya_status;
- if (@Q_status >= @Q_STATUS_COMPLETED) goto L_cured;
-
- mes "You see a young girl lying in bed. At first she doesn't seem to notice you approaching.";
- mes "Finally, she turns her head towards you. Judging from the sweat on her forehead and look in her eyes, she is suffering from some kind of fever.";
- next;
- mes "[Kadiya]";
- mes "\"Hello,\" she says in a tiny voice.";
- next;
- set @M_NAME, 1;
- set @M_CANDY, 2;
- set @M_POTION, 3;
- set @M_CHOCOCAKE, 4;
- set @M_CUPCAKE, 5;
-
- setarray @choice$, "Hello! What's your name?", "Would you like some candy?", "", "", "", "", "", "";
- setarray @choice_idx, @M_NAME, @M_CANDY, 0, 0, 0, 0, 0, 0;
- set @choices_nr, 2;
-
- if (countitem("MopoxCurePotion") == 0) goto L_M_no_cure;
-
- set @choice_idx[@choices_nr], @M_POTION;
- set @choice$[@choices_nr], "This potion will cure your illness!";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_cure;
-
-L_M_no_cure:
- if ((countitem("LacedChocolateCake") == 0) || (@Q_status != @Q_STATUS_WANTS_CHOCOCAKE))
- goto L_M_no_chococake;
- set @choice_idx[@choices_nr], @M_CHOCOCAKE;
- set @choice$[@choices_nr], "Would you like special chocolate cake?";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_chococake;
-
-L_M_no_chococake:
- if ((countitem("LacedOrangeCupcake") == 0) || (@Q_status != @Q_STATUS_WANTS_ORANGECUPCAKE))
- goto L_M_no_cupcake;
- set @choice_idx[@choices_nr], @M_CUPCAKE;
- set @choice$[@choices_nr], "Would you like special orange cupcake?";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_cupcake;
-
-L_M_no_cupcake:
- set @choice_idx[@choices_nr], 0;
- set @choice$[@choices_nr], "Goodbye.";
- set @choices_nr, @choices_nr + 1;
-
- menu
- @choice$[0], L_MenuItems,
- @choice$[1], L_MenuItems,
- @choice$[2], L_MenuItems,
- @choice$[3], L_MenuItems,
- @choice$[4], L_MenuItems,
- @choice$[5], L_MenuItems;
-
-L_MenuItems:
- set @choice, @choice_idx[@menu - 1];
-
- if (@choice == @M_NAME) goto L_name;
- if (@choice == @M_CANDY) goto L_no_candy;
- if (@choice == @M_POTION) goto L_potion;
- if (@choice == @M_CHOCOCAKE) goto L_chococake;
- if (@choice == @M_CUPCAKE) goto L_cupcake;
- goto L_Close;
-
-L_name:
- mes "[Kadiya]";
- mes "She smiles a faint smile.";
- mes "\"My name is Kadiya.\"";
- goto L_Close;
-
-L_no_candy:
- mes "[Kadiya]";
- mes "She hesitates for a moment.";
- mes "\"No, thank you. I don't think I should.\"";
- goto L_Close;
-
-L_potion:
- mes "[Kadiya]";
- if (@Q_status < @Q_STATUS_DIDNT_DRINK) set @Q_status, @Q_STATUS_DIDNT_DRINK;
- callsub S_update_var;
-
- mes "Kadiya grimaces and pushes the bottle away.";
- mes "\"That smells terrible!\"";
- next;
- mes "[Kadiya]";
- mes "She pulls the sheets over her head.";
- mes "\"I won't drink that!\"";
- goto L_Close;
-
-L_chococake:
- delitem "LacedChocolateCake", 1;
- goto L_do_cure;
-
-L_cupcake:
- delitem "LacedOrangeCupcake", 1;
- goto L_do_cure;
-
-L_do_cure:
- if (@Q_status < @Q_STATUS_COMPLETED) set @Q_status, @Q_STATUS_COMPLETED;
- callsub S_update_var;
-
- mes "[Kadiya]";
- mes "Kadiya's eyes widen.";
- mes "\"Oh! Daddy, is it okay if I eat this?\"";
- mes "Omar nods and smiles. \"You should eat a bit to regain your strength, sweetheart.\"";
- next;
- mes "[Kadiya]";
- mes "Kadiya devours your gift in just a handful of bites.";
- next;
- mes "[Kadiya]";
- mes "She smiles. \"Thank you! I feel better already!\".";
- next;
- mes "[Kadiya]";
- mes "She looks much healthier, too. Omar walks over and touches her forehead.";
- mes "\"Now that is funny – your fever has gone down quite a bit!\"";
- mes "He smiles at you. \"Thank you for your help!\"";
- next;
- mes "[Kadiya]";
- mes "\"You should get some sleep now, sweetheart. I'm sure that you will be better soon.\"";
- goto L_Close;
-
-L_cured:
- mes "[Kadiya]";
- mes "Kadiya seems to be sleeping calmly. She looks much less sweaty than earlier; unless you are very much mistaken, her fever has disappeared.";
- goto L_Close;
-
-L_Close:
- set @Q_status, 0;
- set @Q_MASK, 0;
- set @Q_SHIFT, 0;
- set @M_NAME, 0;
- set @M_CANDY, 0;
- set @M_POTION, 0;
- set @M_CHOCOCAKE, 0;
- set @M_CUPCAKE, 0;
- set @choice, 0;
- set @choices_nr, 0;
- cleararray @choice_idx[0], 0, 7;
- cleararray @choice$[0], "", 7;
- close;
-
-S_update_var:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/002-2/phaet.txt b/world/map/npc/002-2/phaet.txt
deleted file mode 100644
index a0ec83ee..00000000
--- a/world/map/npc/002-2/phaet.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-
-002-2,75,56,0|script|Phaet|125,0,0
-{
- mes "[Phaet the Royal Guard]";
- mes "\"Hey, you seem tough enough! Would you like to prove your skills? I'll let you in the arena if you give me 50 gp. You can fight against other players there.\"";
- next;
- menu
- "Yes", L_Sure,
- "No", L_Next;
-
-L_Next:
- mes "[Phaet the Royal Guard]";
- mes "\"Ha ha, coward.\"";
- close;
-
-L_Sure:
- if (Zeny < 50) goto L_NoMoney;
- set Zeny, Zeny - 50;
-
- mes "[Phaet the Royal Guard]";
- mes "\"Get ready!\"";
- next;
- warp "001-3", 0, 0;
- close;
-
-L_NoMoney:
- mes "\"Wait a second, you don't have enough money.\"";
- close;
-}
diff --git a/world/map/npc/002-2/rebecca.txt b/world/map/npc/002-2/rebecca.txt
deleted file mode 100644
index faf53007..00000000
--- a/world/map/npc/002-2/rebecca.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-
-002-2,44,27,0|script|Rebecca|118
-{
- set @npcname$, "Rebecca the Inn Keeper";
- set @cost, 100;
- mes "[" + @npcname$ + "]";
- mes "\"Welcome to 'The Wizard's Rest'\"";
- goto L_MainMenu;
-
-L_MainMenu:
- mes "\"How may I help you?\"";
- menu
- "Can I get a room?", L_Inn,
- "Any interesting guests?", L_Guests,
- "Bakery?", L_Bakery,
- "Barber?", L_Barber,
- "Casino?", L_Casino,
- "Theatre?", L_Theatre,
- "Pvp?", L_Pvp,
- "I don't need any help, thanks.", L_Close;
-
-L_Guests:
- mes "\"We had a very rich business man show up the other day.\"";
- next;
- mes "\"He caused quite a stir when he paid for the penthouse so far in advance.";
- mes "I hear he is looking for help.\"";
- next;
- mes "\"Other then that feel free to mingle with the guests.\"";
- next;
- mes "\"You can find them in the door behind me.\"";
- goto L_Close;
-
-
-L_Bakery:
- mes "\"Ahh yes, the World Famous Riskim's bakery.\"";
- next;
- mes "\"They only use the finest ingredients like Acorn Flour";
- mes "to make some of the tastest treats in Tonori.\"";
- next;
- mes "Second only to the Wizards' private chef, Fieri.\"";
- goto L_MainMenu;
-
-L_Barber:
- mes "\"Issay the barber of Tonori can be found through the door behind me\"";
- next;
- mes "\"The master stylist can do anything with anyones hair.\"";
- next;
- mes "\"He always welcomes walk ins.\"";
- goto L_MainMenu;
-
-L_Casino:
- mes "\"Games, Games, Games.\"";
- next;
- mes "\"Test your luck or skill in the Casino. From Blackjack to Pvp.\"";
- next;
- mes "\"Win or Lose, you'll still have fun!\"";
- goto L_MainMenu;
-
-L_Theatre:
- mes "\"A touring troop from Hurnscald just arrived.\"";
- next;
- mes "\"The are currently rehearsing for their next show.\"";
- next;
- mes "\"Feel free to talk to the troupe leader, they are in the theatre behind me.\"";
- goto L_MainMenu;
-
-L_Pvp:
- mes "\"Yes, our Casino has Pvp in the Casino behind me.\"";
- next;
- mes "\"Test your self against other players and gamble on the outcome.\"";
- next;
- mes "\"Fame and glory awaits you gladiator!\"";
- goto L_MainMenu;
-
-L_Inn:
- callfunc "Inn";
- goto L_Close;
-
-L_Close:
- set @npcname$, "";
- set @cost, 0;
- close;
-}
diff --git a/world/map/npc/002-2/shops.txt b/world/map/npc/002-2/shops.txt
deleted file mode 100644
index f1f09592..00000000
--- a/world/map/npc/002-2/shops.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// Bartender
-
-002-2,68,25,0|shop|Bartender#Casino|112,Beer:*1,Cake:*1,CherryCake:*1
diff --git a/world/map/npc/002-2/stranger.txt b/world/map/npc/002-2/stranger.txt
deleted file mode 100644
index 9616763b..00000000
--- a/world/map/npc/002-2/stranger.txt
+++ /dev/null
@@ -1,408 +0,0 @@
-// FIXME: this script is very cringeworthy and almost never clears the arrays so they just fill up
-// also some arrays should be global (and npc vars later), not stored in every single player
-// -> should GET RID of that fugly magic-secrets system; the answers are public anyway
-002-2,38,57,0|script|Stranger|192
-{
- set @IRONINGOT, 5;
- set @PINKANTENNA, 21;
- set @Exp, 20000;
- setarray @towelReq$[0], "HitchhikersTowel";
-
- if (FLAGS & FLAG_TOWEL_COMPLETED) goto L_Event_Done;
- if ((gettimetick(2)-TUT_var < 6*7*86400) || (BaseLevel < 42)) //player must be created at least 6 weeks ago and at least level 42
- goto L_No_Event;
- if (FLAGS & FLAG_TOWEL_HELPED) goto L_Towel;
-
- mes "[Stranger]";
- mes "\"Hello, hello! It's great to see you. Maybe you can help me with a little problem I have.\"";
- next;
- mes "\"I need some materials to repair my spacesh- ahm, it's not important why I need it.\"";
- next;
- mes "\"Anyway, I'd be really happy if you can give me " + @IRONINGOT + " Iron Ingots and " + @PINKANTENNA + " Pink Antennas.\"";
- next;
- mes "\"Do you have that for me?\"";
- menu
- "Yeah, sure.",L_Items,
- "No.",L_Close;
-
-L_Items:
- if (countitem("IronIngot") < @IRONINGOT) goto L_No_Item;
- if (countitem("PinkAntenna") < @PINKANTENNA) goto L_No_Item;
- delitem "IronIngot", @IRONINGOT;
- delitem "PinkAntenna", @PINKANTENNA;
- getexp @Exp, 0;
- set FLAGS, FLAGS | FLAG_TOWEL_HELPED;
-
- mes "[Stranger]";
- mes "\"Great! Thank you!\"";
- next;
- mes "\"I have a lot of work to do now. But before you leave...\"";
- next;
- goto L_Towel;
-
-L_Towel:
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Full_Inv;
- mes "[Stranger]";
- mes "\"On May 25th it is a very special day - Towel Day.\"";
- next;
- mes "\"To celebrate this I'll ask you some questions about my favourite book, The Hitchhiker's Guide to the Galaxy. If you can answer them, I'll give you something very useful.\"";
- next;
- mes "";
- mes "[Server]";
- mes "The answers might need to have whitespaces.";
- mes "If you're using a client which confirms your answer when pressing space, change this setting before continuing.";
- mes "";
- next;
- mes "[Stranger]";
- mes "\"The first one is easy.\"";
- next;
-
- cleararray @quiz_questions$[0], "", getarraysize(@quiz_questions$[0]);
- cleararray @quiz_answers$[0], "", getarraysize(@quiz_answers$[0]);
-
- setarray @quiz_questions$[0],
- "What two words are written in big friendly letters on the back cover?",
- "What's the name of the paranoid robot?",
- "What is the answer to life, the universe and everything?",
- "What is the first name of the author of the hitchhikers guide?",
- "What is the last name of the author of the hitchhikers guide?",
- "Who is the male human protagonist?",
- "Who is the female human protagonist?",
- "According to the Guide, space is ___?",
- "What is the name of the spaceship which was stolen by the president of the universe?",
- "How many heads does Zaphod Beeblebrox have?";
- setarray @quiz_answers$[0],
- "Don't Panic",
- "Marvin",
- "42",
- "Douglas",
- "Adams",
- "Arthur Philip Dent",
- "Trillian",
- "Big",
- "Heart of Gold",
- "2";
-
- callfunc "MultiQuiz";
- if (@success == 0) goto L_Wrong_Answer;
-
- mes "[Stranger]";
- mes "\"You're absolutely right. The next one will be more tricky.\"";
- next;
-
- cleararray @quiz_questions$[0], "", getarraysize(@quiz_questions$[0]);
- cleararray @quiz_answers$[0], "", getarraysize(@quiz_answers$[0]);
-
- setarray @quiz_questions$[0],
- "What is the name of the rock group claiming to be the loudest band in the universe?",
- "What star is near Ford's home planet?",
- "Which country does the human protagonist come from?",
- "What is the name of the computer on The Heart of Gold?",
- "What color is a Babel Fish?",
- "What did the bowl of petunias think?",
- "What body orifice should a babel fish be inserted in to work properly?",
- "What is the name of the super computer?",
- "What were the second most intelligent creatures on Earth?",
- "What race creates the worst poetry in universe?",
- "What is the name of the Vogon home planet?",
- "What is the name of the Restaurant at the End of the Universe?";
- setarray @quiz_answers$[0],
- "Disaster Area",
- "Betelgeuse",
- "England",
- "Eddie",
- "Yellow",
- "Oh no, not again",
- "Ear",
- "Deep Thought",
- "Dolphins",
- "Vogons",
- "Vogsphere",
- "Milliways";
-
- callfunc "MultiQuiz";
- if (@success == 0) goto L_Wrong_Answer;
-
- mes "[Stranger]";
- mes "\"Not bad, not bad. Let's see if you can answer an even more difficult one.\"";
- next;
-
- cleararray @quiz_questions$[0], "", getarraysize(@quiz_questions$[0]);
- cleararray @quiz_answers$[0], "", getarraysize(@quiz_answers$[0]);
-
- setarray @quiz_questions$[0],
- "Drinking what drink is like having your brain smashed out by a slice of lemon wrapped round a large gold brick?",
- "How many pints of beers should you drink before hitchhiking?",
- "What initials are carved into Zaphod Beeblebrox's brain?",
- "What is Ford Prefect's nickname?",
- "Who is responsible for the fjords of Norway?",
- "What game is played on earth as a relict of memories to an ancient war?",
- "What is the name of the triple-breasted whore from Eroticon VI?",
- "Who will insult every living being in the universe, because he is immortal and getting bored?",
- "What is the name of the piteous creature that is continually reincarnated and subsequently killed, each time unknowingly, by Arthur Dent?";
- setarray @quiz_answers$[0],
- "Pan Galactic Gargle Blaster",
- "3",
- "ZB",
- "Ix",
- "Slartibartfast",
- "Cricket",
- "Eccentrica Gallumbits",
- "Wowbagger",
- "Agrajag";
-
- callfunc "MultiQuiz";
- if (@success == 0) goto L_Wrong_Answer;
-
- mes "[Stranger]";
- mes "\"Unbelievable! You're really a wise person.\"";
- next;
- mes "\"One last question, but this shouldn't be a problem for you.\"";
- next;
- mes "\"What is the most important item for every hitchhiker to have?\"";
- mes "";
- mes "##BDrag & drop the item from your inventory##b.";
- requestitem .@answer$[0];
- if (.@answer$[0] != "Towel" && .@answer$[0] != "HitchhikersTowel")
- goto L_Wrong_Answer;
-
- mes "[Stranger]";
- mes "\"There you are! A towel is really the most important item for a hitchhiker to have.\"";
- next;
- mes "\"Please take this.\""; // no full inventory check, this is done before the game
- set FLAGS, FLAGS | FLAG_TOWEL_COMPLETED;
- next;
- goto L_Explain;
-
-L_Explain:
- mes "[Stranger]";
- mes "\"This towel is even more useful than usual towels are. If you change its color, it uses a special techno-, ahm, let's say, it can help you to get to other places.\"";
- next;
- mes "\"Bring me some powder made from gemstones and a bottle of water, and I can prepare it for you.\"";
- next;
- mes "\"Depending on the color it will bring you to different places. It might wear out after a while and it'll loose its color, but I can prepare it for you again.\"";
- next;
- mes "\"Since I'm not familar with this plane-, ahm, with this area, I can't tell which places you will end up in.\"";
- goto L_Close;
-
-L_No_Event:
- mes "[Stranger]";
- mes "\"Hello. Isn't this a beautiful place?\"";
- next;
- mes "\"And it really comes in handy that I have my towel with me. A towel is about the most massively useful thing an inte- ahm, a person can have.\"";
- next;
- mes "\"You can read more about that in my favourite book, 'The Hitchhiker's Guide to the Galaxy'.\"";
- if (FLAGS & FLAG_TOWEL_COMPLETED)
- menu
- "Thanks for the advice.",L_Close,
- "I have my towel with me too.",L_Dye;
- goto L_Close;
-
-L_Dye:
- mes "[Stranger]";
- mes "\"Wonderful! Let me have a look.\"";
- mes "He's taking a very interested look at your towel.";
- next;
- mes "[Stranger]";
- mes "\"I'm impressed. This is not an usual towel.\"";
- next;
- menu
- "Oh? Can you explain about it?",L_Explain,
- "I know. Could you dye it for me?",L_StartDyeTowel,
- "It's great, isn't it? I have to go now.",L_Close;
-
-L_No_Item:
- mes "[Stranger]";
- mes "\"Hu? It seems you haven't.\"";
- goto L_Close;
-
-L_Wrong_Answer:
- mes "[Stranger]";
- mes "\"Nah, that's wrong. Come back if you want to try again.\"";
- goto L_Close;
-
-L_Event_Done:
- mes "[Stranger]";
- mes "\"Ah, welcome back. Thanks again for your help.\"";
- next;
- mes "\"Shall I dye your towel?\"";
- menu
- "That would be great!", L_StartDyeTowel,
- "No, thanks.", L_Close;
-
-L_StartDyeTowel:
- mes "[Stranger]";
- mes "\"Alright, which color do you want?\"";
-// the other colors should be added when more places are released
- menu
- "Red",L_Red,
- "Yellow",L_Yellow,
- "White",L_White,
- "Blue",L_Blue,
- "Green",L_Green,
- "Purple",L_Purple,
- "Orange",L_Orange,
- "Pink",L_Pink,
- "Lime",L_Lime,
- "Teal",L_Teal,
- "I changed my mind.", L_Close;
-
-L_White:
- // Koga
- set @warpTowelName$, "WhiteHitchhikersTowel";
- setarray @towelPowder$, "DiamondPowder";
- setarray @towelPowderCnt, 2;
- goto L_DyeChecks;
-
-L_Red:
- // Barbarians
- set @warpTowelName$, "RedHitchhikersTowel";
- setarray @towelPowder$, "RubyPowder";
- setarray @towelPowderCnt, 2;
- goto L_DyeChecks;
-
-L_Green:
- // Candor
- set @warpTowelName$, "GreenHitchhikersTowel";
- setarray @towelPowder$, "EmeraldPowder";
- setarray @towelPowderCnt, 2;
- goto L_DyeChecks;
-
-L_Blue:
- // Blue Sages
- set @warpTowelName$, "BlueHitchhikersTowel";
- setarray @towelPowder$, "SapphirePowder";
- setarray @towelPowderCnt, 2;
- goto L_DyeChecks;
-
-L_Yellow:
- // Tulimshar Mines
- set @warpTowelName$, "YellowHitchhikersTowel";
- setarray @towelPowder$, "TopazPowder";
- setarray @towelPowderCnt, 2;
- goto L_DyeChecks;
-
-L_Purple:
- // Dimonds Inn
- set @warpTowelName$, "PurpleHitchhikersTowel";
- setarray @towelPowder$, "AmethystPowder";
- setarray @towelPowderCnt, 2;
- goto L_DyeChecks;
-
-L_Orange:
- // Graveyard
- set @warpTowelName$, "OrangeHitchhikersTowel";
- setarray @towelPowder$, "RubyPowder", "TopazPowder";
- setarray @towelPowderCnt, 1, 1;
- goto L_DyeChecks;
-
-L_Pink:
- // Terranite Cave
- set @warpTowelName$, "PinkHitchhikersTowel";
- setarray @towelPowder$, "RubyPowder", "DiamondPowder";
- setarray @towelPowderCnt, 1, 1;
- goto L_DyeChecks;
-
-L_Teal:
- // Mana Seed
- set @warpTowelName$, "TealHitchhikersTowel";
- setarray @towelPowder$, "EmeraldPowder", "SapphirePowder";
- setarray @towelPowderCnt, 1, 1;
- goto L_DyeChecks;
-
-L_Lime:
- // Panchua
- set @warpTowelName$, "LimeHitchhikersTowel";
- setarray @towelPowder$, "EmeraldPowder", "TopazPowder";
- setarray @towelPowderCnt, 1, 1;
- goto L_DyeChecks;
-
-L_DyeChecks:
- mes "[Stranger]";
- mes "\"Ok, I'll need a bottle of water first.\"";
- next;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- set @powderCheckCount, 0;
- goto L_PowderChecks;
-
-L_PowderCheckAgain:
- mes "[Stranger]";
- mes "\"Now I need " + @towelPowderCnt[@powderCheckCount] + " " + @towelPowder$[@powderCheckCount] + ".\"";
- next;
- if((@powderCheckCount + 1) == getarraysize(@towelPowder$))
- goto L_TowelChecks;
- set @powderCheckCount, (@powderCheckCount + 1);
- goto L_PowderChecks;
-
-L_PowderChecks:
- if (countitem(@towelPowder$[@powderCheckCount]) < @towelPowderCnt[@powderCheckCount])
- goto L_No_Powder;
- goto L_PowderCheckAgain;
-
-L_TowelCheckAgain:
- set @towelCheckCount, (@towelCheckCount + 1);
- if(@towelCheckCount >= getarraysize(@towelReq$))
- goto L_No_Towel;
- goto L_TowelChecks;
-
-L_TowelChecks:
- if (countitem(@towelReq$[@towelCheckCount]) > 0)
- goto L_DeletePowder;
- goto L_TowelCheckAgain;
-
-L_DeleteAgain:
- set @powderCheckCount, (@powderCheckCount - 1);
- goto L_DeletePowder;
-
-L_DeletePowder:
- delitem @towelPowder$[@powderCheckCount], @towelPowderCnt[@powderCheckCount];
- if (@powderCheckCount)
- goto L_DeleteAgain;
- goto L_DyeTowel;
-
-L_DyeTowel:
- delitem @towelReq$[@towelCheckCount], 1;
- delitem "BottleOfWater", 1;
- getitem @warpTowelName$, 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
-
-L_No_Water:
- mes "[Stranger]";
- mes "\"You don't have water.\"";
- goto L_Close;
-
-L_No_Powder:
- mes "[Stranger]";
- mes "\"You need to bring me enough gem powder in that color. Maybe someone used to mining can help you with that.\"";
- goto L_Close;
-
-L_No_Towel:
- mes "[Stranger]";
- mes "\"Where's your towel? It is really useful, you should always keep it with you.\"";
- goto L_Close;
-
-L_Full_Inv:
- mes "[Stranger]";
- mes "\"You carry a lot of stuff with you, don't you? Maybe you should get rid of something.\"";
- goto L_Close;
-
-L_Close:
- set @IRONINGOT, 0;
- set @PINKANTENNA, 0;
- set @Exp, 0;
- set @random, 0;
- set @quizparam$, "";
- set @warpTowelName$, "";
- set @powderCheckCount, 0;
- set @towelCheckCount, 0;
- cleararray @towelPowder$, "", getarraysize(@towelPowder$);
- cleararray @towelPowderCnt, "", getarraysize(@towelPowderCnt);
- close;
-}
diff --git a/world/map/npc/002-2/troupe_leader.txt b/world/map/npc/002-2/troupe_leader.txt
deleted file mode 100644
index 79c85dc6..00000000
--- a/world/map/npc/002-2/troupe_leader.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-
-002-2,81,21,0|script|Troupe Leader|165
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@inspector == 4) goto L_NohMask_Troupe;
- if (@inspector == 13) goto L_NohMask_Found;
-
- mes "[Troupe Leader]";
- mes "\"Hello. I'm the leader of a traveling theater troupe. We'll be staying here in Tulimshar for a while.\"";
- goto L_Close;
-
-L_NohMask_Troupe:
- mes "[Troupe Leader]";
- mes "\"Yes, a mask was stolen from us the last night we were in Hurnscald.\"";
- next;
- menu
- "Any ideas on who might have taken it?", L_NohMask_Idea,
- "Are you sure one of your troupe members didn't hide it and commit those robberies?", L_NohMask_Accuse,
- "Hmm...", L_Close;
-
-L_NohMask_Idea:
- set @inspector, 5;
- callsub S_Update_Mask;
- mes "[Troupe Leader]";
- mes "\"Hm...I did see an old man hang out near the theater after our last show.\"";
- goto L_Close;
-
-L_NohMask_Accuse:
- mes "[Troupe Leader]";
- mes "\"I am absolutely positive. None of my troupe have left the city since we got here. Good day!\"";
- goto L_Close;
-
-L_NohMask_Found:
- mes "[Troupe Leader]";
- mes "\"Thank you for finding the mask. You did such a good job, you should keep it.\"";
- getinventorylist;
- if (@inventorylist_count == 100) goto L_NohMask_TooMany;
- mes "[1500 experience points]";
- getexp 1500, 0;
- set @inspector, 14;
- callsub S_Update_Mask;
- getitem "NohMask", 1;
- next;
- mes "[Troupe Leader]";
- mes "\"We don't need it anymore. We're doing different shows here.\"";
- goto L_Close;
-
-L_NohMask_TooMany:
- next;
- mes "[Troupe Leader]";
- mes "\"Except, you don't seem to have any room for it. I'll hold onto it for you until you do have room.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
- return;
-}
diff --git a/world/map/npc/002-3/_import.txt b/world/map/npc/002-3/_import.txt
deleted file mode 100644
index ec14b916..00000000
--- a/world/map/npc/002-3/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 002-3: Tulimshar Mining Camp
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 002-3
-npc: npc/002-3/_mobs.txt
-npc: npc/002-3/_nodes.txt
-npc: npc/002-3/_warps.txt
-npc: npc/002-3/mapflags.txt
-npc: npc/002-3/merchant.txt
-npc: npc/002-3/mining_camp_barrier.txt
-npc: npc/002-3/nathan.txt
-npc: npc/002-3/traveler.txt
diff --git a/world/map/npc/002-3/_mobs.txt b/world/map/npc/002-3/_mobs.txt
deleted file mode 100644
index a0552ba2..00000000
--- a/world/map/npc/002-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Mining Camp mobs
-
diff --git a/world/map/npc/002-3/_nodes.txt b/world/map/npc/002-3/_nodes.txt
deleted file mode 100644
index eb53d136..00000000
--- a/world/map/npc/002-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Mining Camp nodes
-
-// (no nodes)
diff --git a/world/map/npc/002-3/_warps.txt b/world/map/npc/002-3/_warps.txt
deleted file mode 100644
index 786afe89..00000000
--- a/world/map/npc/002-3/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Mining Camp warps
-
-002-3,22,87|warp|-1,-1,043-3,31,27
-002-3,85,51|warp|-1,-1,002-1,92,115
-002-3,51,36|warp|-1,-1,002-1,33,110
diff --git a/world/map/npc/002-3/mapflags.txt b/world/map/npc/002-3/mapflags.txt
deleted file mode 100644
index 9b47ca70..00000000
--- a/world/map/npc/002-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-002-3|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/002-3/merchant.txt b/world/map/npc/002-3/merchant.txt
deleted file mode 100644
index 55386d17..00000000
--- a/world/map/npc/002-3/merchant.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-//
-
-002-3,60,47,0|shop|Ishyah|109,MinersHat:*1,MinerGloves:*1,ShortBow:*4,Arrow:*2,LeatherShield:*1
diff --git a/world/map/npc/002-3/mining_camp_barrier.txt b/world/map/npc/002-3/mining_camp_barrier.txt
deleted file mode 100644
index baf815c5..00000000
--- a/world/map/npc/002-3/mining_camp_barrier.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-002-3,82,32,0|script|#Sandstorm_Mine_Barrier|45,0,0
-{
- if (QL_MINEALL >= 8) goto L_Barrier_Open;
-
- message strcharinfo(0), "Some force seems to block your entrance.";
- goto L_End;
-
-L_Barrier_Open:
- warp "002-4",37,31;
- goto L_End;
-
-L_End:
- end;
-}
diff --git a/world/map/npc/002-3/nathan.txt b/world/map/npc/002-3/nathan.txt
deleted file mode 100644
index bf484907..00000000
--- a/world/map/npc/002-3/nathan.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-002-3,42,45,6|script|Nathan|109
-{
- if (QL_MINEALL >= 20) goto L_Nathan_Complete;
- if (QL_MINEALL == 19) goto L_Nathan_UGQ_Naem;
- if (QL_MINEALL == 18) goto L_Nathan_Help_Cool;
- if (QL_MINEALL == 17) goto L_Nathan_Help_Done;
- if (QL_MINEALL == 16) goto L_Nathan_Waits_3;
- if (QL_MINEALL == 15) goto L_Nathan_Help_3;
- if (QL_MINEALL == 14) goto L_Nathan_Waits_2;
- if (QL_MINEALL == 13) goto L_Nathan_Help_2;
- if (QL_MINEALL == 12) goto L_Nathan_Waits_1;
- if (QL_MINEALL == 11) goto L_Nathan_Help_1;
- if (QL_MINEALL == 9) goto L_Nathan_Cool;
- if (QL_MINEALL == 8) goto L_Nathan_Okay;
-
- mes "[Nathan the Miner]";
- mes "\"It's very dangerous in here. We had a big earthquake here just recently, too... so be careful!\"";
- goto L_Close;
-
-L_Nathan_Okay:
- set QL_MINEALL, 9;
- mes "[Nathan]";
- mes "\"Hey there! Just mining away down here. You say Nickos was worried about us? Nothing down here we can't handle, but you should try to be safe down here yourself. The monsters can be rather aggressive. Come to think of it, you might want to check on Naem to make sure he's okay. You can find him in the southeast parts of the mine.\"";
- goto L_Close;
-
-L_Nathan_Cool:
- mes "[Nathan]";
- mes "\"Hey, be careful down here, the monsters can be rather aggressive! You might want to check on Naem too. He's at the southeast parts of the mine.\"";
- goto L_Close;
-
-L_Nathan_Help_1:
- set QL_MINEALL, 12;
- mes "[Nathan]";
- mes "\"Oh, hey again! Nickos told you we need some help down here too? Yeah, Naem could use a spare pair of hands moving his bags of ore to me. He's got a lot of work built up. Just go talk to him and he'll give you the bags. You might have to make a few trips, but I'll make it worth your troubles.\"";
- goto L_Close;
-
-L_Nathan_Waits_1:
- mes "[Nathan]";
- mes "\"Naem could use some help moving his bags of ore to me. He's got a lot of work built up. Just go talk to him and he'll give you the bags. You might have to make a few trips, but I'll make it worth your troubles.\"";
- goto L_Close;
-
-L_Nathan_Help_2:
- set QL_MINEALL, 14;
- mes "You give the bag of ore to Nathan";
- next;
- mes "[Nathan]";
- mes "\"Ah, thank you. Just a couple more and we'll have caught up!\"";
- goto L_Close;
-
-L_Nathan_Waits_2:
- mes "[Nathan]";
- mes "\"Just a couple more and we'll be all caught up!\"";
- goto L_Close;
-
-L_Nathan_Help_3:
- set QL_MINEALL, 16;
- mes "You hand the bag of ore to Nathan.";
- next;
- mes "[Nathan]";
- mes "\"Just one more bag and you'll be done!\"";
- goto L_Close;
-
-L_Nathan_Waits_3:
- mes "[Nathan]";
- mes "\"Just get one more bag of ore from Naem and bring it to me and you'll be done.\"";
- goto L_Close;
-
-L_Nathan_Help_Done:
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Nathan_TooMany;
- set QL_MINEALL, 18;
- getitem "MinersHat", 1;
- mes "[Nathan]";
- mes "You hand the bag of ore to Nathan.";
- next;
- mes "\"Ah, that should be it! Thank you for your help. Here, take this Miner's Hat. You're a real miner now!\"";
- next;
- mes "\"Oh, and I noticed a problem with these angry scorpions down here, they seem to make things much more difficult. Maybe you could tell Nickos about it on your way out?\"";
- goto L_Close;
-
-L_Nathan_TooMany:
- mes "[Nathan]";
- mes "\"You have too many items for me to give you a reward.\"";
- goto L_Close;
-
-L_Nathan_Help_Cool:
- mes "[Nathan]";
- mes "\"Be safe down here, it's dangerous for the unexperienced. Mining is a dangerous job, but somebody's got to do it!\"";
- goto L_Close;
-
-L_Nathan_UGQ_Naem:
- mes "[Nathan]";
- mes "\"Thanks for thinning down the angry scorpion population. It sure has made mining a little easier down here! Oh, you say Nickos has given you permission to check out the underground palace? Talk to Naem, he's got the key and the code.\"";
- goto L_Close;
-
-L_Nathan_Complete:
- mes "[Nathan]";
- mes "\"Mining is a dangerous job, but somebody's got to do it!\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-3/traveler.txt b/world/map/npc/002-3/traveler.txt
deleted file mode 100644
index 48175be8..00000000
--- a/world/map/npc/002-3/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-002-3,25,28,0|script|Jena the Traveler|103
-{
- set @npcname$, "Jena";
- set @NpcTravelBit, $@tul_mine_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/002-4/_import.txt b/world/map/npc/002-4/_import.txt
deleted file mode 100644
index 44a09e1d..00000000
--- a/world/map/npc/002-4/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 002-4: Desert Mines
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 002-4
-npc: npc/002-4/_mobs.txt
-npc: npc/002-4/_nodes.txt
-npc: npc/002-4/_warps.txt
-npc: npc/002-4/mapflags.txt
-npc: npc/002-4/mine_triggerone.txt
-npc: npc/002-4/mine_triggerthree.txt
-npc: npc/002-4/mine_triggertwo.txt
-npc: npc/002-4/naem.txt
-npc: npc/002-4/underground_palace_barrier.txt
diff --git a/world/map/npc/002-4/_mobs.txt b/world/map/npc/002-4/_mobs.txt
deleted file mode 100644
index 0643fb93..00000000
--- a/world/map/npc/002-4/_mobs.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mines mobs
-
-002-4,39,37,15,11|monster|CaveMaggot|1056,5,100000ms,30000ms
-002-4,91,41,17,20|monster|AngryFireGoblin|1108,3,100000ms,30000ms
-002-4,71,35,25,17|monster|CaveMaggot|1056,4,100000ms,30000ms
-002-4,69,100,8,5|monster|AngryFireGoblin|1108,2,100000ms,30000ms
-002-4,68,57,26,24|monster|AngryScorpion|1057,5,100000ms,30000ms
-002-4,49,58,4,15|monster|AngryScorpion|1057,5,100000ms,30000ms
-002-4,38,76,15,22|monster|AngryScorpion|1057,4,100000ms,30000ms
-002-4,58,78,6,17|monster|CaveMaggot|1056,4,100000ms,30000ms
-002-4,89,68,11,32|monster|AngryScorpion|1057,4,100000ms,30000ms
-002-4,84,93,19,17|monster|CaveMaggot|1056,4,100000ms,30000ms
-002-4,72,77,21,14|monster|AngryFireGoblin|1108,3,100000ms,30000ms
-002-4,67,91,11,12|monster|AngryScorpion|1057,4,100000ms,30000ms
-002-4,58,95,6,13|monster|CaveMaggot|1056,4,100000ms,30000ms
-002-4,63,100,2,5|monster|AngryScorpion|1057,3,100000ms,30000ms
diff --git a/world/map/npc/002-4/_nodes.txt b/world/map/npc/002-4/_nodes.txt
deleted file mode 100644
index ddcec23c..00000000
--- a/world/map/npc/002-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mines nodes
-
-// (no nodes)
diff --git a/world/map/npc/002-4/_warps.txt b/world/map/npc/002-4/_warps.txt
deleted file mode 100644
index 59bf0a37..00000000
--- a/world/map/npc/002-4/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mines warps
-
-002-4,37,29|warp|-1,-1,002-3,82,30
diff --git a/world/map/npc/002-4/mapflags.txt b/world/map/npc/002-4/mapflags.txt
deleted file mode 100644
index c6b4a046..00000000
--- a/world/map/npc/002-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-002-4|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/002-4/mine_triggerone.txt b/world/map/npc/002-4/mine_triggerone.txt
deleted file mode 100644
index 2ea0f8ce..00000000
--- a/world/map/npc/002-4/mine_triggerone.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-002-4,30,47,0|script|Button#mine-1|400,0,0
-{
- if (QL_MINEALL == 24) goto L_Trigger_Wrong_1;
- if (QL_MINEALL == 23) goto L_Trigger_Wrong_1;
- if (QL_MINEALL == 22) goto L_Trigger_1;
-
- mes "There is a large button on the ground. A key hole appears on the button.";
- goto L_Close;
-
-L_Trigger_Wrong_1:
- mes "There is a large button on the ground. A key hole appears on the button.";
- menu
- "Put the key in, turn right.", L_Right_Wrong_1,
- "Put the key in, turn left.", L_Left_Wrong_1,
- "Do nothing.", L_Nothing_1;
-
-L_Right_Wrong_1:
- set QL_MINEALL, 22;
- mes "You turn the key right.";
- goto L_Close;
-
-L_Left_Wrong_1:
- set QL_MINEALL, 22;
- mes "You turn the key left.";
- goto L_Close;
-
-L_Trigger_1:
- mes "There is a large button on the ground. A key hole appears on the button.";
- menu
- "Put the key in, turn right.", L_Right_1,
- "Put the key in, turn left.", L_Left_1,
- "Do nothing.", L_Nothing_1;
-
-L_Right_1:
- set QL_MINEALL, 23;
- mes "You turn the key right. A clicking sound echoes throughout the mine.";
- goto L_Close;
-
-L_Left_1:
- set QL_MINEALL, 22;
- mes "You turn the key left.";
- goto L_Close;
-
-L_Nothing_1:
- mes "You leave the button alone.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-4/mine_triggerthree.txt b/world/map/npc/002-4/mine_triggerthree.txt
deleted file mode 100644
index f79f739a..00000000
--- a/world/map/npc/002-4/mine_triggerthree.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-002-4,91,99,0|script|Button#mine-3|400,0,0
-{
- if (QL_MINEALL == 24) goto L_Trigger_Wrong_3;
- if (QL_MINEALL == 23) goto L_Trigger_3;
- if (QL_MINEALL == 22) goto L_Trigger_Wrong_3;
-
- mes "There is a large button on the ground. A key hole appears on the button.";
- goto L_Close;
-
-L_Trigger_Wrong_3:
- mes "There is a large button on the ground. A key hole appears on the button.";
- menu
- "Put the key in, turn right.", L_Right_Wrong_3,
- "Put the key in, turn left.", L_Left_Wrong_3,
- "Do nothing.", L_Nothing_3;
-
-L_Right_Wrong_3:
- set QL_MINEALL, 22;
- mes "You turn the key right.";
- goto L_Close;
-
-L_Left_Wrong_3:
- set QL_MINEALL, 22;
- mes "You turn the key left.";
- goto L_Close;
-
-L_Trigger_3:
- mes "There is a large button on the ground. A key hole appears on the button.";
- menu
- "Put the key in, turn right.", L_Right_3,
- "Put the key in, turn left.", L_Left_3,
- "Do nothing.", L_Nothing_3;
-
-L_Right_3:
- set QL_MINEALL, 22;
- mes "You turn the key right.";
- goto L_Close;
-
-L_Left_3:
- set QL_MINEALL, 24;
- mes "You turn the key left. A clicking sound echoes throughout the mine.";
- goto L_Close;
-
-L_Nothing_3:
- mes "You leave the button alone.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-4/mine_triggertwo.txt b/world/map/npc/002-4/mine_triggertwo.txt
deleted file mode 100644
index bfdf9d17..00000000
--- a/world/map/npc/002-4/mine_triggertwo.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-002-4,100,37,0|script|Button#mine-2|400,0,0
-{
- if (QL_MINEALL == 24) goto L_Trigger_2;
- if (QL_MINEALL == 23) goto L_Trigger_Wrong_2;
- if (QL_MINEALL == 22) goto L_Trigger_Wrong_2;
-
- mes "There is a large button on the ground. A key hole appears on the button.";
- goto L_Close;
-
-L_Trigger_Wrong_2:
- mes "There is a large button on the ground. A key hole appears on the button.";
- menu
- "Put the key in, turn right.", L_Right_Wrong_2,
- "Put the key in, turn left.", L_Left_Wrong_2,
- "Do nothing.", L_Nothing_2;
-
-L_Right_Wrong_2:
- set QL_MINEALL, 22;
- mes "You turn the key right.";
- goto L_Close;
-
-L_Left_Wrong_2:
- set QL_MINEALL, 22;
- mes "You turn the key left.";
- goto L_Close;
-
-L_Trigger_2:
- mes "There is a large button on the ground. A key hole appears on the button.";
- menu
- "Put the key in, turn right.", L_Right_2,
- "Put the key in, turn left.", L_Left_2,
- "Do nothing.", L_Nothing_2;
-
-L_Right_2:
- set QL_MINEALL, 22;
- mes "You turn the key right.";
- goto L_Close;
-
-L_Left_2:
- set QL_MINEALL, 25;
- set FLAGS, FLAGS | FLAG_OPENED_UNDERGROUND;
- mes "You turn the key left. A clicking sound echoes throughout the mine, followed by a loud thump.";
- goto L_Close;
-
-L_Nothing_2:
- mes "You leave the button alone.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-4/naem.txt b/world/map/npc/002-4/naem.txt
deleted file mode 100644
index a918f4c8..00000000
--- a/world/map/npc/002-4/naem.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-002-4,91,96,6|script|Naem|109
-{
- if (FLAGS & FLAG_GOT_NAEM_GLOVES) goto L_Naem_Complete;
- if (FLAGS & FLAG_OPENED_UNDERGROUND) goto L_Naem_Gloves;
- if (QL_MINEALL == 22) goto L_Naem_Code;
- if (QL_MINEALL == 21) goto L_Naem_Lt;
- if (QL_MINEALL == 20) goto L_Naem_Memory;
- if ((QL_MINEALL > 17) && (QL_MINEALL < 19))
- goto L_Naem_Great;
- if (QL_MINEALL == 17) goto L_Naem_Waits_3;
- if (QL_MINEALL == 16) goto L_Naem_Help_3;
- if (QL_MINEALL == 15) goto L_Naem_Waits_2;
- if (QL_MINEALL == 14) goto L_Naem_Help_2;
- if (QL_MINEALL == 13) goto L_Naem_Waits_1;
- if (QL_MINEALL == 12) goto L_Naem_Help_1;
- if (QL_MINEALL == 10) goto L_Naem_Cool;
- if (QL_MINEALL == 9) goto L_Naem_Okay;
-
- mes "[Naem]";
- mes "\"I'm just mining away here. Lots of work to do.\"";
- goto L_Close;
-
-L_Naem_Okay:
- set QL_MINEALL, 10;
- mes "[Naem]";
- mes "\"Oh, hello there. Nickos wanted you to check on me? Yeah, you can tell him I'm okay.\"";
- goto L_Close;
-
-L_Naem_Cool:
- mes "[Naem]";
- mes "\"Yeah, I'm cool. Just mining away here.\"";
- goto L_Close;
-
-L_Naem_Help_1:
- set QL_MINEALL, 13;
- mes "[Naem]";
- mes "\"Oh, you are here to help move my bags? Cool, I've got a few ready to go. Go ahead and take this one!\"";
- next;
- mes "Naem hands you a bag of ore.";
- next;
- mes "[Naem]";
- mes "\"After you deliver that one to Nathan, come on back, I've got a couple more ready to go.\"";
- goto L_Close;
-
-L_Naem_Waits_1:
- mes "[Naem]";
- mes "\"After you deliver that bag of ore to Nathan, come on back, I've got a couple more ready to go.\"";
- goto L_Close;
-
-L_Naem_Help_2:
- set QL_MINEALL, 15;
- mes "Naem gives you a bag of ore.";
- next;
- mes "[Naem]";
- mes "\"Just one more after this one and we'll be all caught up!\"";
- goto L_Close;
-
-L_Naem_Waits_2:
- mes "[Naem]";
- mes "\"Just one more bag of ore after the one you got and we'll be all caught up!\"";
- goto L_Close;
-
-L_Naem_Help_3:
- set QL_MINEALL, 17;
- mes "[Naem]";
- mes "Hands a bag of ore to you.";
- next;
- mes "\"Last one!\"";
- goto L_Close;
-
-L_Naem_Waits_3:
- mes "[Naem]";
- mes "\"You got my last sack already. Just give it to Nathan and we'll have caught up.\"";
- goto L_Close;
-
-L_Naem_Great:
- mes "[Naem]";
- mes "\"Hi ho! It's off to work I go! I work every day for meager pay, a miner's life for me...\"";
- goto L_Close;
-
-L_Naem_Memory:
- mes "You see Naem grimacing in pain as you approach.";
- next;
- mes "[Naem]";
- mes "\"Oh, my head! Some rocks fell on me and bonked me pretty good. I'm still a little sore.\"";
- menu
- "Don't you have a key so I can go to the underground palace?", L_Naem_Palace_No,
- "You should be more careful.", L_Naem_Duh;
-
-L_Naem_Duh:
- mes "[Naem]";
- mes "\"I guess I should...\"";
- goto L_Close;
-
-L_Naem_Palace_No:
- set QL_MINEALL, 21;
- mes "[Naem]";
- mes "\"Oh no! I lost the key! Don't worry though, talk to Lieutenant Dausen about getting the spare key.\"";
- goto L_Close;
-
-L_Naem_Lt:
- mes "[Naem]";
- mes "\"I hurt my head pretty bad. I also lost my key. If you want to get into the underground palace, you'll have to talk to Lieutenant Dausen about getting the spare.\"";
- goto L_Close;
-
-L_Naem_Code:
- mes "[Naem]";
- mes "\"Oh, you got the key. That is good! But my head still hurts... All I remember about the code is you have to put the key into the key hole buttons around the mine in a certain order and turn them in a certain order and it will unlock the underground palace. Sorry, that's all I have for you. Good luck!\"";
- goto L_Close;
-
-L_Naem_Gloves:
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Naem_TooMany;
- set FLAGS, FLAGS | FLAG_GOT_NAEM_GLOVES;
- getitem "MinerGloves", 1;
- mes "[Naem]";
- mes "\"Hey, good job on getting that together! Take these gloves, they might prove useful in the underground palace.\"";
- goto L_Close;
-
-L_Naem_Complete:
- mes "[Naem]";
- mes "\"Yo-ho-ho, a miner's life for me!\"";
- goto L_Close;
-
-L_Naem_TooMany:
- mes "[Naem]";
- mes "\"You have too many items for me to give you a reward.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-4/underground_palace_barrier.txt b/world/map/npc/002-4/underground_palace_barrier.txt
deleted file mode 100644
index a3e747ca..00000000
--- a/world/map/npc/002-4/underground_palace_barrier.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-002-4,68,98,0|script|#UGP_Barrier|45,0,0
-{
- if (QL_MINEALL >= 25) goto L_Barrier_Open;
-
- message strcharinfo(0), "Some force seems to block your entrance.";
- goto L_End;
-
-L_Barrier_Open:
- warp "002-5",35,97;
- goto L_End;
-
-L_End:
- end;
-}
diff --git a/world/map/npc/002-5/_import.txt b/world/map/npc/002-5/_import.txt
deleted file mode 100644
index d50b74a4..00000000
--- a/world/map/npc/002-5/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 002-5: Deep Desert Mines
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 002-5
-npc: npc/002-5/_mobs.txt
-npc: npc/002-5/_nodes.txt
-npc: npc/002-5/_warps.txt
-npc: npc/002-5/chest.txt
-npc: npc/002-5/mapflags.txt
-npc: npc/002-5/sema.txt
diff --git a/world/map/npc/002-5/_mobs.txt b/world/map/npc/002-5/_mobs.txt
deleted file mode 100644
index 700685c8..00000000
--- a/world/map/npc/002-5/_mobs.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Deep Desert Mines mobs
-
-002-5,37,89,12,7|monster|AngryFireGoblin|1108,3,100000ms,30000ms
-002-5,33,76,3,11|monster|CaveMaggot|1056,3,100000ms,30000ms
-002-5,40,68,7,5|monster|AngryScorpion|1057,3,100000ms,30000ms
-002-5,40,38,18,5|monster|Archant|1060,3,100000ms,30000ms
-002-5,56,97,2,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,68,100,12,2|monster|YellowSlime|1007,4,100000ms,30000ms
-002-5,91,80,1,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,89,94,1,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,74,78,1,5|monster|Archant|1060,2,100000ms,30000ms
-002-5,94,72,2,4|monster|Archant|1060,1,100000ms,30000ms
-002-5,90,61,6,2|monster|YellowSlime|1007,1,100000ms,30000ms
-002-5,74,35,1,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,84,33,1,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,84,46,1,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,99,38,1,5|monster|Archant|1060,1,100000ms,30000ms
-002-5,93,38,8,2|monster|YellowSlime|1007,2,100000ms,30000ms
-002-5,62,62,5,43|monster|AngryFireGoblin|1108,3,100000ms,30000ms
diff --git a/world/map/npc/002-5/_nodes.txt b/world/map/npc/002-5/_nodes.txt
deleted file mode 100644
index d3890f4a..00000000
--- a/world/map/npc/002-5/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Deep Desert Mines nodes
-
-// (no nodes)
diff --git a/world/map/npc/002-5/_warps.txt b/world/map/npc/002-5/_warps.txt
deleted file mode 100644
index f47ea4c6..00000000
--- a/world/map/npc/002-5/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Deep Desert Mines warps
-
-002-5,34,98|warp|-1,-1,002-4,68,99
diff --git a/world/map/npc/002-5/chest.txt b/world/map/npc/002-5/chest.txt
deleted file mode 100644
index 5673bbde..00000000
--- a/world/map/npc/002-5/chest.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-002-5,93,37,0|script|Supply Chest|378
-{
- if (QL_MINEALL >= 26) goto L_Finished;
-
- mes "Hrmm... A supply chest.";
- mes "Do you want to try to open it?";
- next;
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- if (countitem("TreasureKey") < 3)
- goto L_Not_Enough;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("TreasureKey") > 3)
- goto L_TooMany;
- mes "You opened the chest and found a short bow!";
- delitem "TreasureKey", 3;
- getitem "ShortBow", 1;
- set QL_MINEALL, 26;
- goto L_Close;
-
-L_Not_Enough:
- mes "It seems that you do not have the right key for this chest yet...";
- goto L_Close;
-
-L_Finished:
- mes "You have already opened this chest.";
- goto L_Close;
-
-L_TooMany:
- mes "You do not have enough room to loot this chest. Maybe you should try again later.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/002-5/mapflags.txt b/world/map/npc/002-5/mapflags.txt
deleted file mode 100644
index b1250e34..00000000
--- a/world/map/npc/002-5/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-002-5|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/002-5/sema.txt b/world/map/npc/002-5/sema.txt
deleted file mode 100644
index 32da7044..00000000
--- a/world/map/npc/002-5/sema.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-002-5,43,91,6|script|Sema|340
-{
- if (QL_MINEALL >= 28) goto L_Sema_Done;
- if (QL_MINEALL == 27) goto L_Sema_Happy;
- if (QL_MINEALL == 26) goto L_Sema_GCM;
-
- mes "[Sema the Miner]";
- mes "\"Hello adventurer. I do not know exactly where, but somewhere in this cave there is a supply chest. And wouldn't you know it! The archants have eaten all the spare keys for the chest. Go and do what you must do.\"";
- goto L_Close;
-
-L_Sema_GCM:
- mes "[Sema the Miner]";
- mes "\"I saw a giant cave maggot eat one of the other miners and it might eat me! Can you kill it?\"";
- menu
- "Yes.", L_Sema_Yes,
- "No.", L_Sema_No;
-
-L_Sema_No:
- mes "[Sema the Miner]";
- mes "\"Ahh! I am very scared now!\"";
- goto L_Close;
-
-L_Sema_Yes:
- set QL_MINEALL, 27;
- monster "002-5", 70, 90, "", 1059, 1;
- mes "[Sema the Miner]";
- mes "\"Good luck. To prove you killed it, please bring the Iten it swallowed when it ate the miner. Be careful, there could be more than one.\"";
- goto L_Close;
-
-L_Sema_Happy:
- if (countitem("Iten") < 1)
- goto L_Sema_Not_Happy;
- getinventorylist;
- if (@inventorylist_count - (countitem("Iten") == 1) > 99)
- goto L_Sema_TooMany;
- delitem "Iten", 1;
- getitem "DesertShirt", 1;
- set QL_MINEALL, 28;
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- mes "[Sema the Miner]";
- mes "\"You killed it! What a relief! I wish I had more to give, but please accept this Desert Shirt as reward.\"";
- goto L_Close;
-
-L_Sema_TooMany:
- mes "[Sema the Miner]";
- mes "\"You have too many items for me to give you a reward. Please drop or sell something so I can give it to you. Oh and yes, you can also store items at the nearest bank.\"";
- goto L_Close;
-
-L_Sema_Not_Happy:
- set QL_MINEALL, 26;
- heal -Hp, 0;
- mes "A stone falls on your head.";
- goto L_Close;
-
-L_Sema_Done:
- mes "[Sema the Miner]";
- mes "\"You made this cave safer, you are kind beyond belief. Others may need you. Happy adventuring.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/003-1/_import.txt b/world/map/npc/003-1/_import.txt
deleted file mode 100644
index d1e00223..00000000
--- a/world/map/npc/003-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 003-1: 2006 Tulimshar
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 003-1
-npc: npc/003-1/_mobs.txt
-npc: npc/003-1/_nodes.txt
-npc: npc/003-1/_warps.txt
-npc: npc/003-1/npcs.txt
diff --git a/world/map/npc/003-1/_mobs.txt b/world/map/npc/003-1/_mobs.txt
deleted file mode 100644
index ebd36458..00000000
--- a/world/map/npc/003-1/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// 2006 Tulimshar mobs
-
diff --git a/world/map/npc/003-1/_nodes.txt b/world/map/npc/003-1/_nodes.txt
deleted file mode 100644
index e0c675b7..00000000
--- a/world/map/npc/003-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// 2006 Tulimshar nodes
-
-// (no nodes)
diff --git a/world/map/npc/003-1/_warps.txt b/world/map/npc/003-1/_warps.txt
deleted file mode 100644
index 369badcd..00000000
--- a/world/map/npc/003-1/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// 2006 Tulimshar warps
-
diff --git a/world/map/npc/003-1/npcs.txt b/world/map/npc/003-1/npcs.txt
deleted file mode 100644
index 1aa0aff9..00000000
--- a/world/map/npc/003-1/npcs.txt
+++ /dev/null
@@ -1,259 +0,0 @@
-003-1,27,73,0|script|Tybalt#2006|184
-{
- set @npcname$, "Tybalt";
- callfunc "Banker";
- close;
-}
-
-003-1,102,31,0|script|Nicolas#2006|184
-{
- mes "[Nicolas]";
- mes "I'm the greatest barber in the whole mana world! Would you like a change of style or color?";
- next;
- callfunc "Barber";
- close;
-}
-
-003-1,39,66,0|script|Elanore#2006|184
-{
- mes "[Elanore]";
- if (BaseLevel > 10) goto L_NoHeal;
- set .@rnd, rand(4);
- if (.@rnd == 0) mes "You don't look too well, let me treat your wounds.";
- if (.@rnd == 1) mes "I will make quick work of your wounds.";
- if (.@rnd == 2) mes "Need a healing?.";
- if (.@rnd == 3) mes "Sometimes you just need to run from battle.";
- next;
- mes "[Elanore]";
- mes "Much better right?!";
- heal 10000, 10000;
- close;
-
-L_NoHeal:
- mes "I'm sorry but I'm here only to help young people.";
- mes "Your level is already higher than 10.";
- close;
-}
-
-003-1,57,70,0|script|Aisha#2006|184
-{
- mes "[Aisha]";
- set .@rnd, rand(7);
- if (.@rnd == 0) mes "Maggots are soo slimey!";
- if (.@rnd == 1) mes "Want to play ball with me?";
- if (.@rnd == 2) mes "Monsters roam the land, i hate scorpions!";
- if (.@rnd == 3) mes "When i grow up, I want to be strong enough to kill a scorpion!";
- if (.@rnd == 4) mes "Items dropped by monsters can be sold.";
- if (.@rnd == 5) mes "Items such as foods, can be eaten to regain Health Points.";
- if (.@rnd == 6) mes "I want to be a Doctor when i grow up!";
- close;
-}
-
-003-1,120,33,0|script|Nina#2#2006|184
-{
- mes "[Nina]";
- set .@rnd, rand(7);
- if (.@rnd == 0) mes "If i learned anything from school, Grenxen founded Tulimshar.";
- if (.@rnd == 1) mes "When i was picking rocks from the field, i saw a red scorpion.";
- if (.@rnd == 2) mes "Its polite to state your name before talking to anyone.";
- if (.@rnd == 3) mes "I have a Scorpion Doll!";
- if (.@rnd == 4) mes "I carry spare Cactus Juices while on the field.";
- if (.@rnd == 5) mes "Items such as foods, can be eaten to regain Health Points.";
- if (.@rnd == 6) mes "Grenxen is the Demon that founded Tulimshar.";
- close;
-}
-
-003-1,33,30,0|script|Ian#2006|184
-{
- mes "[Ian]";
- mes "Would you like to know about something?";
- next;
- goto L_Menu;
-
-L_Menu:
- menu
- "Fighting", L_Fight,
- "Items", L_Items,
- "Monsters", L_Monster,
- "Stylist", L_Style,
- "Quests", L_Quests,
- "NPCs", L_NPC,
- "Commands", L_Comm,
- "Quick Keys", L_Key,
- "I know everything!", L_Quit;
-
-L_Fight:
- mes "[Ian]";
- mes "People live in this world by living off of monsters";
- mes "You can fight monsters and even players by hitting the [CTRL] key, or left mouse click.";
- next;
- mes "[Ian]";
- mes "If you get tired of pressing the key too much, you can also type shift+ctrl";
- mes "This will make your character attack continuously for the time you are inactive.";
- next;
- goto L_Menu;
-
-L_Items:
- mes "[Ian]";
- mes "There are three types of items.";
- mes "They can be Consumables, Equipment, or Miscellaneous";
- next;
- mes "[Ian]";
- mes "Consumable items such as Potions, can be used only once";
- mes "after use, they will dissapear from your inventory.";
- next;
- mes "[Ian]";
- mes "Equipment items like Armors, Weapons, Accessories";
- mes "can be equipped for fashionable purposes or to raise your status";
- next;
- mes "[Ian]";
- mes "Miscellaneous items such as maggot slime, are used";
- mes "in creating other items, or just to trade and sell.";
- next;
- goto L_Menu;
-
-L_Monster:
- mes "[Ian]";
- mes "In every world, there are beasts. Monsters can be found almost anywhere!~";
- mes "To fight them, please read [Fighting] if you do not know how";
- next;
- mes "There a several types of monsters, Aggressive, Neutral, Assistants";
- next;
- mes "[Ian]";
- mes "Agressive monsters know that they are always in danger";
- mes "so therefore they always keep their guard up";
- mes "Making them attack anybody in sight";
- next;
- mes "[Ian]";
- mes "Neutral monsters tend to just lounge around until attacked";
- mes "They will leave everything alone unless they are threatened";
- next;
- mes "[Ian]";
- mes "Assistants are monsters who help eachother, there havent been any yet";
- mes "But there soon will be, These monsters attack in groups if they are threatened";
- next;
- goto L_Menu;
-
-L_Style:
- mes "[Ian]";
- mes "The stylist NPC will cut and perm your hair!";
- mes "they are known for their hair growth formula";
- next;
- goto L_Menu;
-
-L_Quests:
- mes "[Ian]";
- mes "There are people in the world in need of help!";
- mes "Most of these people aren't afraid to give rewards to those who help them";
- mes "So be nice and help people along the way!";
- next;
- goto L_Menu;
-
-L_NPC:
- mes "[Ian]";
- mes "NPC[Non Playable Characters] are people who are always in the game";
- mes "Tending to many variatys of services from just chatting to helping others.";
- next;
- goto L_Menu;
-
-L_Comm:
- mes "[Ian]";
- mes "There are no /Commands available currently";
- next;
- goto L_Menu;
-
-L_Key:
- mes "[Ian]";
- mes "There are many key combinations, press F1 for a short list of them!";
- next;
- goto L_Menu;
-
-L_Quit:
- close;
-}
-
-003-1,114,43,0|script|Luca#2006|184
-{
- mes "[Luca]";
- mes "Ouch! It hurts, this wound I got from battle.";
- next;
- menu
- "Tell me about it", L_Exp,
- "Nevermind", L_Nev;
-
-L_Exp:
- mes "I was fighting scorpions for experience and I bumped into a RED one. I had NEVER seen it before!";
- next;
- mes "Luckily i had a camera with me! Here's a picture of it... Let me find it, I put it in my pocket somewhere...";
- next;
- mes "Oh man! My pockets have been ripped clean off!";
- close;
-
-L_Nev:
- mes "Hmpf!";
- close;
-}
-
-003-1,48,79,0|script|Ekinu#2006|184
-{
- mes "[Ekinu]";
- mes "Protecting this place is my job.";
- mes "If you walk outside, there are" ;
- mes "monsters harder than anyhting in here.";
- next;
- menu
- "What kind of monsters have you seen?", L_Exp,
- "Nevermind that", L_Nev;
-
-L_Exp:
- mes "Well, in my whole carrier, I've only seen Maggots and Scorpions.";
- next;
- mes "So please don't ask me about monsters.";
- next;
- mes "This place is actualy pretty safe";
- close;
-
-L_Nev:
- mes "Be careful...";
- close;
-}
-
-
-003-1,39,79,0|script|Ryan#2006|184
-{
- mes "[Ryan]";
- mes "ZzzZzzZ...";
- next;
- mes "Heh, what?";
- mes "I wasn't sleeping, I just had my eyes closed!";
- close;
-}
-
-003-1,54,45,0|shop|Neko#2006|184,CactusDrink:50,CactusPotion:60,Knife:100,CottonShirt:1000,SharpKnife:300,Dagger:1000,LeatherShirt:8000
-
-
-003-1,55,51,0|script|Ishi#2006|184
-{
- mes "[Ishi]";
- mes "Welcome";
- close;
-}
-
-003-1,72,61,0|script|Sandra#2006|184
-{
- mes "[Sandra]";
- mes "You look sturdy enough, will you help me get something?";
- menu
- "Yes", L_Yes;
-
-L_Yes:
- mes "[Sandra]";
- mes "Thank you for all your help!";
- close;
-}
-
-003-1,137,35,0|script|Vincent#2006|184
-{
- emotion EMOTE_TONGUE, strcharinfo(0);
- end;
-}
diff --git a/world/map/npc/003-4/_import.txt b/world/map/npc/003-4/_import.txt
deleted file mode 100644
index 2199a333..00000000
--- a/world/map/npc/003-4/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 003-4: Beach
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 003-4
-npc: npc/003-4/_mobs.txt
-npc: npc/003-4/_nodes.txt
-npc: npc/003-4/_warps.txt
-npc: npc/003-4/ashley.txt
-npc: npc/003-4/mapflags.txt
-npc: npc/003-4/time-traveler.txt
diff --git a/world/map/npc/003-4/_mobs.txt b/world/map/npc/003-4/_mobs.txt
deleted file mode 100644
index 608c9c53..00000000
--- a/world/map/npc/003-4/_mobs.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach mobs
-
-003-4,158,68,28,96|monster|GiantMaggot|1006,10,100000ms,30000ms
-003-4,0,0,0,0|monster|SeaSlime|1033,15,100000ms,30000ms
-003-4,120,31,22,22|monster|SeaSlime|1033,5,100000ms,30000ms
-003-4,119,68,105,101|monster|GreenSlime|1005,35,100000ms,30000ms
-003-4,134,69,76,71|monster|RedScorpion|1004,20,100000ms,30000ms
-003-4,35,25,10,3|monster|MountainSnake|1026,1,700000ms,600000ms
diff --git a/world/map/npc/003-4/_nodes.txt b/world/map/npc/003-4/_nodes.txt
deleted file mode 100644
index 8c36389e..00000000
--- a/world/map/npc/003-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach nodes
-
-// (no nodes)
diff --git a/world/map/npc/003-4/_warps.txt b/world/map/npc/003-4/_warps.txt
deleted file mode 100644
index a27ebb4d..00000000
--- a/world/map/npc/003-4/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach warps
-
-003-4,172,77|warp|-1,3,002-1,32,66
-003-4,141,19|warp|1,-1,004-1,37,110
-003-4,114,117|warp|2,-1,043-1,44,20
diff --git a/world/map/npc/003-4/ashley.txt b/world/map/npc/003-4/ashley.txt
deleted file mode 100644
index 48ad10c9..00000000
--- a/world/map/npc/003-4/ashley.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-003-4,35,25,0|script|Ashley|139
-{
- mes "[Ashley]";
- mes "\"Ah, hello. Your smell is different, you seem to have come from a different time.";
- mes "Perhaps you have the rare item I'm looking for?\"";
- menu
- "Sure!",L_Next,
- "Sorry, I'm busy.",L_Close;
-
-L_Next:
- mes "She smiles mischievously.";
- mes "[Ashley]";
- mes "\"Oho, I need an item which doesn't exists at this time... It is called Mylarin Dust.\"";
- next;
- mes "[Ashley]";
- mes "Grinning intensifies";
- mes "\"I'll even give you an old weapon as a reward.\"";
- next;
- mes "[Ashley]";
- mes "\"So, do you have it?\"";
- menu
- "Yeah, here is it.",L_Next1,
- "Not yet.",L_Close;
-
-L_Next1:
- if (countitem("MylarinDust") < 1)
- goto L_NoMylarin;
-
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_FullInv;
-
- delitem "MylarinDust", 1;
- getexp 2000, 0;
- getitem "SandCutter", 1;
- mes "[Ashley]";
- mes "Grinning widely";
- mes "\"Thanks, mortal. This will help me a bit...\"";
- next;
- mes "[Ashley]";
- mes "\"And if you have more Mylarin Dust with you, I will not hesitate to give you another old weapon as a reward.\"";
- goto L_Close;
-
-L_NoMylarin:
- mes "[Ashley]";
- mes "She fakes smiles at you";
- mes "\"Oh, did you said you wanted me to play with you?\"";
- next;
- mes "[Ashley]";
- mes "\"While I would love to play... I still have to put a prank on Cupid, so you'll have to wait your turn.\"";
- goto L_Close;
-
-L_FullInv:
- mes "[Ashley]";
- mes "\"You're carrying so many things that I feel the urge of stomping you.\"";
- goto L_Close;
-
-L_Close:
- set @inventorylist_count, 0;
- close;
-}
diff --git a/world/map/npc/003-4/mapflags.txt b/world/map/npc/003-4/mapflags.txt
deleted file mode 100644
index 888c987e..00000000
--- a/world/map/npc/003-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-003-4|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/003-4/time-traveler.txt b/world/map/npc/003-4/time-traveler.txt
deleted file mode 100644
index 00a875f5..00000000
--- a/world/map/npc/003-4/time-traveler.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-// time traveler that warps from old tonori to new tonori
-
-002-1,30,67,0|script|Time Traveler#21|184
-{
- mes "Would you like to time travel?";
- menu
- "Yes!", L_Warp;
-
-L_Warp:
- mes "Hang tight!";
- close2;
- warp "003-4", 171, 76;
- close;
-}
-
-003-4,165,73,0|script|Time Traveler#34|184
-{
- mes "Welcome back!";
- menu
- "What is this place?", L_What,
- "How do I leave?", L_Leave;
-
-L_What:
- mes "This place used to be part of Tonori a few years back.";
- mes "Unfortunately, it almost vanished completely due to illegal dredging of the coast.";
- next;
- mes "The culprits were never caught.";
- close;
-
-L_Leave:
- mes "Walk East from here to escape the time dilation bubble.";
- close;
-}
diff --git a/world/map/npc/004-1/_import.txt b/world/map/npc/004-1/_import.txt
deleted file mode 100644
index 23da8acd..00000000
--- a/world/map/npc/004-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 004-1: Beach
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 004-1
-npc: npc/004-1/_mobs.txt
-npc: npc/004-1/_nodes.txt
-npc: npc/004-1/_warps.txt
-npc: npc/004-1/mapflags.txt
diff --git a/world/map/npc/004-1/_mobs.txt b/world/map/npc/004-1/_mobs.txt
deleted file mode 100644
index c643668a..00000000
--- a/world/map/npc/004-1/_mobs.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach mobs
-
-004-1,39,57,8,29|monster|SeaSlime|1033,5,100000ms,30000ms
-004-1,33,83,9,40|monster|SeaSlime|1033,11,100000ms,30000ms
-004-1,28,103,11,14|monster|SeaSlime|1033,7,100000ms,30000ms
-004-1,71,104,27,20|monster|GiantMaggot|1006,5,100000ms,30000ms
-004-1,76,68,21,49|monster|RedScorpion|1004,13,100000ms,30000ms
-004-1,68,25,19,10|monster|GiantMaggot|1006,2,100000ms,30000ms
-004-1,93,27,2,3|monster|BlackScorpion|1009,1,120000ms,60000ms
diff --git a/world/map/npc/004-1/_nodes.txt b/world/map/npc/004-1/_nodes.txt
deleted file mode 100644
index 8c36389e..00000000
--- a/world/map/npc/004-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach nodes
-
-// (no nodes)
diff --git a/world/map/npc/004-1/_warps.txt b/world/map/npc/004-1/_warps.txt
deleted file mode 100644
index 0c886c82..00000000
--- a/world/map/npc/004-1/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach warps
-
-004-1,68,19|warp|1,-1,041-1,101,94
-004-1,37,111|warp|1,-1,003-4,141,20
diff --git a/world/map/npc/004-1/mapflags.txt b/world/map/npc/004-1/mapflags.txt
deleted file mode 100644
index 0ef10a09..00000000
--- a/world/map/npc/004-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-004-1|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/004-3/_import.txt b/world/map/npc/004-3/_import.txt
deleted file mode 100644
index 97d4e69b..00000000
--- a/world/map/npc/004-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 004-3: Pirate Caves First Floor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 004-3
-npc: npc/004-3/_mobs.txt
-npc: npc/004-3/_nodes.txt
-npc: npc/004-3/_warps.txt
-npc: npc/004-3/mapflags.txt
diff --git a/world/map/npc/004-3/_mobs.txt b/world/map/npc/004-3/_mobs.txt
deleted file mode 100644
index 26c4d595..00000000
--- a/world/map/npc/004-3/_mobs.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Caves First Floor mobs
-
-004-3,43,72,7,8|monster|Thug|1119,2,100000ms,30000ms
-004-3,43,72,7,8|monster|Swashbuckler|1120,1,100000ms,30000ms
-004-3,43,72,7,8|monster|Grenadier|1121,1,100000ms,30000ms
-004-3,28,69,8,2|monster|Thug|1119,2,100000ms,30000ms
-004-3,71,63,7,8|monster|Thug|1119,2,100000ms,30000ms
-004-3,39,39,7,3|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-3,71,63,7,8|monster|Grenadier|1121,1,100000ms,30000ms
diff --git a/world/map/npc/004-3/_nodes.txt b/world/map/npc/004-3/_nodes.txt
deleted file mode 100644
index 9ebc3e80..00000000
--- a/world/map/npc/004-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Caves First Floor nodes
-
-// (no nodes)
diff --git a/world/map/npc/004-3/_warps.txt b/world/map/npc/004-3/_warps.txt
deleted file mode 100644
index 53e31578..00000000
--- a/world/map/npc/004-3/_warps.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Caves First Floor warps
-
-004-3,24,95|warp|-1,-1,002-1,49,21
-004-3,49,80|warp|-1,-1,004-4,49,83
-004-3,31,73|warp|-1,-1,004-4,31,70
-004-3,49,56|warp|-1,-1,004-4,49,51
-004-3,90,64|warp|-1,-1,004-4,90,68
-004-3,80,22|warp|-1,-1,021-3,44,142
-004-3,77,40|warp|-1,-1,004-4,78,34
diff --git a/world/map/npc/004-3/mapflags.txt b/world/map/npc/004-3/mapflags.txt
deleted file mode 100644
index 1365bc09..00000000
--- a/world/map/npc/004-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-004-3|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/004-4/_import.txt b/world/map/npc/004-4/_import.txt
deleted file mode 100644
index 6b0490c3..00000000
--- a/world/map/npc/004-4/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 004-4: Pirate Caves Second Floor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 004-4
-npc: npc/004-4/_mobs.txt
-npc: npc/004-4/_nodes.txt
-npc: npc/004-4/_warps.txt
-npc: npc/004-4/mapflags.txt
diff --git a/world/map/npc/004-4/_mobs.txt b/world/map/npc/004-4/_mobs.txt
deleted file mode 100644
index 0216ba6d..00000000
--- a/world/map/npc/004-4/_mobs.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Caves Second Floor mobs
-
-004-4,36,62,5,20|monster|Grenadier|1121,1,100000ms,30000ms
-004-4,37,61,5,21|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-4,62,52,12,7|monster|Thug|1119,2,100000ms,30000ms
-004-4,34,87,12,7|monster|Thug|1119,2,100000ms,30000ms
-004-4,37,62,6,22|monster|Thug|1119,2,100000ms,30000ms
-004-4,34,88,10,6|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-4,63,52,10,6|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-4,62,52,11,4|monster|Grenadier|1121,1,100000ms,30000ms
-004-4,34,88,10,4|monster|Grenadier|1121,1,100000ms,30000ms
diff --git a/world/map/npc/004-4/_nodes.txt b/world/map/npc/004-4/_nodes.txt
deleted file mode 100644
index 2ca90a45..00000000
--- a/world/map/npc/004-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Caves Second Floor nodes
-
-// (no nodes)
diff --git a/world/map/npc/004-4/_warps.txt b/world/map/npc/004-4/_warps.txt
deleted file mode 100644
index f36c2149..00000000
--- a/world/map/npc/004-4/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Caves Second Floor warps
-
-004-4,49,81|warp|-1,-1,004-3,49,76
-004-4,31,72|warp|-1,-1,004-3,31,74
-004-4,49,53|warp|-1,-1,004-3,49,57
-004-4,90,70|warp|-1,-1,004-3,90,66
-004-4,24,64|warp|-1,-1,004-5,24,67
-004-4,78,32|warp|-1,-1,004-3,77,38
diff --git a/world/map/npc/004-4/mapflags.txt b/world/map/npc/004-4/mapflags.txt
deleted file mode 100644
index fee09311..00000000
--- a/world/map/npc/004-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-004-4|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/004-5/_import.txt b/world/map/npc/004-5/_import.txt
deleted file mode 100644
index 234d6cde..00000000
--- a/world/map/npc/004-5/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 004-5: Pirate Den
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 004-5
-npc: npc/004-5/_mobs.txt
-npc: npc/004-5/_nodes.txt
-npc: npc/004-5/_warps.txt
-npc: npc/004-5/chest.txt
-npc: npc/004-5/mapflags.txt
diff --git a/world/map/npc/004-5/_mobs.txt b/world/map/npc/004-5/_mobs.txt
deleted file mode 100644
index b7425fb5..00000000
--- a/world/map/npc/004-5/_mobs.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Den mobs
-
-004-5,41,70,6,5|monster|Grenadier|1121,1,100000ms,30000ms
-004-5,41,70,7,3|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-5,40,70,8,2|monster|Thug|1119,2,100000ms,30000ms
-004-5,35,86,6,5|monster|Grenadier|1121,1,100000ms,30000ms
-004-5,34,86,8,2|monster|Thug|1119,2,100000ms,30000ms
-004-5,35,86,7,3|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-5,54,38,6,5|monster|Grenadier|1121,1,100000ms,30000ms
-004-5,53,38,8,2|monster|Thug|1119,2,100000ms,30000ms
-004-5,54,38,7,3|monster|Swashbuckler|1120,2,100000ms,30000ms
-004-5,81,38,6,5|monster|Grenadier|1121,1,100000ms,30000ms
-004-5,80,38,8,2|monster|Thug|1119,2,100000ms,30000ms
-004-5,81,38,7,3|monster|Swashbuckler|1120,2,100000ms,30000ms
diff --git a/world/map/npc/004-5/_nodes.txt b/world/map/npc/004-5/_nodes.txt
deleted file mode 100644
index 55ea7bb3..00000000
--- a/world/map/npc/004-5/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Den nodes
-
-// (no nodes)
diff --git a/world/map/npc/004-5/_warps.txt b/world/map/npc/004-5/_warps.txt
deleted file mode 100644
index 37989088..00000000
--- a/world/map/npc/004-5/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pirate Den warps
-
-004-5,24,65|warp|-1,-1,004-4,24,62
diff --git a/world/map/npc/004-5/chest.txt b/world/map/npc/004-5/chest.txt
deleted file mode 100644
index 92b55e6c..00000000
--- a/world/map/npc/004-5/chest.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-004-5,89,67,0|script|Old Chest#crastur|111
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
- if(@spants_state > 5) goto L_Looted;
- if(@spants_state != 5) goto L_Unknown;
- set @spants_state, 6;
- getitem "Bandana", 1;
- set Zeny, (Zeny + rand(8000,20000)); // give some random loot
- mes "This must be the treasure that Crastur was talking about.";
- mes "You see a pile of gold and a Bandana on top.";
- set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
- goto L_Close;
-
-L_Looted:
- mes "You have already looted this chest.";
- goto L_Close;
-
-L_Unknown:
- mes "You have no idea how to open this chest.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/004-5/mapflags.txt b/world/map/npc/004-5/mapflags.txt
deleted file mode 100644
index d449e0f6..00000000
--- a/world/map/npc/004-5/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-004-5|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/005-3/_import.txt b/world/map/npc/005-3/_import.txt
deleted file mode 100644
index 415451c3..00000000
--- a/world/map/npc/005-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 005-3: Snake Pit
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 005-3
-npc: npc/005-3/_mobs.txt
-npc: npc/005-3/_nodes.txt
-npc: npc/005-3/_warps.txt
-npc: npc/005-3/mapflags.txt
diff --git a/world/map/npc/005-3/_mobs.txt b/world/map/npc/005-3/_mobs.txt
deleted file mode 100644
index 2bcda8e6..00000000
--- a/world/map/npc/005-3/_mobs.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snake Pit mobs
-
-005-3,59,63,48,57|monster|Snake|1010,50,100000ms,30000ms
-005-3,56,64,53,49|monster|BlackScorpion|1009,15,100000ms,30000ms
-005-3,59,68,58,42|monster|GiantMaggot|1006,20,100000ms,30000ms
-005-3,95,52,10,61|monster|Troll|1054,7,100000ms,30000ms
-005-3,53,26,64,12|monster|Troll|1054,5,100000ms,30000ms
diff --git a/world/map/npc/005-3/_nodes.txt b/world/map/npc/005-3/_nodes.txt
deleted file mode 100644
index 0e704ee5..00000000
--- a/world/map/npc/005-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snake Pit nodes
-
-// (no nodes)
diff --git a/world/map/npc/005-3/_warps.txt b/world/map/npc/005-3/_warps.txt
deleted file mode 100644
index c1877197..00000000
--- a/world/map/npc/005-3/_warps.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snake Pit warps
-
-005-3,52,35|warp|-1,-1,002-1,113,109
-005-3,63,48|warp|-1,-1,006-3,89,45
-005-3,85,51|warp|-1,-1,006-3,125,65
-005-3,86,32|warp|-1,-1,006-1,55,47
-005-3,73,62|warp|-1,-1,006-1,51,69
-005-3,78,90|warp|-1,-1,043-3,116,37
-005-3,33,84|warp|-1,-1,043-3,31,35
-005-3,107,102|warp|-1,-1,006-1,64,78
-005-3,27,41|warp|-1,-1,043-5,126,27
-005-3,101,30|warp|-1,-1,005-3,101,35
-005-3,110,79|warp|-1,-1,005-3,110,75
diff --git a/world/map/npc/005-3/mapflags.txt b/world/map/npc/005-3/mapflags.txt
deleted file mode 100644
index 087876e0..00000000
--- a/world/map/npc/005-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-005-3|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/006-1/_import.txt b/world/map/npc/006-1/_import.txt
deleted file mode 100644
index 44f1375d..00000000
--- a/world/map/npc/006-1/_import.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// Map 006-1: Desert Mountains
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 006-1
-npc: npc/006-1/_mobs.txt
-npc: npc/006-1/_nodes.txt
-npc: npc/006-1/_warps.txt
-npc: npc/006-1/mapflags.txt
-npc: npc/006-1/mika.txt
-npc: npc/006-1/miriam.txt
-npc: npc/006-1/pachua.txt
-npc: npc/006-1/spirit.txt
-npc: npc/006-1/traveler.txt
-npc: npc/006-1/tree.txt
diff --git a/world/map/npc/006-1/_mobs.txt b/world/map/npc/006-1/_mobs.txt
deleted file mode 100644
index c18464c8..00000000
--- a/world/map/npc/006-1/_mobs.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mountains mobs
-
-006-1,49,52,7,3|monster|Snake|1010,1,100000ms,30000ms
-006-1,53,36,16,13|monster|MountainSnake|1026,3,150000ms,10000ms
-006-1,89,26,33,13|monster|MountainSnake|1026,5,15000ms,75000ms
-006-1,113,41,12,37|monster|MountainSnake|1026,8,15000ms,75000ms
-006-1,113,51,6,3|monster|MountainSnake|1026,3,15000ms,75000ms
-006-1,86,46,29,5|monster|MountainSnake|1026,3,15000ms,75000ms
-006-1,105,73,21,14|monster|MountainSnake|1026,3,15000ms,75000ms
-006-1,73,102,8,13|monster|MountainSnake|1026,4,15000ms,75000ms
-006-1,104,100,11,15|monster|MountainSnake|1026,8,15000ms,75000ms
-006-1,82,72,25,16|monster|MountainSnake|1026,8,15000ms,75000ms
-006-1,95,114,17,4|monster|MountainSnake|1026,5,15000ms,75000ms
-006-1,57,119,18,2|monster|MountainSnake|1026,4,15000ms,75000ms
-006-1,33,97,27,33|monster|Scorpion|1003,10,100000ms,30000ms
-006-1,58,49,3,3|monster|GreenSlime|1005,3,100000ms,30000ms
-006-1,34,50,5,4|monster|Snake|1010,2,40000ms,50000ms
-006-1,96,92,20,48|monster|Snake|1010,2,40000ms,50000ms
-006-1,35,97,28,29|monster|Maggot|1002,20,100000ms,30000ms
-006-1,28,73,3,2|monster|GreenSlime|1005,2,100000ms,30000ms
-006-1,33,59,3,2|monster|GreenSlime|1005,2,100000ms,30000ms
-006-1,37,73,7,3|monster|Snake|1010,1,100000ms,30000ms
-006-1,100,36,38,24|monster|Snake|1010,2,40000ms,50000ms
diff --git a/world/map/npc/006-1/_nodes.txt b/world/map/npc/006-1/_nodes.txt
deleted file mode 100644
index e53e7619..00000000
--- a/world/map/npc/006-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mountains nodes
-
-// (no nodes)
diff --git a/world/map/npc/006-1/_warps.txt b/world/map/npc/006-1/_warps.txt
deleted file mode 100644
index 1a2b0169..00000000
--- a/world/map/npc/006-1/_warps.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mountains warps
-
-006-1,40,26|warp|-1,-1,006-3,40,28
-006-1,60,58|warp|-1,-1,006-3,60,70
-006-1,62,30|warp|-1,-1,006-3,62,32
-006-1,55,27|warp|-1,-1,006-3,55,29
-006-1,77,44|warp|-1,-1,006-3,77,46
-006-1,86,24|warp|-1,-1,006-3,86,26
-006-1,91,24|warp|-1,-1,006-3,91,26
-006-1,98,46|warp|-1,-1,006-3,104,46
-006-1,114,22|warp|-1,-1,006-3,122,26
-006-1,114,49|warp|-1,-1,006-3,114,51
-006-1,102,53|warp|-1,-1,006-3,110,58
-006-1,117,57|warp|-1,-1,006-3,125,61
-006-1,92,63|warp|-1,-1,006-3,92,65
-006-1,112,74|warp|-1,-1,006-3,112,76
-006-1,111,110|warp|-1,-1,032-3,56,60
-006-1,83,117|warp|-1,-1,006-3,79,121
-006-1,38,121|warp|-1,-1,006-3,38,123
-006-1,74,90|warp|-1,-1,006-3,74,92
-006-1,51,90|warp|-1,-1,006-3,51,92
-006-1,30,123|warp|-1,-1,032-3,128,33
-006-1,33,85|warp|-1,-1,006-2,58,43
-006-1,23,85|warp|-1,-1,006-2,48,43
-006-1,23,100|warp|-1,-1,006-2,67,64
-006-1,21,108|warp|-1,-1,006-2,65,72
-006-1,37,26|warp|-1,-1,006-1,37,23
-006-1,37,24|warp|-1,-1,006-1,37,27
-006-1,55,46|warp|-1,-1,005-3,86,33
-006-1,20,48|warp|-1,0,002-1,118,95
-006-1,51,68|warp|-1,-1,005-3,73,61
-006-1,64,77|warp|-1,-1,005-3,107,101
diff --git a/world/map/npc/006-1/mapflags.txt b/world/map/npc/006-1/mapflags.txt
deleted file mode 100644
index 5b3b3a39..00000000
--- a/world/map/npc/006-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-006-1|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/006-1/mika.txt b/world/map/npc/006-1/mika.txt
deleted file mode 100644
index 2d4a37a7..00000000
--- a/world/map/npc/006-1/mika.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-006-1,39,22,0|script|Mika|114
-{
- mes "[Mika]";
- mes "\"My father told me about a man living in this desert who makes clothes out of snake skin.\"";
- next;
- mes "[Mika]";
- mes "\"Maybe you can find him, but be careful you don't get lost in the tunnels!\"";
- close;
-}
diff --git a/world/map/npc/006-1/miriam.txt b/world/map/npc/006-1/miriam.txt
deleted file mode 100644
index 179cb89d..00000000
--- a/world/map/npc/006-1/miriam.txt
+++ /dev/null
@@ -1,342 +0,0 @@
-//#############################################
-// author: alastrim, PjotrOrial
-//#############################################
-// This npc teaches you the speed skill.
-// used variables:
-// QUEST_MIRIAM:
-// 0 either fully completed the quests in here, or not started.
-// 1 you said the wrong words, she is insulted. (so you excuse and goto 2)
-// 2 waiting for the ingredients
-// 3 you brought the needed stuff. if you meet other criteria (BaseLevel, agi) you will be taught the skill
-// 4 you have met the criteria of 3, but declined to take the speed test.
-// 5 you tried the quest but you failed
-// QUEST_MIRIAM_run
-// positive is the start time
-// negative is the time difference from start
-//#############################################
-// after you gained the speed skill, all variables are reset to zero.
-//#############################################
-
-006-1,115,111,0|script|Miriam|175
-{
- set @npc_distance, 2;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (getskilllv(SKILL_SPEED)) goto L_fast;
- if (getequipid(equip_torso) < 0) goto L_naked;
- if (QUEST_MIRIAM == 0) goto L_intro;
- if (QUEST_MIRIAM == 1) goto L_ask1;
- if (QUEST_MIRIAM == 2) goto L_ask2;
- if (QUEST_MIRIAM == 3) goto L_teach;
- if (QUEST_MIRIAM == 4) goto L_testoffer;
- if (QUEST_MIRIAM_run < 0) goto L_checktime;
- if (QUEST_MIRIAM_run > 0) goto L_wasting;
- if (QUEST_MIRIAM == 5) goto L_testoffer;
- goto L_intro;
-
-L_intro:
- mes "You see a woman sitting in the hot sand with eyes wide open... But she does not seem to be looking at something in particular...";
- next;
- menu
- "Ehr... Hi, my name is " +strcharinfo(0)+ ". Are you OK?",L_Next;
-
-L_Next:
- mes "[Miriam]";
- mes "\"...";
- next;
- menu
- "Hello?",L_Continue;
-
-L_Continue:
- mes "[Miriam]";
- mes "\"Yes, I am. Why? Do you think I am not OK? I am OK. You interrupted my meditation. Now I will need hours to calm down and stay quiet! Yes, yes, I know, I'm a fast talker!\"";
- next;
- mes "\"In fact, I am fast in everything I do! I can kill a Mountain Snake before it even starts to think about attacking me! Yes my friend, in a battle, speed is power!";
- next;
- menu
- "Wow! Very impressi...",L_More;
-
-L_More:
- mes "[Miriam]";
- mes "\"Yes, yes, I know. But if there is one thing I am NOT good at, it is meditation! My master said I need to meditate, but... Ohh! So difficult to stay quiet! And when you FINALLY do, someone INTERRUPTS you, asking if you are 'OK'...\"";
- next;
- menu
- "Oh, I am sorry! I didn't know you were meditating...",L_WallText;
-
-L_WallText:
- mes "[Miriam]";
- mes "\"You are really sorry? Ok, but that is not enough... I need you to do something for me. As you can imagine, I will need a lot of time to concentrate and get back to the state I was when you interrupted me.\"";
- next;
- mes "\"But the problem is that I wasn't expecting to be here for so long, so I will need some food and something to drink.\"";
- next;
- mes "\"So, if you really want to prove that you are sorry, bring me 5 Concentration Potions and 10 Snake Tongues.\"";
- next;
- menu
- "Ok, but those potions will not help with your mental concent...",L_MoreTalking,
- "Sorry, but I can't help you right now.",L_canthelp;
-
-L_MoreTalking:
- mes "[Miriam]";
- mes "\"ah, ah, ah... I know what I am doing! Now run and get what I asked.\"";
- set QUEST_MIRIAM, 2;
- close;
-
-L_canthelp:
- mes "[Miriam]";
- mes "\"Oh, really? So you better pray to not need my help in the future!\"";
- set QUEST_MIRIAM, 1;
- close;
-
-L_canthelp2:
- mes "[Miriam]";
- mes "\"...\"";
- next;
- mes "\"...\"";
- next;
- mes "\"Well, if you don't have time to help, at least don't make things difficult for me!\"";
- close;
-
-L_ask1:
- mes "[Miriam]";
- mes "\"So, you are back... have you changed your mind about my request?\"";
- next;
- menu
- "Yes, I will get what you want!",L_WillGetItems,
- "No, I have no time right now.",L_canthelp2;
-
-L_WillGetItems:
- set QUEST_MIRIAM, 2;
- mes "\"Good. So, run and get it!\"";
- close;
-
-L_ask2:
- mes "[Miriam]";
- mes "\"Did you get what I asked for?\"";
- next;
- menu
- "Yes, here it is!",L_getitems,
- "What was that again?", L_ask3,
- "No, not yet.",L_Hurry;
-
-L_Hurry:
- mes "\"So please hurry up!\"";
- close;
-
-L_ask3:
- mes "[Miriam]";
- mes "\"You have a small mind, haven't you? I am meditating here and I asked you to bring me stuff, so I can concentrate better.\"";
- next;
- mes "\"And stop asking such silly questions in the future.\"";
- next;
- mes "\"So, if you really want to help me now, bring me 5 Concentration Potions and 10 Snake Tongues.\"";
- close;
-
-L_getitems:
- if (countitem("SnakeTongue") < 10
- || countitem("ConcentrationPotion") < 5)
- goto L_notenough;
- delitem "SnakeTongue", 10;
- delitem "ConcentrationPotion", 5;
- set QUEST_MIRIAM, 3;
- mes "[Miriam]";
- mes "\"Good job! Now I have enough food to stay in this desert for days!\"";
- next;
- mes "\"Now, since you helped me, maybe I can teach you a basic skill, but only if you prove yourself to be a fast runner! Come back and talk to me when you think you are prepared to learn.\"";
- close;
-
-L_notenough:
- mes "[Miriam]";
- mes "\"Hey, you don't have all that I asked. Come back when you have everything.\"";
- close;
-
-L_teach:
- mes "[Miriam]";
- mes "\"Hmm... do you think you can learn the special Speed skill?\"";
- next;
- menu
- "Yes, I am prepared...", L_Prepared,
- "I am already fast.", L_notfast;
-
-L_Prepared:
- set @torso$, getitemlink(getequipid(equip_torso));
- set @weight, MaxWeight/Weight;
- if (@weight < 3)
- goto L_heavyweight;
- if (Agi < 60)
- goto L_slow;
- if (BaseLevel < 60)
- goto L_lowlevel;
- if (countitem("SteelShield") > 0
- || countitem("WarlordHelmet") > 0
- || countitem("CrusadeHelmet") > 0
- || countitem("WarlordPlate") > 0
- || countitem("KnightsHelmet") > 0
- || countitem("InfantryHelmet") > 0
- || countitem("ChainmailShirt") > 0
- || countitem("WarlordBoots") > 0
- || countitem("LightPlatemail") > 0
- || countitem("CandleHelmet") > 0)
- goto L_heavymetal;
- goto L_offer;
-
-L_heavyweight:
- mes "[Miriam]";
- mes "\"Wow... Why do you bring so many things with you? You must be carrying more than one third of your own weight! I won't teach you unless you get rid of some stuff... \"";
- close;
-
-L_heavymetal:
- mes "[Miriam]";
- mes "\"Hmm... I see... You want to be one of those lazy slow warriors... wasting all their strength carrying kilos of metal clothes... Why does no one see the great advantages of a beautiful, flexible, lightweight armor nowadays?\"";
- next;
- mes "\"Come back here when you get rid of this junk...\"";
- close;
-
-L_slow:
- mes "[Miriam]";
- mes "Oh, wait, wait... " +Agi+ " Agility? Are you serious? What do you do with all your Character points? Put them all to 'Strength'? Really... I don't even want to know... Come back here when you have a decent character points distribution!\"";
- close;
-
-L_lowlevel:
- mes "[Miriam]";
- mes "\"Come back here when you are old enough. I even wonder how you could get here so unexperienced as you are.\"";
- close;
-
-L_offer:
- mes "[Miriam]";
- mes "\"Hmm! You look great in these clothes! They look very comfortable too... And it seems like you are not carrying too much weight.\"";
- next;
- if (!(getskilllv(SKILL_POOL)))
- goto L_noskill;
- menu
- "Yes, I look really good in this.",L_TorsoNext;
-
-L_TorsoNext:
- mes "[Miriam]";
- mes "\"I see. I like the way you distributed your Character Points too... " +Agi+ " points to Agility! You really know how to prepare yourself for a good fight!\"";
- next;
- mes "\"Well... Even if you have a potential to be a good fighter, moving the way you do will not help. You need to be fast to avoid the monsters. \"";
- next;
- mes "\"So, if you pass a small test I can teach you a skill that will increase your walking speed! You will not be as fast as I am, but I am sure it will be useful.\"";
- next;
- menu
- "I'm in! What kind of test is it?",L_test,
- "I don't think I need more speed right now",L_GiveUp;
-
-L_test:
- mes "[Miriam]";
- mes "\"Great! The test is simple. You need to run as fast as you can from the place where I am sitting to the mountains and talk to Pachua, the chief. When you get there and talk to Pachua, he will send a special smoke signal to me, so I can know how much time it took for you to get there.\"";
- next;
- mes "\"If you make it in a good time, I will teach you the special speeding skill. If not, you can always try again. So, are you ready?\"";
- next;
- menu
- "Yes, let's do it!",L_LetsDoThis,
- "No, I need to stretch my muscles first!",L_stretch;
-
-L_LetsDoThis:
- close2;
- message strcharinfo(0), "Miriam quickly grabs your arm and pull you to the place where she is sitting.";
- // Warp the player to the place where the NPC is defined, so he can't cheat.
- warp "032-1",55,21;
- npctalk strnpcinfo(0), "Run " +strcharinfo(0)+ ", run!";
- set QUEST_MIRIAM, 5;
- set QUEST_MIRIAM_run, gettimetick(2);
- end;
-
-L_naked:
- mes "[Miriam]";
- mes "\"Hmmm?! Please put on some clothes before talking to me.\"";
- close;
-
-L_notfast:
- mes "[Miriam]";
- mes "\"Hah! If you think so...\"";
- close;
-
-L_noskill:
- mes "[Miriam]";
- mes "\"For a person like you, I could even teach a useful skill! Too bad you don't have the basic abillities to learn it...\"";
- close;
-
-L_GiveUp:
- mes "[Miriam]";
- mes "\"Oh, that is too bad... But if you change your mind, come back!\"";
- set QUEST_MIRIAM, 4;
- close;
-
-L_testoffer:
- mes "[Miriam]";
- mes "\"Are you ready for the test now?\"";
- next;
- menu
- "Yes!",L_test,
- "Not yet.",L_Close;
-
-L_Close:
- close;
-
-L_warning:
- mes "[Miriam]";
- mes "\"I know very well what you tried to do. I will not teach you the speed skill if you keep trying this kind of trick!\"";
- set QUEST_MIRIAM_run, 0;
- close;
-
-L_stretch:
- mes "[Miriam]";
- mes "\"Ok. Good idea... Stretching exercises can increase your flexibility and even prevent injuries!\"";
- set QUEST_MIRIAM, 4;
- close;
-
-L_wasting:
- mes "[Miriam]";
- mes "\"Don't waste your time talking to me! RUN and talk to Pachua!\"";
- close;
-
-L_expired:
- mes "[Miriam]";
- mes "\"You could not reach Pachua in time. Try again some other time.\"";
- set QUEST_MIRIAM_run, 0;
- close;
-
-L_checktime:
- set @miriam_run_secs, 0 - (QUEST_MIRIAM_run);
- if (@miriam_run_secs == 1)
- goto L_warning;
- if (@miriam_run_secs <= 10)
- goto L_expired;
- if (@miriam_run_secs <= 210)
- goto L_goodjob;
- goto L_tryagain;
-
-L_tryagain:
- mes "[Miriam]";
- mes "\"You needed " + @miriam_run_secs + " seconds to reach Pachua. It is not enough.\"";
- set QUEST_MIRIAM_run, 0;
- close;
-
-L_goodjob:
- mes "[Miriam]";
- mes "\"Great job! You needed " + @miriam_run_secs + " seconds to reach Pachua. Very impressive for a person like you.\"";
- next;
- mes "\"Now I need you to relax. Do NOT move. This teaching process can be painful sometimes.\"";
- next;
- mes "Miriam stares into your eyes and starts to scream some strange words very close to your ears.";
- next;
- mes "You feel dizzy and as soon as you move your head and look to the ground, Miriam pushes you hard, sending you meters away from her.";
- close2;
- warp "032-1",55,22;
- // free all used player variables. This can be done, since there is a conditional on the speedskill at the beginning.
- set QUEST_MIRIAM_run, 0;
- set QUEST_MIRIAM, 0;
- message strcharinfo(0), "[You gain 2500 experience points]";
- message strcharinfo(0), "[You learned Speed Skill]";
- setskill SKILL_SPEED, 1;
- getexp 2500, 0;
- close;
-
-L_fast:
- mes "[Miriam]";
- mes "\"I hope you make a good use of your new skill... Take care!\"";
- close;
-
-}
diff --git a/world/map/npc/006-1/pachua.txt b/world/map/npc/006-1/pachua.txt
deleted file mode 100644
index 16c12c5e..00000000
--- a/world/map/npc/006-1/pachua.txt
+++ /dev/null
@@ -1,238 +0,0 @@
-006-1,24,113,0|script|Pachua|143
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- set @halloween_npc_id, $@halloween_npc_pachua;
- callfunc "TrickOrTreat";
-
- set @LEATHER_PATCH_PRICE, 300;
- set @wants_leather_patch, QUEST_Forestbow_state & NIBBLE_4_MASK;
-
- if (QUEST_MIRIAM_run == -1) goto L_warp_cheat;
- if (QUEST_MIRIAM_run) goto L_smoke;
- goto L_Begin;
-
-L_Begin:
- mes "[Chief Pachua]";
- mes "";
- mes "\"How!\"";
- next;
-
- if (getequipid(equip_head) == 643 || getequipid(equip_head) == 644) goto L_WearingCowboy;
- if (getequipid(equip_legs) == 642) goto L_WearingChaps;
-
- mes "[Chief Pachua]";
- mes "";
- mes "\"For generations my tribe has been crafting special clothes out of different items.\"";
- next;
- goto L_Check_Shops;
-
-L_Check_Shops:
- if((countitem("JeansShorts") > 0 && countitem("SnakeSkin") > 9) && (countitem("FancyHat") > 0 && countitem("SnakeSkin") > 1)) goto L_Super_store;
- if(countitem("JeansShorts") > 0 && countitem("SnakeSkin") > 9) goto L_Chaps_store;
- if(countitem("FancyHat") > 0 && countitem("SnakeSkin") > 1) goto L_Cowboy_store;
-
- mes "[Chief Pachua]";
- mes "";
- mes "\"Maybe if you bring me the right materials I can make something for you.\"";
- next;
- if (@wants_leather_patch)
- menu
- "Wait, can you make a leather patch for me?", L_leather_patch,
- "OK, bye.", L_Close;
- goto L_Close;
-
-S_CheckStuff:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Let me see what you have there.\"";
- next;
- return;
-
-L_Super_store:
- callsub S_CheckStuff;
- mes "[Chief Pachua]";
- mes "";
- mes "\"Ahh you have lots of good items to work with.\"";
- mes "";
- mes "\"With them I can make you either";
- mes "a Cowboy hat or Snake Skin Chaps\"";
- next;
- if (@wants_leather_patch)
- menu
- "Cowboy hat, please.", L_BuyCowboy,
- "Snake Skin Chaps sound good.", L_BuyChaps,
- "Can you make a leather patch?", L_leather_patch,
- "Not now, maybe later.", L_NoDeal;
- menu
- "Cowboy hat, please.", L_BuyCowboy,
- "Snake Skin Chaps sound good.", L_BuyChaps,
- "Not now, maybe later.", L_NoDeal;
-
-L_Cowboy_store:
- callsub S_CheckStuff;
- mes "[Chief Pachua]";
- mes "";
- mes "\"To make you a Cowboy hat I will need:";
- mes "1 Fancy hat";
- mes "2 Snake skins";
- mes "5.000 GP\"";
- mes "";
- mes "\"Do we have a deal?\"";
- next;
- if (@wants_leather_patch)
- menu
- "Yes, that's fine.", L_BuyCowboy,
- "Can you make a leather patch?", L_leather_patch,
- "On second thought, maybe later.", L_NoDeal;
- menu
- "Yes, that's fine.", L_BuyCowboy,
- "On second thought, maybe later.", L_NoDeal;
-
-L_Chaps_store:
- callsub S_CheckStuff;
- mes "[Chief Pachua]";
- mes "";
- mes "\"To make you a pair of Snake Skin Chaps I will need:";
- mes "1 Jeans Shorts";
- mes "10 Snake skins";
- mes "10.000 GP\"";
- mes "";
- mes "\"Do we have a deal?\"";
- next;
- if (!@wants_leather_patch)
- menu
- "Yes, that's fine.", L_BuyChaps,
- "On second thought, maybe later.", L_NoDeal;
- menu
- "Yes, that's fine.", L_BuyChaps,
- "Can you make a leather patch?", L_leather_patch,
- "On second thought, maybe later.", L_NoDeal;
-
-L_BuyChaps:
- if (Zeny < 10000) goto L_NoMoney;
- if (countitem("JeansShorts") < 1) goto L_NoJeans;
- if (countitem("SnakeSkin") < 10) goto L_NoSkins;
- set Zeny, Zeny - 10000;
- delitem "SnakeSkin", 10;
- delitem "JeansShorts", 1;
- getitem "JeansChaps", 1;
- goto L_DealDone;
-
-L_BuyCowboy:
- if (Zeny < 5000) goto L_NoMoney;
- if (countitem("FancyHat") < 1) goto L_NoFancy;
- if (countitem("SnakeSkin") < 2) goto L_NoSkins;
- set Zeny, Zeny - 5000;
- delitem "SnakeSkin", 2;
- delitem "FancyHat", 1;
- set @temp,rand(2);
- if(@temp == 0) goto L_Cowboy_white;
- goto L_Cowboy_black;
-
-L_Cowboy_white:
- getitem "WhiteCowboyHat", 1;
- goto L_DealDone;
-
-L_Cowboy_black:
- getitem "BlackCowboyHat", 1;
- goto L_DealDone;
-
-L_leather_patch:
- mes "[Chief Pachua]";
- mes "";
- mes "\"If you just want a piece of leather, then yes, I can make that. Bring me a snake skin and " + @LEATHER_PATCH_PRICE + " GP.\"";
- next;
- menu
- "Here you are.", L_Next,
- "OK, I'll be back later.", L_Close,
- "That's too expensive!.", L_NoDeal;
-
-L_Next:
- if (countitem("SnakeSkin") < 1) goto L_NoSkins;
- if (Zeny < @LEATHER_PATCH_PRICE) goto L_NoMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("SnakeSkin") > 1) goto L_TooMany;
-
- set Zeny, Zeny - @LEATHER_PATCH_PRICE;
- delitem "SnakeSkin", 1;
- getitem "LeatherPatch", 1;
- goto L_DealDone;
-
-L_DealDone:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Here you are!\"";
- mes "";
- mes "\"Come back any time.\"";
- goto L_Close;
-
-L_NoDeal:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Alright, but you won't get a better deal anywhere else!\"";
- goto L_Close;
-
-L_NoMoney:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Oh dear, it seems you don't have enough money.\"";
- goto L_Close;
-
-L_NoJeans:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Oh dear, it seems you don't have enough jeans shorts.\"";
- goto L_Close;
-
-L_NoFancy:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Oh dear, it seems you don't have enough fancy hats.\"";
- goto L_Close;
-
-L_NoSkins:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Oh dear, it seems you don't have enough snake skins.\"";
- goto L_Close;
-
-L_WearingCowboy:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Ah, I see that you are wearing a hat made with the ancient methods of my tribe.\"";
- next;
- goto L_Check_Shops;
-
-L_WearingChaps:
- mes "[Chief Pachua]";
- mes "";
- mes "\"Ah, I see that you are wearing pants made by my tribe.\"";
- next;
- goto L_Check_Shops;
-
-L_Close:
- set @LEATHER_PATCH_PRICE, 0;
- set @wants_leather_patch, 0;
- set @month, 0;
- set @start_day, 0;
- set @end_day, 0;
- set @temp, 0;
- close;
-
-L_TooMany:
- mes "[Chief Pachua]";
- mes "";
- mes "\"You don't have room for a leather patch. Come back later.\"";
- goto L_Close;
-
-L_smoke:
- message strcharinfo(0), "Pachua quickly inhales from his pipe and releases a ring of smoke towards the sky!";
- callfunc "MiriamGoal";
- end;
-
-L_warp_cheat:
- message strcharinfo(0), "Pachua releases a ring of smoke towards the sky! But, by the look on his face, you can tell he is suspicious about your methods...";
- end;
-}
diff --git a/world/map/npc/006-1/spirit.txt b/world/map/npc/006-1/spirit.txt
deleted file mode 100644
index 4796121a..00000000
--- a/world/map/npc/006-1/spirit.txt
+++ /dev/null
@@ -1,295 +0,0 @@
-function|script|EarthImpTouch
-{
- if (getskilllv(SKILL_MAGIC)) goto L_message;
-
- mes "[Well]";
- mes "You hear noises from within the well.";
- return;
-
-L_message:
- set @Q_MASK, NIBBLE_0_MASK;
- set @Q_SHIFT, NIBBLE_0_SHIFT;
- set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
-
- // Set up SkillUp function
- set @SUP_id, SKILL_MAGIC_NATURE;
- set @SUP_name$, "Nature Magic";
- set @Q_STATUS_INITIAL, 0;
- set @Q_STATUS_ONQUEST, 1;
- set @Q_STATUS_STUDENT0, 2;
- set @Q_STATUS_STUDENT1, 3;
- set @Q_STATUS_STUDENT2, 4;
- set @Q_STATUS_STUDENT3, 5;
-
- if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) goto L_wb;
-
- mes "[Well]";
- mes "Something is inside that well, and now that you have turned your attention towards it, it seems to be talking to you!";
- next;
-
- mes "[Well]";
- mes "\"Hey! You there! Yes, I'm talking to you!\"";
- mes "That strange voice seems to be coming from inside your head!";
- next;
- menu
- "Who, me?", L_Next,
- "Leave me alone!", L_Close,
- "Aaah! I'm hearing voices!", L_silly_close;
-
-L_Next:
- mes "[Well]";
- mes "\"I'm in here, in the well, talking to you! If I'm not very mistaken, you are a powerful wizard-to-be, except that nobody has showed you how to properly do magic yet!\"";
- next;
- menu
- "Who are you?", L_Next1,
- "Aaaah! The voices are after me!", L_silly_close,
- "Whatever it is, I'm not interested.", L_Close;
-
-L_Next1:
- mes "[Earth Spirit]";
- mes "\"I'm an earth spirit; my name isn't important... all that matters is that I like you, and that I will help you become a powerful wizard if you help me. Just a fair deal, no more than that...\"";
- next;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_IMP;
- goto L_main;
-
-L_wb:
- mes "[Earth Spirit]";
- mes "\"It's excellent to see you again!\"";
- next;
- goto L_main;
-
-L_main:
- menu
- "How did you get trapped?", L_Q_trapped,
- "Can you teach me magic and spells?", L_Q_magic,
- "What do you know about...", L_Q,
- "Goodbye!", L_Close;
-
-L_Q_trapped:
- mes "[Earth Spirit]";
- mes "\"Oh, a wicked witch grew jealous of my power and locked me up in this well.\"";
- next;
- goto L_main;
-
-L_Q:
- mes "[Earth Spirit]";
- mes "\"Stop bothering me with your questions, will you? I'm trying to make you a powerful wizard, after all!\"";
- next;
- goto L_main;
-
-L_Q_magic:
- if (@Q_status == @Q_STATUS_ONQUEST) goto L_Q_magic_1;
- if (@Q_status == @Q_STATUS_STUDENT0) goto L_Q_magic_2;
- if (@Q_status == @Q_STATUS_STUDENT1) goto L_Q_magic_3;
- if (@Q_status == @Q_STATUS_STUDENT2) goto L_Q_magic_4;
-
- mes "[Earth Spirit]";
- mes "\"Good, good... that's the right attitude! Yes, I can teach you magic, but first you must prove that you are worthy to be my student!\"";
- next;
- mes "[Earth Spirit]";
- mes "\"North-east of here sits and old, dead tree. Well, not completely dead, not yet, but almost. It's nothing special. Well, maybe a little, but not really. I want you to cut off one of its branches.\"";
- next;
- menu
- "No way.", L_silly_close,
- "Sure.", L_Q_tree_ok,
- "Why that particular tree?", L_Next2;
-
-L_Next2:
- mes "[Earth Spirit]";
- mes "\"Oh, you and your questions! Well, that tree was a druid once, so the branches contain a bit of its lifeforce. And that's useful.\"";
- next;
- menu
- "Yuck.", L_silly_close,
- "Sure, whatever.", L_Q_tree_ok,
- "Isn't that like cutting off someone's arm?", L_Next3;
-
-L_Next3:
- mes "[Earth Spirit]";
- mes "\"Oooh... now come on! Don't be so sentimental. He turned himself into a tree, he can hardly expect everyone to leave him alone.\"";
- next;
- mes "[Earth Spirit]";
- mes "\"Who knows if he can even feel anything anymore? I'm sure he can't, being wooden and all. Besides, it's only a measly tree. Not like I'm asking you to cut him down!.\"";
- next;
- menu
- "No way.", L_silly_close,
- "Alright, that makes sense.", L_Q_tree_ok;
-
-L_Q_tree_ok:
- mes "[Earth Spirit]";
- mes "\"Good, good, good! Yes, that will be very good! So, come back when you have the branch. Oh, and bring 100,000 GP, too, as an enrollment fee.\"";
- set @Q_status, @Q_STATUS_ONQUEST;
- callsub S_update_var;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_CUTTREE;
- next;
- goto L_main;
-
-L_Q_magic_1:
- mes "[Earth Spirit]";
- mes "\"Yes, yes, if you bring me the branch and the money, then I will!\"";
- next;
- menu
- "Here are the branch and the money.", L_Next4,
- "How much money did you want again?", L_Q_tree_howmuch,
- "How can I cut it?", L_Q_tree_how,
- "Where was the tree again?", L_Q_tree_where,
- "What is that tree?", L_Q_tree_what;
-
-L_Next4:
- if (countitem("DruidTreeBranch") < 1) goto L_Q_tree_none;
- if (!(MAGIC_FLAGS & MFLAG_DID_CUTTREE)) goto L_Q_tree_dry;
- if (Zeny < 100000) goto L_Q_tree_nomoney;
-
- set Zeny, Zeny - 100000;
- delitem "DruidTreeBranch", 1;
- mes "[Earth Spirit]";
- mes "Following the earth sprite's instructions, you throw branch and GP into the well.";
- next;
- mes "[Earth Spirit]";
- mes "\"Well done, very well done! Consider yourself my student now.\"";
- set @SUP_xp, 5000;
- set @SUP_lvl, 2;
- callfunc "SkillUp";
- next;
- set @Q_status, @Q_STATUS_STUDENT0;
- callsub S_update_var;
- goto L_main;
-
-L_Q_magic_finish:
- mes "[1000 experience points]";
- set @Q_status, @Q_status + 1;
- callsub S_update_var;
- getexp 1000,0;
- next;
- goto L_main;
-
-L_Q_magic_2:
- mes "[Earth Spirit]";
- mes "\"Yes, of course! For just 20,000 GP I will teach you your first spell!\"";
- next;
- menu
- "Here you are.", L_Next5,
- "No.", L_main;
-
-L_Next5:
- if (Zeny < 20000) goto L_no20k;
-
- set Zeny, Zeny - 20000;
- mes "[Earth Spirit]";
- mes "\"Kekeke... excellent! Yes, here goes your first spell, the flying backpack! If you are overloaded, it will take the load off your shoulders.\"";
- next;
- mes "[Earth Spirit]";
- mes "\"Take a cocoon, living or dead, and suffuse it in magic. Whisper '" + get(.invocation$, "flying-backpack") + "', and feel it float!\"";
- goto L_Q_magic_finish;
-
-L_Q_magic_3:
- mes "[Earth Spirit]";
- mes "\"But yes, yes! Only 20,000 GP, once again, and I will teach you a far more useful spell!\"";
- next;
- menu
- "Here you are.", L_Next6,
- "No.", L_main;
-
-L_Next6:
- if (Zeny < 20000) goto L_no20k;
- set Zeny, Zeny - 20000;
- mes "[Earth Spirit]";
- mes "\"Yeees, good! This one is a protection spell, making your skin harder. You need a hard spike for it, though. Hold that spike in your hands, and focus on it.\"";
- next;
- mes "[Earth Spirit]";
- mes "\"Next, say '" + get(.invocation$, "protect") + "', and feel your skin grow rigid! Very useful against stings and stabs and pokes and pricks and that sort of stuff.\"";
- goto L_Q_magic_finish;
-
-L_Q_magic_4:
- mes "[Earth Spirit]";
- mes "\"Naah, you're too weak now! Come back later when you have grown!\"";
- next;
- goto L_main;
-
-L_no20k:
- mes "[Earth Spirit]";
- mes "\"You can't pay me 20,000 if you don't have that much!\"";
- next;
- goto L_main;
-
-L_Q_tree_none:
- mes "[Earth Spirit]";
- mes "\"Where is your branch?\"";
- next;
- goto L_main;
-
-L_Q_tree_dry:
- mes "[Earth Spirit]";
- mes "\"That won't do. This branch is completely dead; you'll have to get another.\"";
- next;
- goto L_main;
-
-L_Q_tree_nomoney:
- mes "[Earth Spirit]";
- mes "\"No, you don't have enough money! Come back when you have 100,000.\"";
- next;
- goto L_main;
-
-L_Q_tree_howmuch:
- mes "[Earth Spirit]";
- mes "\"It's only 100,000 GP to become my student.\"";
- next;
- goto L_main;
-
-L_Q_tree_how:
- mes "[Earth Spirit]";
- mes "\"Oh... right, the tree might be protected. Only a bone knife will cut that. No idea where you can find one, but I'm sure you will manage!\"";
- next;
- goto L_main;
-
-L_Q_tree_where:
- mes "[Earth Spirit]";
- mes "\"North-east of here.\"";
- next;
- goto L_main;
-
-L_Q_tree_what:
- mes "[Earth Spirit]";
- mes "\"Just some silly druid who turned himself into a tree; nothing important.\"";
- next;
- goto L_main;
-
-L_silly_close:
- if (MAGIC_FLAGS & MFLAG_KNOWS_IMP)
- mes "[Earth Spirit]";
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP))
- mes "[Well]";
- mes "\"Fool.\"";
- goto L_Close;
-
-L_Close:
- set @Q_MASK, 0;
- set @Q_SHIFT, 0;
- set @Q_status, 0;
- set @SUP_id, 0;
- set @SUP_name$, "";
- set @SUP_xp, 0;
- set @SUP_lvl, 0;
- set @Q_STATUS_INITIAL, 0;
- set @Q_STATUS_ONQUEST, 0;
- set @Q_STATUS_STUDENT0, 0;
- set @Q_STATUS_STUDENT1, 0;
- set @Q_STATUS_STUDENT2, 0;
- set @Q_STATUS_STUDENT3, 0;
- return;
-
-S_update_var:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
-
-006-1,67,68,0|script|#EarthImp0#_M|400
-{
- callfunc "EarthImpTouch";
- close;
-}
-
-006-1,68,68,0|script|#EarthImp1#_M|400
-{
- callfunc "EarthImpTouch";
- close;
-}
diff --git a/world/map/npc/006-1/traveler.txt b/world/map/npc/006-1/traveler.txt
deleted file mode 100644
index 7c84e040..00000000
--- a/world/map/npc/006-1/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-006-1,25,95,0|script|Rhutan the Traveler|103
-{
- set @npcname$, "Rhutan";
- set @NpcTravelBit, $@pachua_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/006-1/tree.txt b/world/map/npc/006-1/tree.txt
deleted file mode 100644
index 57209d24..00000000
--- a/world/map/npc/006-1/tree.txt
+++ /dev/null
@@ -1,162 +0,0 @@
-function|script|QuestTreeTrigger
-{
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
-
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
- set @Q_status_lower, @Q_status & 3;
- set @Q_status, (@Q_status & 12) >> 2;
-
- if (@Q_status & @flag) goto L_Close; // already did that
-
- if (@flag == 2) goto L_hug;
- goto L_cont;
-
-L_cont:
- set @Q_status, @Q_status | @flag;
- callsub S_update_var;
-
- if (@Q_status != 3) goto L_Close;
-
- if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_Close;
-
- mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger.";
- mes "[20000 experience points]";
- getexp 20000, 0;
- set @value, 15;
- callfunc "QuestSagathaHappy";
- goto L_Close;
-
-L_hug:
- mes "You hug the tree.";
- next;
- goto L_cont;
-
-L_Close:
- set @Q_MASK, 0;
- set @Q_SHIFT, 0;
- set @Q_status, 0;
- set @Q_status_lower, 0;
- set @Q_wr_status, 0;
- set @value, 0;
- return;
-
-S_update_var:
- set @Q_wr_status, (@Q_status << 2) | @Q_status_lower;
- set QUEST_MAGIC, (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT));
- return;
-}
-
-function|script|QuestTreeTouch
-{
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
-
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
- set @Q_status, (@Q_status & 12) >> 2;
-
- if (@Q_status == 3) goto L_happy;
-
- if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut;
-
- if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_water;
-
- if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0) //i.e., both are set
- goto L_both;
-
- mes "[Dying Tree]";
- mes "You see a strange tree.";
- goto L_Close;
-
-L_cut:
- mes "[Dying Tree]";
- mes "This must be the tree that the earth spirit was referring to.";
- next;
- menu
- "Cut off a branch", L_do_cut,
- "Leave it alone", L_Close;
-
-L_water:
- mes "[Dying Tree]";
- mes "This must be the druid tree.";
- next;
- menu
- "Water the tree", L_givewater,
- "Kiss tree", L_kiss,
- "Leave it alone", L_Close;
-
-L_both:
- mes "[Dying Tree]";
- mes "This must be the druid tree that Wyara and the earth spirit were talking about.";
- next;
- menu
- "Water the tree", L_givewater,
- "Kiss tree", L_kiss,
- "Cut off a branch", L_do_cut,
- "Leave it alone", L_Close;
-
-L_givewater:
- if (countitem("BottleOfWater") < 1) goto L_no_water;
- delitem "BottleOfWater", 1;
- getitem "EmptyBottle", 1;
-
- mes "[Dying Tree]";
- mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect.";
- goto L_Close;
-
-L_no_water:
- mes "[Dying Tree]";
- mes "You don't have any water.";
- goto L_Close;
-
-L_kiss:
- mes "[Dying Tree]";
- mes "You pluck out a splinter from your lip.";
- mes "Somehow, you don't think that this helped.";
- goto L_Close;
-
-L_do_cut:
- if (countitem("BoneKnife") < 1) goto L_no_boneknife;
-
- if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut;
-
- mes "[Dying Tree]";
- mes "You find a suitable branch and put your bone knife in position.";
- mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you...";
- mes "Do you want to continue cutting?";
- next;
- menu
- "Nah... better not.", L_Close,
- "Yes, let's cut!", L_really_cut;
-
-L_really_cut:
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_DID_CUTTREE;
- getitem "DruidTreeBranch", 1;
- mes "[Dying Tree]";
- mes "You cut off a branch from the tree.";
- mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand...";
- goto L_Close;
-
-L_no_boneknife:
- mes "[Dying Tree]";
- mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?";
- goto L_Close;
-
-L_happy:
- mes "[Druid Tree]";
- mes "The tree looks younger and healthier now.";
- goto L_Close;
-
-L_Close:
- set @Q_MASK, 0;
- set @Q_SHIFT, 0;
- set @Q_status, 0;
- return;
-
-}
-
-006-1,82,59,0|script|#DruidTree0#_M|400
-{
- callfunc "QuestTreeTouch";
- close;
-}
diff --git a/world/map/npc/006-2/_import.txt b/world/map/npc/006-2/_import.txt
deleted file mode 100644
index 2d22f31c..00000000
--- a/world/map/npc/006-2/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 006-2: Pachua's Village
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 006-2
-npc: npc/006-2/_mobs.txt
-npc: npc/006-2/_nodes.txt
-npc: npc/006-2/_warps.txt
-npc: npc/006-2/mapflags.txt
-npc: npc/006-2/npcs.txt
-npc: npc/006-2/shops.txt
diff --git a/world/map/npc/006-2/_mobs.txt b/world/map/npc/006-2/_mobs.txt
deleted file mode 100644
index e3fe486b..00000000
--- a/world/map/npc/006-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pachua's Village mobs
-
diff --git a/world/map/npc/006-2/_nodes.txt b/world/map/npc/006-2/_nodes.txt
deleted file mode 100644
index ae0f0147..00000000
--- a/world/map/npc/006-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pachua's Village nodes
-
-// (no nodes)
diff --git a/world/map/npc/006-2/_warps.txt b/world/map/npc/006-2/_warps.txt
deleted file mode 100644
index 1889b16e..00000000
--- a/world/map/npc/006-2/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Pachua's Village warps
-
-006-2,67,65|warp|-1,-1,006-1,23,101
-006-2,65,73|warp|-1,-1,006-1,21,109
-006-2,48,44|warp|-1,-1,006-1,23,86
-006-2,58,44|warp|-1,-1,006-1,33,86
diff --git a/world/map/npc/006-2/mapflags.txt b/world/map/npc/006-2/mapflags.txt
deleted file mode 100644
index a1ac020d..00000000
--- a/world/map/npc/006-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-006-2|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/006-2/npcs.txt b/world/map/npc/006-2/npcs.txt
deleted file mode 100644
index cb44a066..00000000
--- a/world/map/npc/006-2/npcs.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-// Pachua's Tribe
-
-006-2,49,25,0|script|Falkurn|178
-{
- set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
- if ((@run == 1) && (QL_KYLIAN == 13))
- goto L_Deliver;
- goto L_Start;
-
-L_Deliver:
- menu
- "I have a delivery for you", L_Delivery;
-
-L_Delivery:
- mes "[Falkurn]";
- mes "\"Good now we can get to work on making some more leather goods.\"";
- set QL_KYLIAN, 14;
- goto L_Close;
-
-L_Start:
- mes "[Falkurn]";
- mes "\"Greetings traveler, what wind brings you to our door?\"";
- menu
- "I'm looking for exotic goods.", L_Shops,
- "I need some leatherwork done.", L_Pachua,
- "Just Looking Around.", L_Close;
-
-L_Shops:
- mes "\"My Wife, Ardra, tends the Kitchen see her for food and drink.\"";
- mes "\"She can be found in the West Cave.\"";
- next;
- mes "\"Reathe trades many of our leather goods to exotic lands.\"";
- mes "\"She always has the most interesting finds.\"";
- mes "\"She can be found in the East Cave.\"";
- goto L_Close;
-
-L_Pachua:
- mes "\"Our Chief can be found by going through the southern most cave.\"";
- mes "\"He can help you with any leatherwork you may need done.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-006-2,80,25,0|script|Darug|178
-{
- mes "[Darug]";
- mes "\"We are the all thats left of the natives that used to wander the plains.\"";
- mes "\"Years of war between the various 'Civilized' nations drained the natural resources.\"";
- next;
- mes "\"The waters have begun to run dry.\"";
- mes "\"All manner of beasts are getting more agressive.\"";
- mes "\"The Mana has been poison by Dark Magic.\"";
- next;
- mes "\"Even now, I sense a evil presense nearby.\"";
- mes "\"I can feel it lying deep underground.\"";
- mes "\"Gnawing at the underbelly of Tonori.\"";
- next;
- mes "\"We believe it's one of the evils Nu'rem let loose to destroy The Mana\"";
- mes "\"We have been searching, but have not been able to locate the source.\"";
- mes "\"Maybe our scouts will return soon with the answers.\"";
- close;
-}
-
-006-2,34,64,0|script|Meluna|179
-{
- mes "[Meluna]";
- mes "\"Greetings traveler, how blows the wind?\"";
- goto L_Main;
-
-L_Main:
- menu
- "Um... What?", L_Explain,
- "Gentle.", L_Heal,
- "Strong.", L_Close;
-
-L_Explain:
- mes "\"Ahh sorry, you are not familiar with our customs.\"";
- mes "\"The Mana was made into the 4 main elements by The Gods; Jande made Fire, Nu'rem made Earth, Tal made Air, and, Di'tal made Water.\"";
- mes "\"It was Tal that gives us our first and last breathe.\"";
- next;
- mes "\"When we ask you how 'blows the wind?'\"";
- mes "\"We mean how are your feeling?\"";
- next;
- mes "\"We typically respond with a strength of wind; normally Gentle or Strong\"";
- goto L_Main;
-
-L_Heal:
- if (BaseLevel > 70)
- goto L_NoHeal;
- heal 1000,100;
- goto L_Close;
-
-L_NoHeal:
- mes "\"I already sense the power of the Gods carrying you.\"";
- mes "\"Any wounds you have are beyond my power to fix.\"";
- goto L_Close;
-
-L_Close:
- mes "\"May Tal carry you on their back.\"";
- close;
-}
diff --git a/world/map/npc/006-2/shops.txt b/world/map/npc/006-2/shops.txt
deleted file mode 100644
index 0ad8a506..00000000
--- a/world/map/npc/006-2/shops.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// Exotic Trader
-// Toy Sabre - 10mil, Cap - 20mil, High Priest Crown - 30mil, Monster Skull Helmet - 30mil
-006-2,81,36,0|shop|Reathe|179,ToySabre:*5,Cap:*5,HighPriestCrown:*5,MonsterSkullHelmet:*5
-
-006-2,30,35,0|shop|Ardra|179,CactusDrink:*1,CactusPotion:*1,BottleOfWater:*1,RoastedMaggot:*1
diff --git a/world/map/npc/006-3/_import.txt b/world/map/npc/006-3/_import.txt
deleted file mode 100644
index 8e52641e..00000000
--- a/world/map/npc/006-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 006-3: Desert Mountain Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 006-3
-npc: npc/006-3/_mobs.txt
-npc: npc/006-3/_nodes.txt
-npc: npc/006-3/_warps.txt
-npc: npc/006-3/mapflags.txt
diff --git a/world/map/npc/006-3/_mobs.txt b/world/map/npc/006-3/_mobs.txt
deleted file mode 100644
index 93d6102c..00000000
--- a/world/map/npc/006-3/_mobs.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mountain Cave mobs
-
-006-3,108,25,36,8|monster|MountainSnake|1026,3,15000ms,90000ms
-006-3,99,50,14,13|monster|MountainSnake|1026,1,15000ms,90000ms
-006-3,89,63,14,11|monster|MountainSnake|1026,2,15000ms,90000ms
-006-3,86,90,29,9|monster|MountainSnake|1026,3,15000ms,90000ms
-006-3,109,78,12,9|monster|MountainSnake|1026,1,15000ms,90000ms
-006-3,119,117,15,14|monster|MountainSnake|1026,4,15000ms,90000ms
-006-3,106,64,14,17|monster|MountainSnake|1026,3,15000ms,90000ms
-006-3,65,71,31,35|monster|MountainSnake|1026,10,15000ms,90000ms
-006-3,57,105,27,30|monster|MountainSnake|1026,8,15000ms,90000ms
-006-3,73,120,16,5|monster|MountainSnake|1026,3,15000ms,90000ms
-006-3,117,54,11,9|monster|MountainSnake|1026,4,15000ms,90000ms
-006-3,123,62,10,5|monster|MountainSnake|1026,3,15000ms,90000ms
-006-3,72,36,24,25|monster|MountainSnake|1026,10,15000ms,90000ms
-006-3,84,27,5,7|monster|MountainSnake|1026,1,15000ms,90000ms
-006-3,40,40,36,28|monster|MountainSnake|1026,8,15000ms,90000ms
-006-3,34,60,27,11|monster|MountainSnake|1026,3,15000ms,90000ms
-006-3,87,74,26,9|monster|RedSlime|1008,3,15000ms,10000ms
-006-3,120,76,9,21|monster|RedSlime|1008,3,15000ms,10000ms
-006-3,101,85,14,8|monster|RedSlime|1008,4,15000ms,10000ms
-006-3,44,124,29,7|monster|MountainSnake|1026,5,15000ms,90000ms
-006-3,90,125,17,7|monster|MountainSnake|1026,5,15000ms,90000ms
-006-3,30,88,13,20|monster|RedSlime|1008,3,90000ms,30000ms
-006-3,122,98,10,16|monster|Spider|1012,3,90000ms,30000ms
-006-3,112,104,7,13|monster|Spider|1012,1,90000ms,30000ms
-006-3,103,108,9,9|monster|Spider|1012,1,90000ms,30000ms
-006-3,83,107,13,14|monster|YellowSlime|1007,6,90000ms,30000ms
diff --git a/world/map/npc/006-3/_nodes.txt b/world/map/npc/006-3/_nodes.txt
deleted file mode 100644
index c039867e..00000000
--- a/world/map/npc/006-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mountain Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/006-3/_warps.txt b/world/map/npc/006-3/_warps.txt
deleted file mode 100644
index 7ecb5a5b..00000000
--- a/world/map/npc/006-3/_warps.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Desert Mountain Cave warps
-
-006-3,40,26|warp|-1,-1,006-1,40,28
-006-3,55,27|warp|-1,-1,006-1,55,29
-006-3,62,30|warp|-1,-1,006-1,62,32
-006-3,86,24|warp|-1,-1,006-1,86,26
-006-3,91,24|warp|-1,-1,006-1,91,26
-006-3,122,24|warp|-1,-1,006-1,114,24
-006-3,114,49|warp|-1,-1,006-1,114,51
-006-3,104,44|warp|-1,-1,006-1,98,48
-006-3,77,44|warp|-1,-1,006-1,77,46
-006-3,60,68|warp|-1,-1,006-1,60,60
-006-3,92,63|warp|-1,-1,006-1,92,65
-006-3,112,74|warp|-1,-1,006-1,112,76
-006-3,110,56|warp|-1,-1,006-1,102,55
-006-3,125,59|warp|-1,-1,006-1,117,59
-006-3,74,90|warp|-1,-1,006-1,74,92
-006-3,51,90|warp|-1,-1,006-1,51,92
-006-3,38,121|warp|-1,-1,006-1,38,123
-006-3,79,120|warp|-1,-1,006-1,83,119
-006-3,125,66|warp|-1,-1,005-3,85,52
-006-3,89,46|warp|-1,-1,005-3,63,49
diff --git a/world/map/npc/006-3/mapflags.txt b/world/map/npc/006-3/mapflags.txt
deleted file mode 100644
index 9fb55277..00000000
--- a/world/map/npc/006-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-006-3|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/007-1/_import.txt b/world/map/npc/007-1/_import.txt
deleted file mode 100644
index f6f86a36..00000000
--- a/world/map/npc/007-1/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 007-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 007-1
-npc: npc/007-1/_mobs.txt
-npc: npc/007-1/_nodes.txt
-npc: npc/007-1/_warps.txt
-npc: npc/007-1/mapflags.txt
-npc: npc/007-1/voltain.txt
diff --git a/world/map/npc/007-1/_mobs.txt b/world/map/npc/007-1/_mobs.txt
deleted file mode 100644
index e160e414..00000000
--- a/world/map/npc/007-1/_mobs.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-007-1,0,0,0,0|monster|PinkFlower|1014,17,100000ms,30000ms
-007-1,0,0,0,0|monster|SpikyMushroom|1019,15,100000ms,30000ms
-007-1,0,0,0,0|monster|Snail|1041,25,100000ms,30000ms
-007-1,0,0,0,0|monster|MauvePlant|1029,3,270000ms,180000ms
-007-1,0,0,0,0|monster|GambogePlant|1031,1,2700000ms,1800000ms
-007-1,0,0,0,0|monster|Silkworm|1035,2,60000ms,30000ms
-007-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-007-1,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms
-007-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
diff --git a/world/map/npc/007-1/_nodes.txt b/world/map/npc/007-1/_nodes.txt
deleted file mode 100644
index 12c08221..00000000
--- a/world/map/npc/007-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-// (no nodes)
diff --git a/world/map/npc/007-1/_warps.txt b/world/map/npc/007-1/_warps.txt
deleted file mode 100644
index 236737c1..00000000
--- a/world/map/npc/007-1/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-007-1,20,54|warp|-1,0,010-1,130,53
-007-1,69,21|warp|2,-1,008-1,78,101
-007-1,122,20|warp|1,-1,008-1,132,98
-007-1,73,76|warp|-1,-1,007-2,34,34
diff --git a/world/map/npc/007-1/mapflags.txt b/world/map/npc/007-1/mapflags.txt
deleted file mode 100644
index a32e6b44..00000000
--- a/world/map/npc/007-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-007-1|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/007-1/voltain.txt b/world/map/npc/007-1/voltain.txt
deleted file mode 100644
index 0366ea5c..00000000
--- a/world/map/npc/007-1/voltain.txt
+++ /dev/null
@@ -1,405 +0,0 @@
-// # NPC Name: Voltain
-// # LEAD AUTHOR: Pjotr Orial
-// # AUTHORS: MrDudle, tarq, Salmondine, Jenalya, Pjotr Orial
-// # REVIEWERS: Jenalya
-// #
-// # Basic Idea: A Person with lots of dark minds requires different stuff.
-// # Basically he tries to figure out, how to poison moobous, since he doesn't like the nature at all
-// #
-// # The variables are not attached to a player but to an npc variable, so it is more or less random, which
-// # quest comes up, when a player asks him.
-// #
-// # used Variables: global variable $@VOLTAIN_state
-// # 0: bring bottles
-// # 1: bring black scorpion stinger
-// # 2: bring bug legs
-// # 3: bring another black scorpion stinger
-// # 4: bring mauve herbs
-// # 5: bring raw logs
-// # 6: bring red apples
-// # 7: bring cobalt herbs
-// # 8: bring snake tongues
-// # 9: bring alizarin herbs
-// # 10: bring steak
-// # 11: bring arrows
-// # 12: bring gamboge herbs
-// # 13: bring chocolate cake
-
-007-1,37,21,0|script|Voltain|103
-{
- set @BOTTLE_NEEDED, 3;
- set @BOTTLE_REWARD_XP, 100;
- set @BOTTLE_REWARD_GOLD, 450;
-
- set @BLACK_SC_ST_NEEDED, 5;
- set @BLACK_SC_ST_REWARD_XP, 500;
- set @BLACK_SC_ST_REWARD_GOLD, 250;
-
- set @BUGLEG_NEEDED, 10;
- set @BUGLEG_REWARD_XP, 200;
- set @BUGLEG_REWARD_GOLD, 150;
-
- set @HERBS_NEEDED, 7;
- set @HERBS_REWARD_XP, 200;
- set @HERBS_REWARD_GOLD, 250;
-
- set @RAWLOG_NEEDED, 5;
- set @RAWLOG_REWARD_XP, 330;
- set @RAWLOG_REWARD_GOLD, 300;
-
- set @REDAPPLE_NEEDED, 7;
- set @REDAPPLE_REWARD_XP, 330;
- set @REDAPPLE_REWARD_GOLD, 300;
-
- set @STEAK_NEEDED, 2;
- set @STEAK_REWARD_XP, 330;
- set @STEAK_REWARD_GOLD, 280;
-
- set @ARROW_NEEDED, 25;
- set @ARROW_REWARD_XP, 330;
- set @ARROW_REWARD_GOLD, 100;
-
- set @SNAKETONGUE_NEEDED, 3;
- set @SNAKETONGUE_REWARD_XP, 330;
- set @SNAKETONGUE_REWARD_GOLD, 100;
-
- set @CHOCOLATECAKE_NEEDED, 3;
- set @CHOCOLATECAKE_REWARD_XP, 330;
- set @CHOCOLATECAKE_REWARD_GOLD, 180;
-
- if ($@VOLTAIN_state == 1) goto L_state1;
- if ($@VOLTAIN_state == 2) goto L_state2;
- if ($@VOLTAIN_state == 3) goto L_state3;
- if ($@VOLTAIN_state == 4) goto L_state4;
- if ($@VOLTAIN_state == 5) goto L_state5;
- if ($@VOLTAIN_state == 6) goto L_state6;
- if ($@VOLTAIN_state == 7) goto L_state7;
- if ($@VOLTAIN_state == 8) goto L_state8;
- if ($@VOLTAIN_state == 9) goto L_state9;
- if ($@VOLTAIN_state == 10) goto L_state10;
- if ($@VOLTAIN_state == 11) goto L_state11;
- if ($@VOLTAIN_state == 12) goto L_state12;
- if ($@VOLTAIN_state == 13) goto L_state13;
-// default: trap through to L_state0!
- goto L_state0;
-
-L_state0:
- mes "[Voltain]";
- mes "\"What are you doing bothering me? Can't you see I'm busy! Oh, I'm sorry, I thought you were my assistant. Never mind that... would you care to help me?\"";
- next;
- menu
- "Sure I do!", L_Next,
- "No, you creep me out.", L_NOHELP;
-
-L_Next:
- mes "[Voltain]";
- mes "\"I'm working on a very special potion. I need some empty bottles to keep the ingredients in. Care to go find me " + @BOTTLE_NEEDED + " empty bottles?!\"";
- next;
- menu
- "I've got the bottles.", L_Next1,
- "I don't feel like helping you get garbage...", L_Close;
-
-L_Next1:
- if (countitem("EmptyBottle") < @BOTTLE_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "EmptyBottle", @BOTTLE_NEEDED;
- set Zeny, Zeny + @BOTTLE_REWARD_GOLD;
- getexp @BOTTLE_REWARD_XP, 0;
- set $@VOLTAIN_state, 1;
- mes "\"Thanks for the bottles. Much easier to carry liquid in them.\"";
- goto L_Close;
-
-L_state1:
- mes "[Voltain]";
- mes "\"I'm making a potion that requires lots of venom. I'm in need of " + @BLACK_SC_ST_NEEDED + " black scorpion stingers.\"";
- next;
-
- menu
- "I've got the stingers!", L_Next2,
- "I'll go search for them.", L_Close;
-
-L_Next2:
- mes "[Voltain]";
- if (countitem("BlackScorpionStinger") < @BLACK_SC_ST_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "BlackScorpionStinger", @BLACK_SC_ST_NEEDED;
- set Zeny, Zeny + @BLACK_SC_ST_REWARD_GOLD;
- getexp @BLACK_SC_ST_REWARD_XP, 0;
- set $@VOLTAIN_state, 2;
- mes "\"Well, since you went to the trouble of getting me these here's a little something for your time...\"";
- goto L_Close;
-
-L_state2:
- mes "[Voltain]";
- mes "\"Care to to help me with my potion? I need " + @BUGLEG_NEEDED + " bug legs so that I can thicken the potion.\"";
- next;
- menu
- "I've got the bug legs.", L_Next3,
- "I'd rather not carry around dead bugs for you.", L_NOHELP ;
-
-L_Next3:
- mes "[Voltain]";
- if (countitem("BugLeg") < @BUGLEG_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "BugLeg", @BUGLEG_NEEDED;
- set Zeny, Zeny + @BUGLEG_REWARD_GOLD;
- getexp @BUGLEG_REWARD_XP, 0;
- set $@VOLTAIN_state, 3;
- mes "\"Great! My potion is ready to poison the moub...I mean cure scorpion stings. \"";
- goto L_Close;
-
-L_state3:
- mes "[Voltain]";
- mes "\"I find myself in need of a black scorpion stinger... Damn mouboo are hard to kill...forget you heard that.\"";
- next;
- menu
- "Here's the stinger.", L_Next4,
- "I DID HEAR THAT! I will not help you KILL mouboo!", L_Close;
-
-L_Next4:
- mes "[Voltain]";
- if (countitem("BlackScorpionStinger") < 1)
- goto L_NOT_ENOUGH;
- delitem "BlackScorpionStinger", 1;
- getexp @BLACK_SC_ST_REWARD_XP, 0;
- set $@VOLTAIN_state, 4;
- mes "\"Great! Now I can really kill that monster!\"";
- goto L_Close;
-
-L_state4:
- mes "[Voltain]";
- mes "\"I need to thicken a veno.. Oh, a potion actually. I want to try mauve herbs for that, so can you bring me " + @HERBS_NEEDED + ", please?\"";
- next;
- menu
- "Here are the herbs.", L_Next5,
- "So you want to do a venom? I will not help you!", L_Close;
-
-L_Next5:
- mes "[Voltain]";
- if (countitem("MauveHerb") < @HERBS_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "MauveHerb", @HERBS_NEEDED;
- getexp @HERBS_REWARD_XP, 0;
- set Zeny, Zeny + @HERBS_REWARD_GOLD;
- set $@VOLTAIN_state, 5;
- mes "\"Great! Now I can thicken the potion! I will try directly.\"";
- goto L_Close;
-
-L_state5:
- mes "[Voltain]";
- mes "\"Hello I am looking for " + @RAWLOG_NEEDED + " raw logs, maybe you could help me getting some? I want to try to build a mouboo trap.. Uhm actually no! I want to build a device to destroy these traps. So can you help me?\"";
- next;
- menu
- "Here are the raw logs.", L_Next6,
- "So you want build traps for mouboos? NO WAY!", L_Close;
-
-L_Next6:
- mes "[Voltain]";
- if (countitem("RawLog") < @RAWLOG_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "RawLog", @RAWLOG_NEEDED;
- getexp @RAWLOG_REWARD_XP, 0;
- set Zeny, Zeny + @RAWLOG_REWARD_GOLD;
- set $@VOLTAIN_state, 6;
- mes "\"Great! Now I can thicken the potion! I will try directly.\"";
- goto L_Close;
-
-L_state6:
- mes "[Voltain]";
- mes "\"Hello I am looking for " + @REDAPPLE_NEEDED + " red apples, maybe I can inject some venoms.. DOH not this again! Of course I meant a strength potion. Did you hear about the new potions from Caul? He is a pretty good alchimist. He can do strength potions, can't he?\"";
- next;
- menu
- "Here are the red apples.", L_Next7,
- "I am not sure...", L_Close;
-
-L_Next7:
- mes "[Voltain]";
- if (countitem("RedApple") < @REDAPPLE_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "RedApple", @REDAPPLE_NEEDED;
- getexp @REDAPPLE_REWARD_XP, 0;
- set Zeny, Zeny + @REDAPPLE_REWARD_GOLD;
- set $@VOLTAIN_state,7;
- mes "\"Very well, this will be useful.\"";
- goto L_Close;
-
-L_state7:
- mes "[Voltain]";
- mes "\"I need to thicken a veno.. Oh, a potion actually. Cobalt herbs might be good for that, so can you bring me " + @HERBS_NEEDED + ", please?\"";
- next;
- menu
- "Here are the herbs.", L_Next8,
- "So you want to do a venom? I will not help you!", L_Close;
-
-L_Next8:
- mes "[Voltain]";
- if (countitem("CobaltHerb") < @HERBS_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "CobaltHerb", @HERBS_NEEDED;
- getexp @HERBS_REWARD_XP, 0;
- set Zeny, Zeny + @HERBS_REWARD_GOLD;
- set $@VOLTAIN_state, 8;
- mes "\"Great! Now I can go on with the ven- the experiments for the welfare of humanity, I mean.\"";
- goto L_Close;
-
-L_state8:
- mes "[Voltain]";
- mes "\"I am in need of snake tongues. They can help me getting very strong venom extracts. So I would like you to bring me " + @SNAKETONGUE_NEEDED + " snake tongues.\"";
- next;
- menu
- "Sure, here you go!", L_Next9,
- "Maybe you will find someone else, I got stuff to do on my own!", L_Close;
-
-L_Next9:
- mes "[Voltain]";
- if (countitem("SnakeTongue") < @SNAKETONGUE_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "SnakeTongue", @SNAKETONGUE_NEEDED;
- getexp @SNAKETONGUE_REWARD_XP, 0;
- set Zeny, Zeny + @SNAKETONGUE_REWARD_GOLD;
- set $@VOLTAIN_state, 9;
- mes "\"Excellent, now I can extract the venom to- uhm, nevermind. Thanks for your help.\"";
- goto L_Close;
-
-L_state9:
- mes "[Voltain]";
- mes "\"I need to thicken a veno.. Oh, a potion actually. I want to try alizarin herbs for that, so can you bring me " + @HERBS_NEEDED + ", please?\"";
- next;
- menu
- "Here are the herbs.", L_Next10,
- "So you want to do a venom? I will not help you!", L_Close;
-
-L_Next10:
- mes "[Voltain]";
- if (countitem("AlizarinHerb") < @HERBS_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "AlizarinHerb", @HERBS_NEEDED;
- getexp @HERBS_REWARD_XP, 0;
- set Zeny, Zeny + @HERBS_REWARD_GOLD;
- set $@VOLTAIN_state, 10;
- mes "\"Great! Now I can thicken the potion! I will try directly.\"";
- goto L_Close;
-
-L_state10:
- mes "[Voltain]";
- mes "\"Oh I am hungry. Maybe I can eat some steaks. Could you bring me a steak, please?\"";
- next;
- mes "\"Oh, I just wonder if I can inject some ven... Forget about that! Bring me " + @STEAK_NEEDED + " steaks!\"";
- next;
- menu
- "Here you go.", L_Next11,
- "Help yourself! In the Hurnscald Inn you can get some meals for sure!", L_Close;
-
-L_Next11:
- mes "[Voltain]";
- if (countitem("Steak") < @STEAK_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "Steak", @STEAK_NEEDED;
- getexp @STEAK_REWARD_XP, 0;
- set Zeny, Zeny + @STEAK_REWARD_GOLD;
- set $@VOLTAIN_state, 11;
- mes "\"Thanks a lot. I will really enjoy my meal.\"";
- goto L_Close;
-
-L_state11:
- mes "[Voltain]";
- mes "\"Could I have some arrows please? I have lost my hunting equipment when I was in the caves. Some dark creatures were chasing me!\"";
- next;
- mes "\"Acually I wonder if I can use these arrows for building a mouboo trap.... Oh wait! I need some " + @ARROW_NEEDED + " arrows for my self defence right? So do not talk about it!\"";
- menu
- "Here you go.", L_Next12,
- "Sorry I don't have arrows here!", L_Close;
-
-L_Next12:
- mes "[Voltain]";
- if (countitem("Arrow") < @ARROW_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "Arrow", @ARROW_NEEDED;
- getexp @ARROW_REWARD_XP, 0;
- set Zeny, Zeny + @ARROW_REWARD_GOLD;
- set $@VOLTAIN_state, 12;
- mes "\"Thanks a lot. Now I feel more secure here in the outdoors.\"";
- goto L_Close;
-
-L_state12:
- mes "[Voltain]";
- mes "\"I need to thicken a veno.. Oh, a potion actually. I want to try gamboge herbs for that, so can you bring me " + @HERBS_NEEDED + ", please?\"";
- next;
- menu
- "Here are the herbs.", L_Next13,
- "So you want to do a venom? I will not help you!", L_Close;
-
-L_Next13:
- mes "[Voltain]";
- if (countitem("GambogeHerb") < @HERBS_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "GambogeHerb", @HERBS_NEEDED;
- getexp @HERBS_REWARD_XP, 0;
- set Zeny, Zeny + @HERBS_REWARD_GOLD;
- set $@VOLTAIN_state, 13;
- mes "\"Great! Now I can thicken the potion! I will try directly.\"";
- goto L_Close;
-
-L_state13:
- mes "[Voltain]";
- mes "\"Doing so many ev- good things makes me hungry. I feel in the mood for a Chocolate Cake. Can you bring me " + @CHOCOLATECAKE_NEEDED + ", please? \"";
- next;
- menu
- "Here it is.", L_Next14,
- "I don't feel in the mood to bring you a cake.", L_Close;
-
-L_Next14:
- mes "[Voltain]";
- if (countitem("ChocolateCake") < @CHOCOLATECAKE_NEEDED)
- goto L_NOT_ENOUGH;
- delitem "ChocolateCake", @CHOCOLATECAKE_NEEDED;
- getexp @CHOCOLATECAKE_REWARD_XP, 0;
- set Zeny, Zeny + @CHOCOLATECAKE_REWARD_GOLD;
- set $@VOLTAIN_state, 0;
- mes "\"I love chocolate cakes. I wonder, if I can use my ven- \"";
- emotion EMOTE_EVIL, strcharinfo(0);
- goto L_Close;
-
-L_NOHELP:
- mes "\"If you don't want to help me, then away with you. Bothering me won't help me get my work done.\"";
- mes "Voltain then mumbles something under his breath that you cannot quite make out";
- mes "\"... These damn kids. \"";
- goto L_Close;
-
-L_Close:
- set @BOTTLE_NEEDED, 0;
- set @BOTTLE_REWARD_XP, 0;
- set @BOTTLE_REWARD_GOLD, 0;
- set @BLACK_SC_ST_NEEDED, 0;
- set @BLACK_SC_ST_REWARD_XP, 0;
- set @BLACK_SC_ST_REWARD_GOLD, 0;
- set @BUGLEG_NEEDED, 0;
- set @BUGLEG_REWARD_XP, 0;
- set @BUGLEG_REWARD_GOLD, 0;
- set @HERBS_NEEDED, 0;
- set @HERBS_REWARD_XP, 0;
- set @HERBS_REWARD_GOLD, 0;
- set @RAWLOG_NEEDED, 0;
- set @RAWLOG_REWARD_XP, 0;
- set @RAWLOG_REWARD_GOLD, 0;
- set @REDAPPLE_NEEDED, 0;
- set @REDAPPLE_REWARD_XP, 0;
- set @REDAPPLE_REWARD_GOLD, 0;
- set @STEAK_NEEDED, 0;
- set @STEAK_REWARD_XP, 0;
- set @STEAK_REWARD_GOLD, 0;
- set @ARROW_NEEDED, 0;
- set @ARROW_REWARD_XP, 0;
- set @ARROW_REWARD_GOLD, 0;
- set @SNAKETONGUE_NEEDED, 0;
- set @SNAKETONGUE_REWARD_XP, 0;
- set @SNAKETONGUE_REWARD_GOLD, 0;
- set @CHOCOLATECAKE_NEEDED, 0;
- set @CHOCOLATECAKE_REWARD_XP, 0;
- set @CHOCOLATECAKE_REWARD_GOLD, 0;
- close;
-
-L_NOT_ENOUGH:
- mes "\"Can't you count!? I need more. \"";
- goto L_Close;
-}
diff --git a/world/map/npc/007-2/_import.txt b/world/map/npc/007-2/_import.txt
deleted file mode 100644
index e68bb71b..00000000
--- a/world/map/npc/007-2/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 007-2: Illia forsaken inn
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 007-2
-npc: npc/007-2/_mobs.txt
-npc: npc/007-2/_nodes.txt
-npc: npc/007-2/_warps.txt
-npc: npc/007-2/witch.txt
diff --git a/world/map/npc/007-2/_mobs.txt b/world/map/npc/007-2/_mobs.txt
deleted file mode 100644
index 1d91c286..00000000
--- a/world/map/npc/007-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia forsaken inn mobs
-
diff --git a/world/map/npc/007-2/_nodes.txt b/world/map/npc/007-2/_nodes.txt
deleted file mode 100644
index 38010d03..00000000
--- a/world/map/npc/007-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia forsaken inn nodes
-
-// (no nodes)
diff --git a/world/map/npc/007-2/_warps.txt b/world/map/npc/007-2/_warps.txt
deleted file mode 100644
index 66c10abd..00000000
--- a/world/map/npc/007-2/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia forsaken inn warps
-
-007-2,34,35|warp|-1,-1,007-1,73,77
diff --git a/world/map/npc/007-2/witch.txt b/world/map/npc/007-2/witch.txt
deleted file mode 100644
index 360f2885..00000000
--- a/world/map/npc/007-2/witch.txt
+++ /dev/null
@@ -1,1026 +0,0 @@
-//############################################################################
-//# #
-//# Illia Adventure #
-//# #
-//############################################################################
-
-// $@ILLIA_STATUS values:
-// 0: None is fighting
-// 1: Hero paid the price and is naming his comrades, spell is being prepared
-// 2: Waiting for people to ask for the teleport
-// 3: People asked to teleport. Procedure is going on.
-// 4: Quest started. Leave subsequent progress to $@illia_progress
-// 253: Quest is being ended and cleaned: the hero won.
-// 254: Quest is being ended and cleaned: the hero logged off.
-// 255: Quest is being ended and cleaned: the hero died or he ran out of time
-
-007-2,36,23,0|script|Valia|370
-{
- set @illia_sapphire_powder, 3;
- set @illia_amethyst_powder, 1;
- set @illia_iron_powder, 13;
- set @illia_yeti_tear, 1;
- set @illia_iced_water, 4;
- set $@illia_min_level, 90;
-
- if ((GM >= DBG_VALIA || debug) && getequipid(equip_head) == 647)
- goto L_DeveloperBoard;
-
- if (BaseLevel < $@illia_min_level) goto L_Unexperienced;
- if ($@ILLIA_STATUS == 0) goto L_Introduce;
- if ($@ILLIA_STATUS == 1) goto L_PreparingSpell;
- if ($@ILLIA_STATUS == 2) goto L_ReadyToTeleport;
- if ($@ILLIA_STATUS == 3) end;
- if ($@ILLIA_STATUS >= 4) goto L_AlreadyBegun;
- end;
-
-L_DeveloperBoard:
- callfunc "IlliaDebug";
- close;
-
-L_Introduce:
- if (@illia_go_find_items)
- goto L_AskItems;
- if (@illia_know_witch == 1)
- goto L_QuickIntroduce;
- mes "[Valia]";
- mes "\"I'm Valia Illia. Is it needed to say I am a witch?\"";
- next;
- mes "\"No I don't think so.\"";
- next;
- mes "\"And you, you seem to be quite an adventurer.\"";
- menu
- "Well... No.", L_Disappointed,
- "No doubt!", L_Next;
-
-L_Next:
- mes "[Valia]";
- mes "\"Maybe you can help then.";
- mes "You see, I have a sister. Yes, a witch too. Very talented.";
- mes "But unfortunately not enough to avoid being captured.\"";
- menu
- "That's unfortunate...", L_Exit,
- "What informations do you have about all this?", L_Next1;
-
-L_Next1:
- set @illia_know_witch, 1;
- mes "[Valia]";
- mes "\"Ismuth, some dark mage we both hate. He is the one holding her jailed for sure.";
- mes "She has knowledge about specific magic sides that no other sorcerer knows about.\"";
- next;
- mes "\"He has been looking for her for a long time because of that...";
- mes "I am worried about her.";
- mes "And I am unable to go help her.\"";
-
- menu
- "Why not? You seem to be quite talented as well.", L_Next2;
-
-L_Next2:
- mes "[Valia]";
- mes "\"Sure. But I know the enemy. My chances are thin. And if I fail, no one will ever find us.";
- mes "And my magic skills aren't suited for this...\"";
- menu
- "That makes sense...", L_AskHelp,
- "For what are they suited then?", L_HideSkills;
-
-L_HideSkills:
- mes "[Valia]";
- mes "\"Please, never ask a witch what she is skilled in.\"";
- next;
- goto L_AskHelp;
-
-L_QuickIntroduce:
- mes "[Valia]";
- mes "\"My sister is in great danger, and time is running out.\"";
- next;
- goto L_AskHelp;
-
-L_AskHelp:
- mes "[Valia]";
- mes "\"Will you help me?\"";
- menu
- "That sounds quite dangerous... I don't feel it.", L_Disappointed,
- "Ok, I can do that for you.", L_Next3;
-
-L_Next3:
- mes "[Valia]";
- mes "\"Good. Now listen carefully. Ismuth owns an island where he makes his researchs.";
- mes "An island where no boat goes, and where no magic could teleport you to...";
- mes "Strong enchantments are protecting the area, however, I know about a mysterious waterfall, which can send you wherever you want, provided you pay the price.\"";
- next;
- mes "\"Of course, it would be a straight way to death if you go alone.";
- mes "You will need three experienced comrades that you would trust enough to leave your life in their care.\"";
- next;
-
- if (getusers(1) < 4)
- goto L_NotPeepAv;
-
- mes "[Valia]";
- mes "\"Do you know such people?\"";
- menu
- "I'm afraid not. I should better look around.", L_Exit,
- "Yes I know such people!", L_Next4;
-
-L_Next4:
- mes "[Valia]";
- mes "\"Good.";
- mes "I can teleport all of you close to that waterfall, but for that, I will need " + @illia_sapphire_powder + " bags of Sapphire Powder, " + @illia_amethyst_powder + " of Amethyst Powder, " + @illia_iron_powder + " Iron Powders," + @illia_yeti_tear + " Frozen Yeti Tear and " + @illia_iced_water + " bottles of Iced Water.\"";
- menu
- "I have them here.", L_CheckItems,
- "I don't have them, but I'll try to find.", L_NoItems;
-
-L_NotPeepAv:
- mes "[Valia]";
- mes "\"But it seems there are not enough people around.";
- mes "Come back later.\"";
- close;
-
-L_AskItems:
- mes "[Valia]";
- mes "\"So, did you bring me what I need?\"";
- menu
- "Hum, I forgot what you asked...", L_RepeatItems,
- "Here they are!", L_CheckItems;
-
-L_RepeatItems:
- mes "[Valia]";
- mes "\"I need " + @illia_sapphire_powder + " bags of Sapphire Powder, " + @illia_amethyst_powder + " of Amethyst Powder, " + @illia_iron_powder + " Iron Powders," + @illia_yeti_tear + " Frozen Yeti Tear and " + @illia_iced_water + " bottles of Iced Water.\"";
- next;
- mes "\"Hurry up.\"";
- close;
-
-L_NoItems:
- set @illia_go_find_items, 1;
- close;
-
-L_MissingItems:
- mes "[Valia]";
- mes "\"Obviously you are missing some of the components.";
- mes "Go find the missing ones, fast. We lack time!\"";
- set @illia_go_find_items, 1;
- close;
-
-L_CheckItems:
- if (
- (countitem ("SapphirePowder") < @illia_sapphire_powder) ||
- (countitem ("AmethystPowder") < @illia_amethyst_powder) ||
- (countitem ("IronPowder") < @illia_iron_powder) ||
- (countitem ("FrozenYetiTear") < @illia_yeti_tear) ||
- (countitem ("IcedWater") < @illia_iced_water)
- ) goto L_MissingItems;
- // someone started the quest in the meantime, so we cancel this one.
- if ($@ILLIA_STATUS > 0)
- goto L_Interrupt;
- // Block other players to start the quest, and start a timer to limit
- // the time a player will take to gather his team.
- // Considering the previous npc dialogs, we assume the player already designated his team mates,
- // hence 5 mins should be enough.
- set $@ILLIA_STATUS, 1;
- initnpctimer;
- set @illia_go_find_items, 0;
-
- mes "[Valia]";
- mes "\"Very well! I can prepare the spell now!\"";
- next;
- goto L_PrepareTeam;
-
-L_Interrupt:
- mes "[Valia]";
- mes "\"Unfortunately, someone else is already helping me.\"";
- close;
-
-L_PrepareTeam:
- // We clear early this variable.
- set @illia_know_witch, 0;
- mes "[Valia]";
- mes "\"While I focus on preparing the spell, call your three comrades, and make sure they come here within five minutes. We don't have time.\"";
- next;
- set $@ILLIA_HERO$, strcharinfo(0);
- set $@ILLIA_HERO_ID, getcharid(3, $@ILLIA_HERO$);
- goto L_ChooseHelper1;
-
-L_Disappointed:
- mes "[Valia]";
- mes "\"What a shame... You have no idea what you are missing, really.\"";
- close;
-
-L_Unexperienced:
- mes "You see a charismatic witch.";
- next;
- mes "But she seems to completely ignore your presence.";
- close;
-
-L_ChooseHelperConfirm1:
- mes "[Team Selector]";
- mes "If it happens you cannot elect three players to help you, you can give up now.";
- menu
- "Continue.", L_ChooseHelper1,
- "I give up.", L_PlayerGaveUp;
-
-L_ChooseHelper1:
- mes "[Team Selector]";
- mes "Name the first player to help you:";
- input $@ILLIA_HELPER1$;
-
- if ($@ILLIA_HELPER1$ == "")
- goto L_ChooseHelperConfirm1;
- if (getcharid(3, $@ILLIA_HELPER1$) == $@ILLIA_HERO_ID)
- goto L_WrongHelper1;
- if (isloggedin(getcharid(3, $@ILLIA_HELPER1$)) == 0)
- goto L_HelperDoesNotExist1;
- if (!(attachrid(getcharid(3, $@ILLIA_HELPER1$))))
- goto L_Exit;
- if (BaseLevel < $@illia_min_level)
- goto L_HelperTooWeak1;
- set $@ILLIA_HELPER1$, strcharinfo(0);
- detachrid;
- if (attachrid($@ILLIA_HERO_ID))
- goto L_ChooseHelper2;
- goto L_Exit;
-
-L_HelperTooWeak1:
- detachrid;
- if (!(attachrid($@ILLIA_HERO_ID)))
- goto L_Exit;
- mes "[Team Selector]";
- mes "The player " + $@ILLIA_HELPER1$ + " is too weak to help you.";
- set $@ILLIA_HELPER1$, "";
- next;
- goto L_ChooseHelperConfirm1;
-
-L_HelperDoesNotExist1:
- mes "[Team Selector]";
- mes "This player " + $@ILLIA_HELPER1$ + " seems offline or does not exist.";
- set $@ILLIA_HELPER1$, "";
- next;
- goto L_ChooseHelperConfirm1;
-
-L_WrongHelper1:
- mes "[Team Selector]";
- mes "You can't name yourself.";
- next;
- goto L_ChooseHelperConfirm1;
-
-L_ChooseHelperConfirm2:
- mes "[Team Selector]";
- mes "If it happens you cannot elect three players to help you, you can give up now.";
- menu
- "Continue.", L_ChooseHelper2,
- "I give up.", L_PlayerGaveUp;
-
-L_ChooseHelper2:
- mes "[Team Selector]";
- mes "Name the second player to help you:";
- input $@ILLIA_HELPER2$;
- if ($@ILLIA_HELPER2$ == "")
- goto L_ChooseHelperConfirm2;
- if (getcharid(3, $@ILLIA_HELPER2$) == getcharid(3, $@ILLIA_HELPER1$) ||
- getcharid(3, $@ILLIA_HELPER2$) == $@ILLIA_HERO_ID)
- goto L_WrongHelper2;
- if (isloggedin(getcharid(3, $@ILLIA_HELPER2$)) == 0)
- goto L_HelperDoesNotExist2;
- if (!(attachrid(getcharid(3, $@ILLIA_HELPER2$))))
- goto L_Exit;
- if (BaseLevel < $@illia_min_level)
- goto L_HelperTooWeak2;
- set $@ILLIA_HELPER2$, strcharinfo(0);
- detachrid;
- if (attachrid($@ILLIA_HERO_ID))
- goto L_ChooseHelper3;
- goto L_Exit;
-
-L_HelperTooWeak2:
- detachrid;
- if (!(attachrid($@ILLIA_HERO_ID)))
- goto L_Exit;
- mes "[Team Selector]";
- mes "The player " + $@ILLIA_HELPER2$ + " is too weak to help you.";
- set $@ILLIA_HELPER2$, "";
- next;
- goto L_ChooseHelperConfirm2;
-
-L_HelperDoesNotExist2:
- mes "[Team Selector]";
- mes "This player " + $@ILLIA_HELPER2$ + " seems offline or does not exist.";
- set $@ILLIA_HELPER2$, "";
- next;
- goto L_ChooseHelperConfirm2;
-
-L_WrongHelper2:
- mes "[Team Selector]";
- mes "You can't name yourself or someone already chosen.";
- next;
- goto L_ChooseHelperConfirm2;
-
-L_ChooseHelperConfirm3:
- mes "[Team Selector]";
- mes "If it happens you cannot elect three players to help you, you can give up now.";
- menu
- "Continue.", L_ChooseHelper3,
- "I give up.", L_PlayerGaveUp;
-
-L_ChooseHelper3:
- mes "[Team Selector]";
- mes "Name the third player to help you:";
- input $@ILLIA_HELPER3$;
- if ($@ILLIA_HELPER3$ == "")
- goto L_ChooseHelperConfirm3;
- if (getcharid(3, $@ILLIA_HELPER3$) == getcharid(3, $@ILLIA_HELPER2$) ||
- getcharid(3, $@ILLIA_HELPER3$) == getcharid(3, $@ILLIA_HELPER1$) ||
- getcharid(3, $@ILLIA_HELPER3$) == $@ILLIA_HERO_ID)
- goto L_WrongHelper3;
- if (isloggedin(getcharid(3, $@ILLIA_HELPER3$)) == 0)
- goto L_HelperDoesNotExist3;
- if (!(attachrid(getcharid(3, $@ILLIA_HELPER3$))))
- goto L_Exit;
- if (BaseLevel < $@illia_min_level)
- goto L_HelperTooWeak3;
- set $@ILLIA_HELPER3$, strcharinfo(0);
- detachrid;
- if (!(attachrid($@ILLIA_HERO_ID)))
- goto L_Exit;
- mes $@ILLIA_HELPER1$ + ", " + $@ILLIA_HELPER2$ + " and " + $@ILLIA_HELPER3$ + " will be your three comrades.";
- close;
-
-L_HelperTooWeak3:
- detachrid;
- if (!(attachrid($@ILLIA_HERO_ID)))
- goto L_Exit;
- mes "[Team Selector]";
- mes "The player " + $@ILLIA_HELPER3$ + " is too weak to help you.";
- set $@ILLIA_HELPER3$, "";
- next;
- goto L_ChooseHelperConfirm3;
-
-
-L_HelperDoesNotExist3:
- mes "[Team Selector]";
- mes "This player " + $@ILLIA_HELPER3$ + " seems offline or does not exist.";
- set $@ILLIA_HELPER3$, "";
- next;
- goto L_ChooseHelperConfirm3;
-
-L_WrongHelper3:
- mes "[Team Selector]";
- mes "You can't name yourself or someone already chosen.";
- next;
- goto L_ChooseHelperConfirm3;
-
-L_PreparingSpell:
- mes "The witch looks busy with a spell, giving shape to strange rings,";
- mes "and is not paying any attention to you.";
- close;
-
-L_ReadyToTeleport:
- if ($@ILLIA_HELPER1$ == "" || $@ILLIA_HELPER2$ == "" || $@ILLIA_HELPER3$ == "")
- goto L_PlayerGaveUp;
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_AskToTeleport;
- if (strcharinfo(0) == $@ILLIA_HELPER1$ || strcharinfo(0) == $@ILLIA_HELPER2$ || strcharinfo(0) == $@ILLIA_HELPER3$)
- goto L_TalkHelper;
- mes "[Valia]";
- mes "\"I do not have time for you.\"";
- close;
-
-L_AskToTeleport:
- // Check area users just to give a hint if there are players around
- // $@ILLIA_HERO$ $@ILLIA_HELPER1$ $@ILLIA_HELPER2$ $@ILLIA_HELPER3$
- if (!(attachrid(getcharid(3,$@ILLIA_HELPER1$))))
- goto L_NotEveryoneHere;
- if (!(isin("007-2", 0, 0, 57, 55)))
- goto L_NotEveryoneHere;
- detachrid;
- if (!(attachrid(getcharid(3,$@ILLIA_HELPER2$))))
- goto L_NotEveryoneHere;
- if (!(isin("007-2", 0, 0, 57, 55)))
- goto L_NotEveryoneHere;
- detachrid;
- if (!(attachrid(getcharid(3,$@ILLIA_HELPER3$))))
- goto L_NotEveryoneHere;
- if (!(isin("007-2", 0, 0, 57, 55)))
- goto L_NotEveryoneHere;
- detachrid;
- if (!(attachrid(getcharid(3,$@ILLIA_HERO$))))
- goto L_NotEveryoneHere;
- if (!(isin("007-2", 0, 0, 57, 55)))
- goto L_NotEveryoneHere;
- mes "[Valia]";
- mes "\"Everyone seems to be here. Make sure to stay close to me.\"";
- menu
- "I'm ready.", L_Next5,
- "Wait a minute.", L_Exit;
-
-L_Next5:
- if (
- (countitem ("SapphirePowder") < @illia_sapphire_powder) ||
- (countitem ("AmethystPowder") < @illia_amethyst_powder) ||
- (countitem ("IronPowder") < @illia_iron_powder) ||
- (countitem ("FrozenYetiTear") < @illia_yeti_tear) ||
- (countitem ("IcedWater") < @illia_iced_water)
- ) goto L_MissingItems;
- delitem "SapphirePowder", @illia_sapphire_powder;
- delitem "AmethystPowder", @illia_amethyst_powder;
- delitem "IronPowder", @illia_iron_powder;
- delitem "FrozenYetiTear", @illia_yeti_tear;
- delitem "IcedWater", @illia_iced_water;
-
- // Stop the 5mins timer and start it again.
- set $@ILLIA_STATUS, 3;
- initnpctimer;
- close;
-
-L_NotEveryoneHere:
- mes "[Valia]";
- mes "\"I don't see your comrades around.";
- mes "Let's wait a little more.\"";
- close;
-
-L_TalkHelper:
- mes "[Valia]";
- mes "\"" + strcharinfo(0) + ", do your best to assist " + $@ILLIA_HERO$ + ".\"";
- menu
- "What is " + $@ILLIA_HERO$ + " going to do?", L_Next6,
- "I will, no problem.", L_Exit;
-
-L_Next6:
- mes "[Valia]";
- mes "\"You weren't told about it? This is about saving my captive sister.\"";
- next;
- mes "\"For the details, you'll have to ask " + $@ILLIA_HERO$ + "...";
- mes "I am not going to repeat myself...\"";
- close;
-
-// Timed Warp logic
-OnWarpHero:
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_Warp;
- end;
-
-OnWarpHelper1:
- if (strcharinfo(0) == $@ILLIA_HELPER1$)
- goto L_Warp;
- end;
-
-OnWarpHelper2:
- if (strcharinfo(0) == $@ILLIA_HELPER2$)
- goto L_Warp;
- end;
-
-OnWarpHelper3:
- if (strcharinfo(0) == $@ILLIA_HELPER3$)
- goto L_Warp;
- end;
-
-L_Warp:
- misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0);
- set @illia_got_rewards, 0;
- set @illia_current_num_rewards, 0;
- addtimer 2000, "Valia::OnRealWarp";
- end;
-
-OnRealWarp:
- warp "051-1", 23 + rand(2), 24 + rand(3);
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_InitVars;
- end;
-
-L_InitVars:
- set $@ILLIA_STATUS, 4;
- donpcevent "#IlliaDaemon::OnCommandToggle";
- // init various variables
- set $@illia_progress, 1;
- callfunc "UpdateIlliaProgress";
- set $@illia_level_1_progress, 0;
- set $@illia_level_2_progress, 0;
- set $@illia_level_3_progress, 0;
- set $@illia_level_4_progress, 0;
- set $@illia_level_5_progress, 0;
- set $@illia_level_6_progress, 0;
- set $@illia_level_7_progress, 0;
- set $@illia_players_in_luvia_territory, 0;
-
- // Save the time at which the quest started
- set $@illia_begin_time, gettimetick(2);
-
- // Clean all levels
- donpcevent "#IlliaJanitor1::OnCommandClean";
- donpcevent "#IlliaJanitor2::OnCommandClean";
- donpcevent "#IlliaJanitor3::OnCommandClean";
- donpcevent "#IlliaJanitor4::OnCommandClean";
- donpcevent "#IlliaJanitor5::OnCommandClean";
- donpcevent "#IlliaJanitor6::OnCommandClean";
- donpcevent "#IlliaJanitor7::OnCommandClean";
-
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_AlreadyBegun:
- mes "At the moment you are about to talk to her, she briefly shows a malicious smile and looks away.";
- next;
- mes "Probably it is best to not annoy her.";
- close;
-
-L_Exit:
- close;
-
-L_ReactToPlayersReturn:
- // If players did not enter the Inn's lobby, they arent aware of the trap.
- // Otherwise, they are aware of the trap. Whether they died or not,
- // the rings will have deleted their memories.
- // So the same dialog can apply.
- if ($@illia_progress < 8)
- goto L_Disappoint;
- if ($@illia_progress == 8)
- goto L_SurprisedByHeroWin;
- end;
-
-L_SurprisedByHeroWin:
- npctalk strnpcinfo(0), "(How is it possible... " + $@ILLIA_HERO$ + " survived...)";
- emotion EMOTE_SURPRISE;
- goto L_EndQuest;
-
-L_Disappoint:
- npctalk strnpcinfo(0), "Oh no... It seems " + $@ILLIA_HERO$ + " did not make it... Who will save my sister now?";
- emotion EMOTE_SAD;
- goto L_EndQuest;
-
-L_PlayerGaveUp:
- close2;
- npctalk strnpcinfo(0), "Well... It seems you can't do it " + $@ILLIA_HERO$ + ". I knew it as soon as I saw you!";
- emotion EMOTE_UPSET;
- goto L_EndQuest;
-
-L_EndQuest:
- set $@ILLIA_STATUS, 0;
- set $@ILLIA_HERO$, "";
- set $@ILLIA_HERO_ID, 0;
- set $@ILLIA_HELPER1$, "";
- set $@ILLIA_HELPER2$, "";
- set $@ILLIA_HELPER3$, "";
- set $@illia_progress, 0;
- callfunc "UpdateIlliaProgress";
- set $@illia_level_1_progress, 0;
- set $@illia_level_2_progress, 0;
- set $@illia_level_3_progress, 0;
- set $@illia_level_4_progress, 0;
- set $@illia_level_5_progress, 0;
- set $@illia_level_6_progress, 0;
- set $@illia_level_7_progress, 0;
- set $@illia_players_in_luvia_territory, 0;
- set $@illia_bp, 0;
-
- // Clean all levels
- donpcevent "#IlliaJanitor1::OnCommandClean";
- donpcevent "#IlliaJanitor2::OnCommandClean";
- donpcevent "#IlliaJanitor3::OnCommandClean";
- donpcevent "#IlliaJanitor4::OnCommandClean";
- donpcevent "#IlliaJanitor5::OnCommandClean";
- donpcevent "#IlliaJanitor6::OnCommandClean";
- donpcevent "#IlliaJanitor7::OnCommandClean";
-
- stopnpctimer;
- setnpctimer 0;
- end;
-
-// Timer for the witch to react to the players' return
-OnTimer3000:
- if ($@ILLIA_STATUS >= 253)
- goto L_ReactToPlayersReturn;
- end;
-
-// Timer for the witch giving instructions to players about to be teleported
-OnTimer2500:
- if ($@ILLIA_STATUS != 3)
- end;
- npctalk strnpcinfo(0), $@ILLIA_HERO$ + ", " + $@ILLIA_HELPER1$ + ", " + $@ILLIA_HELPER2$ + ", " + $@ILLIA_HELPER3$ + ", listen!";
- end;
-
-OnTimer7500:
- if ($@ILLIA_STATUS != 3)
- end;
- npctalk strnpcinfo(0), "I will teleport the 4 of you in a forest that isn't far from the waterfall.";
- end;
-
-OnTimer14000:
- if ($@ILLIA_STATUS != 3)
- end;
- npctalk strnpcinfo(0), "Each of you takes one of these rings. They will allow you to come back here when needed.";
- end;
-
-OnTimer24000:
- if ($@ILLIA_STATUS != 3)
- end;
- if ($Illia_Luvia_Harvest < 10)
- npctalk strnpcinfo(0), "Do your best and save my sister!";
- if ($Illia_Luvia_Harvest >= 10 && $Illia_Luvia_Harvest < 35)
- npctalk strnpcinfo(0), "This will be quite dangerous, but do your best and save my sister!";
- if ($Illia_Luvia_Harvest >= 35)
- npctalk strnpcinfo(0), "This will be awfully dangerous, but do your best and save my sister!";
- end;
-
-OnTimer34000:
- if ($@ILLIA_STATUS != 3)
- end;
- // Trigger 4 areatimers to show the teleport spell
- // This is better looking than a basic areawarp
- areatimer 0, "007-2", 0, 0, 57, 55, 3000, "Valia::OnWarpHero";
- areatimer 0, "007-2", 0, 0, 57, 55, 3500, "Valia::OnWarpHelper1";
- areatimer 0, "007-2", 0, 0, 57, 55, 4000, "Valia::OnWarpHelper2";
- areatimer 0, "007-2", 0, 0, 57, 55, 4500, "Valia::OnWarpHelper3";
- npctalk strnpcinfo(0), "Spiralis Major!";
- misceffect FX_BLUE_MAGIC_CAST;
- end;
-
-OnTimer50000:
- // Add a check that the quest started.
- // This timer on status 3 should be reached since L_Init_Vars will have
- // stopped it before.
- // It may happen it didn't if the hero logged off during the warp sequence
- // Hence we'll just init what's necessary to trigger the end sequence
- if ($@ILLIA_STATUS != 3)
- end;
- goto L_InitVars;
-
-// Timers for the witch waiting.
-OnTimer150000:
- if ($@ILLIA_STATUS != 1)
- end;
- set $@ILLIA_STATUS, 2;
- npctalk strnpcinfo(0), $@ILLIA_HERO$ + ", I am ready to cast the teleport spell. You and your comrades should not wait any longer!";
- end;
-
-OnTimer280000:
- if ($@ILLIA_STATUS != 2)
- end;
- npctalk strnpcinfo(0), "Hurry up " + $@ILLIA_HERO$ + ", I am losing patience.";
- end;
-
-OnTimer300000:
- if ($@ILLIA_STATUS != 2)
- end;
- npctalk strnpcinfo(0), $@ILLIA_HERO$ + ", you and your missing comrades made me lose a precious time! Out of my sight!";
- emotion EMOTE_UPSET;
- if (attachrid($@ILLIA_HERO_ID))
- goto L_KillHero;
- goto L_EndQuest;
-
-L_KillHero:
- heal -Hp, 0;
- goto L_EndQuest;
-
-}
-
-007-2,57,55,0|script|#IlliaDaemon|32767
-{
-end;
-
-OnInit:
- disablenpc "#IlliaTorch1";
- disablenpc "#IlliaTorch2";
- disablenpc "#IlliaTorch3";
- disablenpc "#IlliaTorch4";
- disablenpc "#IlliaTorch5";
- disablenpc "#IlliaTorch6";
- disablenpc "#IlliaTorch7";
- disablenpc "#IlliaTorch8";
- set $@illia_max_time, 300;
- end;
-
-OnCommandToggle:
- set $@illia_max_time, 300;
- if ($@ILLIA_STATUS >= 253)
- goto L_Stop;
- if ($@ILLIA_STATUS >= 4)
- goto L_Start;
- end;
-
-OnTimer1000:
- if ($@ILLIA_STATUS < 4 || $@ILLIA_STATUS >= 254)
- end;
- goto L_Check;
-
-OnTimer2000:
- if ($@ILLIA_STATUS < 4 || $@ILLIA_STATUS >= 254)
- end;
- // This is executed only when making a double check when we detected
- // the hero offline/not in the good map previously.
- goto L_Check;
-
-OnTimer4000:
- // Check if we need to force-warp the hero
- if (isloggedin($@ILLIA_HERO_ID) == 0)
- end;
- if ($@ILLIA_STATUS == 255 && attachrid($@ILLIA_HERO_ID) && (
- isin("051-1",1,1,190,80) ||
- isin("051-3",1,1,115,130) ||
- isin("052-1",1,1,100,80) ||
- isin("052-2",1,1,150,100)
- )
- ) goto L_WarpHero;
- detachrid;
- end;
-
-OnTimer4500:
- if ($@ILLIA_STATUS < 254)
- end;
- // send a message to all the helpers
- setarray $@illia_helpers$, $@ILLIA_HELPER1$,$@ILLIA_HELPER2$,$@ILLIA_HELPER3$;
- set $@illia_helper_index,0;
- goto L_HelperNotification;
-
-OnTimer6500:
- if ($@ILLIA_STATUS < 254)
- end;
- // Make the first witch to say something happened, when she will see people back
- // If no helpers will be warped, it still makes sense: she felt the hero died.
- startnpctimer "Valia";
- // $@illia_players_in_luvia_territory is set when players enter the island
- set $Illia_Luvia_Harvest, $Illia_Luvia_Harvest + $@illia_players_in_luvia_territory;
- // Cap the difficulty to 50. We do not want the quest to really be impossible to finish.
- if ($Illia_Luvia_Harvest > 50)
- set $Illia_Luvia_Harvest, 50;
- set $@illia_players_in_luvia_territory, 0;
- end;
-
-L_HelperNotification:
- if ($@illia_helper_index >= 4)
- goto L_CleanHelpers;
- set $@illia_helper$, $@illia_helpers$[$@illia_helper_index];
- if (isloggedin(getcharid(3, $@illia_helper$)) == 0)
- goto L_NextHelperToNotify;
- if (
- $@illia_helper$ != "" &&
- attachrid(getcharid(3, $@illia_helper$)) && (
- isin("051-1",1,1,190,80) ||
- isin("051-3",1,1,115,130) ||
- isin("052-1",1,1,100,80) ||
- isin("052-2",1,1,150,100)
- )
- ) goto L_NotifyHelperFail;
- detachrid;
- goto L_NextHelperToNotify;
-
-L_NextHelperToNotify:
- set $@illia_helper_index, $@illia_helper_index + 1;
- goto L_HelperNotification;
-
-L_CleanHelpers:
- cleararray $@illia_helpers$, "", 3;
- set $@illia_helper$, "";
- set $@illia_helper_index,0;
- end;
-
-L_NotifyHelperFail:
- message strcharinfo(0), $@ILLIA_HERO$ + " disappeared. There is no way I continue like this... Let's use the ring Valia gave!";
- // display the warp spell already if needed
- misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0);
- detachrid;
- goto L_NextHelperToNotify;
-
-OnTimer8000:
- if ($@ILLIA_STATUS < 254)
- end;
- // Warp remaining helpers back to the origin if needed
- setarray $@illia_helpers$, $@ILLIA_HELPER1$,$@ILLIA_HELPER2$,$@ILLIA_HELPER3$;
- set $@illia_helper_index,0;
- goto L_CheckHelperNeedWarp;
-
-L_CheckHelperNeedWarp:
- if ($@illia_helper_index >= 4)
- goto L_CleanHelpersWarps;
- set $@illia_helper$, $@illia_helpers$[$@illia_helper_index];
- if (isloggedin(getcharid(3, $@illia_helper$)) == 0)
- goto L_NextHelperToWarp;
- if ($@illia_helper$ != "" && attachrid(getcharid(3, $@illia_helper$)))
- goto L_WarpHelper;
- detachrid;
- goto L_NextHelperToWarp;
-
-L_NextHelperToWarp:
- set $@illia_helper_index, $@illia_helper_index + 1;
- goto L_CheckHelperNeedWarp;
-
-L_CleanHelpersWarps:
- cleararray $@illia_helpers$, "", 3;
- set $@illia_helper$, "";
- set $@illia_helper_index,0;
- end;
-
-L_WarpHelper:
- // Proceed only if the helper is still on one of the quest's maps
- if (
- isin("051-1",1,1,190,80 ) ||
- isin("051-3",1,1,115,130) ||
- isin("052-1",1,1,100,80 ) ||
- isin("052-2",1,1,150,100)
- ) goto L_DoWarpHelper;
- detachrid;
- goto L_NextHelperToWarp;
-
-L_DoWarpHelper:
- // At this point, the player has been attached
- if ($@illia_progress >= 5)
- message strcharinfo(0), "You feel dizzy, and that your memory is being rewritten... Who is Luvia? Something isn't right.";
- warp "007-2",31 + rand(0,2),23 + rand(0,2);
- detachrid;
- goto L_NextHelperToWarp;
-
-L_Check:
- // We check for the hero to be logged in, alive, and in one of the quest's maps
- if (isloggedin($@ILLIA_HERO_ID) == 0)
- goto L_HeroLogOff;
- if (attachrid($@ILLIA_HERO_ID) &&
- (isin("051-1",1,1,190,80 ) == 0) &&
- (isin("051-3",1,1,115,130) == 0) &&
- (isin("052-1",1,1,100,80 ) == 0) &&
- (isin("052-2",1,1,150,100) == 0)
- ) goto L_HeroEscape;
- if (isdead())
- goto L_HeroDead;
- // If the quest lasts more than $@illia_max_time seconds, abort it
- if (gettimetick(2) - $@illia_begin_time > $@illia_max_time)
- goto L_HeroRingActivated;
- // Conditions are all met. schedule another check 1s later
- setnpctimer 0;
- detachrid;
- end;
-
-L_HeroRingActivated:
- misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0);
- message strcharinfo(0), "The ring Valia gave you seems to activate itself!";
- detachrid;
- set $@ILLIA_STATUS, 255;
- setnpctimer 0;
- end;
-
-L_HeroLogOff:
- if (getnpctimer(0) < 1900)
- end;
- set $@ILLIA_STATUS, 254;
- setnpctimer 0;
- end;
-
-L_HeroEscape:
- detachrid;
- // because of lags, warps between maps, etc
- // let's assume a check can detect the player to not be in any of the map,
- // while he is supposed to be in one.
- // it does not hurt to make a double check 1sec later
- if (getnpctimer(0) < 1900)
- end;
- set $@ILLIA_STATUS, 254;
- setnpctimer 0;
- end;
-
-L_WarpHero:
- // At this point, the player has been attached
- if ($@illia_progress >= 5)
- message strcharinfo(0), "You feel dizzy, and that your memory is being rewritten... Who is Luvia? Something isn't right.";
- warp "007-2",31 + rand(0,2),23 + rand(0,2);
- detachrid;
- end;
-
-L_HeroDead:
- // we notify the player that his death will add luvia's power.
- // her power is increasing once players reach her island,
- // but they didn't find out about her yet on the island,
- // so we notify the hero only once they met her in the Inn
- if ($@illia_progress >= 5 && $@illia_progress < 8)
- message strcharinfo(0), "You are in Luvia's hands, and your soul is now meant to serve her dark purposes.";
- detachrid;
- set $@ILLIA_STATUS, 255;
- setnpctimer 0;
- end;
-
-L_Stop:
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_Start:
- initnpctimer;
- end;
-
-}
-
-function|script|UpdateIlliaProgress
-{
- if ($@illia_progress == 1)
- goto L_Torch1;
- if ($@illia_progress == 2)
- goto L_Torch2;
- if ($@illia_progress == 3)
- goto L_Torch3;
- if ($@illia_progress == 4)
- goto L_Torch4;
- if ($@illia_progress == 5)
- goto L_Torch5;
- if ($@illia_progress == 6)
- goto L_Torch6;
- if ($@illia_progress == 7)
- goto L_Torch7;
- if ($@illia_progress == 8)
- goto L_Torch8;
- // Else, we disable everything
- disablenpc "#IlliaTorch1";
- disablenpc "#IlliaTorch2";
- disablenpc "#IlliaTorch3";
- disablenpc "#IlliaTorch4";
- disablenpc "#IlliaTorch5";
- disablenpc "#IlliaTorch6";
- disablenpc "#IlliaTorch7";
- disablenpc "#IlliaTorch8";
- return;
-
-L_Torch8:
- enablenpc "#IlliaTorch8";
- goto L_Torch7;
-
-L_Torch7:
- enablenpc "#IlliaTorch7";
- goto L_Torch6;
-
-L_Torch6:
- enablenpc "#IlliaTorch6";
- goto L_Torch5;
-
-L_Torch5:
- enablenpc "#IlliaTorch5";
- goto L_Torch4;
-
-L_Torch4:
- enablenpc "#IlliaTorch4";
- goto L_Torch3;
-
-L_Torch3:
- enablenpc "#IlliaTorch3";
- goto L_Torch2;
-
-L_Torch2:
- enablenpc "#IlliaTorch2";
- goto L_Torch1;
-
-L_Torch1:
- enablenpc "#IlliaTorch1";
- return;
-}
-
-007-2,29,22,0|script|#IlliaTorch1|374
-{
-end;
-}
-
-007-2,30,21,0|script|#IlliaTorch2|374
-{
-end;
-}
-
-007-2,33,24,0|script|#IlliaTorch3|374
-{
-end;
-}
-
-007-2,32,25,0|script|#IlliaTorch4|374
-{
-end;
-}
-
-007-2,32,21,0|script|#IlliaTorch5|374
-{
-end;
-}
-
-007-2,33,22,0|script|#IlliaTorch6|374
-{
-end;
-}
-
-007-2,29,24,0|script|#IlliaTorch7|374
-{
-end;
-}
-
-007-2,30,25,0|script|#IlliaTorch8|374
-{
-end;
-}
-
-function|script|IlliaDebug
-{
- mes "$Illia_Luvia_Harvest: "+$Illia_Luvia_Harvest;
- mes "$Illia_Win_Counter: "+$Illia_Win_Counter;
- mes "---";
- mes "$@illia_progress: "+$@illia_progress;
- if ($@illia_begin_time > 0)
- mes "Time: "+(gettimetick(2) - $@illia_begin_time)+"/"+$@illia_max_time;
- mes "---";
- mes "$@illia_level_1_progress: "+$@illia_level_1_progress;
- mes "$@illia_level_2_progress: "+$@illia_level_2_progress;
- mes "$@illia_level_3_progress: "+$@illia_level_3_progress;
- mes "$@illia_level_4_progress: "+$@illia_level_4_progress;
- mes "$@illia_level_5_progress: "+$@illia_level_5_progress;
- mes "$@illia_level_6_progress: "+$@illia_level_6_progress;
- mes "$@illia_level_7_progress: "+$@illia_level_7_progress;
- return;
-}
diff --git a/world/map/npc/008-1/_import.txt b/world/map/npc/008-1/_import.txt
deleted file mode 100644
index 630d4263..00000000
--- a/world/map/npc/008-1/_import.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-// Map 008-1: Hurnscald Outskirts
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 008-1
-npc: npc/008-1/_mobs.txt
-npc: npc/008-1/_nodes.txt
-npc: npc/008-1/_warps.txt
-npc: npc/008-1/andra.txt
-npc: npc/008-1/annualeaster.txt
-npc: npc/008-1/banu.txt
-npc: npc/008-1/diryn.txt
-npc: npc/008-1/dock.txt
-npc: npc/008-1/george.txt
-npc: npc/008-1/hinnak.txt
-npc: npc/008-1/mapflags.txt
-npc: npc/008-1/mikhail.txt
diff --git a/world/map/npc/008-1/_mobs.txt b/world/map/npc/008-1/_mobs.txt
deleted file mode 100644
index 6c077242..00000000
--- a/world/map/npc/008-1/_mobs.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Outskirts mobs
-
-008-1,0,0,0,0|monster|PinkFlower|1014,10,20ms,0ms
-008-1,0,0,0,0|monster|Pinkie|1018,18,20ms,0ms
-008-1,0,0,0,0|monster|ManaBug|1131,18,30ms,0ms
-008-1,0,0,0,0|monster|Maggot|1002,30,30ms,0ms
-008-1,0,0,0,0|monster|MauvePlant|1029,2,270000ms,180000ms
-008-1,0,0,0,0|monster|Silkworm|1035,2,60000ms,30000ms
-008-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-008-1,0,0,0,0|monster|Squirrel|1038,10,30ms,20ms
-008-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
diff --git a/world/map/npc/008-1/_nodes.txt b/world/map/npc/008-1/_nodes.txt
deleted file mode 100644
index d8b67583..00000000
--- a/world/map/npc/008-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Outskirts nodes
-
-// (no nodes)
diff --git a/world/map/npc/008-1/_warps.txt b/world/map/npc/008-1/_warps.txt
deleted file mode 100644
index 6606e681..00000000
--- a/world/map/npc/008-1/_warps.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Outskirts warps
-
-008-1,54,61|warp|-1,1,009-1,25,36
-008-1,79,80|warp|2,-1,009-1,48,54
-008-1,127,61|warp|-1,0,009-1,96,36
-008-1,79,49|warp|2,-1,009-1,48,25
-008-1,24,62|warp|-1,2,011-1,123,61
-008-1,79,17|warp|2,-1,018-1,78,97
-008-1,79,102|warp|2,-1,007-1,68,22
-008-1,132,101|warp|1,-1,007-1,122,23
diff --git a/world/map/npc/008-1/andra.txt b/world/map/npc/008-1/andra.txt
deleted file mode 100644
index 68796fd7..00000000
--- a/world/map/npc/008-1/andra.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-// Andra asks for your help to keep the soil fertile. The best way to do it is planting, so she asks for water and seeds. When she plants the seeds, some plants are spawned.
-
-008-1,36,26,0|script|Andra|201
-{
- set @water_amount, 1;
- set @seeds_amount, 4;
- if ($@andra_status == 1) goto L_Planting;
- if (BaseLevel < 30) goto L_TooYoung;
- if (FLAGS & FLAG_ANDRA_HELPED) goto L_Return;
- mes "[Andra]";
- mes "\"Hello, my name is Andra. You see those nice trees? I planted every single one of them! I'm very proud of my work!\"";
- next;
- menu
- "Nice! I imagine you planted them a long time ago, right?", L_Next,
- "Sorry, but I'm not interested in plants and trees.", L_DislikePlants;
-
-L_Next:
- mes "[Andra]";
- mes "\"That is the fun part... It took only some months... and look how healthy and beautiful they are!\"";
- next;
- menu
- "How is that possible?", L_Next1;
-
-L_Next1:
- mes "[Andra]";
- mes "\"A few years ago, a nice woman from Tulimshar did something amazing to the land around here... I guess her name was Eomie. I have no idea what she did, but since she worked on this land, everything you plant here will grow really fast!\"";
- next;
- mes "\"But I am very worried about something she told me when she left... She warned me that this place needs constant care. If one small spot is not cultivated for a long time, it will become less and less fertile.\"";
- next;
- mes "And she also told me that this soil is so fertile because it has a lot of nutrients not only on this side, but everywhere. So it is certain that all soil in this place will become weaker if we let a lot of unfertilized spots...\"";
- next;
- menu
- "That sounds bad! But you just need to keep planting, right?", L_Next2;
-
-L_Next2:
- mes "[Andra]";
- mes "\"Exactly! But it is a big place. And I don't have too much money to buy seeds. If only I could find someone who could help me... ah... I know you are probably busy, but since you are here, would you like to help me in this noble task?\"";
- menu
- "Of course! What can I do to help you?", L_Next3,
- "Not right now, I'm really busy.", L_Busy;
-
-L_Next3:
- mes "[Andra]";
- mes "\"Yay! I knew you would help me! I just need seeds and water... I think " + @seeds_amount + " Grass Seeds and " + @water_amount + " Bottle(s) of Water should be enough to grow some plants on the place. If you give the items, you can let the rest with me.\"";
- next;
- menu
- "I don't have it right now, but I will come back later.", L_Close,
- "Here are the seeds and the water.", L_Next4;
-
-L_Next4:
- if (countitem("BottleOfWater") < @water_amount || countitem("GrassSeed") < @seeds_amount) goto L_NotEnough;
- if ($@spawned_plants >= $@MAX_GLOBAL_PLANTS) goto L_Gather;
- mes "[Andra]";
- mes "\"Great! Thank you for you help. If you have more items and want to help again, feel free to talk to me. We just have to be careful to not oversoak the soil with water.. but you don't need to worry, I will know when it is the right time to stop planting.";
- next;
- delitem "BottleOfWater", @water_amount;
- delitem "GrassSeed", @seeds_amount;
- set FLAGS, FLAGS | FLAG_ANDRA_HELPED;
- mes "Andra pours some water in a lot of different places and then throws some seeds to the sky. The wind carries some of them really far from her.";
- close2;
- goto L_PreSummon;
-
-L_PreSummon:
- set $@andra_status, 1;
- set $@farmer$, strcharinfo(0);
- startnpctimer;
- end;
-
-OnTimer1000:
- set $@plant_id, rand(1029,1032);
- areamonster "008-1",44,18,135,46,"",$@plant_id,$@PLANTS_PER_SEED, "Andra::OnPlantDeath";
- if (attachrid(getcharid(3,$@farmer$)) == 0)
- goto L_Spawn1000;
- message strcharinfo(0), "Andra: I think some plants will grow almost instantly! Just Watch...";
- goto L_Spawn1000;
-
-L_Spawn1000:
- set $@spawned_plants, $@spawned_plants + $@PLANTS_PER_SEED;
- end;
-
-OnTimer3000:
- set $@plant_id, rand(1029,1032);
- areamonster "008-1",44,18,135,46,"",$@plant_id,$@PLANTS_PER_SEED, "Andra::OnPlantDeath";
- set $@spawned_plants, $@spawned_plants + $@PLANTS_PER_SEED;
- end;
-
-OnTimer5000:
- set $@plant_id, rand(1029,1032);
- areamonster "008-1",44,18,135,46,"",$@plant_id,$@PLANTS_PER_SEED, "Andra::OnPlantDeath";
- set $@spawned_plants, $@spawned_plants + $@PLANTS_PER_SEED;
- end;
-
-OnTimer7000:
- set $@plant_id, rand(1029,1032);
- areamonster "008-1",44,18,135,46,"",$@plant_id,$@PLANTS_PER_SEED, "Andra::OnPlantDeath";
- if (attachrid(getcharid(3,$@farmer$)) == 0)
- goto L_Spawn7000;
- message strcharinfo(0), "Andra: Good... Just take a walk and you will be able to see how your seeds turned into some nice looking plants.";
- goto L_Spawn7000;
-
-L_Spawn7000:
- set $@spawned_plants, $@spawned_plants + $@PLANTS_PER_SEED;
- set $@andra_status, 0;
- set $@farmer$, "";
- setnpctimer 0;
- stopnpctimer;
- end;
-
-L_Return:
- mes "[Andra]";
- mes "\"Hi " + strcharinfo(0) + ", good to see you! You came back to help me again?\"";
- next;
- menu
- "Yes, and I already have the seeds and the water.", L_Next5,
- "No, I just wanted to say hello.", L_Bye;
-
-L_Next5:
- if ($@spawned_plants >= $@MAX_GLOBAL_PLANTS) goto L_Gather;
- if (countitem("BottleOfWater") < @water_amount || countitem("GrassSeed") < @seeds_amount) goto L_NotEnough;
- delitem "BottleOfWater", @water_amount;
- delitem "GrassSeed", @seeds_amount;
- mes "Andra pours some water in a lot of different places and then throws the seeds to the sky. The wind carries some of them really far from her.";
- close2;
- goto L_PreSummon;
-
-OnPlantDeath:
- set $@spawned_plants, $@spawned_plants - 1;
- end;
-
-L_NotEnough:
- mes "[Andra]";
- mes "\"Sorry, but you don't have the items I need... Please, come back when you have them.\"";
- close;
-
-L_Gather:
- mes "[Andra]";
- mes "\"Look at all those plants! I think we shoudn't plant more seeds until someone gather those herbs...\"";
- close;
-
-L_Bye:
- mes "[Andra]";
- mes "\"Oh, you are a nice person... Thanks!\"";
- close;
-
-L_Busy:
- mes "[Andra]";
- mes "\"Ok, I understand. Come back if have some free time!\"";
- close;
-
-L_DislikePlants:
- mes "[Andra]";
- mes "\"Really? How can someone dislike plants and trees? What a strange thing...\"";
- close;
-
-L_Planting:
- mes "[Andra]";
- mes "\"Sorry, I can't talk right now. I am planting some seeds " + $@farmer$ + " gave me.\"";
- close;
-
-L_Close:
- close;
-
-L_TooYoung:
- mes "[Andra]";
- mes "\"I'm sorry, I can't talk right now. I am really busy with those trees! If you feel like talking, maybe you should come back later.\"";
- close;
-
-OnInit:
- set $@PLANTS_PER_SEED, 3;
- set $@MAX_GLOBAL_PLANTS, 100; // You can plant only if the amount of plants currently in the map is < than this value.
- end;
-}
diff --git a/world/map/npc/008-1/annualeaster.txt b/world/map/npc/008-1/annualeaster.txt
deleted file mode 100644
index 23d7611a..00000000
--- a/world/map/npc/008-1/annualeaster.txt
+++ /dev/null
@@ -1,224 +0,0 @@
-// Annual easter event.
-
-// Annual_Quest byte 1 is used, see Oscar.txt for further information.
-
-// Author: PjotrOrial
-
-// read up on http://en.wikipedia.org/wiki/Computus
-// Easter cannot be before march 22 or after april 25, so activate
-// the event in these days.
-
-008-1,0,0,0|script|Easter Eggs|32767
-{
-
-//////////////////////////////////
-// puppet logic below
-
- if (strnpcinfo(2) == "") end;
- if (get(.disabled, "Easter Eggs") || $@isEaster < 1) goto L_Destroy;
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- if ((gettimetick(2)-TUT_var < 5*7*86400) || (BaseLevel < 40)) //player must be created at least 5 weeks ago
- goto L_EndTooYoung;
-
- set @easter_year, (Annual_Quest & BYTE_1_MASK) >> BYTE_1_SHIFT;
-
- if (#EASTERTIMEPENALTY == 0)
- goto L_WarmUp;
- // prevent clicking multiple times:
- if (gettimetick(2) < #EASTERTIMEPENALTY + get(.wait_time, "Easter Eggs"))
- goto L_End2;
- if (@easter_year > gettime(7) - 2000)
- goto L_End3;
- set #EASTERTIMEPENALTY, gettimetick(2);
-
- set .found, .found + 1; // this egg has been found X times
- set @AnnualEasterTries, @AnnualEasterTries + 1; // you tried X times since login
-
- message strcharinfo(0), "Eggs : You found something!";
- set .@size, get(.small_rewards, "Easter Eggs");
- set .@random, rand(.@size+2);
- if (.@random < .@size)
- getitem get(.small_rewards$[.@random], "Easter Eggs"), rand(1, 2);
- elif (.@random == .@size)
- getexp rand(200), 0;
- else
- set Zeny, Zeny + rand(50);
-
- if (rand(get(.chance, "Easter Eggs")))
- goto L_NoEasterEgg;
-
-
- set .@random, rand(get(.medium_rewards$, "Easter Eggs"));
- getitem get(.medium_rewards$[.@random], "Easter Eggs"), 1;
- misceffect FX_GETITEM, strcharinfo(0);
- goto L_NoEasterEgg;
-
-L_NoEasterEgg:
- set .@fchance, get(.final_rew_chance, "Easter Eggs");
- if (@AnnualEasterTries > .@fchance)
- set @AnnualEasterTries, .@fchance;
- set .@random, rand(.@fchance - @AnnualEasterTries + 1);
- if (.@random || @easter_year > gettime(7) - 2000)
- goto L_Reward_End;
-
- // block for further items this year:
- set @easter_year, gettime(7) - 2000 + 1;
- set Annual_Quest, (Annual_Quest & ~(BYTE_1_MASK) | (@easter_year << BYTE_1_SHIFT));
-
- // Hand out pretty unique rewards depending on the current year:
- // We'll be handing out 2 different items each year, whereas one of them
- // will be very common (95 %) and the other rare (5 %) for the players.
- // The rare item will become the common item next year.
- set .@rewardindex, gettime(7) - 2012;
- if (rand(100) < 5)
- set .@rewardindex, .@rewardindex + 1;
-
- // now hand out the specific item:
- set .@rewardindex, .@rewardindex % get(.big_rewards, "Easter Eggs");
- getitem get(.big_rewards$[.@rewardindex], "Easter Eggs"), 1;
- misceffect FX_GETITEM, strcharinfo(0);
- message strcharinfo(0), "Eggs : This is really special. You won't find anything like this again.";
- goto L_Reward_End;
-
-L_Reward_End:
- if (.found >= get(.mapcount, "Easter Eggs"))
- goto L_Destroy;
- end;
-
-L_Destroy:
- set .eggs, get(.eggs, "Easter Eggs") - 1, "Easter Eggs"; // tell the puppeteer we lost an egg
- destroy;
-
-L_EndTooYoung:
- message strcharinfo(0), "Eggs : The nest is empty.";
- end;
-
-L_WarmUp:
- set #EASTERTIMEPENALTY, gettimetick(2);
- getitem "MoubooFigurine", 1;
- misceffect FX_GETITEM, strcharinfo(0);
- message strcharinfo(0), "Eggs : Hmmm eggs! Maybe you can find something nice there!";
- end;
-
-L_End3:
- message strcharinfo(0), "Eggs : Don't be greedy! You already found something nice.";
- end;
-
-L_End2:
- message strcharinfo(0), "Eggs : Don't be greedy! You just found something a moment ago.";
- set #EASTERTIMEPENALTY, #EASTERTIMEPENALTY + 5;
- if (#EASTERTIMEPENALTY > gettimetick(2))
- set #EASTERTIMEPENALTY, gettimetick(2);
- end;
-
-OnTimer5000:
- if (get(.disabled, "Easter Eggs") || $@isEaster < 1)
- goto L_Destroy;
- initnpctimer;
- end;
-
-
-//////////////////////////////////
-// puppeteer logic below
-
-OnSpawn:
- set .@e, rand(2,.loc[1]);
- set .@x, .loc[.@e];
- set .@y, .loc[(.@e-1)+.loc[1]];
- set .eID, .eID + 1; // give the egg an id
- set .@name$, "#--Ee"+chr(3)+.eID;
- if (.eID == 2147483647)
- set .eID, 0; // start over if id = 0x7FFFFFFF
- if (puppet(strnpcinfo(3), .@x, .@y, .@name$, 375) < 1) goto L_RetrySpawn; // spawn the egg
- initnpctimer .@name$; // init puppeteer check timer
- end;
-
-L_RetrySpawn:
- addnpctimer 0, strnpcinfo(0) + "::OnSpawn"; // schedule a spawn
- end;
-
-S_Spawn:
- if (.eggs >= .max_eggs)
- goto S_Return;
- set .eggs, .eggs + 1;
- addnpctimer 125 + rand(250), strnpcinfo(0) + "::OnSpawn"; // schedule a spawn
- if (.eggs < .min_eggs)
- goto S_Spawn;
- return;
-
-S_Return:
- return;
-
-OnHeartbeat:
- if (.max_eggs < 1 || .disabled || $@isEaster < 1) end;
- set .mapcount, 1 + getmapusers(strnpcinfo(3)) / 3;
- callsub S_Spawn;
- addnpctimer 1000, strnpcinfo(0) + "::OnHeartbeat"; // heartbeat
- end;
-
-OnCheckEaster:
- if ((gettime(6) == 3 && gettime(5) >= 22) || (gettime(6) == 4 && gettime(5) <= 25))
- set $@isEaster, 1;
- else
- set $@isEaster, 0;
- if ($@isEaster && .eggs < 1)
- donpcevent "Easter Eggs::OnStart";
- end;
-
-OnStart:
- if (.disabled || $@isEaster < 1) end;
- set .min_eggs, 1; // min number of eggs
- set .max_eggs, 3; // max number of eggs
- set .eggs, 0; // virtual amount of eggs
- set .eID, 0; // last egg id
- set .wait_time, 15;
- set .final_rew_chance, 70;
- set .chance, 750;
- setarray .loc[0], 0, 1,1, // first row: x, second row: y
- 41, 45, 50, 57, 60, 64, 67, 65, 59, 72, 70, 82, 81, 93, 97, 101, 88, 108, 115, 122, 122, 129, 129, 130, 135, 123, 132, 132, 127, 124, 121, 107, 100, 101, 109, 104, 88, 84, 92, 59, 71, 65, 53, 55, 74, 59, 53, 46, 44, 44, 38, 43, 40, 43, 37,
- 87, 89, 88, 93, 98, 90, 96, 82, 81, 82, 96, 98, 92, 89, 89, 81, 82, 94, 96, 96, 90, 86, 72, 65, 60, 46, 25, 21, 20, 22, 20, 34, 24, 41, 43, 42, 48, 28, 27, 17, 23, 29, 25, 20, 39, 41, 34, 36, 18, 25, 31, 39, 64, 69, 73;
- set .loc[0], (getarraysize(.loc) - 1); // loc 0 and 1 are special (stores array size, and half index)
- set .loc[1], ((.loc[0]+1)/2);
- setarray .small_rewards$[0], 0, "AppleCake", "CactusDrink", "CactusPotion", "Cake", "Candy", "CherryCake", "ChocolateBar", "ChocolateCake", "GreenApple", "Orange", "OrangeCake", "OrangeCupcake", "RedApple", "WhiteCake";
- set .small_rewards, getarraysize(.small_rewards$);
- setarray .medium_rewards$[0], 0, "RedEasterEgg", "GreenEasterEgg", "BlueEasterEgg", "YellowEasterEgg", "PinkEasterEgg", "TealEasterEgg";
- setarray .big_rewards$[0], 0, "RedEggshellHat", "BlueEggshellHat", "YellowEggshellHat", "GreenEggshellHat", "OrangeEggshellHat", "DarkEggshellHat";
- set .big_rewards, getarraysize(.big_rewards$);
- donpcevent strnpcinfo(0) + "::OnHeartbeat"; // first heartbeat
- end;
-}
-
-function|script|Easter Debug
-{
- goto L_Menu;
-
-L_Menu:
- clear;
- mes "Please choose an option.";
- if (get(.disabled, "Easter Eggs"))
- menu
- "Do Nothing.", L_Return,
- "Enable eggs.", L_Enable;
- menu
- "Do Nothing.", L_Return,
- "Disable eggs.", L_Disable;
-
-L_Enable:
- set .disabled, 0, "Easter Eggs";
- clear;
- mes "Easter Eggs enabled.";
- next;
- goto L_Menu;
-
-L_Disable:
- set .disabled, 1, "Easter Eggs"; // TODO: (tmwa) automatically destroy puppets when using @disablenpc & also discard timers
- clear;
- mes "Easter Eggs disabled.";
- next;
- goto L_Menu;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/008-1/banu.txt b/world/map/npc/008-1/banu.txt
deleted file mode 100644
index 37881ca0..00000000
--- a/world/map/npc/008-1/banu.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-008-1,70,42,0|script|Banu|154
-{
- set @EXP, 100;
- set @money_water, 250;
- set @money_knife, 100;
-
- if (QL_BANU >= 3) goto L_Done;
- if (QL_BANU == 2) goto L_Knife;
- if (QL_BANU == 1) goto L_Water;
-
- mes "[Banu]";
- mes "\"Ah, hello. You've come at just the right moment. The field work is hard and the sun is burning.";
- mes "Would you mind refilling an old woman's Empty Bottle with water?\"";
- menu
- "Sure!",L_Next,
- "Sorry, I'm busy.",L_Close;
-
-L_Next:
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_FullInv;
-
- mes "She smiles.";
- mes "[Banu]";
- mes "\"Here is my Empty Bottle. There is a well right over there at Hurnscald.\"";
- getitem "EmptyBottle", 1;
- set QL_BANU, 1;
- goto L_Close;
-
-L_Water:
- mes "[Banu]";
- mes "\"Ah, you're back. I'm so thirsty.\"";
- next;
- if (countitem("BottleOfWater") < 1)
- goto L_NoWater;
- delitem "BottleOfWater", 1;
- mes "She grabs the Bottle of Water and drinks.";
- getexp @EXP, 0;
- set Zeny, Zeny + @money_water;
- set QL_BANU, 2;
- mes "[Banu]";
- mes "\"Ah, that's refreshing. Thank you. You're a good kid. Have this for your expenses.";
- mes "Maybe you can do me another favor?\"";
- next;
- mes "\"I need a new Knife. Peter in the Hurnscald forge to the South of here is selling some. But it's such a long way for my old legs.";
- mes "Would you go to get me a Knife?\"";
- goto L_Close;
-
-L_Knife:
- mes "[Banu]";
- mes "\"Hello dear. Did you get the knife for me?\"";
- menu
- "Yeah, here is it.",L_Next1,
- "Not yet.",L_Close;
-
-L_Next1:
- if (countitem("Knife") < 1)
- goto L_NoKnife;
- delitem "Knife", 1;
- getexp @EXP, 0;
- set Zeny, Zeny + @money_knife;
- set QL_BANU, 3;
- mes "[Banu]";
- mes "\"Thank you! You're a darling. Please take this for your effort.\"";
- goto L_Close;
-
-L_Done:
- mes "[Banu]";
- set @rand, rand(3);
- if (@rand == 0)
- mes "\"I spent all my life here in Hurnscald. It's a good place to live.\"";
- if (@rand == 1)
- mes "\"Did you see the kids playing hide and seek? Ah, when I was young I used to play with my good friend Sorfina. She lives in Candor now, East of Hurnscald by boat.\"";
- if (@rand == 2)
- mes "\"Tonori is ruled by a council of wise wizards.\"";
- goto L_Close;
-
-L_NoWater:
- mes "[Banu]";
- mes "\"You didn't get it yet? Shame on you, an old woman is depending on you.\"";
- goto L_Close;
-
-L_NoKnife:
- mes "[Banu]";
- mes "\"Where is it? Don't play tricks on an old woman! That's not nice.\"";
- goto L_Close;
-
-L_FullInv:
- mes "[Banu]";
- mes "\"Oh my dear! You're carrying so many things that you can't take my Empty Bottle.\"";
- goto L_Close;
-
-L_Close:
- set @inventorylist_count, 0;
- set @EXP, 0;
- set @rand, 0;
- close;
-}
diff --git a/world/map/npc/008-1/diryn.txt b/world/map/npc/008-1/diryn.txt
deleted file mode 100644
index 6570f1d8..00000000
--- a/world/map/npc/008-1/diryn.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-008-1,81,82,0|script|Diryn the Traveler|103
-{
- set @npcname$, "Diryn";
- set @NpcTravelBit, $@hurnscald_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/008-1/dock.txt b/world/map/npc/008-1/dock.txt
deleted file mode 100644
index acb3a23e..00000000
--- a/world/map/npc/008-1/dock.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-// The ferry dock
-
-008-1,147,64,0|script|Hurnscald North Koga|395,10,3
-{
- set @npc_distance, 11;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardFerry";
- end;
-
-OnTouch:
- addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard";
- end;
-
-OnBoard:
- callfunc "BoardFerry";
- end;
-}
-
-008-1,139,65,0|script|Hurnscald North Dock|400,2,1
-{
- set @npc_distance, 3;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardFerry";
- end;
-}
-
-008-1,120,44,0|script|#Hurnscald NorthDock|32767
-{
- end;
-OnCommandArrive:
- disablenpc "Hurnscald North Dock";
- enablenpc "Hurnscald North Koga";
- areatimer 0, "008-1", 137, 64, 141, 65, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock
- end;
-
-OnAreaWarp:
- callfunc "BoardFerry";
- end;
-
-OnCommandWarp:
- disablenpc "Hurnscald North Koga";
- enablenpc "Hurnscald North Dock";
- end;
-}
-
-008-1,147,75,0|script|Hurnscald South Koga|395,10,3
-{
- set @npc_distance, 10;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardCandorFerry";
- end;
-
-OnTouch:
- addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard";
- end;
-
-OnBoard:
- callfunc "BoardCandorFerry";
- end;
-}
-
-008-1,139,76,0|script|Hurnscald South Dock|400,2,1
-{
- set @npc_distance, 3;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardCandorFerry";
- end;
-}
-
-008-1,65,25,0|script|#Hurnscald SouthDock|32767
-{
- end;
-OnCommandArrive:
- disablenpc "Hurnscald South Dock";
- enablenpc "Hurnscald South Koga";
- areatimer 0, "008-1", 137, 75, 141, 76, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock
- end;
-
-OnAreaWarp:
- callfunc "BoardCandorFerry";
- end;
-
-OnCommandWarp:
- disablenpc "Hurnscald South Koga";
- enablenpc "Hurnscald South Dock";
- end;
-}
diff --git a/world/map/npc/008-1/george.txt b/world/map/npc/008-1/george.txt
deleted file mode 100644
index 8cd95734..00000000
--- a/world/map/npc/008-1/george.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-
-008-1,135,62,0|script|George#pirate|138
-{
- set @halloween_npc_id, $@halloween_npc_george;
- callfunc "TrickOrTreat";
-
- if (getequipid(equip_head) == 617) goto L_Pirate;
- if (getequipid(equip_head) == 622) goto L_Bandana;
- if (getequipid(equip_head) == 621) goto L_EyePatch;
- mes "[George the Pirate]";
- mes "\"Yar! Do you need something, matey?\"";
- goto L_Main;
-
-L_Main:
- menu
- "Can you explain the Ferry?", L_Explain,
- "Nothing I guess", L_Close;
-
-L_Pirate:
- mes "[George the Pirate]";
- mes "\"Arrrrh! Ye be wearing a pirate's hat!\"";
- goto L_Main;
-
-L_Bandana:
- mes "[George the Pirate]";
- mes "\"Arrrrh! Ye remind me of my old first mate!\"";
- goto L_Main;
-
-L_EyePatch:
- mes "[George the Pirate]";
- mes "\"Arrrrh! Looks like ye lost an eye there!\"";
- goto L_Main;
-
-L_Explain:
- mes "[George the Pirate]";
- mes "\"Arrr matey! I helped pioneer the trade routes between Hurnscald and the rest of the World, so now merchants and adventurers can travel to and fro without any hassle of dodging wolvern, yarr.\"";
- next;
- callfunc "FerryHelp";
- goto L_Main;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/008-1/hinnak.txt b/world/map/npc/008-1/hinnak.txt
deleted file mode 100644
index d16460c3..00000000
--- a/world/map/npc/008-1/hinnak.txt
+++ /dev/null
@@ -1,257 +0,0 @@
-// This script file contains the npc scripts for the quest to obtain a scythe.
-//
-// Needed: 10 Pink Antenna
-// Reward: Scythe
-//
-// Variables used: Nibble 1 of QUEST_Hurnscald (previously QUEST_Scythe_state)
-
-008-1,101,30,0|script|Hinnak|142
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@inspector == 10) goto L_NohMask;
- goto L_No_NohMask;
-
-L_No_NohMask:
- set @state, ((QUEST_Hurnscald & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
-
- if (@state == 1) goto L_Exchange;
- if (@state == 2) goto L_ThanksAgain;
- if (getequipid(equip_head) == 751) goto L_Intro_Hat;
-
- mes "[Farmer Hinnak]";
- mes "\"Argh! I hate them! I @#$% hate them! I @#$% hate these @#$% pinkies!\"";
- next;
- menu
- "You need some anger control therapy.", L_Close,
- "Why do you hate them?", L_Reason;
-
-L_Intro_Hat:
- mes "The farmer lunges at you with a farming implement.";
- next;
- heal -50, 0;
- menu
- "I'm out of here.", L_Close,
- "Whoa, what are you doing?", L_Intro_Hat_Explain;
-
-L_Intro_Hat_Explain:
- mes "[Farmer Hinnak]";
- mes "\"Sorry, you look like a pinkie. They've been destroying my fields, and I guess I got a bit worked up.\"";
- next;
- goto L_Help;
-
-L_Reason:
- mes "[Farmer Hinnak]";
- mes "\"These @#$% beasts are jumping around in my fields destroying all my harvest.";
- mes "But they are too fast. I can't catch them.\"";
- next;
- menu
- "Want me to help you?", L_Help,
- "Well, life ain't fair.", L_Close;
-
-L_Help:
- mes "[Farmer Hinnak]";
- mes "\"Yes, you look quite fast. Maybe you can catch some of them. That will pay them a lesson.";
- mes "Slay some of them and bring me 10 of their antennae.\"";
- set @state, 1;
- callsub S_Update_Mask;
- next;
- menu
- "Sure, I'm on my way", L_Close,
- "How much is this worth to you?", L_Reward;
-
-L_Reward:
- mes "[Farmer Hinnak]";
- mes "\"Well, I can't offer you much. But I got an old scythe laying around. Maybe you can use it as a weapon.\"";
- goto L_Close;
-
-L_Exchange:
- if (getequipid(equip_head) != 751)
- goto L_Exchange_Start;
- mes "The farmer glares at your hat.";
- next;
- goto L_Exchange_Start;
-
-L_Exchange_Start:
- mes "[Farmer Hinnak]";
- mes "\"Have you got the 10 antennae?\"";
- next;
- menu
- "Not yet, but I am working on it.", L_Close,
- "Sure, here they are!", L_Exchange_Exchange;
-
-L_Exchange_Exchange:
- if (countitem("PinkAntenna") < 10)
- goto L_Exchange_Notenough;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("PinkAntenna") > 10)
- goto L_Exchange_TooMany;
- delitem "PinkAntenna", 10;
- getitem "Scythe", 1;
- set @state, 2;
- callsub S_Update_Mask;
- mes "[Farmer Hinnak]";
- mes "\"Thank you very much. I've got something for you. My old scythe. Maybe you can use it as a weapon. It is a bit cumbersome but its strikes are deadly.\"";
- goto L_Close;
-
-L_Exchange_Notenough:
- mes "[Farmer Hinnak]";
- mes "\"It doesn't look like you do.\"";
- goto L_Close;
-
-L_Exchange_TooMany:
- mes "[Farmer Hinnak]";
- mes "\"Looks like you don't have room for this. Come back later to receive your reward. Hold on to the antennea until then.\"";
- goto L_Close;
-
-L_ThanksAgain:
- if (getequipid(equip_head) == 751)
- goto L_ThanksHat;
- mes "[Farmer Hinnak]";
- mes "\"Good to see you again, and thanks again for helping me with the pinkies!\"";
- next;
- goto L_ThanksMenu;
-
-L_ThanksHat:
- mes "[Farmer Hinnak]";
- mes "\"That better be a trophy on your head.\"";
- menu
- "It is.", L_Next;
-
-L_Next:
- mes "[Farmer Hinnak]";
- mes "\"Good then. Thanks for your help with the pinkies.\"";
- goto L_ThanksMenu;
-
-L_ThanksMenu:
- menu
- "Sure, any time!", L_Next1,
- "Anything else you want me to do?", L_Next1,
- "You're welcome. Bye!", L_Bye;
-
-L_Next1:
- mes "[Farmer Hinnak]";
- mes "\"Actually, it's been a long day. If it's no trouble, could you get me a beer?\"";
- next;
- menu
- "Here you are.", L_GiveBeer,
- "Sure, I'll go get one. Bye!", L_Bye,
- "You shouldn't drink while working!", L_Next2;
-
-L_Next2:
- mes "[Farmer Hinnak]";
- mes "\"Well, I'm done for the day, and I'm quite old enough to decide when I can have a beer, thank you!\"";
- next;
- menu
- "Sorry... here you are.", L_GiveBeer,
- "I don't have any.", L_NoBeer;
-
-L_GiveBeer:
- if (countitem("Beer") < 1)
- goto L_NoBeer;
- delitem "Beer", 1;
- mes "[Farmer Hinnak]";
- mes "Hinnak takes a sip.";
- mes "\"Aaah! Nothing like a well-deserved beer after a long day of tending the crops!\"";
- mes "\"Thanks, that was very kind of you!\"";
- next;
- mes "[Farmer Hinnak]";
- mes "He takes another sip.";
- mes "\"Thanks! You know, I had the strangest thing happen to me. I had this patch of ground that was really clumpy; lots of clay, you see.\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"Right over there.\"";
- mes "He points to a stretch of soft, raked ground.";
- mes "\"Looks much better now, doesn't it? But how I got there is kind-a scary...\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"I'd been trying to break it up for a while, but that kind of work is a pain. So my wife said that I should go and see the witch, just in case she knows something.\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"And sure enough I ask the witch, and she has a look at it. 'Nothing I can do', she says, 'but I can ask a friend'.\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"So the next day another witch shows up. Gorgeous woman, but when she looked at me, the scares went scuttling down my spine....\"";
- mes "\"First thing she asked was if I'm a farmer. Said her friend had told her that I needed help.\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"I show her what the problem is, and she tells me to go inside and wait.\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"Hinnak drains his beer in one long sip, then hesitates.";
- next;
- mes "[Farmer Hinnak]";
- mes "\"So I go inside. I'm barely in when it starts raining outside, pouring cats and mouboos!\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"Not so weird, perhaps, except that it was been bright and sunny just a second before! So I rush out, my wife telling me to leave the witch alone, and I see her standing there in the middle of the rain...\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"None of the raindrops touched her, as if they was afraid!\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"Then she yells out some gobbledygook word, and out of the ground there comes a swarm of maggots, crawling and digging and climbing over each other's backs...\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"And then she turns to me! Seeing her stare, for a moment there I think that she'll turn me into a pinkie, for sure...\"";
- next;
- mes "[Farmer Hinnak]";
- mes "\"But all she says is, 'if you'd stayed inside, you wouldn't be wet now'.\"";
- next;
- menu
- "Hahaha!", L_Sagatha_hahaha,
- "Whoah, scary...", L_Sagatha_scary,
- "What was that gobbledygook word?", L_Sagatha_word,
- "I better go now.", L_Bye;
-
-L_Sagatha_hahaha:
- mes "[Farmer Hinnak]";
- mes "\"Yeah, funny now... But you should've seen that stare! Ah, well, never mind.\"";
- goto L_Close;
-
-L_Sagatha_scary:
- mes "[Farmer Hinnak]";
- mes "\"Yeah, you could say that...\"";
- mes "He stares into his empty beer jug, as if wishing it weren't empty yet.";
- goto L_Close;
-
-L_Sagatha_word:
- mes "[Farmer Hinnak]";
- mes "\"Oh, I can't be sure... but something like '" + get(.invocation$, "summon-maggots") + "', I think.\"";
- goto L_Close;
-
-L_NoBeer:
- mes "[Farmer Hinnak]";
- mes "\"Ah... no beer? Oh well.\"";
- goto L_Close;
-
-L_Bye:
- mes "[Farmer Hinnak]";
- mes "\"Bye!\"";
- goto L_Close;
-
-L_NohMask:
- menu
- "Did you see anyone in a mask come by here at night?", L_NohMask_Mask,
- "Did you see anyone with a large satchel come by here at night?", L_NohMask_Satchel,
- "Hello.", L_No_NohMask;
-
-L_NohMask_Mask:
- mes "[Farmer Hinnak]";
- mes "\"No. It tends to be too dark to see a mask.\"";
- goto L_Close;
-
-L_NohMask_Satchel:
- mes "[Farmer Hinnak]";
- mes "\"Yes, I saw someone with a large sack on their back go to the mining camp.\"";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- set @inspector, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_1_MASK)) | (@state << NIBBLE_1_SHIFT);
- return;
-}
diff --git a/world/map/npc/008-1/mapflags.txt b/world/map/npc/008-1/mapflags.txt
deleted file mode 100644
index 95ad83d5..00000000
--- a/world/map/npc/008-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-008-1|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/008-1/mikhail.txt b/world/map/npc/008-1/mikhail.txt
deleted file mode 100644
index aca28beb..00000000
--- a/world/map/npc/008-1/mikhail.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-008-1,135,25,0|script|Mikhail|120
-{
- if (QL_SOUP >= 6) goto L_Done;
- if (QL_SOUP == 5) goto L_Progress;
- if (QL_SOUP == 4) goto L_Start;
- goto L_Con_Mik_First;
-
-L_Con_Mik_First:
- mes "[Mikhail]";
- mes "\"Hello... I'm supposed to be helping Bernard from the Inn but...\"";
- mes "His eyes grow wide";
- mes "\"Eeekkk another one.\"";
- mes "";
- mes "It seems that the boy would like to say more, but seems too terrified at the moment. Maybe you should help someone else first, so that he sees your intentions are good.";
- goto L_Close;
-
-L_Start:
- mes "[Mikhail]";
- mes "\"Bernard sent me to get five Maggot Slimes from the maggots in the fields, but they scare me so bad!\"";
- next;
- mes "\"You look like a nice person. Would you go get them for me?\"";
- menu
- "Of course, I'll go get them for you.", L_accept,
- "I've got other things to do right now.", L_Close;
-
-L_accept:
- mes "[Mikhail]";
- mes "\"Thank you so much! I'll wait for you here.\"";
- set QL_SOUP, 5;
- close;
-
-L_Progress:
- mes "[Mikhail]";
- mes "\"Did you bring me the five Maggot Slimes I need?\"";
- next;
- menu
- "Yes, here they are, kiddo!", L_try,
- "Not yet, but I'll be back soon.", L_Close;
-
-L_try:
- if (countitem("MaggotSlime") >= 5)
- goto L_get;
- mes "[Mikhail]";
- mes "\"It doesn't look like you have them all...\"";
- goto L_Close;
-
-L_get:
- delitem "MaggotSlime", 5;
- getexp 100, 0;
- set QL_SOUP, 6;
- mes "[Mikhail]";
- mes "\"Ooh! Thank you so much! I can get back to Bernard now!\"";
- goto L_Close;
-
-L_Done:
- mes "[Mikhail]";
- mes "\"Thanks again for helping me get those Maggot Slimes!\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/009-1/_import.txt b/world/map/npc/009-1/_import.txt
deleted file mode 100644
index 00d7e5e7..00000000
--- a/world/map/npc/009-1/_import.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// Map 009-1: Hurnscald
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-1
-npc: npc/009-1/_mobs.txt
-npc: npc/009-1/_nodes.txt
-npc: npc/009-1/_warps.txt
-npc: npc/009-1/constable.txt
-npc: npc/009-1/event.txt
-npc: npc/009-1/guide.txt
-npc: npc/009-1/jack.txt
-npc: npc/009-1/mapflags.txt
-npc: npc/009-1/milly.txt
-npc: npc/009-1/old_man.txt
-npc: npc/009-1/old_woman.txt
-npc: npc/009-1/sabine.txt
-npc: npc/009-1/soul-menhir.txt
-npc: npc/009-1/water_pump.txt
diff --git a/world/map/npc/009-1/_mobs.txt b/world/map/npc/009-1/_mobs.txt
deleted file mode 100644
index 223569bf..00000000
--- a/world/map/npc/009-1/_mobs.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald mobs
-
-009-1,74,32,2,1|monster|CloverPatch|1037,1,100000ms,120000ms
-009-1,29,44,9,13|monster|PinkFlower|1014,2,0ms,250ms
-009-1,88,51,15,4|monster|Squirrel|1038,2,0ms,5000ms
-009-1,80,38,5,5|monster|Squirrel|1038,1,0ms,5000ms
-009-1,0,0,0,0|monster|Butterfly|1055,5,30ms,20ms
diff --git a/world/map/npc/009-1/_nodes.txt b/world/map/npc/009-1/_nodes.txt
deleted file mode 100644
index 6d59c8db..00000000
--- a/world/map/npc/009-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-1/_warps.txt b/world/map/npc/009-1/_warps.txt
deleted file mode 100644
index bdb4da98..00000000
--- a/world/map/npc/009-1/_warps.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald warps
-
-009-1,49,55|warp|2,-1,008-1,78,81
-009-1,97,36|warp|-1,0,008-1,128,61
-009-1,35,30|warp|-1,-1,009-2,50,54
-009-1,58,46|warp|-1,-1,009-2,27,106
-009-1,59,33|warp|-1,-1,009-2,95,29
-009-1,71,30|warp|-1,-1,009-2,130,25
-009-1,80,31|warp|-1,-1,009-2,149,66
-009-1,72,44|warp|-1,-1,009-2,114,77
-009-1,91,46|warp|0,-1,009-2,182,66
-009-1,24,36|warp|-1,1,008-1,53,61
-009-1,49,24|warp|2,-1,008-1,78,48
-009-1,60,41|warp|-1,-1,009-2,32,91
diff --git a/world/map/npc/009-1/constable.txt b/world/map/npc/009-1/constable.txt
deleted file mode 100644
index d87f83d7..00000000
--- a/world/map/npc/009-1/constable.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-
-009-1,55,34,0|script|Constable Bob|419
-{
- mes "[Constable Bob]";
- mes "\"Hello.\"";
- mes "\"I've been getting complaints of lawlessness in Hurnscald recently, so I thought I'd come down here myself and explain the rules.\"";
- mes "\"Please make sure that you follow them!\"";
- callfunc "GameRules";
- close;
-}
diff --git a/world/map/npc/009-1/event.txt b/world/map/npc/009-1/event.txt
deleted file mode 100644
index 4b2a65d8..00000000
--- a/world/map/npc/009-1/event.txt
+++ /dev/null
@@ -1,167 +0,0 @@
-// Kytty <3 Valentine Day 2021
-// Valentine Day 2021-02-14 script authored by Jesusalva on the 12th
-// St. Valentine Day is always on the 14th, the event goes from 13th to 15th
-
-009-1,30,34,0|script|Kytty|430
-{
- // Core Variable Switcher
- if (gettime(5) >= 13 && gettime(5) <= 15) goto L_Quest;
- if (gettime(5) > 15 && strcharinfo(0) == "kytty" && $VALENTINE) goto L_StopEvent;
- if (gettime(5) > 15 && #VALENTINE) goto L_ClaimRewards;
- if (gettime(5) > 15 && GM >= GM_DEV && $VALENTINE) goto L_ReadOnly;
- mes "[Kytty]";
- mes "\"Uh? Hello there. I am looking for my husband to stare at him, don't mind me.\"";
- close;
-
-L_Quest:
- if (#VALENTINE) goto L_Running;
- // Core dialog
- mes "[Kytty]";
- mes "\"Hey, "+strcharinfo(0)+"! I have a problem and perhaps you can help me!\"";
- next;
- menu
- "Sure, m'am... What should I do?", L_Continue,
- "Who, me? Sorry, wrong person.", L_Close;
-
-L_Continue:
- mes "";
- mes "[Kytty]";
- mes "\"I feel like my husband is staring at other people, and that is ABSURD! He should only stare at kytty!\" %%e";
- next;
- mes "[Kytty]";
- mes "\"So kytty came up with a great plan - kytty will brew some [@@5263|Love Potions@@] so hubby only stares at me!\"";
- next;
- mes "[Kytty]";
- mes "\"I have most ingredients, but a few are still missing and I was hoping you could help me out:\"";
- mes "- 20x Cherry";
- mes "- 20x Chocolate Bar";
- mes "- 1x Diamond";
- mes "- 1x Chocolate Cake";
- next;
- mes "[Kytty]";
- mes "\"Uh? Of course I won't put everything in the potion! Wyara will sell me some other ingredients for the diamond, and... Hey, stop making questions!\"";
- next;
- mes "[Kytty]";
- mes "\"Do you have everything I've asked for?\"";
- menu
- "I do.", L_Check,
- "I don't.", L_Close;
-
-L_Check:
- mes "";
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Full;
-
- if (countitem("ChocolateBar") < 20) goto L_NotEnough;
- if (countitem("Cherry") < 20) goto L_NotEnough;
- if (countitem("Diamond") < 1) goto L_NotEnough;
- if (countitem("ChocolateCake") < 1) goto L_NotEnough;
-
- delitem "ChocolateBar", 20;
- delitem "Cherry", 20;
- delitem "Diamond", 1;
- delitem "ChocolateCake", 1;
- getitem "LovePotion", 1;
- getexp 50000, 0;
- set #VALENTINE, 1;
- mes "[Kytty]";
- mes "\"With this, he will totally stare only at me now! Thanks for the help. Here, you can have an extra, but you are not cute like him so don't blame me if it don't work or present... side effects.\"";
- next;
- mes "[Kytty]";
- mes "\"Also, I love chocolate. I'll give you a spare potion every fifty [@@509|@@] you bring me.\"";
- close;
-
-L_NotEnough:
- mes "";
- mes "[Kytty]";
- mes "\"Don't try to troll me, I know you don't have everything.\"";
- close;
-
-L_Full:
- mes "[Kytty]";
- mes "\"Free up some space in your inventory, please.\"";
- close;
-
-/////////////////////////////////////////////////////////////////////
-L_Running:
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Full;
- mes "[Kytty]";
- mes "\"Have you brought me more chocolate? I am starving with only "+$VALENTINE+" [@@509|@@]. You ##Bonly##b gave me "+(#VALENTINE-1)+" bar(s), after all!\"";
- next;
- menu
- "Not yet, but I'll be back.", L_Close,
- "Sure thing miss, take all you want!", L_Collect;
-
-L_Collect:
- mes "";
- set @choco, countitem("ChocolateBar");
- set @bonus, (#VALENTINE%50)+@choco;
- set @potio, @bonus/50;
- //debugmes "Choco "+@choco+" Potio "+@potio+" Bonus "+@bonus+".";
- set @bonus, 0;
- delitem "ChocolateBar", @choco;
- set #VALENTINE, #VALENTINE+@choco;
- set $VALENTINE, $VALENTINE+@choco;
- getexp @choco*15, @choco*7;
- if (@potio) goto L_BonusPots;
- mes "[Kytty]";
- mes "\"Yummy! Thanks for your support. Tell me if you have more chocolate!\"";
- close;
-
-L_BonusPots:
- getitem "LovePotion", @potio;
- mes "[Kytty]";
- mes "\"Here are some love potions for you. But as I said - I'm not sure if you are cute enough for them.\"";
- close;
-
-L_StopEvent:
- mes "[Kytty]";
- mes "\"Hey other me! I still have "+$VALENTINE+" chocolate bars, but I'm a NPC and cannot eat them, so here they are!\"";
- next;
- set @choco, min($VALENTINE, 30000);
- getitem "ChocolateBar", @choco;
- set $VALENTINE, $VALENTINE-@choco;
- mes "[Kytty]";
- mes "\"Also: Jesusalva asked me to wish you a happy Valentine Day.\"";
- close;
-
-L_ReadOnly:
- mes "[Kytty]";
- mes "\"I'm still holding on "+$VALENTINE+" chocolate bars, but I'll eat them soon!\"";
- close;
-
-////////////////////////////////////////////////////////////////////
-L_ClaimRewards:
- if(!#VALENTINE) goto L_Close;
- getinventorylist;
- if (@inventorylist_count > 95) goto L_Full;
- setarray @oldstock$, "GrassFedTofu", "Honey", "VeganWater", "FairTradeSoil", "LactoseFreeAcorn", "RawAir", "FreeRangeMoss";
- getitem @oldstock$[rand(getarraysize(@oldstock$))], 1;
- cleararray @oldstock$, "", getarraysize(@oldstock$);
- //getitem "BlueWolfHelmet", 1; // FIXME?
- getitem "ShockSweet", rand(4, 7);
- getitem "DarkConcentrationPotion", rand(2, 5);
- getexp 1+(#VALENTINE*BaseLevel)/2, 0;
- set #VALENTINE, 0;
- close;
-
-////////////////////////////////////////////////////////////////////
-L_Close:
- close;
-
-L_Off:
- disablenpc "Kytty";
- end;
-
-L_On:
- enablenpc "Kytty";
- end;
-
-OnInit:
- if (gettime(6) == 2) goto L_On; // NPC shows only in February
- goto L_Off;
-
-OnClock0000:
- goto OnInit;
-}
diff --git a/world/map/npc/009-1/guide.txt b/world/map/npc/009-1/guide.txt
deleted file mode 100644
index 75dd0bb4..00000000
--- a/world/map/npc/009-1/guide.txt
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-
-009-1,92,29,0|script|Ian|102
-{
- // This line is only relevant for players, who started before the timestamp was introduced.
- // Set the graduation cap flag at the right position.
- // It is a bugfix
- if ((TUT_var < 4) && (TUT_var & 2))
- set FLAGS, FLAGS|FLAG_GOT_GRADUATIONCAP;
-
- if ((TUT_var != 0) && !(FLAGS & FLAG_GOT_GRADUATIONCAP) && BaseLevel >= 10)
- goto L_Grad;
- goto L_DoneGrad;
-
-L_DoneGrad:
- mes "[Ian the Guide]";
- mes "\"Would you like to know about something?\"";
- next;
- goto L_Menu_A;
-
-L_Menu_A:
- menu
- "Fighting", L_Fight,
- "Items", L_Items,
- "Monsters", L_Monster,
- "Stylist", L_Style,
- "Quests", L_Quests,
- "NPCs", L_NPC,
- "Commands", L_Comm,
- "Attributes", L_Stats,
- "Magic", L_Magic,
- "Quick Keys", L_Key,
- "Laws", L_Laws,
- "I know everything!", L_Know;
-
-L_Fight:
- mes "[Ian the Guide]";
- mes "\"People live in this world by living off of monsters.";
- mes "You can fight monsters and even players by hitting the [CTRL] key, or left mouse click.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"If you get tired of pressing the key too much, you can also type [SHIFT]+[CTRL].";
- mes "This will make your character attack continuously for the time you are inactive.\"";
- next;
- goto L_Menu_A;
-
-L_Items:
- mes "[Ian the Guide]";
- mes "\"There are three types of items.";
- mes "They can be Consumables, Equipment or Miscellaneous\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Consumable items such as Potions, can be used only once.";
- mes "After use, they will disappear from your inventory.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Equipment items like Armors, Weapons, Accessories";
- mes "can be equipped for fashionable purposes or to raise your status.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Miscellaneous items such as maggot slime, are used";
- mes "in creating other items, or just to trade and sell.\"";
- next;
- goto L_Menu_A;
-
-L_Monster:
- mes "[Ian the Guide]";
- mes "\"In every world, there are beasts. Monsters can be found almost anywhere!~";
- mes "To fight them, please read [Fighting] if you do not know how.\"";
- next;
- mes "\"There a several types of monsters, Aggressive, Neutral, and Assistants.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Aggressive monsters know that they are always in danger";
- mes "so therefore they always keep their guard up,";
- mes "making them attack anybody in sight.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Neutral monsters tend to just lounge around until attacked.";
- mes "They will leave everything alone unless they are threatened.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Assistants are monsters who help each other.";
- mes "You should always check how many are around you before attacking a single one!\"";
- next;
- goto L_Menu_A;
-
-L_Style:
- mes "[Ian the Guide]";
- mes "\"The stylist NPCs will cut and perm your hair!";
- mes "They are known for their hair growth formula\"";
- next;
- goto L_Menu_A;
-
-L_Quests:
- mes "[Ian the Guide]";
- mes "\"There are people in the world in need of help!";
- mes "Most of these people aren't afraid to give rewards to those who help them.";
- mes "So be nice and help people along the way!\"";
- next;
- mes "[Ian the Guide]";
- mes "\"If you are looking for a place to get started, I heard that the farmers just outside the gates are looking for help.\"";
- next;
- goto L_Menu_A;
-
-L_NPC:
- mes "[Ian the Guide]";
- mes "\"NPCs [Non Playable Characters] are people who are always in the game,";
- mes "tending to many varieties of services from just chatting to helping others.\"";
- next;
- goto L_Menu_A;
-
-L_Comm:
- mes "[Ian the Guide]";
- mes "\"/clear clears the text box.\"";
- mes "\"/help displays the client commands (ones starting with a /) in the chat box.\"";
- mes "\"/whisper [name] allows you to message someone privately.\"";
- mes "\"/who displays the current number of online users.\"";
- mes "\"/where displays the current map's name.\"";
- next;
- goto L_Menu_A;
-
-L_Stats:
- mes "[Ian the Guide]";
- mes "\"People vary greatly by how much strength, agility, dexterity, intelligence, vitality, and luck they have.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Strength helps you carry items, and it also allows you to hit harder – but it is not too helpful if you focus on missile weapons.";
- mes "More agility allows you to attack faster, and to dodge attacks more easily.";
- mes "Your dexterity determines how likely you are to hit a monster, and how effective you are with missile weapons.\"";
- next;
- mes "[Ian the Guide]";
- mes "\"Vitality determines how resistant to injuries you are, and how much damage you can take before you die.";
- mes "Intelligence is useful for alchemy and magic, but there are few opportunities for either at the moment.";
- mes "Luck determines many small things, including the likelihood of both recieving and dealing critical hits\"";
- next;
- mes "[Ian the Guide]";
- mes "\"I recommend that you practice your dexterity, since some of the more dangerous monsters are very hard to hit otherwise.";
- mes "Don't bother trying to work on your luck, and your intelligence is probably not something anyone cares about either.\"";
- next;
- goto L_Menu_A;
-
-L_Magic:
- mes "[Ian the Guide]";
- mes "\"The only active Mana Seed remaining is West of here somewhere, Ask Wyara, they may know more about it.\"";
- next;
- mes "\"In decades past, there was a Mana Seed in Tulimshar, from which people could draw magical energies. Unfortunately, the seed went dorment.";
- mes "However, I've overheard the bard mentioning something about this recently... if you are interested in magic, try talking to him!\"";
- next;
- goto L_Menu_A;
-
-L_Key:
- mes "[Ian the Guide]";
- mes "\"There are many key combinations, press F1 for a short list of them!\"";
- next;
- goto L_Menu_A;
-
-L_Laws:
- mes "[Ian the Guide]";
- callfunc "GameRules";
- next;
- goto L_Menu_A;
-
-L_Know:
- mes "[Ian the Guide]";
- mes "\"Lost? Confused? Want to know why you can't get past a quest, overcome an NPC or find an item? Check http://wiki.themanaworld.org for player hints, walkthroughs, item lists and more!\"";
- next;
- mes "\"But remember, the game isn't fun when you already know what to do. Use it well or you will lose interest in playing The Mana World! Please help by reporting anything that is unclear, outdated or that needs to be seen on our forums at http://forums.themanaworld.org.\"";
- close;
-
-L_Grad:
- getinventorylist;
- if (@inventorylist_count == 100) goto L_TooMany;
- mes "[Ian the Guide]";
- mes "\"Hey, you've been doing good, let me give you this.\"";
- getitem "GraduationCap", 1;
- set FLAGS, FLAGS | FLAG_GOT_GRADUATIONCAP;
- next;
- goto L_DoneGrad;
-
-L_TooMany:
- mes "[Ian the Guide]";
- mes "\"I wanted to give you something, but you don't have room for it.\"";
- next;
- goto L_DoneGrad;
-}
diff --git a/world/map/npc/009-1/jack.txt b/world/map/npc/009-1/jack.txt
deleted file mode 100644
index 7a4f6573..00000000
--- a/world/map/npc/009-1/jack.txt
+++ /dev/null
@@ -1,287 +0,0 @@
-//#################################################################################
-//# #
-//# This script file contains the npc scripts for two quests: #
-//# #
-//# Quest1: Obtaining a Forest bow #
-//# Needed: About 20 Raw logs, 5000gp, some chatting and running #
-//# Reward: Forest bow #
-//# #
-//# Quest2: Obtaining a Wooden shield #
-//# Needed: 40 Raw logs, 5000gp #
-//# Reward: Wooden shield and 2500exp #
-//# #
-//# Variables used: @QUEST_Forestbow_state, nibbles 0 and 1 #
-//#################################################################################
-
-// Lumberjack
-009-1,40,45,0|script|Jack|141
-{
- set @RAWLOGS_AMOUNT, 40;
- set @SHIELD_COST, 5000;
- set @QUEST_SHIELD_EXP, 2500;
-
- set @Q_Forestbow_MASK, NIBBLE_0_MASK;
- set @Q_Forestbow_SHIFT, NIBBLE_0_SHIFT;
-
- set @Q_Woodenshield_MASK, NIBBLE_1_MASK;
- set @Q_Woodenshield_SHIFT, NIBBLE_1_SHIFT;
-
- set @Q_Forestbow, ((QUEST_Forestbow_state & @Q_Forestbow_MASK) >> @Q_Forestbow_SHIFT);
- set @Q_Woodenshield, ((QUEST_Forestbow_state & @Q_Woodenshield_MASK) >> @Q_Woodenshield_SHIFT);
-
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@Q_Woodenshield >= 3) goto L_Shield_state_3;
- if (@Q_Woodenshield == 2) goto L_Shield_state_2;
- if (@Q_Woodenshield == 1) goto L_Shield_state_1;
- if (@Q_Forestbow > 1) goto L_Bow_state_2;
-
- mes "[Jack Lumber]";
- mes "\"Hello there! My name is Jack Lumber, the enemy of all trees. If you need some firewood, just let me know.\"";
- if (@inspector == 1)
- goto L_NohMask_Ask;
- goto L_NotInspector;
-
-L_NotInspector:
- next;
- if (@Q_Forestbow < 1)
- goto L_Close;
- mes "I heard you aren't delivering any more living wood. Why not?";
- next;
- goto L_Next;
-
-L_Next:
- mes "[Jack Lumber]";
- mes "\"Why not?! I value my life, that's why!.\"";
- next;
- menu
- "What do you mean?", L_Next1;
-
-L_Next1:
- mes "[Jack Lumber]";
- mes "\"A week ago, I was going to chop down one of those twigleaf trees in the forest to the southwest – these twigleafs are the trees that give me the living wood you speak of. I was just chopping away with my axe, and guess what happened? One of its branches hit me! At first, I thought it fell down or the wind blew it, but it hurt! After I shook it off and struck the tree again with my axe, another branch hit me! I got angry and started to chop off all the low-hanging branches so this couldn't happen anymore. Even after all that though, I still can't believe what happened next.\"";
- next;
- menu
- "What happened? ", L_Next2;
-
-L_Next2:
- mes "[Jack Lumber]";
- mes "\"You'll think I'm insane if I tell you...\"";
- next;
- menu
- "I won't. I promise.", L_Next3;
-
-L_Next3:
- mes "[Jack Lumber]";
- mes "\"Alright, well... After I chopped off a few branches, the whole tree started to move! Its roots tore out of the earth, all the branches started to wave around, and a face appeared on the trunk. The whole tree CAME TO LIFE! It was mad!\"";
- next;
- menu
- "Did you run away?", L_Next4,
- "Did you fight it?", L_Next4;
-
-L_Next4:
- mes "[Jack Lumber]";
- mes "\"I fought it, of course! I took my axe and attacked the beast! It hit me here *points at a bruise on his shoulder,* here *lifts his trouser leg to show another bruise,* and here *lifts his shirt and reveals even worse bruises.* But I didn't give up! I chopped away at it, branch after branch, and in the end I chopped off its roots, and it fell to the ground – motionless.\"";
- next;
- menu
- "So you beat the monster? Then why are you so scared?", L_Next5;
-
-L_Next5:
- mes "[Jack Lumber]";
- mes "\"Well, I was exhausted and had to rest. A few minutes passed, and suddenly I was practically surrounded by a dozen or more of these living trees!\"";
- next;
- menu
- "Did you fight them too? ", L_Next6;
-
-L_Next6:
- mes "[Jack Lumber]";
- mes "\"Are you crazy? I barely destroyed one of those beasts; I was in no shape to fight again! I ran away as fast as I could, and lucky for me the monsters aren't that fast on their tiny root legs. Ha!\"";
- next;
- menu
- "So, I guess you aren't chopping down trees anymore?", L_Next7;
-
-L_Next7:
- mes "[Jack Lumber]";
- mes "\"I still do; it's my job. But I'll no longer chop those twigleafs – I'll tell you that. I know the bow master wants some twigleaf wood, but I don't care. I won't risk MY life for a few gold pieces! If you really want to, just go to the southwest, but I can't help you. I won't go there ever again.\"";
- next;
- menu
- "Southwest you say? OK, thank you.", L_Next8;
-
-L_Next8:
- set @Q_Forestbow, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Bow_state_2:
- // Bow state 4: The player has found a perfect piece of wood.
- if (@Q_Forestbow > 3) goto L_Bow_state_4;
-
- mes "\"Good luck hunting those tree monsters – you'll need it.\"";
- if (@inspector != 1)
- goto L_Close;
- goto L_NohMask_Ask;
-
-L_Bow_state_4:
- mes "[Jack Lumber]";
- mes "\"You've finally found that perfect piece of living wood that Alan needs to make a Forest Bow, haven't you?\"";
- next;
- menu
- "I couldn't afford the bow, though...", L_Shield_state_0,
- "No, I'm still looking.", L_Bow_state_4_reaffirm,
- "Yes, I've got the Forest bow now.", L_Next9,
- "I'm a melee warrior, I don't need bows.", L_Shield_state_0;
-
-L_Next9:
- // Check if the player tells the truth (continue on in any case)
- if (@Q_Forestbow > 4) goto L_Shield_state_0;
-
- mes "[Jack Lumber]";
- mes "\"Hrmph. I'm someone who respects those speaking the truth.\"";
- next;
- goto L_Shield_state_0;
-
-L_Bow_state_4_reaffirm:
- mes "[Jack Lumber]";
- mes "\"You should go talk to Alan again.\"";
- goto L_Close;
-
-L_Shield_state_0:
- set @Q_Woodenshield, 1;
- callsub S_Update_Mask;
-
- mes "[Jack Lumber]";
- mes "\"You no doubt remember how I struggled with those beasts, fighting for my life. Scared me, those seven-branched little stumps did! Never since that day have I strayed near them, and yet there you are, cutting them down one by one. I'm proud of you – to dare to fight those trunks is admirable indeed. You're as strong as if you were my own child!\"";
- next;
- goto L_Shield_state_1;
-
-L_Shield_state_1:
- mes "[Jack Lumber]";
- mes "\"I have an idea. What would you say about a new shield?\"";
- next;
- if (@inspector == 1)
- menu
- "No thanks.", L_Close,
- "Yes, please!", L_Yes,
- "Actually, I'd like to know if you've seen any strange happenings in town.", L_NohMask_Answer;
- menu
- "No thanks.", L_Close,
- "Yes, please!", L_Yes;
-
-L_Yes:
- mes "[Jack Lumber]";
- mes "\"All I need is " + @RAWLOGS_AMOUNT + " raw logs. This needn't be high quality wood; pretty much any log you can find should work. Oh, and I'll also need " + @SHIELD_COST + " GP for other materials.\"";
- next;
- set @Q_Woodenshield, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Shield_state_2:
- mes "[Jack Lumber]";
- mes "\"Do you have the " + @RAWLOGS_AMOUNT + " raw logs and " + @SHIELD_COST + " GP for the shield?\"";
- menu
- "Here it is.", L_Next10,
- "I'll come back later.", L_Close;
-
-L_Next10:
- if (countitem("RawLog") < @RAWLOGS_AMOUNT)
- goto L_Not_enough_logs;
- if (Zeny < @SHIELD_COST)
- goto L_not_enough_money;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- delitem "RawLog", @RAWLOGS_AMOUNT;
- set Zeny, Zeny - @SHIELD_COST;
- getexp @QUEST_SHIELD_EXP, 0;
- getitem "WoodenShield", 1;
- set @Q_Woodenshield, 3;
- callsub S_Update_Mask;
- mes "[Jack Lumber]";
- mes "\"Have a seat.\"";
- mes "Jack saws the logs into pieces and then sands them until they are smooth to the touch.";
- mes "Applying some strong-smelling liquid, he tans them to a darker hue.";
- next;
- mes "[Jack Lumber]";
- mes "Grabbing one of two leftover pieces, he begins to carve it into a round shape, then repeats this with the second piece – shield handles from what you can tell.";
- next;
- mes "[Jack Lumber]";
- mes "Meanwhile, the sun has dried the other pieces. Jack places them next to each other, adds a frame, and nails everything together.";
- mes "The resulting shield looks usable already, but Jack applies another liquid to it and leaves it to dry for a few moments.";
- next;
- mes "[Jack Lumber]";
- mes "Finally, he hands the shield to you.";
- mes "\"Enjoy your new shield!\"";
- mes "[" + @QUEST_SHIELD_EXP + " experience points]";
- next;
- goto L_Close;
-
-L_Not_enough_logs:
- mes "[Jack Lumber]";
- mes "\"You don't have enough wood for me to craft this shield; I need a total of " + @RAWLOGS_AMOUNT + " raw logs.\"";
- goto L_Close;
-
-L_not_enough_money:
- mes "[Jack Lumber]";
- mes "\"I'm afraid that you don't have enough gold. I need " + @SHIELD_COST + " GP to finish your shield.\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Jack Lumber]";
- mes "\"You don't have enough room to carry the shield. Come back when you do.\"";
- goto L_Close;
-
-L_Shield_state_3:
- mes "[Jack Lumber]";
- mes "\"I hope that my shield will serve you well!\"";
- next;
- if (@inspector != 1)
- goto L_Made_Shield;
- menu
- "Me too.", L_Made_Shield,
- "Have you seen anything that might be connected to the recent robberies in town?", L_NohMask_Answer;
-
-L_NohMask_Ask:
- menu
- "I'll keep that in mind.", L_Close,
- "I heard you aren't delivering any more living wood. Why not?", L_Next,
- "Have you seen anything that might be connected to the recent robberies in town?", L_NohMask_Answer;
-
-L_NohMask_Answer:
- mes "[Jack Lumber]";
- mes "\"Sorry, no.\"";
- goto L_Close;
-
-L_Made_Shield:
- mes "[Jack Lumber]";
- mes "\"Speaking of that shield...\"";
- mes "\"It has put me behind on all these new Nivalis orders, now that the ship is running there.\"";
- next;
- mes "\"Care to help out? I'll pay you for your time.\"";
- goto L_Daily;
-
-L_Daily:
- set @dq_level, 30;
- set @dq_cost, 25;
- set @dq_count, 30;
- set @dq_name$, "RawLog";
- set @dq_friendly_name$, "raw logs";
- set @dq_money, 4000;
- set @dq_exp, 4000;
-
- callfunc "DailyQuest";
-
- next;
-
- mes "[Jack Lumber]";
- mes "\"Check back with me tomorrow, and I'll let you know if I need any help with that shipment.\"";
-
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(@Q_Forestbow_MASK | @Q_Woodenshield_MASK)) | (@Q_Forestbow << @Q_Forestbow_SHIFT) | (@Q_Woodenshield << @Q_Woodenshield_SHIFT);
- return;
-}
diff --git a/world/map/npc/009-1/mapflags.txt b/world/map/npc/009-1/mapflags.txt
deleted file mode 100644
index 25408361..00000000
--- a/world/map/npc/009-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-009-1|mapflag|town
-009-1|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-1/milly.txt b/world/map/npc/009-1/milly.txt
deleted file mode 100644
index a32f7617..00000000
--- a/world/map/npc/009-1/milly.txt
+++ /dev/null
@@ -1,461 +0,0 @@
-// Milly is involved in:
-// Beanie-Copter quest
-// Story and dialogs: veryape
-// Scripting: Jenalya
-// Spelling, grammar and phrasing changes: Qwerty Dragon
-//
-// Inspector quest
-
-009-1,81,41,0|script|Milly|114
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- set @got_boneknife, ((QUEST_Forestbow_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) >= 4;
- set @got_setzer, ((QUEST_Forestbow_state & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT) >= 8;
- set @saved_rossy, (FLAGS & FLAG_ROSSI_COMPLETED);
- set @saved_cindy, QL_CINDY == 4;
-
- if (FLAGS & FLAG_GOT_BEANIEHAT) goto L_FinishedGood;
- if (FLAGS & FLAG_DECLINED_BEANIEHAT) goto L_FinishedBad;
-
- if (@saved_rossy && @saved_cindy && @got_setzer && (BOSS_POINTS >= 5000)) goto L_OfferCap;
- if (@got_setzer) goto L_GotSetzer;
- if (@saved_cindy) goto L_SavedCindy;
- if (@saved_rossy) goto L_SavedRossy;
- if (@got_boneknife) goto L_GotBoneKnife;
- if (BaseLevel > 40) goto L_NoKnifeYet;
-
- mes "[Milly]";
- mes "\"Hello traveler, welcome to Hurnscald.\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"Have you met Kfahr yet? He is the greatest hero that ever walked the land of Hurnscald!\"";
- menu
- "Hi! No, I haven't seen him yet.", L_Where,
- "Where can I find him?", L_Where,
- "Mh, I don't care for heroes.", L_Care,
- "Hello, yes I have met him.", L_MetKfahr;
-
-L_Where:
- mes "[Milly]";
- mes "\"I highly recommend you seek him out! He is a regular at the inn, located in the north-west part of town. If you are lucky he might tell you a story about his adventures.\"";
- goto L_Close;
-
-L_Care:
- mes "[Milly]";
- mes "\"What? Surely you do not appreciate what a hero he is! Mh, or perhaps honor is dead in you; for you to be so slow to comprehend the good that his exploits have wrought for us. Put on your thinking cap and be propelled into high adventure! Go to Kfahr, and listen to his stories.\"";
- next;
- mes "\"You can't have met him. No one who has met him would say such silly things.\"";
- next;
- goto L_Where;
-
-L_MetKfahr:
- mes "[Milly]";
- mes "\"Oh, I hope you stayed and listened to his stories about his adventures.\"";
- goto L_Close;
-
-L_NoKnifeYet:
- mes "[Milly]";
- mes "\"Hi again.\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"Have you talked to Kfahr lately?\"";
- menu
- "Yes.", L_TalkKfahr,
- "No.", L_HintKnife;
-
-L_TalkKfahr:
- mes "[Milly]";
- mes "\"Is it true as the rumors say? ...\"";
- next;
- goto L_HintKnife;
-
-L_HintKnife:
- mes "[Milly]";
- mes "\"You really should go meet him.\"";
- next;
- mes "\"I've heard that he is helping adventurers such as yourself with some exotic gear.\"";
- menu
- "I am not sure, I'd better go talk to him again.", L_Unsure,
- "Yes, it is true.", L_True;
-
-L_Unsure:
- mes "[Milly]";
- mes "\"You better hurry up before he changes his mind!\"";
- goto L_Close;
-
-L_True:
- mes "[Milly]";
- mes "\"So, why haven't you accepted his generous offer?\"";
- menu
- "I was just about to...", L_Unsure,
- "I don't need any help.", L_NoHelp;
-
-L_NoHelp:
- mes "[Milly]";
- mes "\"You must be kidding me.\"";
- next;
- mes "\"I am just a kid but not as silly as you. My pigtails possess more wisdom than you. You fooled me, you are no adventurer!\"";
- next;
- mes "\"You better learn from the wise and accept help from those who offer it.\"";
- goto L_Unsure;
-
-L_GotBoneKnife:
- mes "[Milly]";
- mes "\"Hi there.\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"I heard that you got an exotic knife from Kfahr.";
- mes "Would you kindly show it to me?\"";
- menu
- "Sure.", L_ShowKnife,
- "Haven't I already?", L_ShowKnifeAgain;
-
-L_ShowKnife:
- if (countitem("BoneKnife") < 1)
- goto L_ShowKnifeNo;
- mes "[Milly]";
- mes "\"Wow! That is a knife fitting a real adventurer!\"";
- next;
- mes "\"Kfahr ain't just a hero, he is also a stand up guy.\"";
- next;
- mes "\"You should be proud that he is honoring you with his knife like this.\"";
- next;
- mes "\"What a hero...\"";
- goto L_Close;
-
-L_ShowKnifeAgain:
- mes "[Milly]";
- mes "\"What possible objection could you have? It's so exiting to see such a fine knife.\"";
- next;
- mes "\"It is like cake, sure I might have had it before...\"";
- next;
- mes "\"... but does that stop me from wanting it once more?\"";
- next;
- mes "\"NO!\"";
- next;
- mes "\"Please let me see it!\"";
- menu
- "Okay.", L_ShowKnife,
- "Enough is enough.", L_ShowKnifeNo;
-
-L_ShowKnifeNo:
- mes "[Milly]";
- mes "\"I hope that the reason that you don't show it to me is because you have it tucked away somewhere safe.\"";
- next;
- mes "\"Otherwise you are just a bore...\"";
- next;
- mes "\"Don't be boring!\"";
- goto L_Close;
-
-L_SavedRossy:
- mes "[Milly]";
- mes "\"Hi friend!\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"Word of your fame has spread throughout all Hurnscald of your great heroism by helping my friends Rossy and Julia!\"";
- next;
- mes "\"Not only did you help Rossy, you saved her sister Julia from that nefarious Fey Element. That was a real act of valor!\"";
- next;
- mes "\"You are shaping up to be something of a hero yourself.\"";
- next;
- mes "\"I am so happy that you came to Hurnscald, without you I'm not so sure that Julia would have been saved.\"";
- menu
- "You're right, I am a hero!", L_Loudmouth,
- "I'm doing my best!", L_Modesty;
-
-L_Loudmouth:
- mes "[Milly]";
- mes "\"You surely are not...\"";
- next;
- mes "\"First and foremost you are a loudmouth. You need to learn actions speak better for themselves without your boasting.\"";
- next;
- mes "\"A little modesty would be a distinguishing trait for you to cultivate. You are talking as if you think that you are equal with Kfahr.\"";
- next;
- mes "\"I think you should show a little more respect when you are this close to legendary heroes.\"";
- goto L_Close;
-
-L_Modesty:
- mes "[Milly]";
- mes "\"Wow, you have been very helpful and unselfish risking your own safety for the sake of others! Thanks to that Julia is back and Olana is able to sleep at night.\"";
- next;
- mes "\"If you continue with these valiant deeds you might earn your place in the history books of Hurnscald!\"";
- goto L_Close;
-
-L_SavedCindy:
- mes "[Milly]";
- mes "\"Hi!\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"Are the rumors true?\"";
- next;
- mes "\"Word is going around that you saved a girl called Cindy who was captured by Yetis in Nivalis, and that you arranged a rescue party getting her back from a deep Yeti inhibited cave.\"";
- menu
- "Thanks to the party, yes.", L_Party,
- "Yes, it is true!", L_Cindy;
-
-L_Party:
- mes "[Milly]";
- mes "\"Wow! Not only are you brave, you also have the wisdom to seek help when needed!\"";
- next;
- mes "\"Being a skilled fighter is good. But being a skilled fighter coupled with your wits and organizational skill, now that is something special!\"";
- goto L_HeroGrowing;
-
-L_Cindy:
- mes "[Milly]";
- mes "\"Once again you have done good!\"";
- goto L_HeroGrowing;
-
-L_HeroGrowing:
- mes "[Milly]";
- mes "\"You have saved two kids about my own age from horrible situations, it is just like the stories I heard growing up.\"";
- next;
- mes "\"Things certainly are shaping up for you. My schoolmates play a game with you as the hero. And poets admire you in verse and song...\"";
- next;
- mes "\"Since you have proven yourself with your great acts, I will let you in on an exciting rumor I have heard.\"";
- next;
- mes "\"I have heard that Nicholas has learned new techniques in forging and weapon smithing. He is now able to improve a small sword into what is called a Setzer.\"";
- next;
- mes "\"Go talk to him and hear if he can help you get hold of one of these weapons.\"";
- goto L_Close;
-
-L_GotSetzer:
- mes "[Milly]";
- mes "\"Hello!\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"I heard that you got hold of a Setzer!\"";
- next;
- mes "\"And the fact that Kfahr helped you means he really rates you as a fellow adventurer!\"";
- next;
- mes "\"Praise does not get much better than that around here. He knows a good adventurer when he see one, you must have impressed him!\"";
- if (!@saved_cindy || !@saved_rossy)
- goto L_Close;
- next;
- mes "\"To be honest you are fast becoming my favored hero, even... dare I say it? Even more so than Kfahr.\"";
- next;
- mes "\"Your skill and good deeds are indisputable! However...\"";
- next;
- mes "\"Somehow I feel that you still need to establish your courage. The elders say that although they find you an admirable person, a hero of renown; that you can't be considered as great as Kfahr till you have proven yourself fearless.\"";
- next;
- mes "\"You could prove yourself as the greatest hero who has walked the land by accepting Paruas challenge at Candor. Stare death in the eyes, show no fear and conquer! Show everyone that you are worthy of the title: The Greatest Hero Ever!\"";
- next;
- mes "\"I myself already consider you my favorite hero, sure Kfahr has done great things, but...\"";
- next;
- mes "\"Nowadays he mostly sits around with that sad bunch of drunkards in the Inn, drinking beer and talking about past glory.\"";
- next;
- mes "\"For my generation you are the true hero, please prove the stony hearted elders wrong by showing them that you are fearless!\"";
- next;
- mes "\"Good luck and good bye! Health, mana, and wealth be yours! \"";
- goto L_Close;
-
-L_OfferCap:
- mes "[Milly]";
- mes "\"Hi there, hero of Hurnscald!\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"You really have proven yourself over and over. There is no way anyone could possibly say, you are not the equal of Kfahr!\"";
- next;
- mes "\"Now, even the stones of Hurnscald praise you as a hero as great as Kfahr!\"";
- next;
- mes "\"I have something I want to give you...\"";
- next;
- mes "\"I was given two of those helicopter beanie caps at my birthday. I told everyone that it was what I really wanted so I got two of them...\"";
- next;
- mes "\"And some other kids are picking on me for wearing it, they say it is for nerds... I would be happy to give you one of them.\"";
- next;
- mes "\"It would be great if you wore a cap just like mine, that would sure shut them up! Also, please accept this rare hat as a token of my gratitude for everything you have done.\"";
- next;
- mes "\"It would be an honor to have the same cap as my hero!\"";
- menu
- "Thank you!", L_Cap,
- "No, thanks.", L_Idiot;
-
-L_Cap:
- mes "[Milly]";
- mes "\"Wow, thanks for accepting my gift, it is so pleasing to know that you have the exact same cap as me! Friends forever!\"";
- getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("BeanieCopter", 1) == 0))
- goto L_TooMany;
- getitem "BeanieCopter", 1;
- set FLAGS, FLAGS | FLAG_GOT_BEANIEHAT;
- next;
- mes "She is giggling with excitement.";
- next;
- mes "[Milly]";
- mes "\"Come see me anytime! Goodbye!\"";
- goto L_Close;
-
-L_Idiot:
- mes "[Milly]";
- mes "\"Are you really sure? It is such a neat cap.\"";
- menu
- "Yes, no nerd hat for me!", L_BadBye,
- "Just kidding, I want one!", L_Cap;
-
-L_BadBye:
- mes "Tears are forming in her eyes.";
- mes "[Milly]";
- mes "\"I guess they were right, you're not any great hero! I'll give it to Kfahr instead!\"";
- next;
- mes "\"Please keep on traveling so I don't have to see you around here. It makes me sad to see you, every time I do I'll remember how wrong I was about you.\"";
- set FLAGS, FLAGS | FLAG_DECLINED_BEANIEHAT;
- goto L_Close;
-
-L_TooMany:
- mes "[Milly]";
- mes "\"You don't have any space left to carry it, go put some stuff in the storage and come back!\"";
- goto L_Close;
-
-L_FinishedGood:
- mes "[Milly]";
- mes "\"Hi there friend, my hero!\"";
- next;
- callsub S_InspectorMaybe;
-
- mes "\"Wear the copter beany cap in good health, mana and wealth! See you around!\"";
- goto L_Close;
-
-L_FinishedBad:
- mes "[Milly]";
- mes "\"Oh, it's you. I suppose you're here to make fun of my hat again.\"";
- next;
- callsub S_InspectorMaybe;
- mes "\"Won't you continue your travels soon?\"";
- menu
- "That's what I'm going to do.", L_Next,
- "I'm really sorry. Of course I want your hat!", L_Apologize;
-
-L_Next:
- mes "Milly looks away sadly.";
- goto L_Close;
-
-L_Apologize:
- getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("BeanieCopter", 1) == 0))
- goto L_TooMany;
- getitem "BeanieCopter", 1;
- set FLAGS, FLAGS | FLAG_GOT_BEANIEHAT;
- set FLAGS, FLAGS & ~FLAG_DECLINED_BEANIEHAT;
-
- mes "Milly looks surprised.";
- next;
- mes "[Milly]";
- mes "\"Oh, I... uh, thank you! I knew it! I knew such a heroic person as you can't be that mean.\"";
- goto L_Close;
-
-L_Close:
- set @got_boneknife, 0;
- set @got_setzer, 0;
- set @saved_rossy, 0;
- set @saved_cindy, 0;
- set @inspector, 0;
- close;
-
-S_InspectorMaybe:
- if (@inspector != 1)
- goto L_Return;
- menu
- "Have you seen anything strange lately?", L_NohMask_Strange,
- "Do you know anything about the recent robberies?", L_NohMask_Robbery,
- "Hello.", L_Return;
-
-L_NohMask_Strange:
- mes "[Milly]";
- mes "\"I haven't seen anything strange.\"";
- next;
- goto L_Return;
-
-L_NohMask_Robbery:
- mes "[Milly]";
- mes "\"No, sorry.\"";
- next;
- goto L_Return;
-
-L_Return:
- return;
-}
-
-009-1,82,41,0|script|MillyDebugHelper|114
-{
- mes "You can set certain quests as finished or not finished. What would you like to do?";
- menu
- "Bone Knife Quest done.", L_DBoneKnife,
- "Rossy Quest done.", L_DRossy,
- "Cindy Quest done.", L_DCindy,
- "Setzer Quest done.", L_DSetzer,
- "Gain 5000 Boss Points.", L_DBossPoints,
- "Bone Knife and Setzer Quest not done.", L_NBoneKnife,
- "Rossy Quest not done.", L_NRossy,
- "Cindy Quest not done.", L_NCindy,
- "Setzer Quest not done.", L_NSetzer,
- "Remove all Boss Points.", L_NBossPoints,
- "Nothing.", L_Close;
-
-L_DBoneKnife:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_2_MASK)) | (4 << NIBBLE_2_SHIFT);
- mes "Bone Knife quest set to completed.";
- close;
-
-L_DSetzer:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_2_MASK)) | (4 << NIBBLE_2_SHIFT);
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_3_MASK)) | (8 << NIBBLE_3_SHIFT);
- mes "Setzer quest set to completed. This includes the Bone Knife quest.";
- close;
-
-L_DRossy:
- set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED;
- mes "Rossy quest set to completed.";
- close;
-
-L_DCindy:
- set QL_CINDY, 4;
- mes "Cindy quest set to completed.";
- close;
-
-L_DBossPoints:
- set BOSS_POINTS, 5000;
- mes "Boss Points set to 5000.";
- close;
-
-L_NBoneKnife:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_2_MASK)) | (0 << NIBBLE_2_SHIFT);
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_3_MASK)) | (0 << NIBBLE_3_SHIFT);
- mes "Bone Knife and Setzer quest set to not completed.";
- close;
-
-L_NSetzer:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(NIBBLE_3_MASK)) | (0 << NIBBLE_3_SHIFT);
- mes "Bone Knife and Setzer quest set to not completed.";
- close;
-
-L_NRossy:
- set FLAGS, FLAGS & ~FLAG_ROSSI_COMPLETED;
- mes "Rossy quest set to not completed.";
- close;
-
-L_NCindy:
- set QL_CINDY, 0;
- mes "Cindy quest set to not completed.";
- close;
-
-L_NBossPoints:
- set BOSS_POINTS, 0;
- mes "Boss Points set to 0.";
- close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "MillyDebugHelper";
- end;
-}
diff --git a/world/map/npc/009-1/old_man.txt b/world/map/npc/009-1/old_man.txt
deleted file mode 100644
index 4abf906e..00000000
--- a/world/map/npc/009-1/old_man.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-// Old man
-
-009-1,85,51,0|script|Old Man|159
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- mes "[Old Man]";
- mes "\"Don't let those monsters get to you.\"";
- next;
- if (@inspector == 1) goto L_Ask;
- if (@inspector == 6) goto L_Accuse;
- goto L_Close;
-
-L_Ask:
- menu
- "Have you seen anything strange lately?", L_Ask_Nothing,
- "Do you know anything about the recent robberies?", L_Ask_Nothing,
- "I won't, thank you.", L_Close;
-
-L_Ask_Nothing:
- mes "[Old Man]";
- mes "\"I'm sorry, but I didn't see anything. You should ask my old woman.\"";
- goto L_Close;
-
-L_Accuse:
- menu
- "The leader of the troupe said you hung around them a lot while they were in town.", L_Accuse_Respond,
- "I won't, thank you.", L_Close;
-
-L_Accuse_Respond:
- mes "[Old Man]";
- mes "\"Yes, I hung around the theater a lot. I was an actor when I was younger. But I wasn't there that night. Me and the wife were at home all night.\"";
- set @inspector, 7;
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/009-1/old_woman.txt b/world/map/npc/009-1/old_woman.txt
deleted file mode 100644
index d3b26e7e..00000000
--- a/world/map/npc/009-1/old_woman.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-// Old woman
-
-009-1,29,43,0|script|Old Woman|154
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (BaseLevel < 40) goto L_Lower;
-
- mes "[Old Woman]";
- mes "\"Hello deary.\"";
- if ((@inspector >= 1 && @inspector <= 7) || @inspector == 9)
- goto L_NohMask;
- close;
-
-L_Lower:
- mes "[Old Woman]";
- mes "\"Watch out for these flowers. They don't like to be messed with.\"";
- if ((@inspector >= 1 && @inspector <= 7) || @inspector == 9)
- goto L_NohMask;
- close;
-
-L_NohMask:
- next;
- if (@inspector == 7)
- goto L_NohMask_Alibi;
- callfunc "ProcessEquip";
- if (@torsoC == cDarkBlue && @legsC == cDarkBlue)
- goto L_NohMask_Fake;
- if (@inspector >= 3 && @inspector <= 6)
- goto L_Close;
- menu
- "Have you seen anything strange lately?", L_NohMask_FirstAsk,
- "Do you know anything about the recent robberies?", L_NohMask_FirstAsk,
- "Hello", L_Close;
-
-L_NohMask_FirstAsk:
- mes "[Old Woman]";
- mes "\"Yes, but I'm only talking to the inspector himself!\"";
- if (@inspector != 1)
- goto L_Close;
- set @inspector, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_NohMask_Alibi:
- menu
- "Was your husband with you at home all night the last night that the troupe was in town?", L_Next;
-
-L_Next:
- mes "[Old Woman]";
- mes "\"Yes, we were both at home all night.\"";
- set @inspector, 8;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_NohMask_Fake:
- if (@inspector == 9) goto L_NohMask_Fake_Satchel;
- if (@inspector >= 3 && @inspector <= 6) goto L_NohMask_Filler;
-
- mes "[Old Woman]";
- mes "\"I saw someone sneaking around town wearing a theater mask. It looked like one of the masks used by the troupe that was in town recently.\"";
- set @inspector, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_NohMask_Filler:
- mes "[Old Woman]";
- mes "\"I hope you catch that naughty person!\"";
- goto L_Close;
-
-L_NohMask_Fake_Satchel:
- mes "[Old Woman]";
- mes "\"I've remembered something else. The night the troupe left, I saw someone with a theater mask take a large satchel out of town. He was heading north.\"";
- set @inspector, 10;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
- return;
-}
diff --git a/world/map/npc/009-1/sabine.txt b/world/map/npc/009-1/sabine.txt
deleted file mode 100644
index 2f960f75..00000000
--- a/world/map/npc/009-1/sabine.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-// Girl sitting on bench
-
-009-1,88,27,0|script|Sabine|106
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- mes "[Sabine]";
- mes "\"Isn't this place pretty? I love hanging out here!\"";
- next;
- if (@inspector != 1)
- goto L_Close;
-
- menu
- "Have you seen anything strange lately?", L_NohMask_Strange,
- "Do you know anything about the recent robberies?", L_NohMask_Robbery,
- "Yes, it is.", L_Close;
-
-L_NohMask_Strange:
- mes "[Sabine]";
- mes "\"I haven't seen anything strange.\"";
- goto L_Close;
-
-L_NohMask_Robbery:
- mes "[Sabine]";
- mes "\"No, sorry.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/009-1/soul-menhir.txt b/world/map/npc/009-1/soul-menhir.txt
deleted file mode 100644
index 3b8c5cee..00000000
--- a/world/map/npc/009-1/soul-menhir.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-009-1,53,40,0|script|Soul Menhir#hurnscald|344
-{
- set @map$, "009-1";
- setarray @Xs, 52, 53, 54, 52, 54, 52, 54;
- setarray @Ys, 39, 39, 39, 40, 40, 41, 41;
- set @x, 0;
- set @y, 0;
- callfunc "SoulMenhir";
- set @map$, "";
- cleararray @Xs[0], 0, 7;
- cleararray @Ys[0], 0, 7;
- set @x, 0;
- set @y, 0;
- close;
-}
diff --git a/world/map/npc/009-1/water_pump.txt b/world/map/npc/009-1/water_pump.txt
deleted file mode 100644
index 89a0ff24..00000000
--- a/world/map/npc/009-1/water_pump.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Water pump. You can fill empty bottles here
-
-009-1,76,33,0|script|Water Pump|400
-{
- callfunc "WaterBottle";
- end;
-}
diff --git a/world/map/npc/009-2/_import.txt b/world/map/npc/009-2/_import.txt
deleted file mode 100644
index 25198d72..00000000
--- a/world/map/npc/009-2/_import.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-// Map 009-2: Hurnscald Indoor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-2
-npc: npc/009-2/_mobs.txt
-npc: npc/009-2/_nodes.txt
-npc: npc/009-2/_warps.txt
-npc: npc/009-2/airlia.txt
-npc: npc/009-2/alan.txt
-npc: npc/009-2/bernard.txt
-npc: npc/009-2/doctor.txt
-npc: npc/009-2/drunks.txt
-npc: npc/009-2/entertainer.txt
-npc: npc/009-2/inspector.txt
-npc: npc/009-2/kfahr.txt
-npc: npc/009-2/lena.txt
-npc: npc/009-2/mapflags.txt
-npc: npc/009-2/misc.txt
-npc: npc/009-2/nicholas.txt
-npc: npc/009-2/nurse.txt
-npc: npc/009-2/olana.txt
-npc: npc/009-2/peter.txt
-npc: npc/009-2/richard.txt
-npc: npc/009-2/selim.txt
-npc: npc/009-2/shops.txt
-npc: npc/009-2/trader.txt
-npc: npc/009-2/waitress.txt
-npc: npc/009-2/wyara.txt
-npc: npc/009-2/yalina.txt
diff --git a/world/map/npc/009-2/_mobs.txt b/world/map/npc/009-2/_mobs.txt
deleted file mode 100644
index 45fa02a8..00000000
--- a/world/map/npc/009-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Indoor mobs
-
diff --git a/world/map/npc/009-2/_nodes.txt b/world/map/npc/009-2/_nodes.txt
deleted file mode 100644
index 161b9c17..00000000
--- a/world/map/npc/009-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Indoor nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-2/_warps.txt b/world/map/npc/009-2/_warps.txt
deleted file mode 100644
index eae3c9d2..00000000
--- a/world/map/npc/009-2/_warps.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Indoor warps
-
-009-2,75,23|warp|0,-1,009-2,74,47
-009-2,95,30|warp|-1,-1,009-1,59,34
-009-2,130,26|warp|-1,-1,009-1,71,31
-009-2,144,26|warp|0,-1,009-2,144,43
-009-2,144,42|warp|0,-1,009-2,144,25
-009-2,155,48|warp|0,-1,009-2,155,63
-009-2,114,46|warp|0,-1,009-2,114,70
-009-2,50,55|warp|-1,-1,009-1,35,31
-009-2,74,53|warp|-1,-1,009-2,143,78
-009-2,74,46|warp|0,-1,009-2,75,22
-009-2,114,78|warp|-1,-1,009-1,72,45
-009-2,114,69|warp|0,-1,009-2,114,45
-009-2,149,67|warp|-1,-1,009-1,80,32
-009-2,143,77|warp|-1,-1,009-2,74,52
-009-2,155,62|warp|0,-1,009-2,155,46
-009-2,182,67|warp|0,-1,009-1,91,47
-009-2,147,90|warp|-1,-1,009-3,173,21
-009-2,27,107|warp|-1,-1,009-1,58,47
-009-2,46,50|warp|-1,-1,009-2,76,78
-009-2,77,78|warp|-1,-1,009-2,47,50
-009-2,31,91|warp|-1,-1,009-1,59,41
-009-2,38,105|warp|-1,-1,009-7,21,20
diff --git a/world/map/npc/009-2/airlia.txt b/world/map/npc/009-2/airlia.txt
deleted file mode 100644
index 71726331..00000000
--- a/world/map/npc/009-2/airlia.txt
+++ /dev/null
@@ -1,248 +0,0 @@
-// Airlia, daughter of the cemetary caretaker
-
-// Future extensions:
-// * Add banter and random replies for the unlimited subquests
-// * Airlia quest = 2 unlocks options with Fighters of the Undead NPCs (in Cemetery), such as the 'Kill Sir Truk' quest
-// * Airlia quest = 2 unlocks other options, perhaps with future Warrior Guild prospects (this is long term)
-
-
-009-2,123,71,0|script|Airlia|108
-{
- // Subquest 1a: Caretaker's daughter (initial, once)
- set @LETTER_REWARD_GOLD_INITIAL, 1000;
- set @LETTER_REWARD_EXP_INITIAL, 2000;
-
- set @Q_STATUS_RECIEVED_FIRST_LETTER, 2;
- set @Q_STATUS_DELIVERED_FIRST_LETTER, 3;
-
- // Subquest 1b: Continued delivery of letters (unlimited)
- set @LETTER_REWARD_GOLD, 42;
- set @LETTER_REWARD_EXP, 500;
-
- set @Q_STATUS_HAS_NO_NEW_LETTER, 4;
- set @Q_STATUS_HAS_NEW_LETTER, 5;
-
- // Subquest 2a: Fetch those undead drops (initial, once)
- // TODO: Set sane values below
- set @FETCH_AMOUNT_INITIAL, 50;
- set @FETCH_LABEL_INITIAL$, "Bone";
- set @FETCH_REWARD_GOLD_INITIAL, 5000;
- set @FETCH_REWARD_EXP_INITIAL, 50000;
-
- set @Q_STATUS_HELP_AIRLIA, 1;
- set @Q_STATUS_INITIAL_FETCH_REWARDED, 2;
-
- // Subquest 2b: Fetch those undead drops (unlimited)
- // TODO: Set sane values below
- set @FETCH_AMOUNT, 10;
- set @FETCH_LABEL$, "DiseasedHeart";
- set @FETCH_REWARD_GOLD, 6000;
- set @FETCH_REWARD_EXP, 40000;
-
-
- if (QUEST_Airlia == @Q_STATUS_INITIAL_FETCH_REWARDED) goto L_Rewarded;
- if (QUEST_Airlia == @Q_STATUS_HELP_AIRLIA) goto L_Fetch;
- if (QUEST_Graveyard_Caretaker > @Q_STATUS_RECIEVED_FIRST_LETTER) goto L_intro;
- goto L_Caretaker;
-
-L_Caretaker:
- mes "[Airlia]";
- mes "\"Greetings. Do you need a housing permit, or to license your mount?\"";
- next;
- if (QUEST_Graveyard_Caretaker < @Q_STATUS_RECIEVED_FIRST_LETTER)
- menu
- "Sorry, no.", L_Next,
- "My what?", L_mount;
- if (QUEST_Graveyard_Caretaker == @Q_STATUS_RECIEVED_FIRST_LETTER)
- menu
- "Sorry, no.", L_Next,
- "I have a letter from your father.", L_first_reward,
- "My what?", L_mount;
- goto L_Next;
-
-L_Next:
- mes "[Airlia]";
- mes "\"Nobody ever does...\"";
- close;
-
-L_mount:
- // The mention of mounts will certainly gather some interest from players,
- // this section may be extended.
- close;
-
-L_first_reward:
- mes "[Airlia]";
- mes "\"Oh! Thank you very, very much! Please take this for your trouble.\"";
- if (@LETTER_REWARD_GOLD_INITIAL > 0)
- mes "[" + @LETTER_REWARD_GOLD_INITIAL + " GP]";
- if (@LETTER_REWARD_EXP_INITIAL > 0)
- mes "[" + @LETTER_REWARD_EXP_INITIAL + " experience points]";
- set Zeny, Zeny + @LETTER_REWARD_GOLD_INITIAL;
- getexp @LETTER_REWARD_EXP_INITIAL, 0;
- set QUEST_Graveyard_Caretaker, @Q_STATUS_DELIVERED_FIRST_LETTER;
- close;
-
-L_later_rewards:
- mes "[Airlia]";
- mes "\"Oh! Thank you very, very much! Please take this for your trouble.\"";
- if (@LETTER_REWARD_GOLD > 0)
- mes "[" + @LETTER_REWARD_GOLD + " GP]";
- if (@LETTER_REWARD_EXP > 0)
- mes "[" + @LETTER_REWARD_EXP + " experience points]";
- set Zeny, Zeny + @LETTER_REWARD_GOLD;
- getexp @LETTER_REWARD_EXP, 0;
- set QUEST_Graveyard_Caretaker, @Q_STATUS_HAS_NO_NEW_LETTER;
- close;
-
-L_intro:
- mes "[Airlia]";
- mes "\"My poor father, doomed to that awful cemetery.\"";
- next;
-
- // CASE REMOVED:
- // This step is pointless and just forces the player to make a selection that doesn't effect anything.
- // ALSO it misses the case where QUEST_Graveyard_Caretaker == 3, in this case it proceeds to the message without wasting player clicks
- // Removing this check will make execution the same for QUEST_Graveyard_Caretaker == 3 and QUEST_Graveyard_Caretaker == 4
- // If for some reason this is desireable, uncomment it and make sure to catch the extra case mentioned
- //
- //if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NO_NEW_LETTER)
- // menu
- // "...", -;
-
- if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER)
- menu
- "...", L_Next3,
- "Oh, I have a letter from him.", L_later_rewards;
- goto L_Next3;
-
-L_Next3:
- mes "[Airlia]";
- mes "\"You know, there are many who believe that each time the undead rise after being killed, they lose mana.";
- mes "Eventually, there will not be enough mana for them to rise again and they can be at rest. Do you believe this is true?\"";
- next;
- menu
- "I believe so, yes.", L_intro_mana_loss,
- "Maybe...", L_intro_mana_loss,
- "No, that is not proven.", L_Next1;
-
-L_Next1:
- mes "[Airlia]";
- mes "\"Oh...\"";
- close;
-
-L_intro_mana_loss:
- mes "[Airlia]";
- mes "\"When I am not working, I recruit help for the esteemed Fighters of the Undead, or FoU.";
- mes "They are an official group effort of the Warriors' Guild and Magicians, you know, a very prestigious group.\"";
- next;
- menu
- "...", L_intro_fou,
- "I have heard of them.", L_intro_fou,
- "Keep up the good work. I have to go now, bye.", L_Close;
-
-L_intro_fou:
- mes "[Airlia]";
- mes "\"If we drain those evil creatures of their mana, I can get my father back. He is getting very old. Will you help us?\"";
- next;
- menu
- "Of course I will.", L_intro_fight,
- "Sure, I guess.", L_intro_fight,
- "Thanks, but no thanks. I have other business to attend to.", L_Close;
-
-L_intro_fight:
- mes "[Airlia]";
- mes "\"Great, just kill any of the undead creatures you can and bring me proof of your work, and I will put in a word for you with the guild.\"";
- next;
- menu
- "I'm on it.", L_Next2,
- "What sort of proof?", L_intro_proof;
-
-L_Next2:
- set QUEST_Airlia, @Q_STATUS_HELP_AIRLIA;
- goto L_Close;
-
-L_intro_proof:
- mes "[Airlia]";
- mes "\"Let's say " + @FETCH_AMOUNT_INITIAL + " " + getitemlink(@FETCH_LABEL_INITIAL$) + "s. You don't know how much this means to me, thank you.\"";
- set QUEST_Airlia, @Q_STATUS_HELP_AIRLIA;
- close;
-
-L_Fetch:
- mes "[Airlia]";
- mes "\"Thank you for helping my father.\"";
- next;
- mes "\"Have you collected the " + @FETCH_AMOUNT_INITIAL + " " + getitemlink(@FETCH_LABEL_INITIAL$) + "?\"";
-
- // Make sure to check if the player has a letter to deliver.
- // If the check is not made then there is a bug, where the player
- // has a letter but has not completed the initial fetch
- // and is prevented from turing in the letter until the fetch is completed.
-
- if (QUEST_Graveyard_Caretaker < @Q_STATUS_HAS_NEW_LETTER)
- menu
- "Yes.", L_Fetch_initial_reward,
- "No.", L_Close;
- if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER)
- menu
- "I have another letter from your father.", L_later_rewards,
- "Yes.", L_Fetch_initial_reward,
- "No.", L_Close;
- goto L_Close;
-
-L_Fetch_initial_reward:
- if (countitem(@FETCH_LABEL_INITIAL$) < @FETCH_AMOUNT_INITIAL) goto L_Fetch_not_enough;
- mes "[Airlia]";
- mes "\"Excellent work. You are definitely a great warrior. I will tell the guild of your deeds.\"";
- if (@FETCH_REWARD_GOLD_INITIAL > 0)
- mes "[" + @FETCH_REWARD_GOLD_INITIAL + " GP]";
- if (@FETCH_REWARD_EXP_INITIAL > 0)
- mes "[" + @FETCH_REWARD_EXP_INITIAL + " experience points]";
- delitem @FETCH_LABEL_INITIAL$, @FETCH_AMOUNT_INITIAL;
- set Zeny, Zeny + @FETCH_REWARD_GOLD_INITIAL;
- getexp @FETCH_REWARD_EXP_INITIAL, 0;
- set QUEST_Airlia, @Q_STATUS_INITIAL_FETCH_REWARDED;
- next;
- mes "[Airlia]";
- // TODO: Write the dialogue when I'm not tired...
- mes "\"Oh, before you leave. We all must do what we can to stop this tragedy.";
- mes "If you are willing to keep draining the undead of mana, I will give you what gold I can afford as a token of my gratitude.\"";
- close;
-
-L_Fetch_later_rewards:
- if (countitem(@FETCH_LABEL$) < @FETCH_AMOUNT)
- goto L_Fetch_not_enough;
- mes "[Airlia]";
- mes "\"Excellent work. You are definitely a great warrior.\"";
- if (@FETCH_REWARD_GOLD > 0)
- mes "[" + @FETCH_REWARD_GOLD + " GP]";
- if (@FETCH_REWARD_EXP > 0)
- mes "[" + @FETCH_REWARD_EXP + " experience points]";
- delitem @FETCH_LABEL$, @FETCH_AMOUNT;
- set Zeny, Zeny + @FETCH_REWARD_GOLD;
- getexp @FETCH_REWARD_EXP, 0;
- close;
-
-L_Fetch_not_enough:
- mes "[Airlia]";
- mes "\"I'm sorry, I didn't realize you couldn't count. Perhaps when I have some free time, I can help you learn if you'd like.\"";
- close;
-
-L_Rewarded:
- mes "[Airlia]";
- mes "\"Thank you for your help.\"";
- next;
- mes "\"Have you collected the " + @FETCH_AMOUNT + " " + getitemlink(@FETCH_LABEL$) + "s?\"";
- if (QUEST_Graveyard_Caretaker < @Q_STATUS_HAS_NEW_LETTER)
- menu
- "Yes.", L_Fetch_later_rewards,
- "No.", L_Close;
- if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER)
- menu
- "I have another letter from your father.", L_later_rewards,
- "Yes.", L_Fetch_later_rewards,
- "No.", L_Close;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/009-2/alan.txt b/world/map/npc/009-2/alan.txt
deleted file mode 100644
index 6e0e6f21..00000000
--- a/world/map/npc/009-2/alan.txt
+++ /dev/null
@@ -1,226 +0,0 @@
-//#################################################################################
-//# #
-//# This script file contains the npc scripts for the quest to obtain a forestbow #
-//# #
-//# Needed: 10 Raw Logs, 5000gp, some chatting, and running. #
-//# #
-//# Reward: Forest Bow #
-//#################################################################################
-
-// Archer Shop Master
-009-2,99,23,0|script|Alan|125
-{
- set @Q_MASK, NIBBLE_0_MASK;
- set @Q_SHIFT, NIBBLE_0_SHIFT;
-
- set @Q_status, ((QUEST_Forestbow_state) & @Q_MASK) >> @Q_SHIFT;
-
- set @BROKENLOG_EXP, 15;
-
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@Q_status == 1) goto L_State_1;
- if (@Q_status == 2) goto L_State_2;
- if (@Q_status == 3) goto L_State_3;
- if (@Q_status == 4) goto L_State_4;
- if (@Q_status == 5) goto L_State_5;
-
- mes "[Alan]";
- mes "\"When you want to buy something then please speak to my apprentice. I am only doing special requests.\"";
- next;
- if (@inspector == 1)
- menu
- "OK, thanks.", L_Close,
- "Can you make me a really good bow?", L_State_0_1,
- "Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- menu
- "OK, thanks.", L_Close,
- "Can you make me a really good bow?", L_State_0_1;
-
-L_State_0_1:
- mes "[Alan]";
- mes "\"You mean like one of my legendary forest bows?\"";
- next;
- menu
- "Yes, that would be nice.", L_Next;
-
-L_Next:
- mes "[Alan]";
- mes "\"Sorry, I am not making these anymore.\"";
- next;
- menu
- "Oh, too bad.", L_Close,
- "What? Why not?", L_State_0_2;
-
-L_State_0_2:
- mes "[Alan]";
- mes "\"The problem is that I am short of material. My forestbows are not made of regular wood, you know.";
- mes "They are made of special living wood. And only the best logs of living wood are good enough for them.";
- mes "I used to get these logs from Jack, the lumberjack. But the last time I asked him for a new delivery he said that he would never again get any for me.\"";
- set @Q_status, 1;
- callsub S_Update_Var;
- next;
- menu
- "Too bad.", L_Close,
- "Did you ask him why?", L_State_0_3;
-
-L_State_0_3:
- mes "[Alan]";
- mes "\"Sure I did. But he just told me to leave him alone. Maybe you could ask him what's wrong?\"";
- next;
- menu
- "OK, I'll ask him.", L_Close,
- "I am sure he got his reasons.", L_State_1;
-
-L_State_1:
- mes "[Alan]";
- mes "\"Did you already ask Jack why he won't deliver me any more living wood?\"";
- next;
- if (@inspector == 1)
- menu
- "No, I haven't had the time yet.", L_Close,
- "No, I didn't find him yet.", L_State_1_1,
- "Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- menu
- "No, I haven't had the time yet.", L_Close,
- "No, I didn't find him yet.", L_State_1_1;
-
-L_State_1_1:
- mes "[Alan]";
- mes "\"When you leave my shop just go southwest over the village plaza. You can't miss it.\"";
- goto L_Close;
-
-L_State_2:
- mes "[Alan]";
- mes "\"Did you already ask Jack why he won't deliver me any more living wood?\"";
- next;
- if (@inspector == 1)
- menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next1,
- "Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- if (@inspector != 1)
- menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next1;
- goto L_Next1;
-
-L_Next1:
- mes "[Alan]";
- mes "\"Oh, that's really bad news. Maybe you can do his job?";
- mes "When you kill some of these tree monsters and bring me their wood I can take a look at them.";
- mes "Maybe you will find a piece of wood that is strong enough to become one of my forest bows.\"";
- set @Q_status, 3;
- callsub S_Update_Var;
- goto L_Close;
-
-L_State_3:
- mes "[Alan]";
- mes "\"How is the hunt going? Did you bring me any wood?\"";
- if (countitem("RawLog") < 1)
- goto L_Close;
- next;
- if (@inspector == 1)
- menu
- "Here, take a look!", L_State_3_try,
- "Yes, but I need it for something else.", L_Close,
- "Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- menu
- "Here, take a look!", L_State_3_try,
- "Yes, but I need it for something else.", L_Close;
-
-L_State_3_try:
- if (countitem("RawLog") < 1)
- goto L_No_Log;
- delitem "RawLog", 1;
- mes "[Alan]";
- mes "\"Hmmm... looks ok, but is it strong enough?\"";
- mes "Alan bends the log over his knee.";
- next;
- set @Temp1, rand(20);
- if (@Temp1 == 0) goto L_State_3_success;
- mes "The log breaks with a loud crack.";
- getexp @BROKENLOG_EXP, 0;
- next;
- mes "[Alan]";
- mes "\"Sorry, this log was too weak for one of my forest bows. Now it is junk. Give me another.\"";
- if (countitem("RawLog") < 1)
- goto L_Close;
- next;
- menu
- "Sure, here you go.", L_State_3_try,
- "Hey! Stop breaking my stuff!", L_Close;
-
-L_State_3_success:
- mes "Alan tries as hard as he can but the log won't bend.";
- next;
- mes "[Alan]";
- mes "\"Aaah! Yes! That is a really fine piece of wood you brought me. It will make an excellent bow!\"";
- next;
- set @Q_status, 4;
- callsub S_Update_Var;
- goto L_State_4;
-
-L_State_4:
- mes "[Alan]";
- mes "\"I can make you a really nice forest bow out of this. I just need 10,000 GP for material and work time.\"";
- next;
- if (@inspector == 1)
- menu
- "10,000??? What a ripoff!", L_Close,
- "Sure, here you go!", L_State_4_pay,
- "Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- menu
- "10,000??? What a ripoff!", L_Close,
- "Sure, here you go!", L_State_4_pay;
-
-L_State_4_pay:
- if (Zeny < 10000)
- goto L_State_4_nocash;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_State_4_TooMany;
- set Zeny, Zeny - 10000;
- getitem "ForestBow", 1;
- set @Q_status, 5;
- callsub S_Update_Var;
- mes "[Alan]";
- mes "\"Here you go - have fun with it.\"";
- goto L_Close;
-
-L_State_4_nocash:
- mes "[Alan]";
- mes "\"Seems like you are out of cash.\"";
- goto L_Close;
-
-L_State_4_TooMany:
- mes "[Alan]";
- mes "\"Seems like you don't have room for this bow. Come back later.\"";
- goto L_Close;
-
-L_State_5:
- mes "[Alan]";
- mes "\"I hope you are satisfied with your forest bow. It is one of my best works.\"";
- if (@inspector != 1)
- goto L_Close;
- next;
- menu
- "I am!", L_Close,
- "Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
-
-L_NohMask_Answer:
- mes "[Alan]";
- mes "\"No.\"";
- goto L_Close;
-
-L_No_Log:
- mes "[Alan]";
- mes "\"Where should I look at? You don't have a raw log.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-S_Update_Var:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/009-2/bernard.txt b/world/map/npc/009-2/bernard.txt
deleted file mode 100644
index 2a085e61..00000000
--- a/world/map/npc/009-2/bernard.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-009-2,67,79,0|script|Bernard|117
-{
- if (QL_SOUP >= 6) goto L_Done3;
- if (QL_SOUP >= 4) goto L_Done2;
- if (QL_SOUP == 3) goto L_Progress2;
- if (QL_SOUP == 2) goto L_Done1;
- if (QL_SOUP == 1) goto L_Progress;
-
- set @TEMP, rand(2);
- if(@TEMP == 1) goto L_Opening1;
- goto L_Opening0;
-
-L_Opening0:
- mes "[Bernard]";
- mes "\"The fields are crawling with maggots. Where is Mikhail? What is taking them so long?";
- mes "Could I ask a favor of you?\"";
- next;
- goto L_Ask;
-
-L_Opening1:
- mes "[Bernard]";
- mes "\"The taste of maggots in soup is... unforgettable, they taste simply divine!";
- mes "I sent someone to kill me some maggots and they have yet to return. Would you help me kill some?\"";
- next;
- goto L_Ask;
-
-L_Ask:
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- set @TEMP, rand(2);
- if(@TEMP == 1) goto L_Req1;
- goto L_Req0;
-
-L_Req0:
- mes "[Bernard]";
- mes "\"Great! I need a Roasted Maggot for my soup.\"";
- next;
- goto L_Set;
-
-L_Req1:
- mes "[Bernard]";
- mes "\"Bring me a Roasted Maggot. I'll give you something if you do.\"";
- next;
- goto L_Set;
-
-L_Set:
- set QL_SOUP, 1;
- mes "[Bernard]";
- mes "\"Please bring it to me!\"";
- goto L_Close;
-
-L_Progress:
- if (countitem("RoastedMaggot") < 1) goto L_NotEnough;
- mes "[Bernard]";
- mes "\"Oooh, perfect! It's perfect!";
- mes "You brought me my Roasted Maggot! Here, have some cake for your troubles.\"";
- getinventorylist;
- if (@inventorylist_count - (countitem("RoastedMaggot") == 1) > 99 - (countitem("CherryCake") == 0) ) goto L_TooMany;
- delitem "RoastedMaggot", 1;
- getexp 100, 0;
- getitem "CherryCake", 5;
- set QL_SOUP, 2;
- next;
- mes "\"Now let's see...\"";
- goto L_Close;
-
-L_Progress2:
- if (countitem("MaggotSlime") < 3) goto L_NotEnough1;
- mes "[Bernard]";
- mes "\"Nice! They're perfect, just perfect!";
- mes "You brought me the 3 Maggot Slimes! Here, have some beer as reward.\"";
- getinventorylist;
- if ((@inventorylist_count - (countitem("MaggotSlime") == 3) > 99 - (countitem("Beer") == 0) )) goto L_TooMany;
- delitem "MaggotSlime", 3;
- getexp 100, 0;
- getitem "Beer", 3;
- set QL_SOUP, 4;
- goto L_Close;
-
-L_NotEnough:
- mes "[Bernard]";
- mes "\"Oh, please hurry and bring me a Roasted Maggot. I'm yearning for maggot soup!\"";
- goto L_Close;
-
-L_NotEnough1:
- mes "[Bernard]";
- mes "\"Please do hurry and bring me 3 Maggot Slimes, so I can finish my soup!\"";
- goto L_Close;
-
-L_Done1:
- mes "[Bernard]";
- mes "\"Thank you so much!\"";
- mes "\"But... something is missing to make the soup creamy.\"";
- next;
- mes "\"I need 3 Maggot Slimes for that.\"";
- mes "\"Bring them to me, and I'll give you something nice.\"";
- set QL_SOUP, 3;
- goto L_Close;
-
-L_Done2:
- mes "[Bernard]";
- mes "\"I didn't mention it before, but I also put beer in my soup. I hope you like beer as much as I do, because, you see...\"";
- next;
- mes "\"Beer is life!\"";
- goto L_Close;
-
-L_Done3:
- mes "[Bernard]";
- mes "\"My help, Mikhail, finally returned with the slimes I needed.";
- mes "I wonder what took him so long?\"";
- goto L_Close;
-
-L_Close:
- set @TEMP, 0;
- close;
-
-L_TooMany:
- next;
- mes "[Bernard]";
- mes "\"You don't have room for my reward. I'll wait until you do.\"";
- goto L_Close;
-}
diff --git a/world/map/npc/009-2/doctor.txt b/world/map/npc/009-2/doctor.txt
deleted file mode 100644
index f44cda64..00000000
--- a/world/map/npc/009-2/doctor.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-// Doctor
-
-009-2,148,25,0|script|Doctor|107
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (getequipid(equip_head) == 616) goto L_Axe;
- if (getequipid(equip_head) == 621) goto L_Eyepatch;
-
- mes "[Doctor]";
- mes "\"Hello, can I help you?\"";
- next;
-
- if (@inspector == 1)
- menu
- "I think I am sick!", L_Cure,
- "No, I feel fine.", L_Next,
- "Have you seen anything strange in town? Anything that might have to do with the robberies?", L_NohMask;
- menu
- "I think I am sick!", L_Cure,
- "No, I feel fine.", L_Next;
-
-L_Next:
- mes "[Doctor]";
- mes "\"Then please stop wasting my precious time.\"";
- goto L_Close;
-
-L_Cure:
- mes "[Doctor]";
- if (sc_check(sc_poison))
- goto L_CurePoison;
- mes "The doctor examines you briefly.";
- mes "\"Nonsense! You look fine and dandy to me. All you need is a bit more exercise and fresh fruit in your diet!\"";
- goto L_Close;
-
-L_CurePoison:
- mes "\"Well, well, well! Look at all those green bubbles coming out of your head; that looks like poisoning to me! Did you eat something rotten?\"";
- next;
- mes "[Doctor]";
- mes "The doctor pulls out a syringe and fills it with a white liquid from a jar on his desk.";
- mes "\"Now hold still, this won't hurt a bit...\"";
- next;
- mes "[Doctor]";
- sc_end(sc_poison);
- sc_end(sc_slowpoison);
- mes "*Ouch!*";
- mes "\"Next time, be more careful! Make sure to cook any meats before you eat them, and don't eat fish once it starts to smell.\"";
- goto L_Close;
-
-L_Axe:
- mes "[Doctor]";
- mes "\"Oh my, what happened to you?\"";
- next;
- mes "[Doctor]";
- mes "\"Wait. Thats just a fake. Shame on you!\"";
- goto L_Close;
-
-L_Eyepatch:
- mes "[Doctor]";
- mes "\"Would you like a glass eye to replace that eye patch you have? We just got a whole load of them in today. I'll even let you keep the patch as a souvenir.\"";
- next;
- menu
- "Yes, please.", L_Eyepatch_GlassEye,
- "No thank you", L_Next1;
-
-L_Next1:
- mes "[Doctor]";
- mes "\"If you change your mind, please come back and see me.\"";
- goto L_Close;
-
-L_Eyepatch_GlassEye:
- mes "[Doctor]";
- mes "\"Now, where did I put that box of eyes...\"";
- mes "He goes off to look for them and comes back empty handed.";
- next;
- mes "[Doctor]";
- mes "\"I can't seem to find where I put that box. You should come back later, I may have found them by then.\"";
- goto L_Close;
-
-L_NohMask:
- mes "[Doctor]";
- mes "\"No, I haven't seen anything.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/009-2/drunks.txt b/world/map/npc/009-2/drunks.txt
deleted file mode 100644
index 608f7db6..00000000
--- a/world/map/npc/009-2/drunks.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-//Left drinking contest guy
-
-009-2,65,55,0|script|Drinker#1|121
-{
- mes "[Binge Drinker]";
- mes "\"Ha! I'll drink muuuch mo.. more than you! Im not ooone biiit dr...dr..unk!\"";
- close;
-}
-
-//Right drinking contest guy
-
-009-2,68,55,0|script|Drinker#2|121
-{
- mes "[Binge Drinker]";
- mes "\"I can still drink more! Better give up you... you... teelotaler! MORE BEER MELINDA!\"";
- //I know it's called "teetotaler". That error is on purpose.
- close;
-}
diff --git a/world/map/npc/009-2/entertainer.txt b/world/map/npc/009-2/entertainer.txt
deleted file mode 100644
index 61306b25..00000000
--- a/world/map/npc/009-2/entertainer.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-// Emote NPC allows for players to learn the emote skill
-
-009-2,61,49,0|script|Entertainer|165
-{
- mes "[Entertainer]";
- mes "\"Yes how can I help you?\"";
- menu
- "How are you showing emotions above your head?", L_Learn,
- "Never mind", L_Close;
-
-L_Learn:
- mes "[Entertainer]";
- mes "\"They are called emotes, I use them to express how I am feeling.";
- mes "I can teach you if you'd like?\"";
- menu
- "Yes please.", L_Learn2,
- "I don't see the point right now.", L_Close;
-
-L_Learn2:
- mes "[Entertainer]";
- mes "\"All you have to do is press alt and a number.";
- mes "The number determines what emotion will be shown.";
- mes "Some clients will also show an emote shortcut-bar with the F12 button\"";
- goto L_Close;
-
-L_Close:
- close;
-
-OnTimer3000:
- if(rand(0,1) == 1) goto L_manaplus;
- emotion rand(EMOTE_DISGUST, EMOTE_BLAH);
- goto OnInit;
-
-L_manaplus:
- emotion rand(EMOTE_MEOW, EMOTE_TEARS);
- goto OnInit;
-
-OnInit:
- if (debug >= 2) end;
- initnpctimer;
- end;
-}
diff --git a/world/map/npc/009-2/inspector.txt b/world/map/npc/009-2/inspector.txt
deleted file mode 100644
index d61fc708..00000000
--- a/world/map/npc/009-2/inspector.txt
+++ /dev/null
@@ -1,141 +0,0 @@
-//
-
-009-2,24,99,0|script|Inspector#Hurnscald|150
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@inspector == 0 && BaseLevel >= 30) goto L_Start;
- if (@inspector == 1) goto L_AskVillage;
- if (@inspector == 2) goto L_OldWoman;
- if (@inspector == 3) goto L_TheaterMask;
- if (@inspector == 4) goto L_TravelingTroupe;
- if (@inspector == 5) goto L_OldMan;
- if (@inspector == 6) goto L_OldMan_2;
- if (@inspector == 7) goto L_Alibi;
- if (@inspector == 8) goto L_Alibi_2;
- if (@inspector == 9) goto L_Alibi_3;
- if (@inspector == 10) goto L_Satchel;
- if (@inspector == 11) goto L_Basement;
- if (@inspector == 12) goto L_Note;
- if (@inspector == 13) goto L_TravelingTroupe_2;
- if (@inspector == 14) goto L_Over;
- if (@inspector == 15) goto L_End;
- mes "[Inspector]";
- mes "\"I'm sorry, but I'm busy looking into this string of robberies.\"";
- goto L_Close;
-
-L_Start:
- mes "\"Hmm...what to do.\"";
- mes "He looks up and into your face.";
- next;
- mes "[Inspector]";
- mes "\"You look capable, will you help me solve these robberies?\"";
- next;
- menu
- "Yes.", L_Accept,
- "No.", L_Close;
-
-L_Accept:
- set @inspector, 1;
- callsub S_Update_Mask;
- mes "[Inspector]";
- mes "\"Ok then. I'd like you to ask the villagers about the recent string of robberies.\"";
- goto L_Close;
-
-L_AskVillage:
- mes "[Inspector]";
- mes "\"Please continue talking to the villagers.\"";
- goto L_Close;
-
-L_OldWoman:
- mes "[Inspector]";
- mes "\"Hm...I don't know if I trust her eyesight or memory. See if someone else knows anything.\"";
- goto L_Close;
-
-L_TheaterMask:
- set @inspector, 4;
- callsub S_Update_Mask;
- mes "[Inspector]";
- mes "\"Someone in a theater mask, eh? There was a traveling theater troupe in town recently, but they've moved on to Tulimshar. Please go talk to their leader about this.\"";
- goto L_Close;
-
-L_TravelingTroupe:
- mes "[Inspector]";
- mes "\"Please go talk to the leader of the traveling troupe about the theater mask.\"";
- goto L_Close;
-
-L_OldMan:
- set @inspector, 6;
- callsub S_Update_Mask;
- mes "[Inspector]";
- mes "\"Hm...an old man? Could you interrogate him for me?\"";
- goto L_Close;
-
-L_OldMan_2:
- mes "[Inspector]";
- mes "\"Have you talked with the old man yet?\"";
- goto L_Close;
-
-L_Alibi:
- mes "[Inspector]";
- mes "\"Can you verify that with his wife?\"";
- goto L_Close;
-
-L_Alibi_2:
- set @inspector, 9;
- callsub S_Update_Mask;
- mes "[Inspector]";
- mes "\"Hm...then it couldn't be him. I'm not sure where to go from here, maybe you can find something else. Try talking to everyone again.\"";
- goto L_Close;
-
-L_Alibi_3:
- mes "[Inspector]";
- mes "\"Made any progress yet?\"";
- goto L_Close;
-
-L_Satchel:
- mes "[Inspector]";
- mes "\"Then go north and investigate!\"";
- goto L_Close;
-
-L_Basement:
- mes "[Inspector]";
- mes "\"Did you look over the basement?\"";
- goto L_Close;
-
-L_Note:
- set @inspector, 13;
- callsub S_Update_Mask;
- mes "[Inspector]";
- mes "\"What a strange note. I'll keep track of this, while you return the mask to the troupe.\"";
- mes "";
- mes "\"By the way, stay sharp! I may call upon you again.\"";
- goto L_Close;
-
-L_TravelingTroupe_2:
- mes "[Inspector]";
- mes "\"Please return the mask to the traveling troupe.\"";
- goto L_Close;
-
-L_Over:
- set @inspector, 15;
- callsub S_Update_Mask;
- mes "[Inspector]";
- mes "\"My men have found all of the stolen items. They were all in the mining camp. We still don't know who did it.\"";
- mes "[2500 experience points]";
- getexp 2500, 0;
- goto L_Close;
-
-L_End:
- mes "[Inspector]";
- mes "\"Remember to stay sharp. I might need your help on another case.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
- return;
-}
diff --git a/world/map/npc/009-2/kfahr.txt b/world/map/npc/009-2/kfahr.txt
deleted file mode 100644
index 8b6cb37d..00000000
--- a/world/map/npc/009-2/kfahr.txt
+++ /dev/null
@@ -1,1086 +0,0 @@
-//#################################################################################
-//#
-//# Kfahr the Desert Warrior.
-//# Participates in two quests:
-//# - Sole participant in the Bone Knife quest:
-//# (10 black scorpion stingers + 10 small mushrooms + level 40) -> Bone Knife
-//# - Sole participant in the Golden Stinger subquest
-//# (subquest for the Monster Oil subquest, cf. Nicholas' Setzer Quest)
-//# (win arm-wrestling + bring 10 snake skins + level 60) -> golden stinger
-//#
-//# Variables used: @QUEST_Forestbow_state, nibble 2 (knife quest)
-//# @QUEST_Forestbow_state, nibble 3 (monster oil subquest)
-//#
-//#################################################################################
-
-009-2,67,57,0|script|Kfahr|125
-{
- set @halloween_npc_id, $@halloween_npc_kfahr;
- callfunc "TrickOrTreat";
-
- set @QS_NEWBIE, 0;
- set @QS_MET_KFAHR, 1;
- set @QS_KNOWS_KFAHR, 2;
- set @QS_KNIFE_QUEST, 3;
- set @QS_KNIFE_QUEST_DONE, 4;
- set @QS_LOST_WRESTLING, 5;
- set @QS_STINGER_QUEST, 6;
- set @QS_STINGER_QUEST_DONE, 7;
-
- set @BLACK_STINGERS_NR, 10;
- set @MUSHROOMS_NR, 10;
- set @SNAKE_SKINS_NR, 10;
-
- set @KNIFE_QUEST_XP, 50000;
- set @STINGER_QUEST_XP, 80000;
-
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
-
- set @Q_status, (QUEST_Forestbow_state & @Q_MASK) >> @Q_SHIFT;
-
- set @Q_needs_stinger, ((QUEST_Forestbow_state & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT) > 1;
-
- if (@Q_status == @QS_KNIFE_QUEST) goto L_Check;
-
- if (@Q_status == @QS_STINGER_QUEST) goto L_stinger_check;
-
- if (@Q_status > @QS_NEWBIE) goto L_meet_again;
-
- mes "[Warrior]";
- mes "You stand before a battle-scarred, darkly tanned warrior, brimming with muscles.";
- mes "Just looking at him you smell danger, adventure, excitement...";
- next;
- mes "[Warrior]";
- mes "On second thought, he really could use a bath.";
- mes "";
- mes "The warrior turns towards you, grinning broadly.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Why, hello there! Come to visit Kfahr the Warrior to hear of my exploits, have you?\"";
- mes "He laughs heartily and gives you a slap on the back.";
- mes "\"Can't blame you, can't blame you at all! Here, take a seat!\"";
- next;
- set @has_beer, 0;
- set @beer_count, 0;
- set @last_story, 0;
- set @Q_status, @QS_MET_KFAHR;
- callsub L_Update_Var;
- goto L_main_menu;
-
-L_meet_again:
- mes "[Kfahr the Warrior]";
- mes "Kfahr nods and grins as you greet him.";
- mes "\"Came back for more stories? Have a seat!\"";
- next;
- goto L_main_menu;
-
-L_main_menu:
- if (@Q_status >= @QS_KNOWS_KFAHR)
- goto L_real_main_menu;
- menu
- "Who are you?", L_Next,
- "Goodbye.", L_end;
-
-L_Next:
- mes "[Kfahr the Warrior]";
- mes "Kfahr laughs again.";
- mes "\"Surely you jest! You must have heard of Kfahr, Slayer of Toby Rick the Desert Worm, Raider of the Lost Temple, Hero of Tulimshar?\"";
- next;
- menu
- "Uhm...", L_Next1,
- "Well...", L_Next1,
- "To be quite honest...", L_Next1,
- "Excuse me, someone is, er, whispering me...", L_end;
-
-L_Next1:
- mes "[Kfahr the Warrior]";
- mes "\"Ah, I knew it! So you have come to hear some tales about the dangers of the desert? You've come to the right man!\"";
- next;
- set @Q_status, @QS_KNOWS_KFAHR;
- callsub L_Update_Var;
- goto L_real_main_menu;
-
-L_tale_sub:
- if (@current_story == @last_story)
- goto L_same_story_abort;
- if (@has_beer == 0)
- goto L_out_of_beer_abort;
- set @last_story, @current_story;
- set @has_beer, 0;
- set @story_abort, 0;
- return;
-
-L_same_story_abort:
- mes "[Kfahr the Warrior]";
- mes "Kfahr frowns.";
- mes "\"I only just told you that story. Trust me, the others are worth hearing, too!\"";
- next;
- set @story_abort, 1;
- return;
-
-L_out_of_beer_abort:
- mes "[Kfahr the Warrior]";
- if (@beer_count > 4)
- mes "\"I think I've talked 'nuff for now... but thanks for lis'ning!\"";
- if (@beer_count <= 4)
- mes "\"Now that's one of my favorite tales, but my throat is just a little too dry to talk about something like that... could you help me out a little here?\"";
- next;
- set @story_abort, 1;
- return;
-
-L_real_main_menu:
- if (@Q_needs_stinger)
- goto L_long_main_menu;
-
- menu
- "What's a Desert Worm?", L_tale_desert_worm,
- "Desert Temple?", L_tale_desert_temple,
- "Hero of Tulimshar?", L_tale_hero_tulimshar,
- "Tell me about the desert!", L_tale_desert,
- "I want to become as powerful as you!", L_gain_power,
- "Here, have a beer!", L_give_beer,
- "Goodbye!", L_end;
-
-L_long_main_menu:
- menu
- "What's a Desert Worm?", L_tale_desert_worm,
- "Desert Temple?", L_tale_desert_temple,
- "Hero of Tulimshar?", L_tale_hero_tulimshar,
- "Tell me about the desert!", L_tale_desert,
- "I want to become as powerful as you!", L_gain_power,
- "Have you fought any Golden Scorpions?", L_golden_scorpion,
- "Here, have a beer!", L_give_beer,
- "Goodbye!", L_end;
-
-L_tale_desert_worm:
- set @current_story, 1;
- callsub L_tale_sub;
- if (@story_abort) goto L_main_menu;
-
- mes "[Kfahr the Warrior]";
- mes "Kfahr smiles and leans back.";
- mes "\"A desert worm is probably the largest creature you will ever see, larger even than most dragons. It spans a good twenty chains (or six box tosses if you're used to the Imperial system) in length, has a thick, rubbery skin, and teeth as long as my legs.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Most are a darkish gray, except for the young ones; those are more purplish, I've been told. Well, anyway, you hardly ever see one of them in their entirety, you only see the head, if they decide to come out and fight – they tend to burrow under the ground.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"They are terrifying beasts, but lack any intelligent thought whatsoever. They just eat whatever gets in their way. There's nothing out there that can kill one, I think, and they can grow hundreds of years old.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Fortunately, they're kind of rare these days, and mostly roam in the empty deserts far, far south of Tulimshar. They don't like the area too close to the mountains, I think; probably too rocky underground.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr takes a sip from his beer.";
- mes "\"Anyway. Desert worms are dangerous, as I said, but there was one particularly terrifying one, called Toby Rick. You must've heard of it – the greatest and most dangerous worm, scourge of the trade routes. It could smell humans from miles away.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Most desert worms don't smell or see or feel much, you see. They just notice when something's walking nearby, then jump up and swallow it. But Toby Rick was different. He was a terrifying beast, three times as long as a regular worm.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So to feed itself, it had learned to smell. That's right, the beast had grown nostrils and learned how to use 'em!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"One day I was hired to protect a caravan going north to Tulimshar, with a friend of mine, old Arvek. He only came along for the fun, of course; it's not as if I really need much help defending a caravan... or at least normally it isn't.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Arvek's fun to have about. His manners are as bad as his breath, but he knows how to make a laugh out of everything. One thing you musnt't ever do with him, though, and that is to try his `homebrew'-- some kind of ale he makes out of maggot slime...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr takes another sip of beer, momentarily irritated as if surprised by the taste.";
- mes "\"Anyway, This time was different. We were barely three days out in the desert, when we spotted him – `the Black Worm!', the Caravan Master cried, `Over there; it will kill us all!'\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I had barely enough time to draw out my sword, and the beast was upon us! The caravan people were fleeing for their lives, so it was up to me and Arvek to stop it.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"That was madness, of course; no-one takes on a desert worm, if they have a choice. But we didn't; you see, with most desert worms you can just stand still and it won't notice you and pass by. But not with this one!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr leans forward.";
- mes "\"So this humongous beast came roaring towards us, a big back hole where the mouth is, spikey fins sticking out to the side, all ready to swallow us all! My sword felt like a toothpick against that monster!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "He pauses, then leans back a little to take another long sip from his beer.";
- mes "\"So it seemed that our last hour was at hand, that we'd be swallowed and never heard from again!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Aha, but Kfahr doesn't die quite so easily. What happened was this: Me and Arvek charged towards that thing, slashing and stabbing, but our blows would just glance off. The beast roared and just slid by us, slapping us to the side with its fins like maggots, knocking us to the ground.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"It bolted up into the air, and tore down on the caravan, swallowing each and everyone in there in a single big gulp!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Then it turned around towards us. Those fins had hit us pretty badly; I had lost my shield and Arvek his backpack. Better for him, I suppose, but I had been rather fond of that shield – not that it would have helped me much here...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr leans foward again, nearly knocking over his beer.";
- mes "\"So the beast charges at the two of us again and we dodge – Arvek left, me right. The beast is smarter than the average desert worm, though, and had expected that – so it bends to the side and swallows poor Arvek, hair and hide and all.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr's eyes sparkle with excitement.";
- mes "\"It turns around, trying to get me too. I dodge it – left, then the same again, I dodge it right. But it can't go on like that, the beast isn't tiring, but I am...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So for one instant I think that this might be it, that I might die out here! A worthy death, I suppose, against the king of desert worms! And just as I think that, I bump against something\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr slaps on the table.";
- mes "\"Arvek's backpack! Doesn't sound terribly exciting, of course – what am I going to do, toss it at the beast and hope that it chokes on it?\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "He grins.";
- mes "\"But I remember something better. That beast had grown nostrils, right? So it can smell and taste! So I tear open his backpack and pull out that big snakeskin of that disgusting maggot ale of his. It's still filled to the brim.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I quickly put on my gloves again, because I don't want to touch that stuff with my bare skin. The beast is almost upon me, but I have only that one chance – so I squeeze the skin while sticking my thumb into the opening, until I can see the black of its nostrils...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"...and when I think it's almost too late already, I shoot out that revolting brew at the beast's smelling holes, and I hit! Two at once, and up and sideways it rolls, away from me, and roaring and bellowing in pain!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"It roared for a good five minutes, then convulsed... and first it spat out old Arvek, who was a bit irritated at all that because, as he told me, he had `almost pierced the pancreas', whatever that means...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Next it spat out the caravan, and then some other caravan it had plucked off from elswehere. Somehow, everyone from there was still alive, too.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Then it slid away from us, away to the north, but we could see it getting slower and slower.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Two days later we caught up with it, but it was already dead then and had started to smell. We looked around and inside of it, found treasures and remnants of some less fortunate caravans and split them up appropriately.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"(I never told Arvek that it was his brew that killed it; he'd never have forgiven me.)\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"One of the nomads that had been travelling with the other caravan then told me that you could make special kinds of knives and swords and armor out of desert worm bones.\"";
- next;
- menu
- "Hang on... bones in a... worm?", L_worm_bones,
- "That's neat! Do you have any that I could see?", L_worm_see_bones,
- "And then?", L_worm_final,
- "Zzzzzzzz.......", L_end;
-
-L_worm_final:
- mes "[Kfahr the Warrior]";
- mes "\"Nothing much else happened on that trip. When we arrived in Tulimshar, people at first didn't believe the story, of course, until we showed them the treasures and the bones. Ah, those were wonderful days...\"";
- mes "He sighs and leans back, a nostalgic look on his face.";
- next;
- goto L_main_menu;
-
-L_worm_bones:
- mes "[Kfahr the Warrior]";
- mes "\"Weren't you listening? A desert worm is not a regular worm; a worm couldn't survive in the desert.\"";
- next;
- menu
- "Do you have any bones that I could see?", L_worm_see_bones,
- "Never mind that, what happened then?", L_worm_final,
- "Zzzzzzzz.......", L_end;
-
-L_worm_see_bones:
- if (@Q_status == @QS_KNIFE_QUEST)
- goto L_bone_ip;
- if (@Q_status > @QS_KNIFE_QUEST)
- goto L_worm_continue2;
- if (BaseLevel >= 40)
- goto L_bone_quest;
-
- mes "[Kfahr the Warrior]";
- mes "\"Of course!\"";
- mes "He pulls out a strangely curved knife with a yellow-whiteish blade that is almost transparent at the edge.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"When hardened properly, this bone knife can last a lifetime! One of the best knives you will find, too.\"";
- mes "He puts the knife back into his pocket.";
- next;
- goto L_main_menu;
-
-L_worm_continue2:
- mes "[Kfahr the Warrior]";
- mes "Kfahr laughs.";
- mes "\"Just have a look at the knife I gave you if you don't believe me!\"";
- next;
- goto L_main_menu;
-
-L_tale_desert_temple:
- set @current_story, 2;
- callsub L_tale_sub;
- if (@story_abort) goto L_main_menu;
-
- mes "[Kfahr the Warrior]";
- mes "\"Ah, that...\"";
- mes "Kfahr leans back and takes a sip from his beer.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"That was many years ago, when George and I were just kids. George later became a pirate, you see; he always loved hunting for treasure. But back in those days it was all on level ground.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"George had found a treasure map somewhere... and when I say `found', I mean that in a fairly liberal sense; he always loved those maps, almost as much as the excitement of hunting for treasure.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Anyway, that map pointed to a spot in the desert a good day's walk south of Tulimshar. So we grabbed our satchels and coats and packed food and water, and headed there in the evening.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We walked all night. As you know, it's best not to travel during the day if you can avoid it, and we were young and energetic in those days, so that was easily avoided.\"";
- mes "He sighs and takes another sip.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Anyway, when the sun rose in the morning, we still hadn't found the place. So we climbed up on the nearest dune and looked all around to find it.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"But there was nothing, nothing at all. We looked and looked – and suddenly George screamed: While we weren't paying attention to nearby things, scorpions had crept up on us!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"The scorpions had smelled the food we had brought and cut open our satchels, tearing our waterskins and making a mess of our food – and now that they were done with that, they were coming for us!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We didn't have any suitable weapons, and not much of a choice either, so we made a break for it. We ran into the desert, fast as our legs would carry us, and the scorpions after us.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We very nearly didn't make it. There was nothing around but sand, and we had no water, no food – at least we'd had our breakfast already – and the sun kept burning, and burning, and trying to cook us alive.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We had long lost the scorpions, but we were dry like parchment, and exhausted from all the sun and running. So we sat down in the shades of a dune and contemplated our options.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Without water we couldn't last during the day. So our only hope was to find shelter somewhere – except that the only thing around was sand, and the mid-day sun would rob that of all shelter.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So we resigned to continuing to search for something, anything – it was either that, or die of thirst for sure. The only problem was that we were already so thirsty and it was so bright that we couldn't see nor walk straight anymore.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So we had barely made it to the top of the next dune when George slipped and rolled down the other side. I wanted to catch him, but I was too dizzy myself, and so I rolled after him.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We seemed to roll down for hours, and I kept feeling dizzier and dizzier; I didn't have the strength to stop. When we arrived at the bottom, I just wanted to lie down and let the sun dry me up.\"";
- mes "Kfahr takes a deep sip of beer. \"Aaah.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I was being foolish, of course. You should never give up, no matter how hopeless the situation may seem. Anyway, I finally did decide to get up on my knees and look around again...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"...and what I saw right before me, believe it or not, was a giant face of a man, carved into rock – there, in the middle of the desert, half-sunk, a shattered visage!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I pulled George up – I didn't have the strength to speak, but walking seemed to work – and we slowly made our way over to it. We weren't thinking much, just trying to find some shade, so we climbed into that thing's ear.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Inside it felt moist, as if it was a real ear – not that I've climbed inside a real ear, mind you! But that feeling of cool and dampness and water was like a magical healing potion; we suddenly felt strength in our legs again.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"When we looked around, we noticed that there was a passage leading further underground, and long-spent torches on the wall. Fortunately I still had my tinderbox, so I wrapped my shirt around a torch and lighted it.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We climbed down, and soon we heard the dripping of water – we had found an underground water-hole! More than that, we had found a gigantic underground cave, and, at the end of it, a huge portal.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We first drenched ourselves in water – somehow managing not to douse the torch – and drank until we were ready to burst. When we had rested, we went to the portal to have a closer look.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"The portal was made out of bronze, or some similar metal, with images of snakes engraved all over. Curious as we were, we pulled the door open – it wasn't locked or barred in any way – and had a look inside.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"The passages in there were cool and dark, with a ceiling high enough to swallow the light of my torch. There were snakes, quite a few of them, but we were both quick-footed and managed to avoid them.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"There were chambers and inscriptions and more torches, but not a living being besides us and the snakes. Hmm. Though I could have sworn that some of the statues there were following us with their eyes...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"All went well, until George stepped into a trap. A piece of ground just caved in, and if I hadn't grabbed his hand at the last second, he would have ended up on some rusty and probably poisoned spikes on the bottom...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"But I moved too fast, and slipped, and let go of the torch to catch myself with the other hand – and the torch ended up in the bottom of the pit! Well, better the torch than George, I suppose...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Still, we no longer had any light. Being careless, I had gotten my tinderbox wet while we were at the water-hole, so we couldn't make another torch either.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We had the choice between staying by our torch and watching it die, and then follow suit at the hands, or, well, fangs of the snakes, or wandering off in the dark, to be eaten by snakes someplace else.\"";
- mes "Kfahr empties his beer, looking a bit disappointed.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Anyway, we took the latter option. We wandered through the dark, somehow barely avoiding the snakes and the traps, running into walls and hitting our heads on archways, until, suddenly, we saw something shining up ahead.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"That thing was on some kind of pedestal, and it looked like a golden tablet of sorts. We clambered towards it – the only source of light in here, the only thing that could save us – and hesitated.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Should we just take it? This was clearly some kind of temple, so it might be something sacred. George and I argued about it for a while, until I decided to end the discussion – so I simply grabbed it: we needed light.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"At that point, a terrible grinding noise started all around us, as the pedestal began to sink into the ground. We had triggered some ancient trap!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Holes on the walls were opening up, and snakes began to gush out – only now did we realise that we were in a huge, opulent chamber, with gold and gems and images all around! But now it was too late for any looting; we had to run for our lives!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So we ran from that slithering mass, faster than we ever had! We had no idea where we were going of course, but at least we had light again...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Somehow we got lucky, somehow we escaped. It was evening again when we climbed out of that ear into the desert again, with only our lives and that golden tablet. We only barely made it back to Tulimshar in the morning.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"But we did have the tablet as a proof of what happened.\"";
- mes "He grins.";
- mes "\"That was my first real adventure, I think. Ah, those were exciting days.\"";
- next;
- menu
- "Wow.", L_main_menu,
- "What happened to the tablet?", L_tale_tablet,
- "Did you go there again?", L_tale_temple_again,
- "Zzzzzzz.....", L_end;
-
-L_tale_tablet:
- mes "[Kfahr the Warrior]";
- mes "\"Well, we couldn't read it. We later sold it for a good price, to a young travelling archeologist; Doctor Nohlidge or something like that. She said that the engravings described sacrifical practices of an ancient snake cult...\"";
- mes "He shrugs.";
- next;
- goto L_main_menu;
-
-L_tale_temple_again:
- mes "[Kfahr the Warrior]";
- mes "Kfahr laughs.";
- mes "\"Of course we tried to go there again. After seeing all that treasure, George wouldn't give up on it. We tried many times – as did others, from what I've heard – but we never found it again.\"";
- next;
- goto L_main_menu;
-
-L_tale_hero_tulimshar:
- set @current_story, 3;
- callsub L_tale_sub;
- if (@story_abort) goto L_main_menu;
-
- mes "[Kfahr the Warrior]";
- mes "\"Yes, Hero of Tulimshar. That was many years";
- mes "ago, but I did save the city of Tulimshar from a deadly drought.\"";
- mes "He grins broadly.";
- mes "\"And quite a feat that was, let me tell you!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Back in those days, there wasn't much trade with Hurnscald, and Tulimshar was dependent on its own water supply – critically dependent, even.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Now, one day the water people drew from the wells started smelling. The smell was nauseating, and people who drank from it became violently sick.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So the entire town was without water, except for the water reserves in the cistern. Someone had to act quickly – and of course that someone was me.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"With nothing more than a torch, some light armor and a sword, I climbed down one of the wells. It was a long climb; the wells go down fairly deep.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I noticed that there were some holes in the walls of the wells, with hollow spaces on the sides... Hmm, that reminds me that I still have to check whether the rumors of a labyrinth underneath Tulimshar are true.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Anyway, it took me a long time to get down, and every minute the stench was getting worse – something really bad was down there. I had to stop and tie a wet piece of cloth over my mouth so that I wouldn't inhale all of that nasty stuff.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"My torch was in an even poorer shape – whatever was making that smell had killed the flame, so I soon had to rely on the light from above to see anything.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Finally I arrived at the water level. All Tulimshar wells dip into the same underground lake, which is on the side of a huge underground cavern. And in the midst of that cavern lay – hardly visible through the greenish mist coming from it – a Stinkewyrm!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Stinkewyrms are smaller cousins of dragons, but just as dangerous. They have a green, sticky skin, and, well, they stink. A lot. This one was particularly bad – it had filled up the entire cave with stinkiness!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I climbed down and swam to the shore. The stench was terrible; I had to hold my breath to get closer to the monster. There it was, lying on the ground, snoring, poisoning all our water! So I tried to wake it up to scare it away.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I kicked it. I yelled at it. (Bad mistake, I got some of that stinky stuff in my lungs.) I poked at it with my sword. I even tried to poke it in the eyes, but I couldn't get that close to its mouth – that was where most of the smell was coming from.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"After a few attempts I couldn't take it anymore, so I had myself be pulled up again. It took me a while to recover and to tell the tale. We talked about what could be done, but no-one had an idea.\"";
- mes "Kfahr takes a deep sip from his beer.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Finally, I came up with something. Stinkewyrms love that terrible stench of theirs, so what should be their natural enemy? Why, soap, of course!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"We couldn't just dump all the soap into the underground lake, of course; the water would be undrinkable again. So we collected some of the soap, and I climbed down again with it.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Having arrived at the bottom, I cut off the biggest of the water buckets and filled it with water – and that was a really big one, I could hardly carry it when it was full. Then I dissolved most the soap, and poured that onto the Stinkewyrm's head.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr laughs.";
- mes "\"Ah, that caught its attention! You should have seen that dragon roar, as it jumped to its feet and tried to find out who had soaped it! I rushed back to the water and made another bucket of soap water.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"But it had noticed me! And as soon as it had realized where I was, it came after me. Then it stopped, towering right before me, its stench nearly killing me, and grinned that broad, crooked-teeth dragon smile of its kind.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Then it took a deep breath – and I realised that that was probably 'it' for me; Stinkewyrms can breathe fire like real dragons, and I didn't have the time to run back to the water.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"But when it breathed out, only a tiny little flame came out – and a lot of terrible smell that nearly knocked me off my feet.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"For you see, it had generated so much of the deadly smell around itself that even its own fire breath couldn't survive!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"So it stared at me, mouth wide agape – the perfect opening!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I stormed at it and before it could even blink, it had a huge load of bubbly soap water down its throat.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"You should have heard the coughing and shaking! I swear, I thought the roof would collapse as it was jumping and choking...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Bubbles were coming out of its mouth, its nostrils, even its ears! The poor wyrm must have never felt so clean in its life!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"I was out of soap, but the beast didn't know that – so I quickly grabbed another bucket and charged it again.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"And it worked! Seeing me like this again, it ran, squealing, back into the underground caves from where it must have come.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr roars with laughter and slaps his hands on the table.";
- mes "\"So we defeated it with hygiene! Ah, that was wonderful. After a day, the stench had worn off enough that we could drink the water again, and a week later it was almost completely gone. And of course I was the hero of the day.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr downs the rest of his beer.";
- mes "\"And from that day on they called me the `Hero of Tulimshar'.\"";
- next;
- goto L_main_menu;
-
-L_tale_desert:
- set @current_story, 4;
- callsub L_tale_sub;
- if (@story_abort) goto L_main_menu;
-
- mes "[Kfahr the Warrior]";
- mes "Kfahr leans back, trying to find the right words to describe the desert.";
- mes "\"The desert... a cold and lonely place at night, and a hot and lonely place during the day.\"";
- mes "For someone who apparently spent most of his life in the desert, his insights sometimes seem less than profound.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"The desert is a living hell during some times of the year. Filled with black scorpions and snakes, except for the shadier areas, and mountain snakes if you go further east.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"South of Tulimshar is a fairly protected region; the nomads keep the snakes out of there and you'll find only relatively harmless monsters. But go west from there, to the beach, and it's scorpions and snakes...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"...and east of there you find the old Hatmaker cave, now filled to the brim with snakes! Rumors have it that this was once an oasis, in centuries long gone by, but as far as I'm concerned that pit is just a dump that you best avoid.\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Go further to the east and you'll find ol' Pachua up on the mountain. He seems to have some kind of power over the mountain snakes there; they never attack him. I think he's a bit creepy, personally...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"...but if he offers you some of his tobacco, then by all means give it a try! That stuff is amazing.\"";
- mes "He laughs, then begins to cough.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Not terribly healthy, though, I s'pose...\"";
- next;
- goto L_main_menu;
-
-L_gain_power:
- if ((@beer_count - @has_beer) < 1)
- goto L_story_first;
- if (@Q_status < @QS_KNIFE_QUEST)
- goto L_bone_quest;
-
- mes "[Kfahr the Warrior]";
- mes "\"Yeees, yes... doesn't everyone?\"";
- mes "He laughs briefly.";
- mes "\"Don't worry – you can't become as powerful as I, of course, but if you keep practicing, you can get pretty damn close! Just make sure to pick your opponents carefully, and know when to run to live another day!\"";
- next;
- goto L_main_menu;
-
-L_story_first:
- mes "[Kfahr the Warrior]";
- mes "\"That's the spirit! Perhaps you better listen to one of my tales, then!\"";
- next;
- goto L_main_menu;
-
-L_bone_quest:
- if (@Q_status == @QS_KNIFE_QUEST)
- goto L_bone_ip;
- if (@Q_status > @QS_KNIFE_QUEST)
- goto L_bone_completed;
- if (BaseLevel < 40)
- goto L_bone_tooweak;
-
- mes "[Kfahr the Warrior]";
- mes "Kfahr stares at you for a moment, then nods.";
- mes "\"You seem reasonably skilled. I think I may have something that I no longer need, but I don't want to give it to just anyone...\"";
- mes "He hesitates, obviously trying to make up his mind about something, then continues.";
- set @Q_status, @QS_KNIFE_QUEST;
- callsub L_Update_Var;
- next;
- goto L_bone_ip;
-
-L_bone_ip:
- mes "[Kfahr the Warrior]";
- mes "\"Bring me " + @BLACK_STINGERS_NR + " black scorpion stingers and " + @MUSHROOMS_NR + " small mushrooms to prove that you are a competent warrior, and I'll see if I have something for you.\"";
- mes "He grins.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"But while you are here... perhaps you would like to listen to another story?\"";
- next;
- goto L_main_menu;
-
-L_bone_completed:
- mes "[Kfahr the Warrior]";
- mes "\"I really don't have anything else I'd want to give away to make you stronger. Look around a bit yourself! You won't become a hero if you keep begging for help!\"";
- next;
- goto L_main_menu;
-
-L_bone_tooweak:
- mes "[Kfahr the Warrior]";
- mes "\"You know, little one, if you keep practicing a little and come back once you're a bit stronger, I might have something for you...\"";
- mes "He winks.";
- next;
- goto L_main_menu;
-
-L_Check:
- mes "[Kfahr the Warrior]";
- mes "Kfahr eyes you with unconcealed amusement.";
- mes "\"Welcome back! Did you bring me the things I asked for?\"";
- next;
- menu
- "Yes, here they are!", L_completecheck,
- "Er, what were those things again?", L_bone_ip,
- "No, sorry, I didn't have the time.", L_main_menu,
- "I forgot! Let me get them right now.", L_end;
-
-L_completecheck:
- if (countitem("BlackScorpionStinger") < @BLACK_STINGERS_NR)
- goto L_missing_stingers;
- if (countitem("SmallMushroom") < @MUSHROOMS_NR)
- goto L_missing_mushrooms;
-
- mes "[Kfahr the Warrior]";
- mes "Kfahr is delighted.";
- mes "\"Well done, well done! Now that's what I call Warrior spirit!\"";
- mes "He laughs, then suddenly stops, turning to you with suspicion in his eyes.";
- mes "\"You DID get those yourself, didn't you? Not buy them or somesuch...?\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "Before you can answer, he laughs and slaps you on the back again.";
- mes "\"Ah, what am I thinking! Too many years in the desert make you a little suspicious of everyone and everything! Naah, I believe you.\"";
- mes "He pulls a strangely curved knife out of a side pocket and holds it up to the light. The blade is partly transparent, and looks quite sharp.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"It's a bone knife, carved out of the umplex bone of a desert worm... you can probably guess which one.\"";
- mes "He grins broadly again, weighing the weapon.";
- mes "\"It's a little heavy, but one of the best knives you can get. Certainly beats a short sword any time of day.\"";
- mes "I had the nomads make me a few of them, and I hardly use them nowadays, so I think I can part with this one.";
- next;
- if (countitem("BlackScorpionStinger") < @BLACK_STINGERS_NR)
- goto L_missing_stingers_2;
- if (countitem("SmallMushroom") < @MUSHROOMS_NR)
- goto L_missing_mushrooms_2;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Knife_TooMany;
- mes "[Kfahr the Warrior]";
- mes "He hands you the knife.";
- mes "\"Oh, and I think I'll keep those in return; I know someone who will trade them for antidote potions.\"";
- mes "He pockets the stingers and mushrooms.";
- mes "[" + @KNIFE_QUEST_XP + " experience points]";
- set @Q_status, @QS_KNIFE_QUEST_DONE;
- callsub L_Update_Var;
- delitem "BlackScorpionStinger", @BLACK_STINGERS_NR;
- delitem "SmallMushroom", @MUSHROOMS_NR;
- getexp @KNIFE_QUEST_XP, 0;
- getitem "BoneKnife", 1;
- next;
- goto L_main_menu;
-
-L_Knife_TooMany:
- mes "[Kfahr the Warrior]";
- mes "\"You don't have room for this. Come back when you do.\"";
- close;
-
-L_missing_stingers:
- mes "[Kfahr the Warrior]";
- mes "\"No, no... I said " + @BLACK_STINGERS_NR + " black scorpion stingers.";
- if (countitem("BlackScorpionStinger"))
- mes "You will need " + (@BLACK_STINGERS_NR - (countitem ("BlackScorpionStinger"))) + " more of those.\"";
- if (countitem("BlackScorpionStinger") == 0)
- mes "You didn't bring even a single one!\"";
- close;
-
-L_missing_stingers_2:
- mes "[Kfahr the Warrior]";
- mes "\"You just had " + @BLACK_STINGERS_NR + " black scorpion stingers. What happened to them?";
- if (countitem("BlackScorpionStinger"))
- mes "You will need " + (@BLACK_STINGERS_NR - (countitem ("BlackScorpionStinger"))) + " more of those.\"";
- if (countitem("BlackScorpionStinger") == 0)
- mes "You didn't bring even a single one!\"";
- close;
-
-L_missing_mushrooms:
- mes "[Kfahr the Warrior]";
- mes "\"No, no... I said " + @MUSHROOMS_NR + " small mushrooms.";
- if (countitem("SmallMushroom"))
- mes "You will need " + (@MUSHROOMS_NR - (countitem ("SmallMushroom"))) + " more of those.\"";
- if (countitem("SmallMushroom") == 0)
- mes "You didn't bring me even a single little mushroom!\"";
- close;
-
-L_missing_mushrooms_2:
- mes "[Kfahr the Warrior]";
- mes "\"You just had " + @MUSHROOMS_NR + " small mushrooms. What happened to them?";
- if (countitem("SmallMushroom"))
- mes "You will need " + (@MUSHROOMS_NR - (countitem ("SmallMushroom"))) + " more of those.\"";
- if (countitem("SmallMushroom") == 0)
- mes "You didn't bring me even a single little mushroom!\"";
- close;
-
-L_stinger_check:
- mes "[Kfahr the Warrior]";
- mes "Kfahr grins at you.";
- mes "\"Welcome, welcome! Did you bring me my snake skins?\"";
- next;
- menu
- "Yes, here they are!", L_ss_cc,
- "No, sorry, I didn't have the time.", L_main_menu,
- "I forgot! Let me get them right now.", L_end;
-
-L_ss_cc:
- if (countitem("SnakeSkin") < @SNAKE_SKINS_NR)
- goto L_snakeskins_missing;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_SnakeSkins_TooMany;
- delitem "SnakeSkin", @SNAKE_SKINS_NR;
- getitem "GoldenScorpionStinger", 1;
- set @Q_status, @QS_STINGER_QUEST_DONE;
- callsub L_Update_Var;
- getexp @STINGER_QUEST_XP, 0;
- mes "[Kfahr the Warrior]";
- mes "Kfahr takes the skins and pulls a golden scorpion stinger out of his pocket.";
- mes "\"Well, you've earned it. But be careful – the poison in there is still lethal, after all those years.\"";
- mes "He hands you the scorpion stinger.";
- mes "[" + @STINGER_QUEST_XP + " experience points]";
- next;
- goto L_main_menu;
-
-L_snakeskins_missing:
- mes "[Kfahr the Warrior]";
- mes "\"No, no... I said " + @SNAKE_SKINS_NR + " snake skins.";
- if (countitem("SnakeSkin"))
- mes "You will need " + (@SNAKE_SKINS_NR - (countitem ("SnakeSkin"))) + " more of those.\"";
- if (countitem("SnakeSkin") == 0)
- mes "You didn't bring even a single skin!\"";
- close;
-
-L_SnakeSkins_TooMany:
- mes "[Kfahr the Warrior]";
- mes "\"You don't have room for this. Come back when you do.\"";
- close;
-
-L_give_beer:
- if (countitem("Beer") < 1)
- goto L_player_out_of_beer;
- if (@has_beer)
- goto L_enough_beer_for_now;
- if (@beer_count > 4)
- goto L_too_much_beer;
-
- setarray @beermessages$,
- "Ah yes... a warrior's drink!",
- "Generous, generous! I like that!",
- "Hahah! That's just what I needed!",
- "I love this town! Hurnscaldian hospitality! Mrahahahah!",
- "A'ight, one more can't hurt, eh?";
-
- set @mesg$, @beermessages$[@beer_count];
-
- delitem "Beer", 1;
- set @has_beer, 1;
- set @beer_count, @beer_count + 1;
-
- mes "[Kfahr the Warrior]";
- mes "Kfahr is visibly delighted.";
- mes "\"" + @mesg$ + "\"";
- mes "He takes a deep sip.";
- mes "\"Aaah, magnificent!\"";
-
- if (@beer_count > 4)
- mes "Kfahr seems quite relaxed now.";
- next;
- goto L_main_menu;
-
-L_enough_beer_for_now:
- mes "[Kfahr the Warrior]";
- mes "\"Generous, generous! But I still have plenty in here!\"";
- mes "He laughs and takes a sip from the beer you gave him earlier.";
- next;
- goto L_main_menu;
-
-L_too_much_beer:
- mes "[Kfahr the Warrior]";
- mes "Kfahr leans back and sighs heavily.";
- mes "\"Very, very generous... bu' I think I'm fine for now.\"";
- mes "He suppresses a burp.";
- next;
- goto L_main_menu;
-
-L_player_out_of_beer:
- mes "[Kfahr the Warrior]";
- mes "Kfahr stares at you, then begins to laugh.";
- mes "\"Mrahahahahaha! Here's the beer! Right, right! Naah, I get it! Save your gold for whatever you need it for! But if you have some spare and want to share a beer, you know where to find me!\"";
- next;
- goto L_main_menu;
-
-L_golden_scorpion:
- if (@Q_status > @QS_STINGER_QUEST)
- goto L_gs_over_ask;
- if (@Q_status == @QS_STINGER_QUEST)
- goto L_gs_ask_again;
- if (@Q_status == @QS_LOST_WRESTLING)
- goto L_gs_wrestle_again;
-
- mes "[Kfahr the Warrior]";
- mes "He grins.";
- mes "\"Fought any? I single-handedly raided a nest of those beasts! Ah, but golden scorpions are almost unheard of in these parts. Why do you ask?\"";
- next;
- menu
- "Never mind, I was just curious.", L_main_menu,
- "I need a golden scorpion stinger.", L_Next2;
-
-L_Next2:
- mes "[Kfahr the Warrior]";
- mes "\"A golden scorpion stinger? Those are rare and valuable, I hope that you know that!\"";
- if (BaseLevel < 60)
- goto L_lowlvl_for_stinger;
- if (@Q_status < @QS_KNIFE_QUEST)
- goto L_golden_requires_quest;
- if (@Q_status < @QS_KNIFE_QUEST_DONE)
- goto L_golden_requires_done;
-
- mes "\"Still, you are a warrior of repute. I'll consider giving it to you...\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "A mischievous sparkle lightens up in his eyes.";
- mes "\"...if you arm-wrestle me for it!\"";
- next;
- goto L_gs_wrestle_intro;
-
-L_gs_wrestle_intro:
- menu
- "Never!", L_main_menu,
- "Wait... what?", L_wrestle_explain,
- "Bring it on!", L_gs_wrestle;
-
-L_golden_requires_done:
- mes "He hesitates.";
- mes "\"But no, this is too valuable. Perhaps if you finish that other quest I gave you...?\".";
- next;
- goto L_main_menu;
-
-L_golden_requires_quest:
- mes "He hesitates.";
- mes "\"But no, this is too valuable. I think I should have you prove your worthiness with another quest first...\"";
- next;
- goto L_bone_quest;
-
-L_wrestle_explain:
- mes "[Kfahr the Warrior]";
- mes "\"Arm wrestling! Arm against arm! And whoever is stronger wins! If you manage to defeat me, I'll give you a little quest for the stinger. How about it?\"";
- next;
- goto L_gs_wrestle_intro;
-
-L_lowlvl_for_stinger:
- mes "\"Well, I have one, but I can't just give it to anyone. Maybe if you train a little and become a worthy warrior I will consider giving it away...\"";
- next;
- goto L_main_menu;
-
-L_gs_over_ask:
- mes "[Kfahr the Warrior]";
- mes "\"Is this about the stingers again? I already gave you a golden stinger, I'm not going to part with any more.\"";
- next;
- goto L_main_menu;
-
-L_gs_ask_again:
- mes "[Kfahr the Warrior]";
- mes "\"This is about the stinger again, right? Well, just bring me " + @SNAKE_SKINS_NR + " snake skins, and you can have one.\"";
- next;
- goto L_main_menu;
-
-L_gs_wrestle_again:
- mes "[Kfahr the Warrior]";
- mes "\"This is about the stinger again, eh? So you want to give it another try?\"";
- mes "He grins broadly.";
- next;
- goto L_gs_wrestle;
-
-L_gs_wrestle:
- mes "[Kfahr the Warrior]";
- mes "You sit down. Both of you place your arms on the table, on opposing sides, and grab each other's hands.";
- next;
-
- set @KFAHR_STR, 70 + @beer_count * 6;
- set @KFAHR_AGI, 60 - @beer_count * 5;
- set @kfahr_stamina, 120;
-
- set @PC_STR, Str;
- set @PC_AGI, Agi;
- set @PC_MAX_STAMINA, Vit + 20;
- set @pc_stamina, @PC_MAX_STAMINA;
-
- setarray @positions$,
- "Kfahr's hand is almost on the table.",
- "Kfahr's hand is pushed back.",
- "Kfahr and your hands are centered.",
- "Your hand is pushed back.",
- "Your hand is almost on the table.";
-
- set @position, 2;
- set @first_round, 1;
- goto L_wrestle_loop;
-
-L_wrestle_loop:
- mes "[Arm-wrestling with Kfahr]";
- mes @positions$[@position];
- if ((@PC_STAMINA * 2 <= @PC_MAX_STAMINA) && (@PC_STAMINA * 4 > @PC_MAX_STAMINA))
- mes "You feel a little exhausted.";
- if (@PC_STAMINA * 4 <= @PC_MAX_STAMINA)
- mes "You feel very exhausted.";
- next;
- menu
- "Push!", L_wrestle_push,
- "Hold!", L_wrestle_hold,
- "Slam!", L_wrestle_slam,
- "Consider your options", L_wrestle_info;
-
-L_wrestle_info:
- mes "[Arm-wrestling with Kfahr]";
- mes "Kfahr is a strong arm-wrestling opponent. Winning against him won't be easy.";
- mes "Each round you have to choose an action; what you choose determines both your chances of moving each other's arms and how much weaker you get.";
- next;
- mes "[Arm-wrestling with Kfahr]";
- mes "If you PUSH, you may be able to push him back, but if you fail, you will lose more stamina than if you had succeeded.";
- next;
- mes "[Arm-wrestling with Kfahr]";
- mes "If you HOLD, you lose little stamina and may be able to hold him and drain his stength, but you cannot win just by holding.";
- next;
- mes "[Arm-wrestling with Kfahr]";
- mes "If you SLAM, you try to move against him quickly – if you are successful, you may push him back quite a bit, but losing this will drain you badly.";
- next;
- goto L_wrestle_loop;
-
-L_wrestle_push:
- set @kfahr_def, @KFAHR_STR;
- set @attack, @PC_STR;
- set @cost_factor, 2;
- callsub L_wrestle_attack;
- if (@result < -1) set @result, -1; // can't push back further than one
- goto L_wrestle_next;
-
-L_wrestle_hold:
- set @kfahr_def, @KFAHR_STR;
- set @attack, @PC_STR;
- set @cost_factor, 1;
- callsub L_wrestle_attack;
- if (@result < 0) set @result, 0; // hold only
- goto L_wrestle_next;
-
-L_wrestle_slam:
- if (@beer_count == 5 && @first_round)
- goto L_quick_slam;
- set @kfahr_def, @KFAHR_AGI;
- set @attack, @PC_AGI;
- set @cost_factor, 4;
- callsub L_wrestle_attack;
- goto L_wrestle_next;
-
-L_wrestle_attack:
- set @kfahr_stamina_bonus, @kfahr_stamina;
- set @pc_stamina_bonus, @kfahr_stamina;
-
- if (@kfahr_stamina_bonus > 40)
- set @kfahr_stamina_bonus, 40;
- if (@pc_stamina_bonus > 40)
- set @pc_stamina_bonus, 40;
-
- set @score, @kfahr_def + @kfahr_stamina_bonus - @attack - @pc_stamina_bonus + rand(20) - rand(20);
- set @result, @score / 10;
-
- if (@result > 1)
- set @result, 1;
- if (@result > 0)
- set @kfahr_stamina, @kfahr_stamina - 12;
- if (@result == 0)
- set @kfahr_stamina, @kfahr_stamina - 16;
- if (@result < 0)
- set @kfahr_stamina, @kfahr_stamina - 8;
- if (@result < 0)
- set @pc_stamina, @pc_stamina - (6 * @cost_factor);
- if (@result == 0)
- set @pc_stamina, @pc_stamina - (8 * @cost_factor);
- if (@result > 0)
- set @pc_stamina, @pc_stamina - (4 * @cost_factor);
- if (@kfahr_stamina < 0)
- set @kfahr_stamina, 0;
- if (@kfahr_stamina < 0)
- set @pc_stamina, 0;
- return;
-
-L_wrestle_next:
- set @first_round, 0;
-
- mes "[Arm-wrestling with Kfahr]";
- if (@result < 0)
- mes "You manage to push him back!";
- if (@result == 0)
- mes "You hold your position!";
- if (@result > 0)
- mes "Kfahr pushes you back!";
- next;
- set @position, @position + @result;
- if (@position < 0)
- goto L_wrestle_win;
- if (@position > 4)
- goto L_wrestle_lose;
- goto L_wrestle_loop;
-
-L_wrestle_lose:
- mes "[Arm-wrestling with Kfahr]";
- mes "Kfahr slams your hand on the table.";
- next;
- mes "[Kfahr the Warrior]";
- mes "\"Don't worry! It was a good attempt – but beating Kfahr is not quite so easy!\"";
- mes "He laughs and slaps you on the shoulder.";
- mes "\"But come back any time you want to try again!\"";
- next;
- set @Q_status, @QS_LOST_WRESTLING;
- callsub L_Update_Var;
- goto L_main_menu;
-
-L_quick_slam:
- mes "[Arm-wrestling with Kfahr]";
- mes "Your hands have barely touched as you push against him with all your might. His reactions slowed by the beer, Kfahr doesn't stand a chance.";
- next;
- goto L_wrestle_win;
-
-L_wrestle_win:
- mes "[Arm-wrestling with Kfahr]";
- mes "You slam Kfahr's hand on the table.";
- next;
- mes "[Kfahr the Warrior]";
- mes "Kfahr stares first at the hand, then at you, incredulously.";
- mes "Then he begins to roar with laughter, slapping you on the shoulder.";
- mes "\"Excellent, excellent! Caught me in a weak moment there, did ya!\"";
- next;
- mes "[Kfahr the Warrior]";
- mes "After calming down, Kfahr outlines your quest.";
- mes "\"As I promised, I will give you the stinger if you do something for me. Get me " + @SNAKE_SKINS_NR + " snake skins, and I'll let you have it.\"";
- next;
- set @Q_status, @QS_STINGER_QUEST;
- callsub L_Update_Var;
- goto L_main_menu;
-
-L_end:
- close;
-
-L_Update_Var:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/009-2/lena.txt b/world/map/npc/009-2/lena.txt
deleted file mode 100644
index 27a88310..00000000
--- a/world/map/npc/009-2/lena.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-// Quest for Fairy Hat and Forest Armor
-// Variables used: nibble 0 of QUEST_Hurnscald
-
-009-2,146,43,0|script|Lena|182
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
-
- if (@state >= 6) goto L_Lena_Done;
- if (@state == 5) goto L_Lena_Success;
- if (@state == 4) goto L_LBL_Fail;
- if (@state == 3) goto L_LBL_Fail;
- if (@state == 2) goto L_Lena_Bandit_Leader;
- if (@state == 1) goto L_Lena_Fairy_Hat;
- if (BaseLevel >= 30) goto L_Lena_Start;
-
- mes "[Lena]";
- mes "\"I got ambushed by a group of bandits and one of them stabbed me pretty good. Hopefully I heal up soon so I can fight this menace.\"";
- next;
- mes "\"Ah, I wish my dear friend Nickos could be here. He's one of the guards in Tulimshar and he'd know how to deal with those outlaws!\"";
- goto L_Close;
-
-L_Lena_Start:
- mes "[Lena]";
- mes "\"While wandering through the forest, I was ambushed by bandits. Though I got them all, one of them stabbed me pretty good. I'm still healing from that encounter. I'm worried that the bandit threat may spread.\"";
- menu
- "Don't worry, I can take out some of these scumbags.", L_Lena_Approves,
- "I think I left my courage in another pair of pants. See you later!", L_Lena_No_Fan;
-
-L_Lena_Approves:
- set @state, 1;
- callsub S_Update_Var;
- mes "[Lena]";
- mes "\"You look like you can handle yourself in a fight. If you can take on this scourge I'll reward you with a hat like mine. In order to prove your mettle, bring me 10 Bandit Hoods so I know they've met their match.\"";
- areamonster "008-1",25,60,40,65,"",1064,3;
- areamonster "011-1",35,40,65,60,"",1064,3;
- goto L_Close;
-
-L_Lena_No_Fan:
- mes "[Lena]";
- mes "\"What will Hurnscald do if these bandits overrun the town? I hope you reconsider.\"";
- goto L_Close;
-
-L_Lena_Fairy_Hat:
- if (countitem("BanditHood") < 10)
- goto L_Lena_NotEnough;
- getinventorylist;
- if (@inventorylist_count - (countitem("BanditHood")== 10) > 99)
- goto L_TooMany;
- set @state, 2;
- callsub S_Update_Var;
- delitem "BanditHood", 10;
- getitem "FairyHat", 1;
- mes "[Lena]";
- mes "\"Ah, you've brought me the Bandit Hoods. As promised, here is a hat like mine.\"";
- next;
- mes "\"Unfortunately, I feel this bandit threat may have grown. Perhaps they are being lead? I noticed many of them seem to hang around a cave just west of Hurnscald. If you could defeat their leader I know they will become less of a threat to Hurnscald. I'll reward you with armor like mine if you do. Sound like something you could do?\"";
- menu
- "Consider it done!", L_LBL_Yes,
- "Woah there, that sounds a bit harder than what I can succeed at.", L_Lena_NoWay;
-
-L_Lena_NotEnough:
- mes "[Lena]";
- mes "\"You don't have enough Bandit Hoods to prove you are taking care of this threat. Please come back with 10 Bandit Hoods to show you are taking care of these bandits.\"";
- goto L_Close;
-
-L_Lena_Bandit_Leader:
- mes "[Lena]";
- mes "\"I feel this bandit threat may have grown. Perhaps they are being lead? I noticed many of them seem to hang around a cave just west of Hurnscald. If you could defeat their leader I know they will become less of a threat to Hurnscald. I'll reward you with armor like mine if you do. Sound like something you could do?\"";
- menu
- "Consider it done!", L_LBL_Yes,
- "Woah there, that sounds a bit harder than what I can succeed at.", L_Lena_NoWay;
-
-L_LBL_Yes:
- set @state, 3;
- callsub S_Update_Var;
- areamonster "008-1",25,60,40,65,"",1064,3;
- areamonster "011-1",35,40,65,60,"",1064,3;
- mes "[Lena]";
- mes "\"You have a brave heart. Though I know you can succeed on your own, I recommend finding others to help you defeat the bandit leader. I believe he could pose a significant threat to solitary individuals seeking to challenge him. Good luck!\"";
- goto L_Close;
-
-L_Lena_NoWay:
- mes "[Lena]";
- mes "\"That is too bad. Feel free to return at any time. This bandit threat needs to be pushed back.\"";
- goto L_Close;
-
-L_LBL_Fail:
- set @state, 3;
- callsub S_Update_Var;
- mes "[Lena]";
- mes "\"You haven't killed the bandit leader yet. This is a big problem. Please be careful.\"";
- goto L_Close;
-
-L_Lena_Success:
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- set @state, 6;
- callsub S_Update_Var;
- getitem "ForestArmor", 1;
- mes "[Lena]";
- mes "\"Excellent! You killed the bandit leader. Here is the armor as I promised you. Safe journeys!\"";
- goto L_Close;
-
-L_Lena_Done:
- mes "[Lena]";
- mes "\"Thank you for all your help. With your efforts, we can only hope this scourge doesn't see a resurgence.\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Lena]";
- mes "\"You have too many items in your inventory. Please get rid of something so I can reward you.\"";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- close;
-
-S_Update_Var:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_0_MASK) | (@state << NIBBLE_0_SHIFT));
- return;
-}
diff --git a/world/map/npc/009-2/mapflags.txt b/world/map/npc/009-2/mapflags.txt
deleted file mode 100644
index e18532fc..00000000
--- a/world/map/npc/009-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-009-2|mapflag|town
-009-2|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-2/misc.txt b/world/map/npc/009-2/misc.txt
deleted file mode 100644
index 1c1d3897..00000000
--- a/world/map/npc/009-2/misc.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-//Note in bar
-
-009-2,54,49,0|script|Note#bar|400
-{
- mes "[Note]";
- mes "\"We refuse service to anyone who:\"";
- mes "\"• Has a bubblehead\"";
- mes "\"• Is not properly shaded\"";
- mes "\"• Can't walk without stopping after every step\"";
- close;
- // In case you don't get the joke, know that it's a parody on Illutia.
-}
-
-//Bookshelf
-009-2,109,44,0|script|#Book|400
-{
- if (getskilllv(SKILL_MAGIC))
- goto L_magic;
- mes "[Bookshelf]";
- mes "This bookshelf seems to have a selection of diaries and manuscripts, though you can't find anything that strikes you as being particularly interesting.";
- close;
-
-L_magic:
- mes "[Bookshelf]";
- mes "Browsing through the books, you come across a manuscript entitled 'Notes of Potaffe, On Transmutation.'";
- next;
- if (getskilllv(SKILL_MAGIC_TRANSMUTE) < 2)
- goto L_magic_boring;
- mes "[Bookshelf]";
- mes "Leafing through the manuscript, you find that you can read little of the tiny handwriting and understand only a fraction of what is said.";
- next;
- mes "[Bookshelf]";
- mes "After a while, you stumble across a section that appears to be written somewhat legibly. The author notes that he (or perhaps she?) is describing a completely new transmutation.";
- next;
- mes "[Bookshelf]";
- mes "Excitedly, you turn the page – only to find that it is stuck to the next and can't be freed!";
- next;
- mes "[Bookshelf]";
- mes "The page after that is once again hastily written, with many crossed out words and sections and side remarks such as 'it almost worked' or 'it worked fine yesterday.'";
- next;
- mes "[Bookshelf]";
- mes "The last word on that page is '" + get(.invocation$, "make-iron-powder") + ",' and it's underlined twice with a comment next to it saying 'finally got it right.'";
- next;
- mes "[Bookshelf]";
- mes "Unfortunately, you can't make out what the transmutation is for or even whether it requires any materials...";
- next;
- mes "[Bookshelf]";
- mes "You can't make out anything else of value, so you place the manuscript back in the bookshelf.";
- close;
-
-L_magic_boring:
- mes "[Bookshelf]";
- mes "Leafing through the manuscript, you find that you understand too little of what is written to make any sense of it.";
- close;
-}
diff --git a/world/map/npc/009-2/nicholas.txt b/world/map/npc/009-2/nicholas.txt
deleted file mode 100644
index a91fb153..00000000
--- a/world/map/npc/009-2/nicholas.txt
+++ /dev/null
@@ -1,414 +0,0 @@
-//#################################################################################
-//#
-//# Nicholas the Smith.
-//# Participates in iron ore smithery and the following quests:
-//# - Together with Pachua: Iron Shield quest (repeatable)
-//# (6 iron ingots, 2 infantry helmets, 20000 GP, leather patch) -> iron shield
-//# - Primary participant in the Setzer quest (monster oil/golden stinger subquests)
-//#
-//# Variables used: @QUEST_Forestbow_state, nibble 3 (setzer quest)
-//# @QUEST_Forestbow_state, nibble 4 (iron shield quest)
-//#
-//#################################################################################
-
-009-2,185,55,0|script|Nicholas|135
-{
- set @SETZER_XP, 100000;
- set @SHIELD_XP, 20000;
-
- set @SHIELD_INITIAL, 0;
- set @SHIELD_KNOWS_PATCH, 1; // knows that a leather patch is needed
- set @SHIELD_COMPLETED, 2; // shield completed once
-
- set @SETZER_INITIAL, 0;
- set @SETZER_KNOWS_OIL, 1;
- set @SETZER_KNOWS_STINGER, 2;
- set @SETZER_FLAG_MADE_OIL, 4;
- set @SETZER_FLAG_MADE_SETZER, 8;
-
- set @Q_SETZER_MASK, NIBBLE_3_MASK;
- set @Q_SETZER_SHIFT, NIBBLE_3_SHIFT;
-
- set @Q_SHIELD_MASK, NIBBLE_4_MASK;
- set @Q_SHIELD_SHIFT, NIBBLE_4_SHIFT;
-
- set @Q_SETZER_status, (QUEST_Forestbow_state & @Q_SETZER_MASK) >> @Q_SETZER_SHIFT;
- set @Q_SHIELD_status, (QUEST_Forestbow_state & @Q_SHIELD_MASK) >> @Q_SHIELD_SHIFT;
-
- mes "[Nicholas]";
- mes "\"Hello, there! I'm an expert blacksmith. If you get me some Coal and Iron Ingots, I could make you a very valuable shield or helmet.\"";
- next;
- menu
- "I have Iron Ingots!", L_Check,
- "Where can I get Coal and Iron Ingots?", L_Info,
- "I'm okay, thanks.", L_Pass;
-
-L_Check:
- mes "[Nicholas]";
- mes "\"Let me take a look at how much you have...\"";
- next;
- if ( (countitem("IronIngot")<3) || (countitem("Coal") < 6) )
- goto L_NoItem;
- if ( (countitem("IronIngot")<6) || (countitem("Coal") < 12) )
- goto L_StageA;
- if ( (countitem("IronIngot")<9) || (countitem("Coal") < 18) )
- goto L_StageB;
- goto L_StageC;
-
-L_Info:
- mes "[Nicholas]";
- mes "\"You can find Coal and Iron Ore in mines. Once you have Coal and Iron Ore, find a smith that will smelt the Iron Ore and cast them into Iron Ingots.\"";
- next;
- mes "[Nicholas]";
- mes "\"Come back here with some Coal and Iron Ingots, and I'll make something nice for you.\"";
- close;
-
-L_Pass:
- mes "[Nicholas]";
- mes "\"Oh, okay. Come back any time.\"";
- close;
-
-L_StageA:
- mes "[Nicholas]";
- mes "\"That's just enough for me to make you a winged Knight's Helmet, but it'll cost you 10,000GP, 6 Coal and 3 Iron Ingots.\"";
- next;
- goto L_main_menu;
-
-L_StageB:
- mes "[Nicholas]";
- mes "\"Ahh, with that much Coal and Iron Ingots I can make you one of two helmets, for only 10,000GP, or I can make you a shield, for 20,000GP.\"";
- mes "";
- mes "\"What would you like?\"";
- next;
- goto L_main_menu;
-
-L_StageC:
- mes "[Nicholas]";
- mes "\"Excellent, that's enough to make three different types of helmet. My fee is 10,000GP. I can also make a shield, but that will cost you 20,000 GP.\"";
- mes "";
- mes "\"Which will it be?\"";
- next;
- goto L_main_menu;
-
-L_main_menu:
-
- set @CHOICE_KNIGHT, 1;
- set @CHOICE_CRUSADE, 2;
- set @CHOICE_WARLORD, 3;
- set @CHOICE_SHIELD, 4;
- set @CHOICE_SETZER, 5;
- set @CHOICE_CANCEL, 6;
-
- setarray @choice$, "", "", "", "", "", "";
- set @choices_nr, 0;
- setarray @choice_idx, 0, 0, 0, 0, 0, 0;
-
- if (countitem("ShortSword") < 1)
- goto L_main_menu_post_setzer;
- set @choice$[@choices_nr], "Can you make my Short Sword better?";
- set @choice_idx[@choices_nr], @CHOICE_SETZER;
- set @choices_nr, 1 + @choices_nr;
- goto L_main_menu_post_setzer;
-
-L_main_menu_post_setzer:
-
- if ( (countitem("IronIngot")<3) || (countitem("Coal") <6) )
- goto L_no_more_helmets;
- set @choice$[@choices_nr], "Knight's Helmet (3 Iron Ingots & 6 Coal).";
- set @choice_idx[@choices_nr], @CHOICE_KNIGHT;
- set @choices_nr, 1 + @choices_nr;
-
- if ( (countitem("IronIngot")<6) || (countitem("Coal") < 12) )
- goto L_no_more_helmets;
- set @choice$[@choices_nr], "Crusade Helmet (6 Iron Ingots & 12 Coal).";
- set @choice_idx[@choices_nr], @CHOICE_CRUSADE;
- set @choices_nr, 1 + @choices_nr;
-
- set @choice$[@choices_nr], "Steel Shield (6 Iron Ingots & 12 Coal).";
- set @choice_idx[@choices_nr], @CHOICE_SHIELD;
- set @choices_nr, 1 + @choices_nr;
-
- if ( (countitem("IronIngot")<9) || (countitem("Coal") < 18) )
- goto L_no_more_helmets;
- set @choice$[@choices_nr], "Warlord Helmet (9 Iron Ingots & 18 Coal).";
- set @choice_idx[@choices_nr], @CHOICE_WARLORD;
- set @choices_nr, 1 + @choices_nr;
- goto L_no_more_helmets;
-
-L_no_more_helmets:
- set @choice$[@choices_nr], "No thanks.";
- set @choice_idx[@choices_nr], @CHOICE_CANCEL;
- set @choices_nr, 1 + @choices_nr;
- menu
- @choice$[0], L_MenuItems,
- @choice$[1], L_MenuItems,
- @choice$[2], L_MenuItems,
- @choice$[3], L_MenuItems,
- @choice$[4], L_MenuItems,
- @choice$[5], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
- if (@menu >= @choices_nr)
- close;
-
- set @choice, @choice_idx[@menu];
- if (@choice == @CHOICE_KNIGHT)
- goto L_YesKnight;
- if (@choice == @CHOICE_CRUSADE)
- goto L_YesCrusade;
- if (@choice == @CHOICE_WARLORD)
- goto L_YesWarlord;
- if (@choice == @CHOICE_SHIELD)
- goto L_YesShield;
- if (@choice == @CHOICE_SETZER)
- goto L_SetzerQuest;
- if (@choice == @CHOICE_CANCEL)
- goto L_end;
- close;
-
-L_NoItem:
- mes "[Nicholas]";
- mes "\"It appears you don't have enough Coal and Iron Ingots for me to work with. Please do come back when you have more, though.\"";
- close;
-
-L_NoMoney:
- mes "[Nicholas]";
- mes "\"Oh dear, it seems you don't have enough money.\"";
- close;
-
-L_YesKnight:
- if (Zeny < 10000)
- goto L_NoMoney;
- if ( (countitem("IronIngot")<3) || (countitem("Coal") < 6) )
- goto L_NoItem;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- set Zeny, Zeny - 10000;
- delitem "IronIngot", 3;
- delitem "Coal", 6;
- getitem "KnightsHelmet", 1;
- goto L_Done;
-
-L_YesCrusade:
- if (Zeny < 10000) goto L_NoMoney;
- if ( (countitem("IronIngot")<6) || (countitem("Coal") < 12) )
- goto L_NoItem;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- set Zeny, Zeny-10000;
- delitem "IronIngot", 6;
- delitem "Coal", 12;
- getitem "CrusadeHelmet", 1;
- goto L_Done;
-
-L_YesWarlord:
- if (Zeny < 10000) goto L_NoMoney;
- if ( (countitem("IronIngot")<9) || (countitem("Coal") < 18) )
- goto L_NoItem;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- set Zeny, Zeny-10000;
- delitem "IronIngot", 9;
- delitem "Coal", 18;
- getitem "WarlordHelmet", 1;
- goto L_Done;
-
-L_YesShield:
- mes "[Nicholas]";
- mes "Nicholas examines your Iron Ingots.";
- mes "\"No, this iron is too brittle; for something as large as a shield I need to mix in softer iron. Can I see if you have anything suitable?\"";
- next;
- menu
- "Sure, have a look!", L_Next,
- "No.", L_Pass;
-
-L_Next:
- if (countitem("InfantryHelmet") == 1)
- goto L_MoreInfantry;
- if (countitem("InfantryHelmet") == 0)
- goto L_NoInfantry;
-
- mes "[Nicholas]";
- mes "Nicholas pulls out two of your Infantry Helmets.";
- mes "\"I can use those... yes, that should work. Now all I need is a Leather Patch for the handle, and 20,000 GP.\"";
- if (@Q_SHIELD_status < @SHIELD_KNOWS_PATCH)
- set @Q_SHIELD_status, @SHIELD_KNOWS_PATCH;
- callsub L_Update_Var;
- next;
- menu
- "Here you are!", L_Next1,
- "Where can I get a Leather Patch?", L_WhereLeather,
- "No way.", L_Pass;
-
-L_Next1:
- if (Zeny < 20000)
- goto L_ShieldNoZeny;
- if (countitem("InfantryHelmet") < 2)
- goto L_ShieldNoInfantry;
- if (countitem("IronIngot") < 6)
- goto L_ShieldNoIngot;
- if (countitem("Coal") < 12)
- goto L_ShieldNoCoal;
- if (countitem("LeatherPatch") < 1)
- goto L_ShieldNoLeatherPatch;
- // No inventory check needed, as infantry helms are removed, opening two slots
-
- mes "[Nicholas]";
- mes "\"Yes, it looks as if you have all that is needed!\"";
- mes "You watch Nicholas melt the ingots and helmets and form a shield out of the resulting iron. He then cuts your Leather Patch apart and adds it to the handles.";
- mes "\"Here is your shield!\"";
- delitem "InfantryHelmet", 1;
- delitem "InfantryHelmet", 1;
- delitem "LeatherPatch", 1;
- delitem "IronIngot", 6;
- delitem "Coal", 12;
- set Zeny, Zeny - 20000;
-
- if (@Q_SHIELD_status < @SHIELD_COMPLETED)
- getexp @SHIELD_XP, 0;
- if (@Q_SHIELD_status < @SHIELD_COMPLETED)
- mes "[" + @SHIELD_XP + " experience points]";
- set @Q_SHIELD_status, @SHIELD_COMPLETED; // get XP only once
- callsub L_Update_Var;
- getitem "SteelShield", 1;
- close;
-
-L_ShieldNoZeny:
- mes "[Nicholas]";
- mes "\"I am sorry, but I must ask that you pay 20,000 GP; this is quality work.\"";
- close;
-
-L_ShieldNoInfantry:
- mes "[Nicholas]";
- mes "\"Now this is strange... I could have sworn that you had two Infantry Helmets right here. Well, come back if you have some more!\"";
- close;
-
-L_ShieldNoIngot:
- mes "[Nicholas]";
- mes "\"How odd... didn't I put your Iron Ingots on the table right here? Well, I will need them back to make the shield.\"";
- close;
-
-L_ShieldNoCoal:
- mes "[Nicholas]";
- mes "\"How odd... didn't I put your Coal on the table right here? Well, I will need it back to make the shield.\"";
- close;
-
-L_ShieldNoLeatherPatch:
- mes "[Nicholas]";
- mes "\"You don't have a suitable Leather Patch. I'm sorry, but a shield without one would chafe terribly.\"";
- close;
-
-L_MoreInfantry:
- mes "[Nicholas]";
- mes "Nicholas takes your Infantry Helmet and examines it.";
- mes "\"Yes, this is perfect! If you can bring me another one of those, I can make your shield.\"";
- close;
-
-L_NoInfantry:
- mes "[Nicholas]";
- mes "Nicholas shakes his head.";
- mes "\"No, none of these items are suitable. Try looking for somewhat large metal items.\"";
- close;
-
-L_WhereLeather:
- mes "[Nicholas]";
- mes "\"Hmm. You should look for someone who can work with some kind of leather. Rumor has it that there is someone in the eastern desert who can, but I haven't been there.\"";
- close;
-
-L_SetzerQuest:
- mes "[Nicholas]";
- if (@Q_SETZER_status & @SETZER_FLAG_MADE_SETZER)
- mes "\"Another one? Sure, why not.\"";
- mes "Nicholas examines your Short Sword, then nods.";
- mes "\"This is good quality. I can make something special out of it, with three ingot bars of iron, six lumps of coal and 50,000 GP -- but I will also need a potion of monster oil.\"";
- if (@Q_SETZER_status < @SETZER_KNOWS_OIL)
- set @Q_SETZER_status, @SETZER_KNOWS_OIL;
- callsub L_Update_Var;
- next;
- menu
- "Here you are.", L_Next2,
- "Monster oil? What's that?", L_ExplainMonsterOil,
- "HOW much? Nevermind then!", L_Pass;
-
-L_Next2:
- if (Zeny < 50000)
- goto L_SetzerNoZeny;
- if ( (countitem("IronIngot") < 3) || (countitem("Coal") < 6) )
- goto L_SetzerNoIngot;
- if (countitem("MonsterOilPotion") < 1)
- goto L_SetzerNoMonsterOil;
- if (countitem("ShortSword") < 1)
- goto L_SetzerNoSword;
- // No inventory check needed, as the short sword is removed, opening a slot
-
- mes "[Nicholas]";
- mes "Nicholas takes the items, heats up your sword and pounds it with a heavy hammer. As you watch, it turns thinner and flatter. Finally he pours the monster oil over it, heats the metal up again and douses it in water.";
- set Zeny, Zeny - 50000;
- delitem "IronIngot", 3;
- delitem "Coal", 6;
- delitem "MonsterOilPotion", 1;
- delitem "ShortSword", 1;
- getitem "Setzer", 1;
- if (!(@Q_SETZER_status & @SETZER_FLAG_MADE_SETZER))
- mes "[" + @SETZER_XP + " experience points]";
- if (!(@Q_SETZER_status & @SETZER_FLAG_MADE_SETZER))
- getexp @SETZER_XP, 1;
- set @Q_SETZER_status, @Q_SETZER_status | @SETZER_FLAG_MADE_SETZER;
- callsub L_Update_Var;
- next;
- mes "[Nicholas]";
- mes "Nicholas hands you the completed sword. It feels strangely light in your hands.";
- mes "\"I made it lighter and faster, it should also cut a little better now. This kind of sword is called a Setzer, after a famous gambler who invented it as a weapon in between a knife and a sword.\"";
- next;
- mes "[Nicholas]";
- mes "\"I'm quite happy with this one. Be careful around the edge, though, it is quite sharp!\"";
- close;
-
-L_ExplainMonsterOil:
- mes "[Nicholas]";
- mes "\"Monster oil is a special oil that can be used to harden thin sheets of metal, if used properly. Unfortunately, it is very hard to get. Perhaps one of our local alchemists can help you with it?\"";
- close;
-
-L_SetzerNoZeny:
- mes "[Nicholas]";
- mes "\"I am sorry, but I must ask that you pay 50,000 GP; the kind of weapon I am thinking of is not easy to make.\"";
- close;
-
-L_SetzerNoIngot:
- mes "[Nicholas]";
- mes "\"Without 3 ingots of iron, and six lumps of coal, I can't improve your sword.\"";
- close;
-
-L_SetzerNoMonsterOil:
- mes "[Nicholas]";
- mes "\"I know that monster oil is hard to come by, but I can't do much without it. Ask an alchemist if you need help making it.\"";
- close;
-
-L_SetzerNoSword:
- mes "[Nicholas]";
- mes "\"I will need your old Short Sword as a basis. Please bring it to me first.\"";
- close;
-
-L_end:
- close;
-
-L_Done:
- mes "[Nicholas]";
- mes "\"Here you go!\"";
- mes "";
- mes "\"Come back any time.\"";
- close;
-
-L_Update_Var:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(@Q_SHIELD_MASK | @Q_SETZER_MASK) | (@Q_SHIELD_status << @Q_SHIELD_SHIFT) | (@Q_SETZER_status << @Q_SETZER_SHIFT));
- return;
-
-L_TooMany:
- mes "[Nicholas]";
- mes "\"You don't have room for it. Come back later when you do.\"";
- close;
-}
diff --git a/world/map/npc/009-2/nurse.txt b/world/map/npc/009-2/nurse.txt
deleted file mode 100644
index efad521a..00000000
--- a/world/map/npc/009-2/nurse.txt
+++ /dev/null
@@ -1,561 +0,0 @@
-//######################################################################################
-//# Nurse
-//# AUTHORS: Jenalya and Pjotr Orial
-//# REVIEWED BY:
-//# heals player below level 20 for free and tells players about the doctor on the 3rd floor.
-//#
-//# gives the resist-poison skill, used global (!) variable: "$NPC_NURSE", split up in 4 bytes:
-//# byte0 (bit 0-7) = healing_needed, byte1 (bit 8-15) = venum_needed, byte2 (bit 16-23) = stabilizer_needed
-//# byte3 (bit 24-31) still unused
-//# used player-variable: QUEST_Forestbow, nibble7
-//# states:
-//# 0 if skills are available, she tells you about her plans of doing the antidote,
-//# need black scorpion stingers and snake tongues
-//# 1 waits for ingredients: black scorpion stingers and snake tongues
-//# 2 waits for ingredients: acorns, apples, orange, healing potion, when these ingreds are there,
-//# she mixes the stuff (modify global variable!)
-//# 3 you can start the minigame, 3 tries remaining
-//# 4 you can start the minigame, 2 tries remaining
-//# 5 you can start the minigame, 1 try remaining
-//# 6 not enough stuff remaining, jump to state 1
-//# 7 yay! you made it!
-
-
-//######################################################################################
-009-2,147,65,0|script|Nurse|119
-{
- set @halloween_npc_id, $@halloween_npc_nurse;
- callfunc "TrickOrTreat";
-
- set @SNAKET_AMOUNT, 5;
- set @BSCORPIONST_AMOUNT, 10;
- // This quest can be done very often: so give less xp
- set @QUEST1_EXP, 300;
- set @ACORNS_AMOUNT, 10;
- set @GREENAPPLE_AMOUNT, 5;
- set @REDAPPLE_AMOUNT, 5;
- set @ORANGE_AMOUNT, 5;
- set @HEALING_AMOUNT, 3;
- // This quest can be done very often: so give less xp
- set @QUEST2_EXP, 700;
- set @ANTIDOTE_EXP, 10000;
-
- set @Q_poison_MASK, NIBBLE_7_MASK;
- set @Q_poison_SHIFT, NIBBLE_7_SHIFT;
- set @Q_poison, (QUEST_Forestbow_state & @Q_poison_MASK) >> @Q_poison_SHIFT;
-
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@Q_poison == 7) goto L_state7;
- if (@Q_poison == 6) goto L_state6;
- if (@Q_poison == 5) goto L_state5;
- if (@Q_poison == 4) goto L_state4;
- if (@Q_poison == 3) goto L_state3;
- if (@Q_poison == 2) goto L_state2;
- if (@Q_poison == 1) goto L_state1;
- if (getskilllv(SKILL_POOL)) goto L_state0;
- goto L_Usual;
-
-L_Usual:
- mes "[Nurse]";
- mes "\"How can I help you?\"";
- next;
-
- if (@inspector == 1)
- menu
- "Oooh, these wounds! They hurt so much!", L_Heal,
- "I don't feel so well, I might be sick.", L_Doctor,
- "Have you seen anything out of the ordinary?", L_NohMask,
- "No, I'm fine.", L_Next;
- menu
- "Oooh, these wounds! They hurt so much!", L_Heal,
- "I don't feel so well, I might be sick.", L_Doctor,
- "No, I'm fine.", L_Next;
-
-L_Next:
- mes "[Nurse]";
- mes "\"Then I would ask you to leave. There are people who really need our help.\"";
- goto L_Close;
-
-L_Doctor:
- mes "[Nurse]";
- mes "\"Then you should better see the doctor. He is usually in his office on the 3rd floor.\"";
- goto L_Close;
-
-L_Heal:
- if (BaseLevel > 20) goto L_NoHeal;
- mes "[Nurse]";
- mes "\"Here, let me heal you.\"";
- next;
- heal 10000, 10000;
- goto L_Close;
-
-L_NoHeal:
- mes "[Nurse]";
- mes "\"I'm sorry but I'm here only to help young people.";
- mes "Your level is already higher than 20.";
- mes "You can get some rest in the inn near here.\"";
- goto L_Close;
-
-L_NohMask:
- mes "[Nurse]";
- mes "\"I'm too busy here to observe the town.\"";
- goto L_Close;
-
-L_state0:
- mes "[Nurse]";
- mes "\"Welcome! You really look like a competent person. Maybe you can help to deal with a problem we have.\"";
- next;
- mes "\"We recently had some accidents in the mines. It seems that the creatures in the mines became more aggressive.\"";
- next;
- mes "\"Unfortunately, some of them are poisonous and it is very difficult for us to help the miners.\"";
- next;
- mes "\"For that reason, I want to do some research on this subject, to create an antidote. But I need help to get some ingredients, someone who is able to deal with the dangerous creatures in the mines.\"";
- next;
- menu
- "I will do what I can. What do you need?", L_firstquest,
- "I'm really sorry, but I don't think I can help you.", L_Next1;
-
-L_Next1:
- mes "\"That is disagreeable to hear. Maybe I can find another person to take this task.\"";
- next;
- goto L_Usual;
-
-L_firstquest:
- set @Q_poison, 1;
- callsub S_Update_Var;
- mes "\"That's great! First, I need some parts of the poisonous creatures.\"";
- next;
- goto L_ExplainAgain1;
-
-L_ExplainAgain1:
- mes "\"Please bring me five tongues of snakes and ten stingers of black scorpions.\"";
- goto L_Close;
-
-L_state1:
- mes "[Nurse]";
- mes "\"You are back, wonderful! Did you get what we need for the antidote?\"";
- next;
- menu
- "Actually, I have another question.", L_Usual,
- "Sorry, I forgot. What shall I bring you?", L_ExplainAgain1,
- "I have what you asked for.", L_Next2,
- "I'm still working on that.", L_Close;
-
-L_Next2:
- if (countitem("SnakeTongue") < @SNAKET_AMOUNT || countitem("BlackScorpionStinger") < @BSCORPIONST_AMOUNT)
- goto L_NotEnough;
- delitem "SnakeTongue", @SNAKET_AMOUNT;
- delitem "BlackScorpionStinger", @BSCORPIONST_AMOUNT;
- getexp @QUEST1_EXP, 0;
- set @Q_poison, 2;
- callsub S_Update_Var;
- mes "[Nurse]";
- mes "\"Very good. Now I have to extract the poison from this, it will take some time.\"";
- next;
- mes "\"But there are some other things we will need in any case. It would be courteous if you could get them meanwhile.\"";
- next;
- goto L_ExplainAgain2;
-
-L_ExplainAgain2:
- mes "\"Please bring me ten acorns, five red apples, five green apples and also five oranges. And we need some small healing potions. They will be useful to hold off the baneful effects. Three of them will be enough, I guess.\"";
- goto L_Close;
-
-L_state2:
- mes "You look at the nurse, who seems to be really tired, with shadows under her eyes. When she recognizes you, she smiles.";
- mes "[Nurse]";
- mes "\"I managed to extract the poisonous components. We should be able to create an antidote, if you have everything else we need.\"";
- next;
- menu
- "Actually, I have another question.", L_Usual,
- "I have a bad memory. Can you tell me again what we need?", L_ExplainAgain2,
- "I managed to get everything we need.", L_Next3,
- "I will go and get it.", L_Close;
-
-L_Next3:
- if (countitem("Acorn") < @ACORNS_AMOUNT
- || countitem("GreenApple") < @GREENAPPLE_AMOUNT
- || countitem("RedApple") < @REDAPPLE_AMOUNT
- || countitem("Orange") < @ORANGE_AMOUNT
- || countitem("SmallHealingPotion") < @HEALING_AMOUNT)
- goto L_NotEnough;
- delitem "Acorn", @ACORNS_AMOUNT;
- delitem "GreenApple", @GREENAPPLE_AMOUNT;
- delitem "RedApple", @REDAPPLE_AMOUNT;
- delitem "Orange", @ORANGE_AMOUNT;
- delitem "SmallHealingPotion", @HEALING_AMOUNT;
- getexp @QUEST2_EXP, 0;
- set @Q_poison, 3;
- callsub S_Update_Var;
- goto L_Chemistry;
-
-L_Chemistry:
- callsub L_Shuffle_Need;
- mes "The nurse takes the ingredients you brought and starts to squeeze the fruits and to crush the acorns. Then she put the fruit juices in some complicated looking chemical device.";
- next;
- mes "After some minutes, it is blubbering and steaming and a liquid is dripping in a pot under the device.";
- next;
- mes "Then she takes the acorn flour and the liquid and goes to a place back in the room, where she does something you don't see.";
- next;
- mes "After just a few moments, she comes back with a smiling face, holding two different bottles in her hand.";
- next;
- mes "[Nurse]";
- mes "\"That was easy compared to the things to be done with the stingers and snake tongues.\"";
- next;
- mes "Then her facial expression gets more serious.";
- next;
- mes "\"When we try to find the right mixture for the antidote, we need to test it.\"";
- next;
- mes "\"For that purpose, I will poison you. Then you drink the antidote to see if it works.\"";
- next;
- mes "\"If we make a mistake, this might be exhausting and painful, so you should rest a while and prepare yourself.\"";
- next;
- mes "\"Come back when you feel ready for that task.\"";
- goto L_Close;
-
-L_state3:
- mes "[Nurse]";
- mes "\"Hello my friend. You feel prepared to test the antidote?\"";
- next;
- menu
- "Actually, I have another question.", L_Usual,
- "Yes, let us begin.",L_Exp_Game;
-
-L_Exp_Game:
- mes "[Nurse]";
- mes "\"Listen carefully! I will explain what you need to do.\"";
- next;
- mes "\"I have here two different distillates. One is the venom extract, the other one is a stabilizer.\"";
- next;
- mes "\"We also have the healing potion.\"";
- next;
- mes "\"The problem is that I can only guess the concentration of the venom and the stabilizer. My equipment isn't good enough to determine them precisely.\"";
- next;
- mes "\"You need to find the right amount of each ingredient. I will tell you what I can know with my analysis methods.\"";
- next;
- mes "\"Shall we start?\"";
- next;
- menu
- "Please explain it again.", L_Exp_Game,
- "Alright.", L_Game;
-
-L_Game:
- callsub S_Update_Var;
- // healing, venom, stabilizer
- callsub L_Load_Need;
- //descriptions
- set @desc_length, 6;
-
- setarray @desc$,"very little","only a little", "little","much", "a lot", "very much", "a huge amount";
-
- set @divisor, @count / @desc_length;
-
- set @hlIndex, (@hlNeed-@offset) /@divisor;
- set @vnIndex, (@vnNeed-@offset) /@divisor;
- set @stIndex, (@stNeed-@offset) /@divisor;
-
- mes "[Nurse]";
- mes "\"I guess you need " + @desc$[@hlIndex] + " of the healing potion.\"";
- next;
- mes "\"You need " + @desc$[@vnIndex] + " of the venom extracts, I suppose.\"";
- next;
- mes "\"As far as I can tell you will need " + @desc$[@stIndex] + " of the stabilizer.\"";
- next;
-
- if(@hlNeed/@vnNeed > 1 )
- mes "\"I see that the healing potions are needed at least " + @hlNeed/@vnNeed + " times as much as the venom.\"";
- if(@vnNeed/@hlNeed > 1 )
- mes "\"I see that the venom extracts are needed at least " + @vnNeed/@hlNeed + " times as much as the healing potions.\"";
- if ( (@hlNeed/@vnNeed > 1 ) || (@vnNeed/@hlNeed > 1 ))
- next;
-
- if(@stNeed/@vnNeed > 1 )
- mes "\"I see that the stabilizer is needed at least " + @stNeed/@vnNeed + " times as much as the venom extracts.\"";
- if(@vnNeed/@stNeed > 1 )
- mes "\"I see that the venom extracts are needed at least " + @vnNeed/@stNeed + " times as much as the stabilizer.\"";
- if ((@vnNeed/@stNeed > 1 ) || (@stNeed/@vnNeed > 1 ))
- next;
-
- if(@stNeed/@hlNeed > 1 )
- mes "\"I see that the stabilizer is needed at least " + @stNeed/@hlNeed + " times as much as the healing potions.\"";
- if(@hlNeed/@stNeed > 1 )
- mes "\"I see that the healing potions are needed at least " + @hlNeed/@stNeed + " times as much as the stabilizer.\"";
- if ((@hlNeed/@stNeed > 1 ) || (@stNeed/@hlNeed > 1 ))
- next;
- goto L_choosePut;
-
-L_choosePut:
- set @max, @count+@offset-1;
- set @min, @offset;
- mes "\"My scale goes up to " + @max + ". I suggest to put at least " + @min +" drops on the scale.\"";
- next;
-
- mes "\"How many drops of the healing potion should we use?\"";
- input @hlPut;
- if (@hlPut < @offset)
- goto L_Game_tooless;
- if (@hlPut > @max)
- goto L_Game_toomuch;
-
- mes "\"How many drops of the venom extract potion should we use? \"";
- input @vnPut;
- if (@vnPut < @offset)
- goto L_Game_tooless;
- if (@vnPut > @max)
- goto L_Game_toomuch;
-
- mes "\"How many drops of the stabilizer potion should we use? \"";
- input @stPut;
- if (@stPut < @offset)
- goto L_Game_tooless;
- if (@stPut > @max)
- goto L_Game_toomuch;
-
- mes "The nurse puts the potions together according to your instructions. Then she takes a spoon and stirs it.";
- next;
- mes "You take the glass and look suspiciously at the liquid, which has changed to an odd colour.";
- next;
- mes "[Nurse]";
- mes "\"Alright, now I will inject the venom into you, then you should drink the antidote immediately. Are you ready?\"";
- next;
- mes "You take a deep breath and nod.";
- next;
- mes "The nurse take a scary looking syringe out of a drawer and swabs your arm with disinfection dabber.";
- next;
- mes "Then she stings the syringe in your vein and pushs it down. After a few seconds, your heart starts pounding quicker and you begin to sweat all over your body.";
- next;
- mes "[Nurse]";
- mes "\"Drink the antidote!\"";
- next;
- mes "You lift the glass to your lips and drink it all at once.";
- next;
-
- set @Q_poison, @Q_poison + 1;
-
- if ( (@hlPut > @hlNeed) && (@vnPut > @vnNeed) )
- goto L_m_hl_m_vn;
- if ( (@hlPut > @hlNeed) && (@vnPut <= @vnNeed) )
- goto L_m_hl_l_vn;
- if ( (@hlPut <= @hlNeed) && (@vnPut > @vnNeed) )
- goto L_hl_m_vn;
- if ( (@hlPut < @hlNeed) && (@vnPut < @vnNeed) )
- goto L_hl_l_vn;
-
- mes "You feel quite normal.";
- mes "[Nurse]";
- mes "\"Oh yes, the concentration of the healing potions and the venom extracts seem to be right.\"";
- next;
- set @hl_vn_ok, 1;
- goto L_check_st;
-
-L_m_hl_m_vn:
- //poison for 3 minutes
- sc_start sc_poison, 1, 20;
- mes "You begin to feel really dizzy. And you feel so light - you can't help yourself and burst out with laughter. What a strange feeling!";
- next;
- mes "The nurse looks at you with a really worried look on her face. As you open your mouth to tell her that you feel alright, the content of your stomach finds its way out through your throat and on the floor.";
- next;
- mes "The feeling of happiness disappears, but you seem to be still poisoned.";
- goto L_check_st;
-
-L_m_hl_l_vn:
- //poison for 1 minute
- sc_start sc_poison, 1, 20;
- mes "You feel the pain of the poison weaken. This seems promising. The thought that you might have been successful makes you feel enormously happy.";
- next;
- mes "But a few seconds later, you wonder what was the reason for your happiness.";
- next;
- mes "Anyway, what are you doing here? Actually, where are you?";
- next;
- mes "You don't care, you feel so great. You start to giggle and laugh uncontrollably. What a wonderful feeling. ";
- next;
- mes "Suddenly, the world has some really strange colors. As you watch this woman in front of you changing her color from dark green to a light purple, you become really tired.";
- next;
- mes "You lay down on the floor and fall asleep.";
- next;
- mes "As you open your eyes again, the nurse shines in your face with a lamp and pulls your eyelids open. Then she nods.";
- next;
- mes "\"Very well, you are sober again.\"";
- next;
- goto L_check_st;
-
-L_hl_m_vn:
- // first poison for 10 minutes, player will die anyway
- sc_start sc_poison, 1, 20;
- mes "You feel a sting in your stomach and your heart starts pounding loudly.";
- next;
- mes "The room is getting dark.";
- next;
- mes "...and darker...";
- next;
- mes ".......";
- // bye bye player!
- heal -Hp, 0;
- // close instead of telling how much stabilizer is needed
- goto L_Close;
- // goto L_check_st;
-
-L_hl_l_vn:
- //poison for 1 minute
- sc_start sc_poison, 1, 20;
- mes "The antidote seems to have no effect.";
- goto L_check_st;
-
-L_check_st:
- if ( (@stPut < @stNeed) )
- goto L_st;
- if ( (@stPut > @stNeed) )
- goto L_m_st;
- if (@hl_vn_ok == 1)
- goto L_AllCorrect;
-
- mes "[Nurse]";
- mes "\"The amount of the stabilizer seems alright, but we have to think again about the other ingredients.\"";
- next;
- goto L_NotAllCorrect;
-
-L_st:
- mes "[Nurse]";
- mes "\"It looks like we used not enough of the stabilizer. The antidote will lose its effect after some time.\"";
- next;
- goto L_NotAllCorrect;
-
-L_m_st:
- mes "[Nurse]";
- mes "\"It looks like we used too much of the stabilizer. The antidote will turn into venom again after some time.\"";
- next;
- goto L_NotAllCorrect;
-
-L_AllCorrect:
- mes "You feel totally normal again.";
- next;
- mes "[Nurse]";
- mes "\"Wonderful! You made it! Now I will be able to help all the people who get poisoned in the mines!\"";
- next;
- mes "\"Thank you so much! Oh, and it seems as if you have gained the skill to resist poison someway. This is great.\"";
- next;
- mes "\"You should talk to someone who can help you to focus on your skills.\"";
- next;
- getexp @ANTIDOTE_EXP, 0;
- setskill SKILL_RESIST_POISON, 1;
- set @Q_poison, 7;
- callsub S_Update_Var;
- goto L_Close;
-
-L_NotAllCorrect:
- mes "[Nurse]";
- mes "\"It didn't work. You are a really brave person. Now you should rest and recover. I hope you won't give up now. Please come back later, so we can try it again.\"";
- next;
- goto L_Close;
-
-L_state4:
- mes "The nurse has a worried look in her face.";
- mes "[Nurse]";
- mes "\"Hello. I hope you recovered well.\"";
- next;
- mes "\"There is enough of the distillates left to have another try.\"";
- next;
- mes "\"Oh no, with all that trouble I forgot to label your distillate.\"";
- next;
- mes "She holds up two ampullas.";
- next;
- mes "\"I hope this one is yours. I'm sorry.\"";
- next;
- mes "\"If you feel ok, we could try it again.\"";
- next;
- menu
- "I still feel a bit dizzy, so I don't want to do it now.", L_Usual,
- "I'm ok. We can try, but please explain again.", L_Exp_Game,
- "Let's start right now.", L_Game;
-
-L_state5:
- mes "The nurse looks at you pitifully.";
- mes "[Nurse]";
- mes "\"Hello. I'm really sorry for causing you so much pain.\"";
- next;
- mes "\"But if we succeed we will be heroes! I will be able to help a lot of people.\"";
- next;
- mes "\"Next time you might remind me to label the distillates correctly. I am sorry that it is screwed up again.\"";
- next;
- mes "\"There is enough stuff left for one last try.\"";
- next;
- mes "\"If we don't get it this time, you will have to get new ingredients.\"";
- next;
- mes "\"Do you want to try again?\"";
- next;
- menu
- "I still feel a bit dizzy, so I don't want to do it now.", L_Usual,
- "I'm ok. We can try, but please explain again.", L_Exp_Game,
- "Let's start right now.", L_Game;
-
-L_state6:
- mes "The nurse looks at you pitifully.";
- mes "[Nurse]";
- mes "\"There is not enough stuff left for another try.\"";
- next;
- mes "\"We should try again, right?\"";
- set @Q_poison, 1;
- callsub S_Update_Var;
- goto L_ExplainAgain1;
-
-L_state7: // geschafft
- mes "[Nurse]";
- mes "\"Thanks a lot, you can call yourself a true hero now!\"";
- next;
- mes "\"I am able to help the poisoned miners quite well now.\"";
- next;
- goto L_Usual;
-
-L_NotEnough:
- mes "[Nurse]";
- mes "\"This must be a misunderstanding. You don't have all the things I asked you for.\"";
- if (@Q_poison == 1)
- goto L_ExplainAgain1;
- if (@Q_poison == 2)
- goto L_ExplainAgain2;
- // the following close *should* never be reached, but who knows, whoever will mess this script up!
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-S_Update_Var:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(@Q_poison_MASK) | (@Q_poison << @Q_poison_SHIFT));
- return;
-
-L_Game_init_vars:
- set @count, 24;
- set @offset, 1;
- return;
-
-L_Shuffle_Need:
- callsub L_Game_init_vars;
- set @hlNeed, @offset + rand(@count);
- set @vnNeed, @offset + rand(@count);
- set @stNeed, @offset + rand(@count);
-
- set $NPC_NURSE,
- ($NPC_NURSE & ~(BYTE_0_MASK | BYTE_1_MASK | BYTE_2_MASK)
- | (@hlNeed << BYTE_0_SHIFT)
- | (@vnNeed << BYTE_1_SHIFT)
- | (@stNeed << BYTE_2_SHIFT));
- return;
-
-L_Load_Need:
- callsub L_Game_init_vars;
- set @hlNeed, ($NPC_NURSE & BYTE_0_MASK) >> BYTE_0_SHIFT;
- set @vnNeed, ($NPC_NURSE & BYTE_1_MASK) >> BYTE_1_SHIFT;
- set @stNeed, ($NPC_NURSE & BYTE_2_MASK) >> BYTE_2_SHIFT;
- return;
-
-L_Game_tooless:
- mes "[Nurse]";
- mes "\"That is nothing! You need to put in there at least a small amount.";
- goto L_choosePut;
-
-L_Game_toomuch:
- mes "[Nurse]";
- mes "\"This would be way too much for my scale. I don't want to break it.\"";
- goto L_choosePut;
-}
diff --git a/world/map/npc/009-2/olana.txt b/world/map/npc/009-2/olana.txt
deleted file mode 100644
index 9fcfe351..00000000
--- a/world/map/npc/009-2/olana.txt
+++ /dev/null
@@ -1,240 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-009-2,63,79,0|script|Olana|190
-{
- set @MinLevel, 60;
-
- set @Cherry_Amount, 10;
- set @Cherry_EXP, 1000;
- set @Cherry_Money, 1000;
-
- set @RedRose_Amount, 15;
- set @RedTulip_Amount, 15;
- set @Flower_Money, 1500;
-
- set @Finish_EXP, 5000;
- set @Finish_Money, 5000;
-
- if (FLAGS & FLAG_ROSSI_COMPLETED) goto L_FinalEnd;
- if (Rossy_Quest == 17 || Rossy_Quest == 18) goto L_End;
-
- if (Rossy_Quest >= 14 && Rossy_Quest <= 16) goto L_Julia;
- if (Rossy_Quest == 13) goto L_Best;
- if (Rossy_Quest == 12) goto L_Give;
- if (Rossy_Quest == 11) goto L_Allergic;
- if (Rossy_Quest == 10) goto L_BringRose;
- if (Rossy_Quest == 9) goto L_RC;
- if (Rossy_Quest == 8) goto L_Rose;
- if (Rossy_Quest >= 6 && Rossy_Quest < 8) goto L_BL;
- if (Rossy_Quest == 5) goto L_Bring;
- if (Rossy_Quest == 4) goto L_See;
- if (Rossy_Quest == 3) goto L_Worried;
- if (Rossy_Quest == 1 || Rossy_Quest == 2) goto L_Daughter;
-
- mes "[Olana]";
- mes "\"Hello. We don't usually get guests back here.\"";
- next;
- mes "\"My name is Olana and my father owns this inn. I live in Tulimshar, but came to Hurnscald on vacation with my two young daughters, Rossy and Julia.\"";
- if (BaseLevel < @MinLevel) close;
- next;
- mes "\"I let my two lovely girls play in the woods nearby but they haven't come back yet!\"";
- next;
- mes "Olana suddenly looks very pale and starts to shiver.";
- next;
- mes "\"I'm starting to get a bad feeling about this. If you go to the forest near the swamps, could you see if you can find my daughters? I need to know if they are safe!\"";
- menu
- "Sure, I can do that.", L_Next,
- "I am sorry, I don't usually go to that area.", L_No;
-
-L_Next:
- set Rossy_Quest, 1;
- close;
-
-L_Daughter:
- mes "Olana looks really worried - she seems about to burst into tears.";
- mes "[Olana]";
- mes "\"I would be relieved if you could look for my daughters.";
- mes "They must be playing in the forest near the swamps.\"";
- if (Rossy_Quest == 1)
- close;
- next;
- menu
- "Wait, I saw Rossy, she is fine.", L_Help,
- "Hey, don't worry, I'm sure they'll be back soon.", L_No;
-
-L_No:
- close;
-
-L_Help:
- mes "[Olana]";
- mes "\"Oh you did? That's good. I'm relieved. But what about Julia?\"";
- next;
- menu
- "I haven't found Julia yet, sorry.", L_Next1;
-
-L_Next1:
- mes "\"Ok. They must be playing hide and seek. Thanks again... I can't express how grateful I am.\"";
- set Rossy_Quest, 3;
- close;
-
-L_Worried:
- mes "Olana smiles at you, trying to show some happiness, but her facial expression only conveys tension and preoccupation.";
- next;
- mes "You suddenly remember that Rossy asked for your help to collect some fruits. Maybe she could also have some ideas on how to cheer her mother up.";
- close;
-
-L_See:
- if (gotcherry == 1)
- goto L_Task;
- if (countitem("Cherry") < @Cherry_Amount)
- goto L_Worried;
- delitem "Cherry", @Cherry_Amount;
- menu
- "Hi, Rossy asked me to give you this. She says it is a gift from both her and Julia.", L_Next2;
-
-L_Next2:
- mes "[Olana]";
- mes "\"Ohhh... How sweet... Sometimes Rossy impresses me with her kindness. Here... You are spending so much time helping us, and we give nothing back. Take this as a small reward.\"";
- getexp @Cherry_EXP, 0;
- set Zeny, Zeny + @Cherry_Money;
- set gotcherry, 1;
- goto L_Task;
-
-L_Task:
- mes "[Olana]";
- mes "\"I know I barely know you, but can I ask you for a small favor?\"";
- menu
- "Sure, tell me about it.", L_Cont,
- "No, sorry, I'm busy.", L_No;
-
-L_Cont:
- mes "[Olana]";
- mes "\"Would you mind giving this letter to my little Rossy? Today is the last day for her final exam, and I know my daughter. If I don't remind her, she will surely forget about it and flunk the exam. I would deliver the letter myself, but I can't walk, my aching knees...\"";
- menu
- "Of course I can. Hand me the letter, I'll give it to Rossy as soon as I see her.", L_Let,
- "No, sorry, I'm not interested in that sort of task. Hand it to her yourself.", L_No;
-
-L_Let:
- mes "[Olana]";
- set Rossy_Quest, 5;
- set gotcherry, 0;
- mes "\"Thank you again. Please, bring it to her as fast as you can.\"";
- close;
-
-L_Bring:
- mes "[Olana]";
- mes "\"Please, bring this letter to my daughter as fast as you can.\"";
- close;
-
-L_BL:
- mes "[Olana]";
- mes "\"Good, now she won't forget her final exam.\"";
- close;
-
-L_Rose:
- menu
- "Hi, Rossy did great in the exam. David told me her potion was flawless.", L_Next3;
-
-L_Next3:
- mes "[Olana]";
- mes "\"Wow! Really? That is great! I would like to congratulate my little Rossy. Would you mind helping me a little more?\"";
- menu
- "Just tell me what to do.", L_Next4,
- "No, I'm busy, maybe later.", L_No;
-
-L_Next4:
- mes "[Olana]";
- mes "\"Can you bring me " + @RedRose_Amount + " Red Roses? I would like to give them to Rossy. I am sure she will love them!\"";
- menu
- "Ok, I will be back with the roses.", L_RG,
- "I'm allergic to roses, can't even touch them. Sorry.", L_No;
-
-L_RG:
- if (Rossy_Quest == 8)
- set Rossy_Quest, 9;
- mes "[Olana]";
- mes "\"Please, bring me " + @RedRose_Amount + " Red Roses as soon as you can.\"";
- close;
-
-L_RC:
- if(countitem("RedRose") < @RedRose_Amount)
- goto L_RG;
- mes "[Olana]";
- set Rossy_Quest, 10;
- mes "\"Great job! Please hand them to my brilliant daughter, Rossy.\"";
- close;
-
-L_BringRose:
- mes "[Olana]";
- mes "\"Now please hand them to my brilliant daughter, Rossy.\"";
- close;
-
-L_Allergic:
- mes "[Olana]";
- mes "\"Did she like my present?\"";
- menu
- "Sure she did...", L_No,
- "Well, you should have known that your daughter is allergic to roses.", L_Next5;
-
-L_Next5:
- set Rossy_Quest, 12;
- mes "[Olana]";
- mes "\"Oh, how stupid I am! Here, take some of my money and buy Red Tulips instead, the same amount. Keep the flowers.\"";
- set Zeny, Zeny + @Flower_Money;
- next;
- mes "\"Please, tell Rossy I am really sorry. My mind was on Julia when I asked you to bring the red roses, they are her favorite.\"";
- menu
- "I will give her the tulips when I see her.", L_Next6;
-
-L_Next6:
- mes "[Olana]";
- mes "\"Thank you. And don't forget to tell her that I'm really sorry.\"";
- close;
-
-L_Give:
- mes "[Olana]";
- mes "\""+ strcharinfo(0) +", please, get " + @RedTulip_Amount + " Red Tulips and hand them to Rossy. Don't forget to tell her that I'm really sorry.\"";
- close;
-
-L_Best:
- mes "[Olana]";
- mes "\"Thank you for your help "+ strcharinfo(0) +"!\"";
- close;
-
-L_Julia:
- mes "[Olana]";
- mes "\"Oh no, I can't take this anymore. Something must have happened... Where is Julia? I want to know where she is! Please, find her "+ strcharinfo(0) +"!\"";
- close;
-
-L_End:
- mes "[Olana]";
- mes "\"Where is Julia? I want to know where she is! Please, find her "+ strcharinfo(0) +"!\"";
- menu
- "She'll be back soon, trust me. I saved her from an evil spirit.", L_Found,
- "I haven't seen her yet, sorry.", L_No;
-
-L_Found:
- mes "[Olana]";
- if (Rossy_Quest == 17)
- set Rossy_Quest, 18;
- if (Rossy_Quest == 18)
- set Rossy_Quest, 19;
- mes "\"Thank you "+ strcharinfo(0) +", thank you! Here is a reward for you.\"";
- getexp @Finish_EXP, 0;
- set Zeny, Zeny + @Finish_Money;
- if (Rossy_Quest == 19)
- goto L_Clear;
- close;
-
-L_Clear:
- set Rossy_Quest, 0;
- set cavefights, 0;
- set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED;
- close;
-
-L_FinalEnd:
- mes "[Olana]";
- mes "\"Thanks again for your help.";
- mes "I hope the girls will come home soon enough for dinner.\"";
- close;
-}
diff --git a/world/map/npc/009-2/peter.txt b/world/map/npc/009-2/peter.txt
deleted file mode 100644
index bbb336e2..00000000
--- a/world/map/npc/009-2/peter.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-// Nicholas' Apprentice and Armorsmith
-009-2,183,57,0|shop|#PeterShop|32767,Knife:*1,SharpKnife:*1,Dagger:*1
-
-009-2,183,57,0|script|Peter|157
-{
- set @peter_chain_mail_coal, 10;
- set @peter_chain_mail_ingot, 5;
- set @peter_chain_mail_money, 20000;
-
- set @peter_light_plate_coal, 20;
- set @peter_light_plate_ingot, 10;
- set @peter_light_plate_money, 50000;
-
- set @peter_warlord_plate_coal, 30;
- set @peter_warlord_plate_ingot, 15;
- set @peter_warlord_plate_money, 100000;
-
- set @peter_warlord_boots_coal, 16;
- set @peter_warlord_boots_ingot, 8;
- set @peter_warlord_boots_money, 35000;
-
- mes "[Peter]";
- mes "\"Hello, I am Peter, apprentice to Nicholas.\"";
- next;
- mes "\"I can make you some sturdy armor: you must give me Iron Ingots to craft with and some gold pieces for my efforts.\"";
- next;
- mes "[Peter]";
- mes "\"What would you like me to make?\"";
- menu
- "Chain Mail ("+@peter_chain_mail_coal+" coal, "+@peter_chain_mail_ingot+" ingots and "+@peter_chain_mail_money+" GP).", L_Peter_Chain_Mail,
- "Light Plate ("+@peter_light_plate_coal+" coal, "+@peter_light_plate_ingot+" ingots and "+@peter_light_plate_money+" GP).", L_Peter_Light_Plate,
- "Warlord Plate ("+@peter_warlord_plate_coal+" coal, "+@peter_warlord_plate_ingot+" ingots and "+@peter_warlord_plate_money+" GP).", L_Peter_Warlord_Plate,
- "Do you know anything else than armor crafting?", L_Peter_New_Skills,
- "Do you have anything else for sale?", L_Shop,
- "Nevermind.", L_Close;
-
-L_Peter_Chain_Mail:
- set @peter_crafting_coal, @peter_chain_mail_coal;
- set @peter_crafting_iron_ingot, @peter_chain_mail_ingot;
- set @peter_crafting_money, @peter_chain_mail_money;
- set @peter_crafting_item$, "ChainmailShirt";
- callsub S_Smithery_Item;
- goto L_Close;
-
-L_Peter_Light_Plate:
- set @peter_crafting_coal, @peter_light_plate_coal;
- set @peter_crafting_iron_ingot, @peter_light_plate_ingot;
- set @peter_crafting_money, @peter_light_plate_money;
- set @peter_crafting_item$, "LightPlatemail";
- callsub S_Smithery_Item;
- goto L_Close;
-
-L_Peter_Warlord_Plate:
- set @peter_crafting_coal, @peter_warlord_plate_coal;
- set @peter_crafting_iron_ingot, @peter_warlord_plate_ingot;
- set @peter_crafting_money, @peter_warlord_plate_money;
- set @peter_crafting_item$, "WarlordPlate";
- callsub S_Smithery_Item;
- goto L_Close;
-
-L_Peter_New_Skills:
- mes "[Peter]";
- mes "\"Actually, Nicholas, my master, taught me new smithery techniques.";
- mes "My very first creation are new kind of steel boots. Interested ? That would be "+@peter_warlord_boots_coal+" Coals, "+@peter_warlord_boots_ingot+" Iron Ingots and "+@peter_warlord_boots_money+" GP.\"";
- menu
- "Sure!", L_Peter_Warlord_Boots,
- "No thanks, that sounds too heavy for me.", L_Close;
-
-L_Shop:
- close2;
- shop "#PeterShop";
-
-L_Peter_Warlord_Boots:
- set @peter_crafting_coal, @peter_warlord_boots_coal;
- set @peter_crafting_iron_ingot, @peter_warlord_boots_ingot;
- set @peter_crafting_money, @peter_warlord_boots_money;
- set @peter_crafting_item$, "WarlordBoots";
- callsub S_Smithery_Item;
- goto L_Close;
-
-S_Smithery_Item:
- if (Zeny < @peter_crafting_money)
- goto L_Peter_NotEnough_Zeny;
- if (countitem("IronIngot") < @peter_crafting_iron_ingot)
- goto L_Peter_NotEnough_Ingot;
- if (countitem("Coal") < @peter_crafting_coal)
- goto L_Peter_NotEnough_Coal;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Peter_TooMany;
- set Zeny, Zeny - @peter_crafting_money;
- delitem "IronIngot", @peter_crafting_iron_ingot;
- delitem "Coal", @peter_crafting_coal;
- getitem @peter_crafting_item$, 1;
- mes "[Peter]";
- mes "\"Here you go!\"";
- return;
-
-L_Peter_NotEnough_Zeny:
- mes "[Peter]";
- mes "\"You don't have enough gold.\"";
- goto L_Close;
-
-L_Peter_NotEnough_Ingot:
- mes "[Peter]";
- mes "\"You don't have enough ingots.\"";
- goto L_Close;
-
-L_Peter_NotEnough_Coal:
- mes "[Peter]";
- mes "\"You don't have enough Coal.\"";
- goto L_Close;
-
-L_Peter_TooMany:
- mes "[Peter]";
- mes "\"You have too much stuff. Please get rid of something if you want some armor.\"";
- goto L_Close;
-
-L_Close:
- // Clear all local variables
- set @peter_chain_mail_coal, 0;
- set @peter_chain_mail_ingot, 0;
- set @peter_chain_mail_money, 0;
-
- set @peter_light_plate_coal, 0;
- set @peter_light_plate_ingot, 0;
- set @peter_light_plate_money, 0;
-
- set @peter_warlord_plate_coal, 0;
- set @peter_warlord_plate_ingot, 0;
- set @peter_warlord_plate_money, 0;
-
- set @peter_warlord_boots_coal, 0;
- set @peter_warlord_boots_ingot, 0;
- set @peter_warlord_boots_money, 0;
-
- set @peter_crafting_coal, 0;
- set @peter_crafting_iron_ingot, 0;
- set @peter_crafting_money, 0;
- set @peter_crafting_item$, "";
- close;
-
-}
diff --git a/world/map/npc/009-2/richard.txt b/world/map/npc/009-2/richard.txt
deleted file mode 100644
index 11c180d4..00000000
--- a/world/map/npc/009-2/richard.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-
-009-2,20,99,0|script|Richard|161
-{
- set @npcname$, "Richard";
- callfunc "Banker";
- close;
-}
diff --git a/world/map/npc/009-2/selim.txt b/world/map/npc/009-2/selim.txt
deleted file mode 100644
index 22c4bedf..00000000
--- a/world/map/npc/009-2/selim.txt
+++ /dev/null
@@ -1,174 +0,0 @@
-009-2,32,104,0|script|Selim|326
-{
- goto L_Main;
-
-L_Main:
- mes "[Selim]";
- mes "\"Greetings, fair traveler. With what may I help you?\"";
- menu
- "Greetings, are you the store merchant?", L_ask_selim,
- "But what are dyes and what purpose do they serve?", L_ask_dye,
- "Can you dye something for me?", L_clothes_choice,
- "Can you also remove color from clothing?", L_ask_bleach,
- "About these sorcerer robes...", L_asksorcererrobe,
- "Can you change my appearance?", L_barber,
- "Never mind.", L_Close;
-
-L_barber:
- callfunc "Barber";
- close;
-
-L_ask_bleach:
- mes "[Selim]";
- mes "\"I'm afraid no.";
- mes "For that, you would need to visit Candide in the Tulimshar marketplace.\"";
- goto L_Main;
-
-L_ask_selim:
- mes "[Selim]";
- mes "\"That is an honest mistake you have made.";
- mes "However I am not the merchant, but rather a Master Dyer here to serve the good people of this town.";
- mes "I dye things, upon request.\"";
- menu
- "But what are dyes and where can I get them?", L_ask_dye,
- "Can you dye something for me?", L_clothes_choice,
- "Can you also remove color from clothing?", L_ask_bleach,
- "Good bye.", L_Close;
-
-L_ask_dye:
- mes "[Selim]";
- mes "\"Dyes are special liquids used to add color to clothing. If you want me to dye something for you you will have to bring me some dye first.";
- mes "Those behind me are nearly empty and won't last for your item.\"";
- menu
- "What do you mean, `bring you dye'?", L_explain_dye,
- "Where would I get dye?", L_explain_dye,
- "Good bye.", L_Close;
-
-L_clothes_choice:
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- set @r, 0;
- set @j, getarraysize($@DYE_items$);
- goto L_CloneArray; // clone the array from DyeConfig
-
-L_CloneArray:
- set @items$[@r], $@DYE_items$[@r];
- set @item_names$[@r], $@DYE_item_names$[@r];
- set @r, @r + 1;
- if(@r < @j) goto L_CloneArray;
- set @r, 0;
- set @j, 0;
- goto L_clothes_choice2;
-
-L_clothes_choice2:
- mes "[Selim]";
- mes "\"What can I dye for you today?\"";
- next;
- callfunc "DynamicItemMenu$";
- set @default_choice$, "";
- set @item_del$, @item$;
- set @name$, @item_names$[@index];
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- if(@item$ == "") goto L_Close;
- goto L_picked_item;
-
-
-L_asksorcererrobe:
- mes "[Selim]";
- mes "\"Yes?\"";
- next;
- menu
- "Do you think you can dye that line to a different color?", L_Next1;
-
-L_Next1:
- mes "[Selim]";
- mes "\"Hum, I fear I can't do that. The area is too small and I can operate only on large ones.";
- mes "But with the appropriate materials, maybe a talented tailor can make the change.\"";
- next;
- menu
- "Oh, I see!", L_Next;
-
-L_Next:
- mes "[Selim]";
- mes "\"Of course I can help you by dyeing the materials your tailor will want.";
- mes "All I need is a piece of Cotton Cloth.\"";
- set @item_del$, "CottonCloth";
- set @name$, "Cotton Cloth";
- menu
- "Sure. Here is one.", L_picked_item,
- "I have to go pick that.", L_Close;
-
-L_picked_item:
- if (countitem(@item_del$) == 0) goto L_havenone;
- goto L_colour;
-
-L_colour:
- mes "[Selim]";
- mes "\"Excellent. Now, what color do you want?\"";
- next;
- set @r, 0;
- set @j, getarraysize($@DYE_colors$);
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- callsub S_CloneColors;
- set @default_choice$, "I have no dye.";
- callfunc "DynamicItemMenu$";
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- set @default_choice$, "";
- if (@item$ == "") goto L_no_dye;
- set @colour, @index;
- goto L_finish;
-
-S_CloneColors:
- set @items$[@r], $@DYE_colors$[@r] + "Dye";
- set @item_names$[@r], $@DYE_color_names$[@r];
- set @r, @r + 1;
- if(@r < @j) goto S_CloneColors;
- set @r, 0;
- set @j, 0;
- return;
-
-L_no_dye:
- mes "[Selim]";
- mes "\"I would love to dye your " + @name$ + " for you, but you will have to bring me some dye first.";
- mes "Those behind me are nearly empty and won't last for your item.\"";
- next;
- menu
- "I wanted to dye a different item anyway.", L_clothes_choice,
- "What do you mean, `bring you dye'?", L_explain_dye,
- "Where would I get dye?", L_explain_dye,
- "Never mind.", L_Close;
-
-L_explain_dye:
- if (QUEST_clothdyer_knowsdye < 1)
- set QUEST_clothdyer_knowsdye, 1;
- mes "[Selim]";
- mes "\"Well, dye is very expensive, and since I don't charge adventurers anything, I can't give you any for free.";
- mes "But most alchemists can make dye; perhaps you can find one around here.\"";
- goto L_Close;
-
-L_finish:
- if(getitemlink($@DYE_colors$[@colour] + @item_del$) == "Unknown Item") mapexit;
- if(countitem(@item_del$) < 1) goto L_havenone;
- delitem @item$, 1;
- delitem @item_del$, 1;
- getitem $@DYE_colors$[@colour] + @item_del$, 1;
- mes "[Selim]";
- mes "\"Here's your " + $@DYE_color_names$[@colour] + " " + @name$ + "! Please let dry for a minute.\"";
- goto L_Close;
-
-L_havenone:
- mes "[Selim]";
- mes "\"You don't have any uncolored " + @name$ + "? That's unfortunate.";
- mes "Would you like to dye something else?\"";
- next;
- goto L_clothes_choice;
-
-L_Close:
- mes "\"Farewell and good luck in your journeys!\"";
- close2;
- emotion EMOTE_WINK, strcharinfo(0);
- end;
-}
diff --git a/world/map/npc/009-2/shops.txt b/world/map/npc/009-2/shops.txt
deleted file mode 100644
index 3dcfbc9a..00000000
--- a/world/map/npc/009-2/shops.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// Bartender
-009-2,65,49,0|shop|Barkeeper|112,Beer:*1,Cake:*1,Steak:*1
-
-// Receptionist
-// Offers the player to rest at the inn for 100gp
-009-2,50,48,0|script|Receptionist#inn|108
-{
- set @npcname$, "Receptionist";
- set @cost, 100;
- callfunc "Inn";
- end;
-}
-
-// Archer Shop
-009-2,97,24,0|shop|Apprentice|120,SlingBullet:*1,Arrow:*2,IronArrow:*1,Bow:*1,ShortBow:*2
-
-// Potion Shop
-009-2,123,22,0|shop|Potions#_M|400,CactusDrink:*1,CactusPotion:*1,IronPotion:*1,ConcentrationPotion:*1,SlowPoisonPotion:*1
-
-// General Store
-009-2,32,99,0|shop|General Store#hurnscald|112,Milk:*1,BottleOfWater:*1,CottonShirt:*1,CottonShorts:*1,Boots:*1,SerfHat:*1,CottonHeadband:*1,CottonGloves:*1
diff --git a/world/map/npc/009-2/trader.txt b/world/map/npc/009-2/trader.txt
deleted file mode 100644
index 46ccafac..00000000
--- a/world/map/npc/009-2/trader.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-// Teaches Trading skill
-// Offers item conversion for non-magic users
-// Updated by: TheKandiman
-// Reviewed by: Wombat
-
-009-2,29,98,0|script|Trader|115
-{
- set @Ironprice, 1000;
- set @Sulphurprice, 1200;
- set @Potionprice, 500;
- if (BaseLevel >= 25) goto L_Trade;
-
- mes "[Trader]";
- mes "\"Hello. I came here to trade wares with the people of Hurnscald. Unfortunately for you, I've traded everything I had.\"";
- next;
- menu
- "Oh. I'll go then.", L_Close,
- "You don't have anything?", L_More;
-
-L_More:
- mes "[Trader]";
- mes "\"No. I have nothing for you. Except...\"";
- next;
- menu
- "Yes?", L_Except,
- "Ok then.", L_Close;
-
-L_Except:
- mes "[Trader]";
- mes "\"I could teach you how to trade. It'll cost you 2GP.\"";
- next;
- menu
- "Sure.", L_Teach,
- "No thank you.", L_Close;
-
-L_Teach:
- if (Zeny < 2) goto L_NotEnoughMoney;
- set Zeny, Zeny - 2;
- mes "[Trader]";
- mes "\"You can initiate trade with someone by right-clicking on them and choosing trade.";
- mes "You'll both add the items and set the GP you're putting up then press propose trade.";
- mes "After both parties have proposed their side, you can both review the trade, and then accept or reject by closing the window.\"";
- next;
- mes "[Trader]";
- mes "\"Items added to the trade cannot be removed, and so mistakes have to be dealt with by canceling the trade.";
- mes "You need to press the change button to let the other person know about GP changes.\"";
- next;
- goto L_Later;
-
-L_Later:
- mes "[Trader]";
- mes "\"Please feel free to check back later. I'm expecting a large shipment of goods to trade.\"";
- goto L_Close;
-
-L_Trade:
- mes "[Trader]";
- mes "\"Welcome back! My shipment came in and I have a bunch of things that I can trade now. What would you like?\"";
- goto L_Trademenu;
-
-L_Trademenu:
- menu
- "Do you have Iron Powder?", L_Iron,
- "How about Sulphur Powder?", L_Sulphur,
- "I need Medium Healing Potions.", L_Healpots,
- "I think I have everything I need, thanks.", L_Close;
-
-L_Iron:
- mes "[Trader]";
- mes "\"I do have a few of those. I will give you 4 Iron Powders for 1 Iron Ore and " + @Ironprice + "gp.\"";
- menu
- "Sure.", L_Ipowder,
- "What a ripoff! No way!", L_Close;
-
-L_Sulphur:
- mes "[Trader]";
- mes "\"I can trade you 5 Sulphur Powders for 1 Pile of Ash and " + @Sulphurprice + "gp.\"";
- menu
- "Here you go.", L_Spowder,
- "Are you nuts?! Forget it!", L_Close;
-
-L_Healpots:
- mes "[Trader]";
- mes "\"Healing potions are always useful, but I rarely need anything larger than the small ones. I will happily trade you 1 Medium Healing Potion for 3 Small Healing Potions and " + @Potionprice + "gp.\"";
- menu
- "Alright.", L_Pots,
- "Whoa, that's way too much.", L_Close;
-
-L_Ipowder:
- if (countitem("IronOre") < 1) goto L_Missing;
- if (Zeny < @Ironprice) goto L_NotEnoughMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("IronOre") > 1 && countitem("IronPowder") < 1) goto L_Full;
- delitem "IronOre", 1;
- set Zeny, Zeny - @Ironprice;
- getitem "IronPowder", 4;
- mes "[Trader]";
- mes "\"There you go. Would you like to trade anything else?\"";
- menu
- "Yes.", L_Trademenu,
- "No.", L_No;
-
-L_Spowder:
- if (countitem("PileOfAsh") < 1) goto L_Missing;
- if (Zeny < @Sulphurprice) goto L_NotEnoughMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("PileOfAsh") > 1 && countitem("SulphurPowder") < 1) goto L_Full;
- delitem "PileOfAsh", 1;
- set Zeny, Zeny - @Sulphurprice;
- getitem "SulphurPowder", 5;
- mes "[Trader]";
- mes "\"There you go. Would you like to trade anything else?\"";
- menu
- "Yes.", L_Trademenu,
- "No.", L_No;
-
-L_Pots:
- if (countitem("SmallHealingPotion") < 3) goto L_Missing;
- if (Zeny < @Potionprice) goto L_NotEnoughMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("SmallHealingPotion") > 3 && countitem("MediumHealingPotion") < 1) goto L_Full;
- delitem "SmallHealingPotion", 3;
- set Zeny, Zeny - @Potionprice;
- getitem "MediumHealingPotion", 1;
- mes "[Trader]";
- mes "\"There you go. Would you like to trade anything else?\"";
- menu
- "Yes.", L_Trademenu,
- "No.", L_No;
-
-L_Full:
- mes "[Trader]";
- mes "\"You must have been making a lot of trades...your bag is completely full! Come back after you've made some room.\"";
- goto L_Close;
-
-L_Missing:
- mes "[Trader]";
- mes "\"It looks like you're missing some items. Please come back when you have enough to trade.\"";
- goto L_Close;
-
-L_NotEnoughMoney:
- mes "[Trader]";
- mes "\"You don't have enough money.\"";
- goto L_Close;
-
-L_No:
- mes "[Trader]";
- mes "\"Have a great day!\"";
- goto L_Close;
-
-L_Close:
- set @Ironprice, 0;
- set @Sulphurprice, 0;
- set @Potionprice, 0;
- close;
-}
diff --git a/world/map/npc/009-2/waitress.txt b/world/map/npc/009-2/waitress.txt
deleted file mode 100644
index 1bacd738..00000000
--- a/world/map/npc/009-2/waitress.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-// Waitress
-
-009-2,60,52,0|script|Melinda|140
-{
- mes "[Melinda]";
- mes "\"Hi, sweetie! Want a fresh beer for 170 GP?\"";
- next;
-
- menu
- "\"Sure! [don't tip]\"", L_NoTip,
- "Sure! [tip 5 GP]", L_5Tip,
- "Sure! [tip 10 GP]", L_10Tip,
- "Nah, maybe later.", L_No;
-
-L_NoTip:
- if (Zeny < 170)
- goto L_NoMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("Beer") == 0)
- goto L_TooMany;
- set Zeny, Zeny - 170;
- getitem "Beer", 1;
- mes "[Melinda]";
- mes "Pff... nickel nurser!";
- close;
-
-L_5Tip:
- if (Zeny < 175)
- goto L_NoMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("Beer") == 0)
- goto L_TooMany;
- set Zeny, Zeny - 175;
- getitem "Beer", 1;
- mes "[Melinda]";
- mes "\"Here you go, sweetheart!\"";
- close;
-
-L_10Tip:
- if (Zeny < 180)
- goto L_NoMoney;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("Beer") == 0)
- goto L_TooMany;
- set Zeny, Zeny - 180;
- getitem "Beer", 1;
- mes "[Melinda]";
- mes "\"Thank you, sweetie! Want to hear a secret?\"";
- next;
- menu
- "What is it, darling?", L_Next,
- "Nah, I don't feel like chatting.", L_No;
-
-L_Next:
- mes "[Melinda]";
- mes "\"The master bowyer in this village used to construct exceptional bows. When you want one you should go and ask him.\"";
- close;
-
-L_No:
- mes "[Melinda]";
- mes "\"Just call me when you've changed your mind.\"";
- close;
-
-L_NoMoney:
- mes "[Melinda]";
- mes "\"You look broke. Don't think that you can dine and dash here!\"";
- close;
-
-L_TooMany:
- mes "[Melinda]";
- mes "\"You don't have room for a beer!\"";
- close;
-}
diff --git a/world/map/npc/009-2/wyara.txt b/world/map/npc/009-2/wyara.txt
deleted file mode 100644
index 246d458a..00000000
--- a/world/map/npc/009-2/wyara.txt
+++ /dev/null
@@ -1,557 +0,0 @@
-// ----------------------------------------
-// Wyara the Hurnscald witch
-// ----------------------------------------
-009-2,121,26,0|script|Wyara#_M|103
-{
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
- set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
-
- // Set up SkillUp function
- set @SUP_id, SKILL_MAGIC_NATURE;
- set @SUP_name$, "Nature Magic";
-
- set @STATUS_INITIAL, 0;
- set @STATUS_PURIFY_EXPLAINED, 1;
- set @STATUS_PURIFY_ONCE, 2;
- set @STATUS_PURIFY_TWICE, 3;
- set @STATUS_PURIFY_OVER, 4;
- set @STATUS_MAX, @STATUS_PURIFY_OVER;
-
- // This operation works around an earlier possible corruption of this state
- if (@Q_status > @STATUS_MAX)
- set @Q_status, @STATUS_INITIAL;
- if ((@Q_status == @STATUS_PURIFY_OVER) && (getskilllv(SKILL_MAGIC_NATURE) < 2))
- set @Q_status, @STATUS_INITIAL;
- callsub S_update_var;
-
- set @has_magic, getskilllv(SKILL_MAGIC);
-
- if (@Q_status == @STATUS_PURIFY_ONCE) goto L_M_purify_once;
- if (@Q_status == @STATUS_PURIFY_TWICE) goto L_M_purify_done;
-
- mes "[Wyara the witch]";
- mes "\"Greetings, fair traveller! What can I do for you?\"";
- next;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_WYARA;
- goto L_Main;
-
-L_Main:
- if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
- menu
- "What do you know about...", L_Question,
- "Can you help me use the mana seed?", L_Q_manaseed_unabsorbed,
- "Can you help me learn magic?", L_Magic,
- "I would like to buy potions.", L_Shop,
- "Can you reset my stats?", L_StatReset,
- "Bye!", L_Close;
- if (!(!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)))
- menu
- "What do you know about...", L_Question,
- "Can you help me learn magic?", L_Magic,
- "I would like to buy potions.", L_Shop,
- "Can you reset my stats?", L_StatReset,
- "Bye!", L_Close;
- goto L_Shop;
-
-L_Shop:
- mes "[Wyara the Witch]";
- mes "\"Please have a look at the shelf behind me.\"";
- close;
-
-L_StatReset:
- set @npcname$, "Wyara";
- callfunc "StatReset";
- goto L_Close;
-
-L_Question:
- callfunc "MagicTalkOptionsSetup";
- set @ignore, @QQ_WYARA;
- callfunc "MagicTalkMenu";
-
- if (@c == 0) goto L_Main;
- if (@c == @QQ_ELANORE) goto L_Q_elanore;
- if (@c == @QQ_MANASEED) goto L_Q_manaseed;
- if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
- if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
- if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
- if (@c == @QQ_IMP) goto L_Q_imp;
- if (@c == @QQ_OLDWIZ) goto L_Q_old_wizard;
- if (@c == @QQ_ASTRALSOUL) goto L_Q_astralsoul;
-
- mes "[Wyara the Witch]";
- mes "\"I fear that I can't help you with that.\"";
- next;
- goto L_Main;
-
-
-L_Q_astralsoul:
- mes "[Wyara the Witch]";
- mes "\"The astral soul skill? Yes, I have heard about that. It can be taught by old and wise mages usually.\"";
- next;
- mes "\"You need lots of practise until you can handle the ability, and even more practise until you have the powers to teach it to someone else.\"";
- next;
- goto L_Main;
-
-L_Q_old_wizard:
- mes "[Wyara the Witch]";
- mes "\"I don't know his name, but I do know that he has been living in the mountains since I first came here. He is a master of many schools of magic, I believe.\"";
- next;
- mes "[Wyara the Witch]";
- mes "She smiles.";
- mes "\"He is also a nice and friendly person to talk to, and quite knowledgeable about the teas of this area.\"";
- next;
- goto L_Main;
-
-L_Q_elanore:
- mes "[Wyara the Witch]";
- mes "\"Elanore is the Tulimshar healer. She is a very kind person and an outstanding healer.\"";
- next;
- goto L_Main;
-
-L_Q_manaseed:
- if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
- goto L_Q_manaseed_unabsorbed;
- mes "[Wyara the Witch]";
- mes "\"A mana seed? I'm afraid that I can't help you with that.\"";
- next;
- goto L_Main;
-
-L_Q_manaseed_unabsorbed:
- mes "[Wyara the Witch]";
- mes "\"So you touched the mana seed but weren't able to absorb its powers? That means that you're lacking a natural magical ability. Still, there are ways around that.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"If you drink a mana potion, you should be able to retain this magical power and slowly build up a magical skill.\"";
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_MANAPOTION;
- next;
- goto L_Main;
-
-L_Q_manapotion:
- mes "[Wyara the Witch]";
- mes "\"I have a simple recipe for making mana potions, but I don't have one ready right now. Can you bring me 40 mauve leaves and a bottle of water? I can make one from those quite easily.\"";
- next;
- menu
- "Sure!", L_make_manapotion,
- "No.", L_Main;
-
-L_manapotion_toomany:
- mes "[Wyara the Witch]";
- mes "\"Hmm... looking at you, I don't think that you would be able to carry it.\"";
- next;
- goto L_Main;
-
-L_make_manapotion:
- if(countitem("MauveHerb") < 40)
- goto L_make_manapotion_lack;
- if(countitem("BottleOfWater") < 1)
- goto L_make_manapotion_lack;
- getinventorylist;
- if ((@inventorylist_count == 100)
- && (countitem("MauveHerb") > 40)
- && (countitem("BottleOfWater") > 100)
- && (countitem("ManaPotion") < 1))
- goto L_manapotion_toomany;
-
- delitem "MauveHerb", 40;
- delitem "BottleOfWater", 1;
- getitem "ManaPotion", 1;
-
- mes "[Wyara the Witch]";
- mes "Wyara takes your mauve leaves, grinds them, and pours some of the resultant paste into her cauldron. She then takes your bottle and sticks it into her brew, head-first.";
- next;
- mes "[Wyara the Witch]";
- mes "The water in the bottle takes on a strange golden hue, but doesn't flow out.";
- mes "After a while, she retrieves the bottle and pours some of the liquid into a smaller clay bottle. She proceeds to mix in the rest of the paste, then plugs the bottle and shakes it.";
- next;
- mes "[Wyara the Witch]";
- mes "\"I shall keep the rest of your water and the bottle as a payment, if you don't mind. But here is the potion; let it rest for a minute before you use it for maximum effect.\"";
- next;
- goto L_Main;
-
-L_make_manapotion_lack:
- mes "[Wyara the Witch]";
- mes "\"No, we need forty mauve leaves and a bottle of water.\"";
- next;
- goto L_Main;
-
-L_Q_imp:
- mes "[Wyara the Witch]";
- mes "\"Sagatha told me that she imprisoned an evil earth spirit in a dried-up well. She wants it to stay there until it has mended its ways, or forever, if it doesn't.\"";
- next;
- goto L_Main;
-
-L_Q_sagatha:
- mes "[Wyara the Witch]";
- mes "Wyara smiles.";
- mes "\"You have met Sagatha? She's a wonderful person, isn't she? Well, she does hold back a little towards humans, but deep down she feels for them, too.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"She does hold all plants and animals very dear, though. Well, the peaceful ones more than the aggressive ones, I suppose, and scorpions not very much at all.\"";
- next;
- goto L_Main;
-
-L_Q_auldsbel:
- mes "[Wyara the Witch]";
- mes "\"Auldsbel... the guild wizard? I don't know him very well; as far as I know, he is only visiting.\"";
- next;
- goto L_Main;
-
-L_M_no:
- mes "[Wyara the Witch]";
- mes "\"I am sorry, but you don't seem to be able to control any magic. That means that I really can't help you with that.\"";
- next;
- goto L_Main;
-
-L_Magic:
- if (!@has_magic)
- goto L_M_no;
- mes "[Wyara the Witch]";
- mes "\"Perhaps I can help you a little, but I am not a master of any school of magic.\"";
- next;
- goto L_M_main;
-
-L_M_main:
- menu
- "Can you explain magic to me?", L_M_explain,
- "Can you teach me a spell?", L_M_spell,
- "Can you train me?", L_M_train,
- "Never mind.", L_Main;
-
-L_M_explain:
- mes "[Wyara the Witch]";
- mes "\"Magic is just a name for the force that lives in all plants and animals and emanates from there into all things, living or dead.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Some things it finds easier to pass through – natural things, living things – but dead things, such as rock or metal, can slow it down.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"There are different kinds of magic, too; nature, astral, and so on, but if this interests you, you should talk to a scholar.\"";
- next;
- goto L_M_main;
-
-L_M_spell:
- if (getskilllv(SKILL_MAGIC_NATURE) > 1)
- goto L_M_spell3;
- if (getskilllv(SKILL_MAGIC) > 1)
- goto L_M_spell2;
- mes "[Wyara the Witch]";
- mes "\"No... I don't think that you are ready yet. But please ask me again when you have some more control over your magical powers.\"";
- next;
- goto L_M_main;
-
-L_M_spell3:
- mes "[Wyara the Witch]";
- mes "\"Now that you know the basics of nature magic, here is one of my favourites: '" + get(.invocation$, "rain") + "' will summon rain, whereever you are standing. It will consume a bottle of water, though.\"";
- if (getskilllv(SKILL_MAGIC) < 2)
- mes "\"You are not powerful enough to use it yet, though; you will first have to absorb more magic from the mana seed.\"";
- next;
- goto L_M_spell2;
-
-L_M_spell2:
- mes "[Wyara the Witch]";
- mes "\"Here is another useful one: '" + get(.invocation$, "detect-players") + "'. It will tell you the names of everyone nearby, but beware that there are ways to protect against it.\"";
- if (getskilllv(SKILL_MAGIC) < 2)
- mes "\"Hmm. You aren't powerful enough for this one either yet, I think.\"";
- next;
- if (!(getpartnerid2()))
- goto L_M_main;
- mes "[Wyara the Witch]";
- mes "\"Married partners can find each other even more easily. Use the '" + get(.invocation$, "sense-spouse") + "' spell instead.\"";
- next;
- goto L_M_main;
-
-L_M_train:
- if (getskilllv(SKILL_MAGIC_NATURE) > 1)
- goto L_M_train_no;
- mes "[Wyara the Witch]";
- if (@Q_status >= @STATUS_PURIFY_EXPLAINED)
- goto L_M_train_wb;
- mes "\"Train you? No... you should talk to Sagatha.\"";
- mes "She hesitates.";
- next;
- callfunc "SagathaStatus";
- if (@evil) goto L_M_train_evil;
- mes "[Wyara the Witch]";
- mes "\"It would be difficult to ask her to accept you unless you understand some of the basics already.\"";
- next;
- goto L_M_train_dispatch;
-
-L_M_train_evil:
- mes "Wyara looks at you sadly.";
- mes "\"I have heard that you have done something unforgiveable. No witch in this land will teach you now.\"";
- next;
- goto L_M_main;
-
-L_M_train_wb:
- callfunc "SagathaStatus";
- if (@evil)
- goto L_M_train_evil;
- mes "\"Ah, yes, your training...\"";
- next;
- goto L_M_train_dispatch;
-
-L_M_train_dispatch:
- if (@Q_status == @STATUS_PURIFY_TWICE)
- goto L_M_purify_done;
- if (@Q_status == @STATUS_PURIFY_ONCE)
- goto L_M_purify_once;
- if (@Q_status == @STATUS_PURIFY_EXPLAINED)
- goto L_M_purify_explained;
-
- mes "[Wyara the Witch]";
- mes "\"Well, let me help you get started, then! But first, to make sure that you are serious, I have a small task for you.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"There is a pond west of Hurnscald, a very small one, almost square in shape, with a rock on its southern ledge leading to its center. This pond is close to dying.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"I want to save it; for that, someone will have to pour a purification potion into it.\"";
- next;
- set @Q_status, @STATUS_PURIFY_EXPLAINED;
- callsub S_update_var;
- goto L_M_purify_explained;
-
-L_M_purify_explained:
- if (countitem("PurificationPotion"))
- goto L_M_purify_doit;
-
- mes "[Wyara the Witch]";
- mes "\"To make the purification potion, I will need twenty maggot slimes and twenty leaves of mauve.\"";
- next;
- menu
- "I shall get them later.", L_M_main,
- "Booring.", L_M_main,
- "Here they are.", L_Next;
-
-L_Next:
- getinventorylist;
- if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20))
- goto L_M_purify_nospace;
- if (countitem("MauveHerb") < 20)
- goto L_M_purify_lacking;
- if (countitem("MaggotSlime") < 20)
- goto L_M_purify_lacking;
- delitem "MauveHerb", 20;
- delitem "MaggotSlime", 20;
- getitem "PurificationPotion", 1;
- mes "[Wyara the Witch]";
- mes "Wyara grinds the leaves and mixes them with the slime, boils them, then speaks a brief incantation over them and hands you the result.";
- next;
- goto L_M_purify_doit;
-
-L_M_purify_doit:
- mes "[Wyara the Witch]";
- mes "\"Take your purification potion to the pond, right next to its center, and pour the potion in.\"";
- close;
-
-L_M_purify_nospace:
- mes "[Wyara the Witch]";
- mes "\"You don't have enough space to carry the potion. Please come back later.\"";
- next;
- goto L_M_main;
-
-L_M_purify_lacking:
- mes "[Wyara the Witch]";
- mes "\"You'll need twenty mauve leaves and twenty maggot slimes for the potion.\"";
- next;
- goto L_M_main;
-
-L_M_purify_once:
- mes "[Wyara the Witch]";
- mes "Wyara nods.";
- mes "\"You have purified the pond a little, but not enough, I think. We'll need another potion.\"";
- next;
- if (countitem("PurificationPotion"))
- goto L_M_purify_doit2;
- mes "[Wyara the Witch]";
- mes "\"I'll need twenty more maggot slimes and leaves of mauve.\"";
- next;
- menu
- "I'll do that later.", L_Main,
- "No way.", L_Main,
- "Here you are.", L_Next1;
-
-L_Next1:
- getinventorylist;
- if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20))
- goto L_M_purify_nospace;
- if (countitem("MauveHerb") < 20)
- goto L_M_purify_lacking;
- if (countitem("MaggotSlime") < 20)
- goto L_M_purify_lacking;
- delitem "MauveHerb", 20;
- delitem "MaggotSlime", 20;
- getitem "PurificationPotion", 1;
- mes "[Wyara the Witch]";
- mes "Wyara brews another purification potion.";
- next;
- goto L_M_purify_doit2;
-
-L_M_purify_doit2:
- mes "[Wyara the Witch]";
- mes "\"Please apply this one quickly, again.\"";
- close;
-
-L_M_purify_done:
- mes "[Wyara the Witch]";
- mes "Wyara smiles at you.";
- mes "\"A friend told me... you have saved the pond for now. Perhaps it will need some more attention later, but I'll ask others for this.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Please sit down and touch the ground.\"";
- next;
- menu
- "Very well.", L_Next2,
- "No way!", L_M_purify_abort;
-
-L_Next2:
- mes "[Wyara the Witch]";
- mes "You sit down and touch the ground, and so does Wyara.";
- next;
- mes "[Wyara the Witch]";
- mes "You sense the earth, through the floor boards, and begin to feel one with it, as if you were a plant or rock.";
- next;
- mes "[Wyara the Witch]";
- mes "The gentle breeze coming in through the window begins to take on a very different quality, as if it were the gentle caress of a mother soothing her child.";
- next;
- mes "[Wyara the Witch]";
- mes "You can sense the water within the ground, and from it you sense your sisters and brothers, plants, animals, people...";
- next;
- mes "[Wyara the Witch]";
- mes "Slowly, the sensation recedes, but you feel changed.";
- set @SUP_xp, 5000;
- set @SUP_lvl, 2;
- callfunc "SkillUp";
- set @Q_status, @STATUS_PURIFY_OVER;
- callsub S_update_var;
- close;
-
-L_M_purify_abort:
- mes "[Wyara the Witch]";
- mes "\"I can't help you if you don't subject yourself to the ritual.\"";
- close;
-
-L_M_train_no:
- mes "[Wyara the Witch]";
- mes "\"I can't teach you anything at this time. Perhaps Sagatha can help you, but I'm not sure if she will accept you as a student.\"";
- next;
- goto L_M_train_sagatha;
-
-L_M_train_sagatha:
- menu
- "OK.", L_M_main,
- "How can I convince her to accept me?", L_Next3;
-
-L_Next3:
- callfunc "SagathaStatus";
- mes "[Wyara the Witch]";
- if (@evil)
- goto L_M_train_s_fail;
- if (getskilllv(SKILL_MAGIC) < 2)
- goto L_M_train_s_lvl1;
- if (@good > 1)
- mes "\"Come to think of it, I have heard good things about you. Perhaps she will be willing to accept you as a student now?\"";
- if (@good == 1)
- mes "\"I have heard some good things about you, but I'm not sure if it will be enough to sway her – she is hesitant to accept students.\"";
- if (@good == 0)
- mes "\"Sagatha cares greatly about all living creatures, but particularly about the creatures of the forest. If you are kind to them, she will be more likely to be kind to you.\"";
- next;
- if (@druid == 3)
- goto L_M_main;
- mes "[Wyara the Witch]";
- mes "She smiles.";
- mes "\"Actually, I think I know of a good thing you could do. There is a very special tree in the desert south-east of Tulimshar, a tree that has been there for a very long time.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"The tree is slowly dying – and has been for a long time – but it is there because of a wonderful thing that happened long ago. Tend to it, and I am sure that she will learn about this.\"";
- next;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_DRUIDTREE;
- menu
- "What is that tree?", L_M_train_t_backgd,
- "How should I tend to it?", L_Next4,
- "Nah.", L_M_main;
-
-L_Next4:
- mes "[Wyara the Witch]";
- mes "\"The tree has been there alone and unattended for a long time; what he needs most is water and affection. Give him both.\"";
- next;
- mes "[Wyara the Witch]";
- mes "She hesitates for a moment.";
- mes "\"But stay away from the well in the area. There is no water in there anymore, and it's also dangerous.\"";
- next;
- goto L_M_main;
-
-L_M_train_t_backgd:
- mes "[Wyara the Witch]";
- mes "\"Many generations ago, there was a lush, green oasis in the desert south-east of Tulimshar. Plants of all kinds grew there, and many animals, including mouboos, made this place their home.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Then there came war, and some people pleaded to the demon Grenxen. He founded Tulimshar, and to provide it with water he changed the underground waterflow. The oasis began to dry out quickly.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"But the oasis, like many such places back in the old days, had a druid watching over it. The druid refused to accept what Grenxen had done, but he was powerless to revert or change it.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"All he could do was to delay the inevitable, to give the animals and nomads some time to adapt.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"But to do so, he had to reach the water streams deep underground. Thus, he turned himself into a tree, a deep-rooted fyrad, so that his roots could reach underground.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"He had to exert himself tremendously; he had to grow deep, quickly; I believe that no druid or witch has summoned such magic before or since. But he succeeded, and for a while he saved the oasis.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Many generations he remained the only one ever to have successfully defied Grenxen, but this came at a price: he had to remain a tree, and he never turned back.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"I believe that he has not forgotten his old magic, because even though a tree remembers many things for a very long time, trees are not keen to change things, not even themselves.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Now he stands alone in the desert, dried-up and forgotten, with no-one remembering him.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Please give him water, for he is always in need of it, and thank him for his sacrifice. It is all we can do for him now.\"";
- next;
- goto L_M_t_menu;
-
-L_M_t_menu:
- menu
- "How should I give him water?", L_M_t_water,
- "How should I thank him?", L_M_t_remind,
- "I will.", L_M_main,
- "No.", L_M_main;
-
-L_M_t_water:
- mes "[Wyara the Witch]";
- mes "\"A bottle of water would probably not be enough. No, you would have to water the ground all around... that's too many bottles. You will have to get water from elsewhere.\"";
- next;
- goto L_M_t_menu;
-
-L_M_t_remind:
- mes "[Wyara the Witch]";
- mes "\"Give him a sign of affection. Something that works with a tree, but also something that humans might do to each other, to remind him of his days as a human.\"";
- next;
- mes "[Wyara the Witch]";
- mes "\"Yes... that would be important. Show your affection in the same way that you might towards a human.\"";
- next;
- goto L_M_t_menu;
-
-L_M_train_s_fail:
- mes "She shakes her head.";
- mes "\"No... from what I have heard, you have done something unforgivable. I very much doubt that you can be her student now, and I won't teach you any further either.\"";
- next;
- goto L_M_main;
-
-L_M_train_s_lvl1:
- mes "\"Well, you're still a bit of a beginner, so I don't think she will accept you yet. Maybe you can absorb some more power from the mana seed? If you can grow your magical powers a little, I might be able to help you.\"";
- next;
- goto L_M_main;
-
-L_Close:
- close;
-
-S_update_var:
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/009-2/yalina.txt b/world/map/npc/009-2/yalina.txt
deleted file mode 100644
index db701188..00000000
--- a/world/map/npc/009-2/yalina.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-009-2,148,47,0|script|Yalina|209
-{
- set @npcname$, "Yalina";
-
- mes "[" + @npcname$ + "]";
- mes "\"Ian knows a lot! I had so many questions he helped me with!\"";
- next;
- mes "\"He rewards those that know what they are doing. When the Nurse stops healing you, check in with Ian.\"";
- set @npcname$, "";
- close;
-}
diff --git a/world/map/npc/009-3/_import.txt b/world/map/npc/009-3/_import.txt
deleted file mode 100644
index 6cf14773..00000000
--- a/world/map/npc/009-3/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 009-3: Hurnscald Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-3
-npc: npc/009-3/_mobs.txt
-npc: npc/009-3/_nodes.txt
-npc: npc/009-3/_warps.txt
-npc: npc/009-3/mapflags.txt
-npc: npc/009-3/sword.txt
-npc: npc/009-3/warp.txt
diff --git a/world/map/npc/009-3/_mobs.txt b/world/map/npc/009-3/_mobs.txt
deleted file mode 100644
index 64c43145..00000000
--- a/world/map/npc/009-3/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Cave mobs
-
-009-3,0,0,0,0|monster|YellowSlime|1007,20,0ms,0ms
-009-3,62,75,125,150|monster|BlackScorpion|1009,25,0ms,0ms
-009-3,63,75,126,150|monster|RedSlime|1008,35,0ms,0ms
-009-3,145,75,110,151|monster|CaveMaggot|1056,20,100000ms,30000ms
diff --git a/world/map/npc/009-3/_nodes.txt b/world/map/npc/009-3/_nodes.txt
deleted file mode 100644
index a4b17b18..00000000
--- a/world/map/npc/009-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-3/_warps.txt b/world/map/npc/009-3/_warps.txt
deleted file mode 100644
index f46dc2f3..00000000
--- a/world/map/npc/009-3/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hurnscald Cave warps
-
-009-3,173,20|warp|-1,-1,009-2,147,89
-009-3,20,57|warp|-1,-1,011-4,129,87
-009-3,157,30|warp|-1,-1,018-3,179,180
-009-3,117,19|warp|-1,-1,013-3,160,102
diff --git a/world/map/npc/009-3/mapflags.txt b/world/map/npc/009-3/mapflags.txt
deleted file mode 100644
index b56842f1..00000000
--- a/world/map/npc/009-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-009-3|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-3/sword.txt b/world/map/npc/009-3/sword.txt
deleted file mode 100644
index 1a427731..00000000
--- a/world/map/npc/009-3/sword.txt
+++ /dev/null
@@ -1,176 +0,0 @@
-009-3,26,100,0|script|#MysticSword#_M|400
-{
- if (getskilllv(SKILL_MAGIC))
- goto L_message;
- close;
-
-L_message:
- set @Q_MASK, NIBBLE_6_MASK;
- set @Q_SHIFT, NIBBLE_6_SHIFT;
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
-
- // Set up SkillUp function
- set @SUP_id, SKILL_MAGIC_WAR;
- set @SUP_name$, "War Magic";
-
- set @STATUS_INITIAL, 0;
- set @STATUS_LEARNED_FLAREDART, 1;
- set @STATUS_LEARNED_MAGICBLADE, 2;
- set @STATUS_LEVEL2, 3;
- set @STATUS_W11, 4;
- set @STATUS_W12, 5;
- set @STATUS_W11_12, 6;
- set @STATUS_L2_ALLSPELLS, 7;
-
- if (@Q_status == @STATUS_INITIAL) goto L_Initial;
- if (@Q_status == @STATUS_LEARNED_FLAREDART) goto L_PostFlareDart;
- if (@Q_status == @STATUS_LEARNED_MAGICBLADE) goto L_PostFlareDart_teach2;
- if (@Q_status == @STATUS_LEVEL2) goto L_L2_W11;
- if (@Q_status == @STATUS_W12) goto L_L2_W11;
- if (@Q_status == @STATUS_W11) goto L_L2_almost_done;
- if (@Q_status == @STATUS_W11_12) goto L_L2_almost_done;
-
- mes "[Magic Sword]";
- mes "\"Come back when thou art stronger.\"";
- close;
-
-L_Initial:
- mes "[Magic Sword]";
- mes "As you look at the sword, you suddenly hear a voice in your head!";
- mes "\"Welcome to my prison, mortal!\"";
- next;
- mes "[Magic Sword]";
- mes "Well, either you are going mad, or that sword in the stone is talking to you.";
- next;
- mes "[Magic Sword]";
- mes "Or, well, both.";
- next;
- mes "[Magic Sword]";
- mes "The deep basso voice continues.";
- mes "\"I know not what brought thee hither, but I kindly ask that thou leavest me alone in my sorrow.\"";
- next;
- menu
- "Leave", L_Close,
- "Sorry.", L_Next,
- "Who or what are you?", L_Next,
- "What sorrow?", L_Next,
- "Can I help?", L_Next,
- "Can you teach me magic?", L_Next;
-
-L_Next:
- mes "[Magic Sword]";
- mes "There is no answer.";
- close;
-
-L_PostFlareDart:
- mes "[Magic Sword]";
- mes "As you look at the sword, you hear a deep voice resounding in your head.";
- mes "\"Welcome, mortal!\"";
- next;
- menu
- "Hi! How are you?", L_PostFlareDart_hi,
- "Can you teach me magic?", L_PostFlareDart_teach,
- "Your sister sent me.", L_PostFlareDart_sister,
- "Bye!", L_Close;
-
-L_PostFlareDart_hi:
- mes "[Magic Sword]";
- mes "\"Mortal... I have seen pain and death beyond thine reckoning! Mock me not with thine idle questions!\"";
- close;
-
-L_PostFlareDart_sister:
- mes "[Magic Sword]";
- mes "\"My sister...? Alas! I remember now; abandoned she was, just as I; buried in stone, never to be wielded again.\"";
- mes "\"Wherefore did she send thee?\"";
- next;
- menu
- "She asked me to ask you to teach me a spell.", L_PostFlareDart_teach;
-
-L_PostFlareDart_teach:
- mes "[Magic Sword]";
- mes "\"Beware, mortal... the only spells I can teach thee are those of the school of war. Dark and dreary spells, that lot! Pain and misery is all they bring...\"";
- next;
- mes "[Magic Sword]";
- mes "The sword's voice is growing apprehensive.";
- mes "\"Once a spell has been learned, it cannot be taken back, no more than a death can be undone. So be careful, mortal... dost thou truly wish to know the secrets of thus destructive power?\"";
- next;
- menu
- "Yes.", L_Next1,
- "No.", L_Close;
-
-L_Next1:
- mes "[Magic Sword]";
- mes "\"So thou art bound to the path of War, as am I, as is my sister...\"";
- next;
- mes "[Magic Sword]";
- mes "\"So be it, fellow warrior. Hear the incantation for the blade spell: '" + get(.invocation$, "magic-blade") + "'\"";
- mes "\"Hold a knife, sharp or regular, when thou speakest it.\"";
- set @Q_status, @STATUS_LEARNED_MAGICBLADE;
- callsub S_update_var;
- next;
- mes "[Magic Sword]";
- mes "\"But beware... the path of war that thou hast embarked upon is one from which few return. May luck be on thy side...\"";
- close;
-
-L_PostFlareDart_teach2:
- mes "[Magic Sword]";
- mes "\"Seek out my sister, and leave me alone in my sorrows.\"";
- next;
- goto L_Close;
-
-L_Close:
- close;
-
-L_L2_W11:
- mes "[Magic Sword]";
- mes "\"Thou hast returned. That must mean that thy wish to learn the magic of war is still alive?\"";
- next;
- menu
- "No, I just wanted to say `hi'.", L_farewell,
- "Yes, teach me more!", L_Next2;
-
-L_Next2:
- mes "[Magic Sword]";
- mes "\"If that is thou wishest, I shall not stop thee. But do not expect to find merriment down this road.\"";
- mes "\"I must ask that thou sacrificest five thousand monster points for this, however.\"";
- menu
- "No, I don't want that.", L_Close,
- "Very well.", L_Next3;
-
-L_Next3:
- if (Mobpt < 5000)
- goto L_lacking_mobpoints;
- mes "[Magic Sword]";
- mes "\"So be it, then.\"";
- mes "[1000 experience points]";
- set Mobpt, Mobpt - 5000;
- getexp 1000, 0;
- set @Q_status, @Q_status + 1;
- callsub S_update_var;
- next;
- mes "[Magic Sword]";
- mes "\"The spell I shall teach thee is the hail of arrows spell. It will make arrows fall down from the heavens unto thy enemies.\"";
- next;
- mes "[Magic Sword]";
- mes "\"Take twenty arrows, sprinkle sulphur powder over them, and then speak '" + get(.invocation$, "arrow-hail") + "'. Throw them high up in the air, and watch the hail unfold before thy feet.\"";
- close;
-
-L_L2_almost_done:
- mes "[Magic Sword]";
- mes "\"Return to my sister now. I expect that she shall teach thee one more spell.\"";
- close;
-
-L_lacking_mobpoints:
- mes "[Magic Sword]";
- mes "\"Thou lackest the monster points needed to prove thy worthiness. I shall not reveal more to thee until thou hast slain more monsters.\"";
- close;
-
-L_farewell:
- mes "[Magic Sword]";
- mes "\"Please leave me in peace.\"";
- close;
-
-S_update_var:
- set QUEST_MAGIC, (QUEST_MAGIC & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/009-3/warp.txt b/world/map/npc/009-3/warp.txt
deleted file mode 100644
index ab781e38..00000000
--- a/world/map/npc/009-3/warp.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-009-3,162,80,0|script|#PVPCaveBarrier|45,0,0
-{
- mes "Do you want to enter the PVP cave? It costs 150GP.";
- menu
- "No.", L_Exit,
- "Yes.", L_Next;
-
-L_Next:
- if (Zeny < 150)
- goto L_NotEnoughMoney;
- if (Zeny >= 150)
- goto L_Pay;
- goto L_Exit;
-
-L_Exit:
- close;
-
-L_Pay:
- set Zeny, Zeny - 150;
- warp "009-6", 36, 47;
- close;
-
-L_NotEnoughMoney:
- mes "You don't have enough money!";
- close;
-
-}
diff --git a/world/map/npc/009-4/_import.txt b/world/map/npc/009-4/_import.txt
deleted file mode 100644
index efddeeb4..00000000
--- a/world/map/npc/009-4/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 009-4: Orum Caves
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-4
-npc: npc/009-4/_mobs.txt
-npc: npc/009-4/_nodes.txt
-npc: npc/009-4/_warps.txt
-npc: npc/009-4/barriers.txt
-npc: npc/009-4/mapflags.txt
-npc: npc/009-4/orum.txt
-npc: npc/009-4/orum_warps.txt
-npc: npc/009-4/torches.txt
-npc: npc/009-4/waric.txt
diff --git a/world/map/npc/009-4/_mobs.txt b/world/map/npc/009-4/_mobs.txt
deleted file mode 100644
index 2995d15e..00000000
--- a/world/map/npc/009-4/_mobs.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Orum Caves mobs
-
-009-4,117,97,24,15|monster|Silkworm|1035,3,20000ms,14000ms
-009-4,115,98,24,15|monster|CaveSnake|1021,5,20000ms,14000ms
-009-4,103,28,24,15|monster|CaveSnake|1021,3,20000ms,14000ms
-009-4,106,27,24,15|monster|Silkworm|1035,3,20000ms,14000ms
-009-4,119,45,12,10|monster|Silkworm|1035,3,20000ms,14000ms
-009-4,72,130,24,15|monster|Maggot|1002,3,20000ms,14000ms
-009-4,38,116,24,15|monster|Maggot|1002,3,20000ms,14000ms
diff --git a/world/map/npc/009-4/_nodes.txt b/world/map/npc/009-4/_nodes.txt
deleted file mode 100644
index 5050be70..00000000
--- a/world/map/npc/009-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Orum Caves nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-4/_warps.txt b/world/map/npc/009-4/_warps.txt
deleted file mode 100644
index 3e8d8a1f..00000000
--- a/world/map/npc/009-4/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Orum Caves warps
-
-009-4,37,112|warp|-1,-1,009-3,163,114
-009-4,72,136|warp|-1,-1,009-4,36,27
-009-4,37,123|warp|-1,-1,009-4,36,27
-009-4,72,125|warp|-1,-1,009-3,163,114
-009-4,103,22|warp|-1,-1,009-4,51,46
-009-4,103,76|warp|-1,-1,009-4,51,46
diff --git a/world/map/npc/009-4/barriers.txt b/world/map/npc/009-4/barriers.txt
deleted file mode 100644
index f82df12f..00000000
--- a/world/map/npc/009-4/barriers.txt
+++ /dev/null
@@ -1,285 +0,0 @@
-//# see detailed description at orum.txt
-function|script|GetBarrierColor
-{
- if (@Barrier < 0 || @Barrier > 2)
- goto L_Error;
- if (@BarrierColor <= 0 || @BarrierColor > 12)
- goto L_Error2;
- goto L_GetBarrierColor;
-
-L_GetBarrierColor:
- set @Mask, 15;
- set @shift, 4 * @Barrier;
- set @BarrierColor, (OrumQuestBarrier >> @shift) & @Mask;
- return;
-
-L_Error:
- mes "Barrier number is out of range.";
- close2;
- return;
-
-L_Error2:
- callfunc "SetUpOrumQuest";
- goto L_GetBarrierColor;
-}
-
-function|script|SetBarrierColor
-{
- if (@Barrier < 0 || @Barrier > 2)
- goto L_Error;
- if (@BarrierColor <= 0 || @BarrierColor > 12)
- goto L_Error2;
-
- set @Mask, (15 << (4 * @Barrier));
- set OrumQuestBarrier, (OrumQuestBarrier & (~(@Mask))) | @BarrierColor << (4 * @Barrier);
- return;
-
-L_Error:
- mes "Barrier number is out of range.";
- close2;
- return;
-
-L_Error2:
- mes "Barrier color is out of range.";
- close2;
- return;
-}
-
-
-// Starting Barrier / Quest Entrance
-009-4,37,119,0|script|#OrumCaveStartMessage|32767,0,0
-{
- if (OrumQuest >= 3) end;
- if (OrumQuest == 2) goto L_Started;
-
- mes "As you try to pass, two torches begin to flare and push you back. They seem to form some kind of barrier.";
- close;
-
-L_Started:
- message strcharinfo(0), "The torches dim as you approach, granting you passage.";
- set OrumQuest, 3;
- end;
-}
-
-009-4,37,120,0|script|#OrumCaveStartBarrier|32767,0,0
-{
- if (OrumQuest >= 3) end;
- warp "009-4", 37, 118;
- end;
-}
-
-// First Barrier
-009-4,57,29,0|script|#OrumCaveFirstBarrier|32767,0,0
-{
- if (OrumQuest >= 5) end;
-
- message strcharinfo(0), "Nothing seems to happen as you enter this room. The barrier must need both of its torches to function properly.";
- set OrumQuest, 5;
- end;
-}
-
-// Second Barrier
-009-4,61,55,0|script|#OrumCaveSecondMessage|32767,0,0
-{
- if (OrumQuest >= 9) end;
- if (OrumQuest == 3) set OrumQuest, 4;
-
- set @Barrier, 0;
- callfunc("GetBarrierColor");
- set @Torch, 0;
- callfunc("GetTorchColor");
- if (OrumQuest > 7 && @TorchColor == @BarrierColor)
- goto L_Allow_Second_Passage;
-
- mes "As you try to pass, the torches begin to flare and push you back. Perhaps there's a way to get past it.";
- mes "";
- setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
- mes "Looking closely between the two torches you can see the barrier has a ##B" + @colors$[@BarrierColor] + "##b tint to it.";
- close;
-
-L_Allow_Second_Passage:
- if (OrumQuest < 9) goto L_Advance_Quest;
- end;
-
-L_Advance_Quest:
- message strcharinfo(0), "The torches dim as you enter like the first. You must be on the right trail.";
- set OrumQuest, 9;
- end;
-}
-
-009-4,61,54,0|script|#OrumCaveSecondBarrier|32767,0,0
-{
- if (OrumQuest >= 9) end;
- warp "009-4", 60, 56;
- end;
-}
-
-// Third Barrier
-009-4,24,65,0|script|#OrumCaveThirdMessage|32767,0,0
-{
- if (OrumQuest >= 10) end;
- if (OrumQuest == 3) set OrumQuest, 4;
- if (OrumQuest > 8 && @Torch1Color == @firstColor && @Torch2Color == @secondColor)
- goto L_Allow_Third_Passage;
- if (OrumQuest > 8 && @Torch2Color == @firstColor && @Torch1Color == @secondColor)
- goto L_Allow_Third_Passage;
-
- set @Barrier, 1;
- callfunc("GetBarrierColor");
-
- set @Torch, 0;
- callfunc("GetTorchColor");
- set @Torch1Color, @TorchColor;
-
- set @Torch, 1;
- callfunc("GetTorchColor");
- set @Torch2Color, @TorchColor;
-
- set @firstColor, @BarrierColor - 2;
- set @secondColor, @BarrierColor + 2;
- if (@firstColor < 1)
- set @firstColor, 12;
- if (@secondColor > 12)
- set @secondColor, 1;
-
- mes "As you try to pass, the torches begin to flare and push you back. Perhaps there is a way to get past it.";
- mes "";
- setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
- mes "Looking closely between the two torches you can see the barrier has a ##B" + @colors$[@BarrierColor] + "##b tint to it.";
- close;
-
-L_Allow_Third_Passage:
- if (OrumQuest < 10) goto L_Advance_Quest;
- end;
-
-L_Advance_Quest:
- set OrumQuest, 10;
- end;
-}
-
-009-4,24,66,0|script|#OrumCaveThirdBarrier|32767,0,0
-{
- if (OrumQuest >= 10) end;
- warp "009-4", 23, 64;
- end;
-}
-
-// Ending Barrier
-009-4,48,37,0|script|#OrumCaveEndMessage|32767,0,0
-{
- if (OrumQuest >= 11) end;
- if (OrumQuest == 3) set OrumQuest, 4;
-
- set @Barrier, 2;
- callfunc("GetBarrierColor");
-
- if (OrumQuest < 10)
- goto L_Deny_Final_Passage;
-
- set @Torch, 0;
- callfunc("GetTorchColor");
- set @Torch1Color, @TorchColor;
-
- set @Torch, 1;
- callfunc("GetTorchColor");
- set @Torch2Color, @TorchColor;
-
- set @Torch, 2;
- callfunc("GetTorchColor");
- set @Torch3Color, @TorchColor;
-
- // Extract the secondary color
- set @secondary, @BarrierColor - 1;
- if (@secondary != 3 && @secondary != 7 && @secondary != 11)
- set @secondary, @BarrierColor + 1;
-
- // Make sure it's in bounds
- if (@secondary > 12)
- set @secondary, @secondary - 12;
- if (@secondary < 1)
- set @secondary, @secondary + 12;
-
- // Extract first 2 required colors
- set @firstColor, @secondary - 2;
- set @secondColor, @secondary + 2;
- if (@firstColor > 12)
- set @firstColor, @firstColor - 12;
- if (@firstColor < 1)
- set @firstColor, @firstColor + 12;
- if (@secondColor > 12)
- set @secondColor, @secondColor - 12;
- if (@secondColor < 1)
- set @secondColor, @secondColor + 12;
-
- set @thirdColor, 12;
- set @offsetOne, @BarrierColor + 1;
- set @offsetTwo, @BarrierColor - 1;
-
- // Make sure they in bounds
- if (@offsetOne > 12)
- set @offsetOne, @offsetOne - 12;
- if (@offsetOne < 1)
- set @offsetOne, @offsetOne + 12;
- if (@offsetTwo > 12)
- set @offsetTwo, @offsetTwo - 12;
- if (@offsetTwo < 1)
- set @offsetTwo, @offsetTwo + 12;
-
- // Extract third needed color
- if (@secondary == @offsetOne)
- set @thirdColor, @firstColor;
- if (@secondary == @offsetTwo)
- set @thirdColor, @secondColor;
-
- set @firstDone, 0;
- set @secondDone, 0;
- set @thirdDone, 0;
-
- if (@firstDone == 0 && @secondDone != 1 && @thirdDone != 1 && @Torch1Color == @firstColor)
- set @firstDone, 1;
- if (@firstDone != 1 && @secondDone == 0 && @thirdDone != 1 && @Torch1Color == @secondColor)
- set @secondDone, 1;
- if (@firstDone != 1 && @secondDone != 1 && @thirdDone == 0 && @Torch1Color == @thirdColor)
- set @thirdDone, 1;
-
- if (@firstDone == 0 && @secondDone != 2 && @thirdDone != 2 && @Torch2Color == @firstColor)
- set @firstDone, 2;
- if (@firstDone != 2 && @secondDone == 0 && @thirdDone != 2 && @Torch2Color == @secondColor)
- set @secondDone, 2;
- if (@firstDone != 2 && @secondDone != 2 && @thirdDone == 0 && @Torch2Color == @thirdColor)
- set @thirdDone, 2;
-
- if (@firstDone == 0 && @secondDone != 3 && @thirdDone != 3 && @Torch3Color == @firstColor)
- set @firstDone, 3;
- if (@firstDone != 3 && @secondDone == 0 && @thirdDone != 3 && @Torch3Color == @secondColor)
- set @secondDone, 3;
- if (@firstDone != 3 && @secondDone != 3 && @thirdDone == 0 && @Torch3Color == @thirdColor)
- set @thirdDone, 3;
-
- if (@firstDone != 0 && @secondDone != 0 && @thirdDone != 0)
- goto L_Allow_Final_Passage;
- goto L_Deny_Final_Passage;
-
-L_Deny_Final_Passage:
- mes "As you try to pass, the torches begin to flare and push you back. Perhaps there is a way to get past it.";
- mes "";
- setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
- mes "Looking closely between the two torches you can see the barrier has a ##B" + @colors$[@BarrierColor] + "##b tint to it.";
- close;
-
-L_Allow_Final_Passage:
- if (OrumQuest < 11) goto L_Advance_Quest;
- end;
-
-L_Advance_Quest:
- message strcharinfo(0), "The torches dim as you enter. At last you finally have access!";
- set OrumQuest, 11;
- end;
-}
-
-009-4,48,38,0|script|#OrumCaveEndBarrier|32767,0,0
-{
- if (OrumQuest >= 11) end;
- warp "009-4", 47, 36;
- end;
-}
diff --git a/world/map/npc/009-4/mapflags.txt b/world/map/npc/009-4/mapflags.txt
deleted file mode 100644
index f9b9cfa9..00000000
--- a/world/map/npc/009-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-009-4|mapflag|resave|009-4,37,118
diff --git a/world/map/npc/009-4/orum.txt b/world/map/npc/009-4/orum.txt
deleted file mode 100644
index df9ac2d9..00000000
--- a/world/map/npc/009-4/orum.txt
+++ /dev/null
@@ -1,629 +0,0 @@
-//#################################################################################
-//# Orum/Waric Quest Part 1 - By Liana, reviewed by Stefan Beller #
-//# GPL v.2 #
-//# #
-//# The first quest is to find Waric in the Caves with lots of torches. #
-//# These torches must be set in the right color to have access to the next #
-//# room, guarded by a magical barrier of other torches. #
-//# #
-//# The second quest is an easy, but background-story telling quest. #
-//# Just visit the cave again, find what is really in there. #
-//# #
-//# #
-//# Used variables: #
-//# #
-//# OrumQuest stores the progress of the quest #
-//# OrumQuestTorch In nibble (0,1,2) the color of the torches is stored #
-//# In nibble (3,4,5) the intensity of the torches is stored #
-//# OrumQuestBarrier nibble (0,1,2) stores the color of the barriers #
-//#################################################################################
-
-009-4,35,115,0|script|OrumDebug|158
-{
- mes "[Orum Debug]";
- menu
- "Set Quest State", L_SetQuest,
- "Reset Quest", L_ResetQuest,
- "Display Quest", L_Display;
-
-L_SetQuest:
- input @quest_state;
- set OrumQuest, @quest_state;
- goto L_Close;
-
-L_ResetQuest:
- set OrumQuest, 0;
- set OrumQuestBarrier, 0;
- set OrumQuestTorch, 0;
- goto L_Close;
-
-L_Display:
- mes OrumQuest;
- goto L_Close;
-
-L_Close:
- end;
-
-OnInit:
- if (!debug)
- disablenpc "OrumDebug";
- end;
-}
-009-4,37,115,0|script|Orum#barrier|158
-{
- // needed to pass the very first barrier
- set @B0_WISPPOWDER, 4;
- set @B0_POLTERGEISTPOWDER, 2;
- set @B0_SPECTREPOWDER, 1;
- set @B0_HARDSPIKES, 1;
-
- // needed stuff to get colorful powders
- set @BT_IRONPOWDER, 10;
- set @BT_PILESOFASH, 10;
- set @BT_HERBS, 15;
-
- // how many colorful powders each do you get as reward?
- set @BT_REWARDCOUNT, 10;
-
- set @EXP_BREAK_BARRIERS, 5000;
-
- if (OrumQuest > 0) goto L_Started;
-
- mes "[Orum]";
- mes "\"It's not wise to venture around this place! Well hmm... I guess since you're here, maybe you can lend a little help?\"";
- menu
- "What exactly is 'this place'?", L_Explain,
- "Umm... what kind of help?", L_Explain,
- "You're right, I'll be on my way.", L_Next;
-
-L_Next:
- mes "[Orum]";
- mes "\"Very smart thinking!\"";
- goto L_Close;
-
-L_Explain:
- mes "[Orum]";
- mes "\"Recently a woman claiming to be a witch came to my village seeking help from my mentor Waric, who is a very powerful wizard, but he refused and she left. But...\"";
- next;
- mes "\"The next day he went missing! I'm no wizard yet, but from what I overheard... I think that witch is attempting some very foul magic and has kidnapped him for some reason!\"";
- next;
- mes "\"I traveled in the direction she left until I came accross this cave, but it appears to be protected by some type of magical barrier and I haven't been able to get further than this room.\"";
- menu
- "So where would I come in?", L_Explain_Barriers,
- "I'd like to help but I have to go...", L_Next1;
-
-L_Next1:
- mes "[Orum]";
- mes "\"Thats too bad... well, if you ever have some free time, I probably won't figure this out any time soon.\"";
- goto L_Close;
-
-L_Explain_Barriers:
- mes "[Orum]";
- mes "\"I've examined this room and it appears that the barrier is made up of two torches on each side. The flame on them has a strange glow. They must be imbued with magical properties.\"";
- next;
- mes "\"I've never come across anything like this barrier before. It must be drawing it's power from the torches. I tried putting them out with conventional means but I had no luck.\"";
- menu
- "Have any other ideas on how we get past it?", L_Explain_Note,
- "I think its meant to keep us out... Bye.", L_Next2;
-
-L_Next2:
- mes "[Orum]";
- mes "\"You may be right... but she kidnapped Waric. I know it! So I must do something! If you ever change your mind I could surely use the help.\"";
- goto L_Close;
-
-L_Explain_Note:
- mes "[Orum]";
- mes "\"Actually! After Waric went missing I looked around at his house a bit and came across a note the witch must have dropped. I skimmed over it and didn't pay much attention but I think it mentioned something about this barrier!\"";
- next;
- mes "He pulls it out of his pocket and begins examining it.";
- next;
- mes "[Orum]";
- mes "\"Ah! Here it is! If I'm reading this right we may have found a way past it after all. I guess she would need a way to come and go unaffected while everyone else is kept from entering.\"";
- menu
- "What does it say?", L_Explain_Aura,
- "Looks like you can do this without me.", L_Next3;
-
-L_Next3:
- mes "[Orum]";
- mes "\"Eh... well I guess I can't force you to stay.\"";
- goto L_Close;
-
-L_Explain_Aura:
- mes "[Orum]";
- mes "\"Appears to be some kind of spell to place a magical aura around someone... Hmm, with these materials listed on here I'm going to guess this aura makes the wearer partly incorporeal.\"";
- next;
- mes "\"It looks like the barrier requires substances from 3 different incorporeal creatures. I've heard of Wisps, Poltergeists, and Spectres before but I've never seen such a thing.\"";
- next;
- mes "\"Luckily I happen to be skilled in this field of magic! I'm pretty sure if I can get my hands on the materials listed on here I'll be able to cast this aura on us, and hopefully then we can get past this barrier!\"";
- menu
- "Let me guess... that is my job?", L_Offer_Quest,
- "I think someone is calling me... Bye!", L_Close;
-
-L_Offer_Quest:
- mes "[Orum]";
- mes "\"Well you would probably do better than me since I don't know this area very well. It's not too much stuff so I'm sure you won't have any trouble at all.\"";
- menu
- "Alright alright, just give me a list.", L_Start_Quest,
- "I'm not your servant! Bye.", L_Leave1;
-
-L_Leave1:
- mes "[Orum]";
- mes "\"Everyone answers to someone... that's just how the world is. If you ever change your mind I'll probably be here forever gathering these materials on my own.\"";
- goto L_Close;
-
-L_Start_Quest:
- mes "He pulls a crumpled piece of paper from his pocket, smooths it out and writes a list on it before handing it to you.";
- next;
- mes "" + @B0_WISPPOWDER + " Wisp Powders,";
- mes "" + @B0_POLTERGEISTPOWDER + " Poltergeist Powders,";
- mes "" + @B0_SPECTREPOWDER + " Spectre Powders,";
- mes "" + @B0_HARDSPIKES + " Hard Spikes";
- menu
- "Alright, I'll go get these.", L_Start_Gathering,
- "You can forget it! I quit!", L_Next4;
-
-L_Next4:
- mes "[Orum]";
- mes "\"I know you'll be back... they always come back!\"";
- goto L_Close;
-
-L_Start_Gathering:
- mes "[Orum]";
- mes "\"That's the spirit! But try not to take too long.\"";
- set OrumQuest, 1;
- goto L_Close;
-
-L_Started:
- if (OrumQuest == 1) goto L_Gathering;
- if (OrumQuest == 2) goto L_Use_First_Barrier;
- if (OrumQuest == 3) goto L_Explore;
- if (OrumQuest == 4) goto L_Found_Barriers;
- if (OrumQuest == 5) goto L_Found_Barriers;
- if (OrumQuest == 6) goto L_Found_Torches;
- if (OrumQuest == 7) goto L_Still_Gathering;
- if (OrumQuest == 8) goto L_Finish_Up;
- if (OrumQuest >= 9) goto L_Finished_Up;
- goto L_Close;
-
-L_Gathering:
- mes "[Orum]";
- mes "\"Got all the things I asked for yet?\"";
- menu
- "Yep, I have every last one of them!", L_Check_Materials,
- "Can I get another list?", L_List_Materials,
- "I still need a few things...", L_Next5;
-
-L_Next5:
- mes "Orum shakes his head in frustration.";
- next;
- mes "[Orum]";
- mes "\"You'd better get that stuff soon!\"";
- goto L_Close;
-
-L_List_Materials:
- mes "He scavenges around in his pocket for another piece of paper then writes a new list.";
- next;
- mes @B0_WISPPOWDER + " Wisp Powders,";
- mes @B0_POLTERGEISTPOWDER + " Poltergeist Powders,";
- mes @B0_SPECTREPOWDER + " Spectre Powders,";
- mes @B0_HARDSPIKES + " Hard Spikes";
- next;
- mes "[Orum]";
- mes "\"And try not to lose this one... I'm running out of stuff to write on!\"";
- goto L_Close;
-
-L_Check_Materials:
- if (countitem("WispPowder") < @B0_WISPPOWDER ||
- countitem("PoltergeistPowder") < @B0_POLTERGEISTPOWDER ||
- countitem("SpectrePowder") < @B0_SPECTREPOWDER ||
- countitem("HardSpike") < @B0_HARDSPIKES)
- goto L_Missing_Materials;
-
- // check directly before deleting the objects.
- delitem "WispPowder", @B0_WISPPOWDER;
- delitem "PoltergeistPowder", @B0_POLTERGEISTPOWDER;
- delitem "SpectrePowder", @B0_SPECTREPOWDER;
- delitem "HardSpike", @B0_HARDSPIKES;
-
- mes "Orum carefully looks over all of the items then grins.";
- next;
- mes "[Orum]";
- mes "\"Well done! And you did not even take as long as I thought you would!\"";
- next;
- mes "Orum takes the hard spikes in his hand and begins chanting some words.";
- next;
- mes "You watch as they begin to mold together, glowing brightly. He sprinkles in the powder you gathered and presses his hands together.";
- misceffect sfx_magic_transmute;
- next;
- mes "Suddenly a feeling of dizzyness hits you and you begin to feel weightless... It passes after a moment...";
- misceffect sfx_magic_nature;
- misceffect 11, strcharinfo(0);
- next;
- mes "[Orum]";
- mes "\"Well we are both still in one piece so that is a good sign! Now we'll have to see if I did it right... mind going first?\"";
- goto L_Setup_Lair;
-
-L_Missing_Materials:
- mes "Orum carefully looks over all of the items then squints his eyes at you.";
- next;
- mes "[Orum]";
- mes "\"I'm not going to attempt this spell until I have ALL the items on this note. Go gather the missing materials!\"";
- goto L_Close;
-
-L_Setup_Lair:
- set OrumQuest, 2;
- callfunc "SetUpOrumQuest";
- goto L_Close;
-
-L_Use_First_Barrier:
- mes "[Orum]";
- mes "\"Casting that aura took a lot out of me. Why don't you go explore the cave a bit while I rest?\"";
- goto L_Close;
-
-L_Explore:
- mes "Orum looks up as you approach.";
- next;
- mes "[Orum]";
- mes "\"Find anything interesting in this place?\"";
- next;
- menu
- "Yep. A whole mess of torches!", L_Explain_Objective,
- "I'm not sure what to look for...", L_Explain_Objective,
- "Going to explore more, bye.", L_Leave2;
-
-L_Leave2:
- mes "[Orum]";
- mes "\"Be sure to let me know if you find anything. I've almost gained my energy back.\"";
- goto L_Close;
-
-L_Explain_Objective:
- mes "[Orum]";
- mes "\"I'm positive this is where that witch took Waric, so this cave must lead to somewhere. Try looking around for another exit. I've almost gained my energy back and then I can help.\"";
- goto L_Close;
-
-L_Found_Barriers:
- mes "Orum looks up as you approach.";
- next;
- mes "[Orum]";
- mes "\"Find anything interesting in this place?\"";
- menu
- "Yep. A whole mess of torches!", L_Explain_Objective,
- "I'm not sure what to look for...", L_Explain_Objective,
- "I found more barriers, but...", L_Explain_Barriers_More,
- "Going to explore more, bye.", L_Leave3;
-
-L_Leave3:
- mes "[Orum]";
- mes "\"Be sure to let me know if you find anything. I'm still gaining my energy back.\"";
- goto L_Close;
-
-L_Explain_Barriers_More:
- mes "[Orum]";
- mes "\"Hm let me guess... the aura is ineffective on the rest of the barriers here?\"";
- menu
- "How did you know?", L_Explain_Note_More,
- "I'm not sure, I'll go try again.", L_Next6;
-
-L_Next6:
- mes "[Orum]";
- mes "\"Always a good idea to double check things!\"";
- goto L_Close;
-
-L_Explain_Note_More:
- mes "[Orum]";
- mes "\"Well while I was resting I spent more time looking over the note that witch dropped. And I think the aura is only to get past the entrance.\"";
- next;
- mes "[Orum]";
- mes "\"It mentions some sort of security system to keep people from entering the actual lair but it doesn't explain in great detail. Try exploring more, maybe we will find some answers.\"";
- next;
- mes "Orum continues examining the note.";
- goto L_Close;
-
-L_Found_Torches:
- mes "Orum looks up as you approach.";
- next;
- mes "[Orum]";
- mes "\"Did you find something interesting?\"";
- next;
- menu
- "Yep. A whole mess of torches!", L_Explain_Objective,
- "I'm not sure what to look for...", L_Explain_Objective,
- "I found more barriers, but...", L_Explain_Barriers_More,
- "I found a strange torch by itself.", L_Explain_Torches,
- "Going to explore more, bye.", L_Leave4;
-
-L_Leave4:
- mes "[Orum]";
- mes "\"Be sure to let me know if you find anything new.\"";
- goto L_Close;
-
-L_Explain_Torches:
- mes "Orum has you direct him to the torch and he walks off to examine it before returning shortly after.";
- next;
- mes "[Orum]";
- mes "\"Ah yes! I was hoping we would find something like this!\"";
- next;
- mes "\"While examining the note I found another set of spells to create some type of powder and with them was a few notes on using it with some type of torch.\"";
- next;
- mes "\"I bet this torch has something to do with the rest of these barriers which are probably the security system this note mentions.\"";
- next;
- mes "\"We will probably need to transmute this powder before we can get any further past these barriers. Would you mind gathering a few more materials?\"";
- menu
- "It better be the last time.", L_Gather_More,
- "I'm done doing stuff for you!", L_Next61;
-
-L_Next61:
- mes "[Orum]";
- mes "\"I'm surprised you give up after we've gotten so far. Shame.\"";
- goto L_Close;
-
-L_Gather_More:
- mes "Orum begins writing down another list of materials.";
- next;
- mes @BT_IRONPOWDER + " Piles of Iron Powder,";
- mes @BT_PILESOFASH + " Piles of Sand or Ash,";
- mes @BT_HERBS + " Gamboge Herbs,";
- mes @BT_HERBS + " Alizarin Herbs,";
- mes @BT_HERBS + " Cobalt Herbs";
- menu
- "Yikes! I'll try...", L_Gathering_More,
- "No way! Too much stuff!", L_Next7;
-
-L_Next7:
- mes "[Orum]";
- mes "\"The note says to get these and I'm not going to attempt this spell until I have what the note says.\"";
- goto L_Close;
-
-L_Gathering_More:
- set OrumQuest, 7;
- mes "[Orum]";
- mes "\"Wonderful! Try to make it quick, we must save Waric!\"";
- goto L_Close;
-
-L_Still_Gathering:
- mes "[Orum]";
- mes "\"Have you finished gathering those things yet?\"";
- menu
- "I believe I have!", L_F_Gather_More,
- "I lost my list... again.", L_List_Materials_More,
- "I've almost got them all.", L_Next8;
-
-L_Next8:
- mes "[Orum]";
- mes "\"Don't make me remind you again! Warics life is on the line here! Hurry up!\"";
- goto L_Close;
-
-L_List_Materials_More:
- mes "He scavenges around in his pocket for another piece of paper then writes a new list.";
- next;
- mes @BT_IRONPOWDER + " Piles of Iron Powder,";
- mes @BT_PILESOFASH + " Piles of Sand or Ash,";
- mes @BT_HERBS + " Gamboge Herbs,";
- mes @BT_HERBS + " Alizarin Herbs,";
- mes @BT_HERBS + " Cobalt Herbs";
- next;
- mes "[Orum]";
- mes "\"And try not to lose this one. I don't have much more to write on!\"";
- goto L_Close;
-
-L_F_Gather_More:
- if (countitem("IronPowder") < @BT_IRONPOWDER ||
- countitem("PileOfAsh") < @BT_PILESOFASH ||
- countitem("GambogeHerb") < @BT_HERBS ||
- countitem("AlizarinHerb") < @BT_HERBS ||
- countitem("CobaltHerb") < @BT_HERBS)
- goto L_Missing_Mats_M;
-
- delitem "IronPowder", @BT_IRONPOWDER;
- delitem "PileOfAsh", @BT_PILESOFASH;
- delitem "GambogeHerb", @BT_HERBS;
- delitem "AlizarinHerb", @BT_HERBS;
- delitem "CobaltHerb", @BT_HERBS;
-
- mes "[Orum]";
- mes "\"Excellent work! And once again you did not take as long as I was expecting. I guess I will get started.\"";
- next;
- mes "You watch as Orum takes the iron powder and ash and begins chanting some words. The two start to glow and mold together turning into a light, metallic looking powder.";
- next;
- misceffect sfx_magic_transmute;
- mes "He then splits the powder into three piles and performs separate spells on each using the herbs. After he finishes you see 3 piles of colored metallic powder that appear to be red, yellow, and blue.";
- next;
- misceffect sfx_magic_transmute;
- mes "[Orum]";
- mes "\"Well if I did it right... These three powders are hopefully the key to getting past these barriers!\"";
- next;
- mes "\"I'm weary, I must take some time to rest. Why don't you go ahead and experiment with these powders on that torch and let me know if you figure what they have to do with it.\"";
-
- getitem "RedPowder", @BT_REWARDCOUNT;
- getitem "YellowPowder", @BT_REWARDCOUNT;
- getitem "BluePowder", @BT_REWARDCOUNT;
- set OrumQuest, 8;
- goto L_Close;
-
-L_Missing_Mats_M:
- mes "Orum carefully looks over all of the items then squints his eyes at you.";
- next;
- mes "[Orum]";
- mes "\"You really enjoy playing games with Warics life, don't you! Come back when you have ALL of the items I told you.\"";
- goto L_Close;
-
-L_Finish_Up:
- mes "Orum seems to be sitting around doing nothing as you approach.";
- next;
- mes "[Orum]";
- mes "\"Did you find a way past any of the barriers yet?\"";
- menu
- "No, I'm still not sure how.", L_Explain_Torches_More,
- "I need more of that powder.", L_More_Powder,
- "I'm still trying...", L_Next9;
-
-L_Next9:
- mes "[Orum]";
- mes "\"Excellent! Let me know when you've made any progress.\"";
- goto L_Close;
-
-L_Explain_Torches_More:
- mes "[Orum]";
- mes "\"Most of the barriers here have a certain color radiating from them and so do the torches. The torches seem to react with this powder so maybe we have to make these torches turn a certain color in order to lower the barriers.\"";
- next;
- mes "\"It seems that the powders are only in these 3 colors, so you may have to experiment a bit to get the colors right.\"";
- next;
- mes "\"Also while looking around I saw that behind one of the barriers was a cave. Maybe Waric is in there... we should try to get that barrier dropped.\"";
- goto L_Close;
-
-L_More_Powder:
- mes "[Orum]";
- mes "\"You really used up that powder fast. Luckily I can make more as long as you can bring me those materials again.\"";
- menu
- "I have them right here!", L_More_Powder_Make,
- "Hmmm... what are they again?", L_List_Materials_More,
- "I'll go get those for you.", L_Next10;
-
-L_Next10:
- mes "[Orum]";
- mes "\"You better not waste any time gathering those materials!\"";
- goto L_Close;
-
-L_More_Powder_Make:
- if (countitem("IronPowder") < @BT_IRONPOWDER ||
- countitem("PileOfAsh") < @BT_PILESOFASH ||
- countitem("GambogeHerb") < @BT_HERBS ||
- countitem("AlizarinHerb") < @BT_HERBS ||
- countitem("CobaltHerb") < @BT_HERBS)
- goto L_Missing_Mats_M;
-
- delitem "IronPowder", @BT_IRONPOWDER;
- delitem "PileOfAsh", @BT_PILESOFASH;
- delitem "GambogeHerb", @BT_HERBS;
- delitem "AlizarinHerb", @BT_HERBS;
- delitem "CobaltHerb", @BT_HERBS;
-
- mes "[Orum]";
- mes "\"Hmm all of the items appear to be here. Give me a moment to make that powder for you.\"";
- next;
- mes "Orum begins chanting the same words as he did when he made the powder before. He seems to be quicker this time.";
- misceffect sfx_magic_transmute;
- next;
- mes "[Orum]";
- mes "\"Here you are. And try to conserve this time! The more powder I have to make, the more time and resources we use up that we could be using to save Waric!\"";
-
- getitem "RedPowder", @BT_REWARDCOUNT;
- getitem "YellowPowder", @BT_REWARDCOUNT;
- getitem "BluePowder", @BT_REWARDCOUNT;
- goto L_Close;
-
-L_Finished_Up:
- mes "As you approch you think you see Orum rolling his eyes... maybe you're imagining it.";
- next;
- mes "[Orum]";
- mes "\"I hope you finally dropped that barrier we need to get past!\"";
- menu
- "Actually... I have!", L_Enter_Cavern,
- "I need more of that powder.", L_More_Powder,
- "Cut me some slack! I'm working on it!", L_Next11;
-
-L_Next11:
- mes "[Orum]";
- mes "\"Just hurry it up! Warics life is on the line here!\"";
- goto L_Close;
-
-L_Enter_Cavern:
- if (OrumQuest >= 10) goto L_Ready_Cavern;
-
- mes "Orum heads to the barrier then gives you a look as if he does not believe you before walking forward.";
- next;
- mes "He is suddenly thrown against the wall behind him! Angered, he gets up, brushes himself off, and heads back to the entrance without speaking.";
- goto L_Close;
-
-L_Ready_Cavern:
- // you should not get that twice ;)
- if (OrumQuest == 12) goto L_Got_Reward;
-
- mes "Orum heads to the barrier then gives you a look as if he does not believe you before walking forward.";
- next;
- mes "He makes it through without any problems and grins.";
- next;
- mes "[Orum]";
- mes "\"Very good work you have done! Please take this for your efforts. It has helped me in a bind.\"";
- next;
- getinventorylist;
- if ((checkweight("CandleHelmet", 1) == 0) || (@inventorylist_count == 100))
- goto L_Inventory;
- getexp @EXP_BREAK_BARRIERS, 0;
- getitem "CandleHelmet", 1;
- set OrumQuest, 12;
- mes "You receive the Candle Helmet.";
- next;
- mes "\"You've done enough here to help. I will go the rest of the way alone so that your life is not endangered. You must promise me not to go any further!\"";
- menu
- "Sure, I promise!", L_Next12,
- "I thought this would never be over!", L_Next12;
-
-L_Next12:
- mes "[Orum]";
- mes "\"Well I guess this is farewell!\"";
- goto L_Close;
-
-L_Inventory:
- mes "\"You're carrying too much. Come back to me after you got rid of some stuff. And hurry, I don't want to spent all day waiting on you.\"";
- goto L_Close;
-
-L_Got_Reward:
- mes "\"You've done enough here to help. I will go the rest of the way alone so that your life is not endangered.\"";
- goto L_Close;
-
-L_Close:
- set @B0_WISPPOWDER, 0;
- set @B0_POLTERGEISTPOWDER, 0;
- set @B0_SPECTREPOWDER, 0;
- set @B0_HARDSPIKES, 0;
-
- set @BT_IRONPOWDER, 0;
- set @BT_PILESOFASH, 0;
- set @BT_HERBS, 0;
-
- set @BT_REWARDCOUNT, 0;
-
- set @EXP_BREAK_BARRIERS, 0;
-
- set @Barrier, 0;
- set @BarrierColor, 0;
- set @Torch, 0;
- set @TorchColor, 0;
- close;
-}
-function|script|SetUpOrumQuest
-{
- // Second Barrier
- set @BarrierColor, 1 + rand(3) * 4;
- set @Barrier, 0;
- callfunc "SetBarrierColor";
-
- set @TorchIntensity, 0;
-
- set @Torch, 0;
- set @TorchColor, rand(1, 12);
- callfunc "SetTorchColor";
- callfunc "SetTorchIntensity";
-
- // Third Barrier
- set @BarrierColor, 3 + rand(3) * 4;
- set @Barrier, 1;
- callfunc "SetBarrierColor";
-
- set @Torch, 1;
- set @TorchColor, rand(1, 12);
- callfunc "SetTorchColor";
- callfunc "SetTorchIntensity";
-
- // End Barrier
- set @BarrierColor, 2 + rand(6) * 2;
- set @Barrier, 2;
- callfunc "SetBarrierColor";
-
- set @Torch, 2;
- set @TorchColor, rand(1, 12);
- callfunc "SetTorchColor";
- callfunc "SetTorchIntensity";
- return;
-}
diff --git a/world/map/npc/009-4/orum_warps.txt b/world/map/npc/009-4/orum_warps.txt
deleted file mode 100644
index 6353a14a..00000000
--- a/world/map/npc/009-4/orum_warps.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-009-3,162,113,0|script|#OrumQuestEnter|45,0,0
-{
- if (OrumQuest >= 12) goto L_Second_Entrance;
- warp "009-4", 37, 113;
- close;
-
-L_Second_Entrance:
- warp "009-4", 72, 126;
- close;
-}
-009-4,36,26,0|script|#LairExit|45,0,0
-{
- if (OrumQuest >= 12) goto L_Second_Entrance;
- warp "009-4", 37, 122;
- close;
-
-L_Second_Entrance:
- warp "009-4", 72, 135;
- close;
-}
-
-009-4,51,47,0|script|#CavernEnter|45,0,0
-{
- if (OrumQuest >= 14) goto L_Second_Cavern;
- if (OrumQuest < 12) goto L_See_Orum;
- warp "009-4", 103, 23;
- close;
-
-L_Second_Cavern:
- warp "009-4", 103, 77;
- close;
-
-L_See_Orum:
- mes "Right as you are entering you hear Orum call out for you. Perhaps you should see what he wants first.";
- close;
-}
diff --git a/world/map/npc/009-4/torches.txt b/world/map/npc/009-4/torches.txt
deleted file mode 100644
index 0164acd4..00000000
--- a/world/map/npc/009-4/torches.txt
+++ /dev/null
@@ -1,299 +0,0 @@
-//# see detailed description at orum.txt
-function|script|GetTorchColor
-{
- if (@Torch < 0 || @Torch > 2) goto L_Error;
-
- set @Mask, 15;
- set @shift, 4 * @Torch;
- set @TorchColor, (OrumQuestTorch >> @shift) & @Mask;
- return;
-
-L_Error:
- mes "Torch number is out of range.";
- close2;
- return;
-}
-
-function|script|SetTorchColor
-{
- if (@Torch < 0 || @Torch > 2) goto L_Error;
- if (@TorchColor < 1 || @TorchColor > 12) goto L_Error2;
-
- set @Mask, (15 << (4 * @Torch));
- set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @TorchColor << (4 * @Torch);
- return;
-
-L_Error:
- mes "Torch number is out of range.";
- close2;
- return;
-
-L_Error2:
- mes "Torch color is out of range.";
- close2;
- return;
-}
-
-function|script|GetTorchIntensity
-{
- if (@Torch < 0 || @Torch > 2) goto L_Error;
-
- set @Mask, 15;
- set @shift, 4 * (@Torch + 3);
- set @TorchIntensity, (OrumQuestTorch >> @shift) & @Mask;
- return;
-
-L_Error:
- mes "Torch number is out of range.";
- close2;
- return;
-}
-
-function|script|SetTorchIntensity
-{
- if (@Torch < 0 || @Torch > 2) goto L_Error;
- if (@TorchIntensity < 0 || @TorchIntensity > 2) goto L_Error2;
-
- set @Mask, (15 << (4 * (@Torch + 3)));
- set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @TorchIntensity << (4 * (@Torch + 3));
- return;
-
-L_Error:
- mes "Torch number is out of range.";
- close2;
- return;
-
-L_Error2:
- mes "Torch intensity is out of range.";
- close2;
- return;
-}
-
-function|script|DoneWithTorches
-{
- if (OrumQuest < 11 && OrumQuest >= 8)
- goto L_Return;
-
- if (OrumQuest < 7) goto L_Different;
-
- if (OrumQuest >= 11)
- mes "The flame on the torch looks ordinary. Lowering the final barrier seems to have drained them of their magic.";
-
- if (OrumQuest < 8)
- mes "Without that powder the note mentions there isn't much you can do with this torch.";
- close2;
- goto L_Return;
-
-L_Different:
- mes "The flame on this torch looks different than the rest. You better tell Orum about it before doing anything.";
- set OrumQuest, 6;
- close2;
- goto L_Return;
-
-L_Return:
- return;
-}
-
-function|script|TorchLoop
-{
- // Variables used here:
- // @Torch - pass before calling
- // @TorchColor - initialized here, updated throughout
- // @TorchIntensity - initialized here, updated throughout
- callfunc "GetTorchColor";
- callfunc "GetTorchIntensity";
-
- setarray @colors$, "transparent",
- "red", "dark orange", "orange", "light orange",
- "yellow", "light green", "green", "dark green",
- "blue", "dark purple", "purple", "light purple";
- setarray @intensities$, "calm", "bright", "blinding";
- mes "Looking closely you notice that this torch is not like the others. This one has a " + @intensities$[@TorchIntensity] + " ##B" + @colors$[@TorchColor] + "##b tint to it.";
- goto L_Color_Loop;
-
-L_Color_Loop:
- menu
- "Add Red Powder", L_Use_Red,
- "Add Yellow Powder", L_Use_Yellow,
- "Add Blue Powder", L_Use_Blue,
- "Leave it alone.", L_Leave;
-
-L_Leave:
- mes "The flame flickers as if it's laughing at you.";
- close2;
- return;
-
-L_Use_Red:
- if (countitem("RedPowder") < 1)
- goto L_No_Powder;
- delitem "RedPowder", 1;
-
- // 0 1 2 3 4 5 6 7 8 9 a b c
- // T R o Y g B p
- // ^ < < < < , X . > > > >
- if (@TorchColor == 1)
- goto L_WrongColor;
- if (2 <= @TorchColor && @TorchColor <= 5)
- goto L_Color_Dec;
- if (@TorchColor == 6)
- goto L_Color_Dec_Wrong;
- if (@TorchColor == 7)
- goto L_WrongColor;
- if (@TorchColor == 8)
- goto L_Color_Inc_Wrong;
- if (9 <= @TorchColor && @TorchColor <= 12)
- goto L_Color_Inc;
-
- // work around an old bug
- if (@TorchColor == 0)
- set @TorchColor, 1;
- goto L_Show_Color;
-
-L_Use_Yellow:
- if (countitem("YellowPowder") < 1)
- goto L_No_Powder;
- delitem "YellowPowder", 1;
-
- // 0 1 2 3 4 5 6 7 8 9 a b c
- // T R o Y g B p
- // > > > > ^ < < < < , X .
- if (1 <= @TorchColor && @TorchColor <= 4)
- goto L_Color_Inc;
- if (@TorchColor == 5)
- goto L_WrongColor;
- if (6 <= @TorchColor && @TorchColor <= 9)
- goto L_Color_Dec;
- if (@TorchColor == 10)
- goto L_Color_Dec_Wrong;
- if (@TorchColor == 11)
- goto L_WrongColor;
- if (@TorchColor == 12)
- goto L_Color_Inc_Wrong;
-
- // work around an old bug
- if (@TorchColor == 0)
- set @TorchColor, 5;
- goto L_Show_Color;
-
-L_Use_Blue:
- if (countitem("BluePowder") < 1)
- goto L_No_Powder;
- delitem "BluePowder", 1;
-
- // 0 1 2 3 4 5 6 7 8 9 a b c
- // T R o Y g B p
- // < , X . > > > > ^ < < <
- if (@TorchColor == 1)
- goto L_Color_Dec;
- if (@TorchColor == 2)
- goto L_Color_Dec_Wrong;
- if (@TorchColor == 3)
- goto L_WrongColor;
- if (@TorchColor == 4)
- goto L_Color_Inc_Wrong;
- if (5 <= @TorchColor && @TorchColor <= 8)
- goto L_Color_Inc;
- if (@TorchColor == 9)
- goto L_WrongColor;
- if (10 <= @TorchColor && @TorchColor <= 12)
- goto L_Color_Dec;
-
- // work around an old bug
- if (@TorchColor == 0)
- set @TorchColor, 9;
- goto L_Show_Color;
-
-L_No_Powder:
- mes "You notice you're all out of that color of powder. Perhaps Orum can make you some more.";
- close2;
- return;
-
-L_Color_Dec:
- set @TorchColor, @TorchColor - 1;
- if (@TorchColor == 0)
- set @TorchColor, 12;
- goto L_Show_Color;
-
-L_Color_Dec_Wrong:
- set @TorchColor, @TorchColor - 1;
- if (@TorchColor == 0)
- set @TorchColor, 12;
- goto L_WrongColor;
-
-L_Color_Inc_Wrong:
- set @TorchColor, @TorchColor + 1;
- if (@TorchColor == 13)
- set @TorchColor, 1;
- goto L_WrongColor;
-
-L_Color_Inc:
- set @TorchColor, @TorchColor + 1;
- if (@TorchColor == 13)
- set @TorchColor, 1;
- goto L_Show_Color;
-
-L_Show_Color:
- callfunc "SetTorchColor";
- misceffect 5;
- mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " ##B" + @colors$[@TorchColor] + "##b.";
- goto L_Color_Loop;
-
-L_WrongColor:
- callfunc "SetTorchColor";
- set @TorchIntensity, @TorchIntensity + 1;
- if (@TorchIntensity > 2)
- goto L_Failed;
- callfunc "SetTorchIntensity";
- misceffect 5;
- mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " ##B" + @colors$[@TorchColor] + "##b.";
- goto L_Color_Loop;
-
-L_Failed:
- mes "As you pour the powder into the flame it flares violently before bursting into your face!";
- misceffect 5;
- misceffect 16;
- set @TorchIntensity, 0;
- callfunc "SetTorchIntensity";
- heal -Hp, 0;
- close2;
- return;
-}
-
-// First Torch
-009-4,68,21,0|script|Torch#1|400
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "DoneWithTorches";
-
- set @Torch, 0;
- callfunc "TorchLoop";
- // unreachable
- end;
-}
-
-// Second Torch
-009-4,67,42,0|script|Torch#2|400
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "DoneWithTorches";
-
- set @Torch, 1;
- callfunc "TorchLoop";
- // unreachable
- end;
-}
-
-// Third Torch
-009-4,33,86,0|script|Torch#3|400
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "DoneWithTorches";
-
- set @Torch, 2;
- callfunc "TorchLoop";
- // unreachable
- end;
-}
diff --git a/world/map/npc/009-4/waric.txt b/world/map/npc/009-4/waric.txt
deleted file mode 100644
index aa366318..00000000
--- a/world/map/npc/009-4/waric.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-//# see detailed description at orum.txt
-
-009-4,99,33,0|script|#WizardTrap|32767,2,1
-{
- mes "As you explore further into the cave you see a figure looking at you who appears angry. But as you begin to speak, he quickly chants some words and you start to lose conciousness!";
- next;
- warp "009-4", 117, 40;
- mes "When you awake you find yourself unable to move. You seem to be held in place by something. As your eyes regain focus you see Orum talking with the figure you saw earlier. Orum looks over at you and mumbles.";
- mes "";
- mes "[Orum]";
- mes "\"Be quiet Waric... They're awake...\"";
- close;
-}
-
-009-4,120,43,0|script|Orum#trap|158
-{
- mes "[Orum]";
- mes "\"I told you to forget about this place but you did not heed my advice!\"";
- next;
- mes "\"Your fate is up to Waric now... don't expect me to do anything else for you.\"";
- close;
-}
-
-009-4,118,42,0|script|Waric#trap|153
-{
- set @EXP_LEARNED_ALOT, 10000;
- if (OrumQuest >= 13)
- goto L_Behave;
- mes "Waric looks toward you rubbing his chin...";
- next;
- mes "[Waric]";
- mes "\"So... Orum tells me your the one that helped him break me out of this dreadful place, so I guess I must thank you for that.\"";
- menu
- "My pleasure! Mind letting me out of here?", L_Explain,
- "This doesn't look like a thank you!", L_Explain,
- "Let me out of here at once!", L_Next;
-
-L_Next:
- mes "Waric turns toward Orum.";
- next;
- mes "[Waric]";
- mes "\"We've got a feisty one here, Orum!\"";
- next;
- mes "They begin discussing plans of some sort...";
- set OrumQuest, 13;
- goto L_Close;
-
-L_Behave:
- mes "Waric looks toward you shaking his finger.";
- next;
- mes "[Waric]";
- mes "\"So... are you ready to behave yourself now?\"";
- menu
- "Yes mister...", L_Explain,
- "Let me out here!", L_Next1;
-
-L_Next1:
- mes "[Waric]";
- mes "\"Having fun I take it?\"";
- next;
- mes "They continue discussing their plans.";
- goto L_Close;
-
-L_Explain:
- mes "[Waric]";
- mes "\"I'm not sure what Orum told you but I was not kidnapped and brought here. I was in fact imprisoned here very long ago by a witch for practicing spells on the insignificant forest life.\"";
- next;
- mes "\"She cared about the forest and all of that stuff you see. Now this cave is not bad... I actually enjoyed it the first nights, but after a few years...\"";
- next;
- mes "Waric gets a bitter look and his face and pauses for a moment.";
- next;
- mes "[Waric]";
- mes "\"So now you can see my motive to get out of here. The only air and water I get is what's given to me through that cave over there. And as for food... theres only so many recipes for cave snakes and silk worms.\"";
- next;
- mes "Waric shivers in disgust.";
- next;
- mes "[Waric]";
- mes "\"I'm sorry I had to constrain you like this but now that I'm free, I'm not about to let anyone stand in my way!\"";
- next;
- mes "\"Now if you'll excuse us, Orum and I have some things to attend to. And don't bother coming back to stop us because we'll be long gone.\"";
- next;
- mes "Waric raises his hands and begins chanting some words. You watch as streams of energy begin swirling around you.";
- next;
- mes "Once more you start to lose conciousness as your surroundings begin to fade...";
- next;
- set OrumQuest, 14;
- misceffect 10;
- warp "008-1", 65, 90;
- getexp @EXP_LEARNED_ALOT, 0;
- mes "You awake on your back with a squirrel sitting on top of you arranging it's acorns. It quickly gathers them up and runs off as it sees you looking at it them.";
- monster "008-1", 65, 90, "", 1038, 1;
- goto L_Close;
-
-L_Close:
- set @EXP_LEARNED_ALOT, 0;
- close;
-}
diff --git a/world/map/npc/009-5/_import.txt b/world/map/npc/009-5/_import.txt
deleted file mode 100644
index fe3f3fff..00000000
--- a/world/map/npc/009-5/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 009-5: Last man standing
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-5
-npc: npc/009-5/_mobs.txt
-npc: npc/009-5/_nodes.txt
-npc: npc/009-5/_warps.txt
-npc: npc/009-5/mapflags.txt
diff --git a/world/map/npc/009-5/_mobs.txt b/world/map/npc/009-5/_mobs.txt
deleted file mode 100644
index 7e4d996a..00000000
--- a/world/map/npc/009-5/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Last man standing mobs
-
diff --git a/world/map/npc/009-5/_nodes.txt b/world/map/npc/009-5/_nodes.txt
deleted file mode 100644
index 9f0d888e..00000000
--- a/world/map/npc/009-5/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Last man standing nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-5/_warps.txt b/world/map/npc/009-5/_warps.txt
deleted file mode 100644
index 008ddc6e..00000000
--- a/world/map/npc/009-5/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Last man standing warps
-
-009-5,53,74|warp|1,-1,009-3,162,81
diff --git a/world/map/npc/009-5/mapflags.txt b/world/map/npc/009-5/mapflags.txt
deleted file mode 100644
index c654d851..00000000
--- a/world/map/npc/009-5/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-009-5|mapflag|nosave|009-3,162,82
diff --git a/world/map/npc/009-6/_import.txt b/world/map/npc/009-6/_import.txt
deleted file mode 100644
index 3bb23125..00000000
--- a/world/map/npc/009-6/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 009-6: Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-6
-npc: npc/009-6/_mobs.txt
-npc: npc/009-6/_nodes.txt
-npc: npc/009-6/_warps.txt
-npc: npc/009-6/brodomir.txt
-npc: npc/009-6/mapflags.txt
diff --git a/world/map/npc/009-6/_mobs.txt b/world/map/npc/009-6/_mobs.txt
deleted file mode 100644
index c03fd729..00000000
--- a/world/map/npc/009-6/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cave mobs
-
diff --git a/world/map/npc/009-6/_nodes.txt b/world/map/npc/009-6/_nodes.txt
deleted file mode 100644
index ed02d5dc..00000000
--- a/world/map/npc/009-6/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-6/_warps.txt b/world/map/npc/009-6/_warps.txt
deleted file mode 100644
index 56954e92..00000000
--- a/world/map/npc/009-6/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cave warps
-
-009-6,36,48|warp|-1,-1,009-3,162,82
diff --git a/world/map/npc/009-6/brodomir.txt b/world/map/npc/009-6/brodomir.txt
deleted file mode 100644
index ea73ac36..00000000
--- a/world/map/npc/009-6/brodomir.txt
+++ /dev/null
@@ -1,266 +0,0 @@
-// Last Man Standing PvP Event NPC
-// Authors: tux9th, Jenalya
-// many thanks to Jenalaya, o11c, Ablu:*)
-// CAVE: this script requires a patch by o11c that makes it possible for
-// getareausers to check if players are alive or dead.
-
-// Global Variables:
-// $@BRODOMIR_PVP_STATUS:
-// 1 if players are waiting to be warped into the fight cave
-// 2 if fight is in progress
-// $@BRODOMIR_START_TIME:
-// time when the players will be warped into the fight cave
-// $@BRODOMIR_PLAYERS: number of players taking part in the event
-
-// $@BRODOMIR_ITEM$: Item that was given by the sponsor as prize
-// $@BRODOMIR_ITEM_AMOUNT: Amount of prize items
-// $@BRODOMIR_SPONSOR: player ID of sponsor that gave the item
-
-// $@BRODOMIR_MONEY: Amount of money given by the sponsor
-
-009-6,36,40,0|script|Brodomir|116
-{
- set @brodomir_money, 0;
- set @brodomir_item_amount, 0;
- set @brodomir_item$, "";
-
- if ($@BRODOMIR_PVP_STATUS == 2)
- goto L_Alreadystarted;
- if ($@BRODOMIR_PVP_STATUS == 1 && $@BRODOMIR_START_TIME > gettimetick(2))
- goto L_Wait;
- mes "[Brodomir]";
- mes "\"Hi Warrior.\"";
- mes "\"Do you know me? I'm pretty old and I have never been good with faces?\"";
- menu
- "Yes of course! Don't you remember me?", L_Shorttalk,
- "No, who are you?", L_Longtalk,
- "I don't want to know you!", L_Close;
-
-L_Longtalk:
- mes "[Brodomir]";
- mes "\"I'm Brodomir\"";
- mes "Brodomir sighs.";
- mes "\"Once I as well was a powerful warrior. It's been quite a while. But before that I was a miner in Tonori. I can still remember it very good. The Earth was shaking for hours and everything was torn apart. Many many of my friends and beloved ones were devoured by the crevasses which opened up. It was horrific and I am very lucky to have survived that.\"";
- next;
- mes "\"Then everything was pure chaos and I had to fight to survive. We had hardly anything to eat, therefore the strongest survived. I turned out to be a very good warrior. I fought hard. When I felt strong enough to defend others I created a school of martial arts. I took in the weak and tended to them and made them stronger.\"";
- next;
- mes "\"I trained them to fight with all weapons and how to fight bare handed. Taught them how to make their own weapons and what could be used as a weapon. Those were dark times. I'm happy that those times are over and you do not have to live through it.\"";
- next;
- mes "\"When my shelter was no longer required I started to wander around. Now I ended up here old and wrinkly. I'm only able to drive away those weak creatures who try to enter my home all the time. Slowly they learn to leave me alone or I'll squish them.\"";
- next;
- mes "\"I am sorry but I cannot teach you anything anymore. I am too old. But I am still quite good with my pickaxe and I made a cave where you can fight against your friends.\"";
- mes "\"The only things you need is to sponsor some prize money and at least two of your friends. If you pay me I will give you about five minutes and after that I will bring you to the cave where you can fight. I will reward the winner. Do you want to give it a shot?\"";
- goto L_Menu;
-
-L_Shorttalk:
- mes "Well... I'm sorry I cannot remember. I'm old. I hope you can forgive me. Well then. Do you want to fight with your friends in my cave? All you need is to sponsor some prize money and at least two of your friends.";
- goto L_Menu;
-
-L_Menu:
- menu
- "No.", L_Exit,
- "Yes.", L_Pay,
- "I'd like this item to be the prize.", L_Item;
-
-L_Exit:
- mes "[Brodomir]";
- mes "\"Okay, you can come back anytime.\"";
- goto L_Close;
-
-L_Item:
- mes "[Brodomir]";
- mes "\"Ok, which item?\"";
- mes "Make sure to spell correctly and if the item name contains whitespaces, leave them out.";
- input @brodomir_item$;
- mes "[Brodomir]";
- mes "\"And how many?\"";
- input @brodomir_item_amount;
- if (@brodomir_item_amount < 1)
- goto L_Fool;
- mes "[Brodomir]";
- mes "\"So the prize should be " + @brodomir_item_amount + " " + @brodomir_item$ + "?\"";
- mes "\"In case there aren't enough people to start the fight, I'll try to give it back to you. If you're not here then... well, then I'll keep it for myself.\"";
- menu
- "Ok.", L_Next,
- "No, you missunderstood me.", L_Item,
- "I changed my mind, forget it.", L_Close;
-
-L_Next:
- if ($@BRODOMIR_PVP_STATUS == 1)
- goto L_Wait;
- if (countitem(@brodomir_item$) < @brodomir_item_amount)
- goto L_NoItem;
-
- // we need this loop because for items that can't be stacked, delitem can only delete a single one
- set @loopcounter, @brodomir_item_amount;
- goto L_Delitem;
-
-L_Delitem:
- delitem @brodomir_item$, 1;
- set @loopcounter, @loopcounter - 1;
- if (@loopcounter > 0)
- goto L_Delitem;
-
- set $@BRODOMIR_SPONSOR, getcharid(3);
- goto L_Go;
-
-L_NoItem:
- mes "[Brodomir]";
- mes "\"Hey, you don't have " + @brodomir_item_amount + " " + @brodomir_item$ + "!\"";
- goto L_Close;
-
-L_Fool:
- mes "[Brodomir]";
- mes "\"Are you trying to fool me? Come back when you're more serious.\"";
- goto L_Close;
-
-L_Pay:
- mes "[Brodomir]";
- mes "\"How much money do you want to sponsor as prize? It should be at least 5000GP.\"";
- input @brodomir_money;
- if (@brodomir_money < 5000)
- goto L_TooCheap;
- if ($@BRODOMIR_PVP_STATUS == 1)
- goto L_Wait;
- if (Zeny < @brodomir_money)
- goto L_NotEnoughMoney;
- set Zeny, Zeny - @brodomir_money;
- goto L_Go;
-
-L_Go:
- set $@BRODOMIR_ITEM$, @brodomir_item$;
- set $@BRODOMIR_ITEM_AMOUNT, @brodomir_item_amount;
- set $@BRODOMIR_MONEY, @brodomir_money;
- set $@brodomir_delay_seconds, 600;
- set $@BRODOMIR_START_TIME, gettimetick(2) + $@brodomir_delay_seconds;
- set $@BRODOMIR_PVP_STATUS, 1;
- announce "Brodomir : In "+$@brodomir_delay_seconds/60+" minutes, I will start a PvP tournament, if at least 3 fighters are present. Make your way in Hurnscald Underground Caves!", 0;
- if ($@BRODOMIR_ITEM_AMOUNT > 0)
- announce "Brodomir : The winner will receive 150GP per fighter and " + $@BRODOMIR_ITEM_AMOUNT + " " + $@BRODOMIR_ITEM$ + ".", 0;
- if ($@BRODOMIR_MONEY > 0)
- announce "Brodomir : The winner will receive " + $@BRODOMIR_MONEY + "GP and additionally 150GP per fighter.", 0;
- mes "[Brodomir]";
- mes "\"In "+$@brodomir_delay_seconds/60+" minutes I will bring you all to the PvP cave. If there are less than 3 players here the event will not start and your money will be lost.\"";
- set $@brodomir_delay_seconds, 0;
- initnpctimer;
- goto L_Close;
-
-L_Wait:
- set @seconds, $@BRODOMIR_START_TIME - gettimetick(2);
- callfunc "HumanTime";
- mes "[Brodomir]";
- mes "\"Just a little longer. I will bring you there in " + @time$ + ".\"";
- goto L_Close;
-
-OnTimer5000:
- setnpctimer 0;
- if ($@BRODOMIR_PVP_STATUS > 1)
- goto L_Check;
- if (gettimetick(2) >= $@BRODOMIR_START_TIME)
- goto L_Warp;
- end;
-
-L_Warp:
- if (getareausers("009-6", 20, 20, 80, 80, 1) < 3)
- goto L_Warpfail;
- set $@BRODOMIR_PVP_STATUS, $@BRODOMIR_PVP_STATUS + 1;
- set $@BRODOMIR_PLAYERS, getareausers("009-6", 20, 20, 80, 80, 1);
- mapwarp "009-6", "009-5", 0, 0;
- mapannounce "009-5", "Brodomir : PvP On!", 0;
- pvpon "009-5";
- end;
-
-L_Warpfail:
- mapannounce "009-6", "Brodomir : There are not enough players around to start!", 0;
- if ($@BRODOMIR_ITEM_AMOUNT == 0 || $@BRODOMIR_ITEM$ == "")
- goto L_Cleanup;
- if (attachrid($@BRODOMIR_SPONSOR) == 0)
- goto L_SkipItemback;
- // we need this loop because for items that can't be stacked, getitem will stack them nevertheless
- goto L_GetitemLoop;
-
-L_GetitemLoop:
- getitem $@BRODOMIR_ITEM$, 1;
- set $@BRODOMIR_ITEM_AMOUNT, $@BRODOMIR_ITEM_AMOUNT - 1;
- if ($@BRODOMIR_ITEM_AMOUNT > 0)
- goto L_GetitemLoop;
- goto L_SkipItemback;
-
-L_SkipItemback:
- set $@BRODOMIR_ITEM_AMOUNT, 0;
- set $@BRODOMIR_ITEM$, "";
- set $@BRODOMIR_SPONSOR, 0;
- goto L_Cleanup;
-
-L_Check:
- if (getareausers("009-5", 20, 20, 80, 80, 1) > 1)
- end;
- areatimer 0, "009-5", 20, 20, 80, 80, 0, "Brodomir::OnReward";
- goto L_End;
-
-OnReward:
- if (isdead())
- goto L_Dead;
- message strcharinfo(0), "Congratulations you won!";
- set Zeny, Zeny + ($@BRODOMIR_MONEY + 150 * $@BRODOMIR_PLAYERS);
- if ($@BRODOMIR_ITEM_AMOUNT == 0 || $@BRODOMIR_ITEM$ == "")
- goto L_SkipItem;
- // we need this loop because for items that can't be stacked, getitem will stack them nevertheless
- goto L_Getitem;
-
-L_Getitem:
- getitem $@BRODOMIR_ITEM$, 1;
- set $@BRODOMIR_ITEM_AMOUNT, $@BRODOMIR_ITEM_AMOUNT - 1;
- if ($@BRODOMIR_ITEM_AMOUNT > 0)
- goto L_Getitem;
- goto L_SkipItem;
-
-L_SkipItem:
- set $@BRODOMIR_ITEM$, "";
- set $@BRODOMIR_SPONSOR, 0;
- set $@BRODOMIR_MONEY, 0;
- set $@BRODOMIR_PLAYERS, 0;
- end;
-
-L_Dead_Duels:
- set DUELS, DUELS &~ $@DuelPvpBit;
- warp "009-7", 39, 37;
- end;
-
-L_Dead:
- if(DUELS & $@DuelPvpBit) goto L_Dead_Duels;
- warp "009-3", 155,83;
- end;
-
-L_End:
- mapwarp "009-5", "009-6", 36, 42;
- goto L_Cleanup;
-
-L_Alreadystarted:
- mes "[Brodomir]";
- mes "\"Please wait until the cave is clear again.\"";
- goto L_Close;
-
-L_NotEnoughMoney:
- mes "[Brodomir]";
- mes "\"You don't have enough money.\"";
- goto L_Close;
-
-L_TooCheap:
- mes "[Brodomir]";
- mes "\"That's too cheap as a prize.\"";
- goto L_Close;
-
-L_Cleanup:
- pvpoff "009-5";
- set $@BRODOMIR_PVP_STATUS , 0;
- set $@BRODOMIR_START_TIME, 0;
- stopnpctimer;
- end;
-
-L_Close:
- set @brodomir_money, 0;
- set @brodomir_item_amount, 0;
- set @brodomir_item$, "";
- close;
-}
diff --git a/world/map/npc/009-6/mapflags.txt b/world/map/npc/009-6/mapflags.txt
deleted file mode 100644
index 22c55741..00000000
--- a/world/map/npc/009-6/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-009-6|mapflag|nosave|009-3,162,82
diff --git a/world/map/npc/009-7/_import.txt b/world/map/npc/009-7/_import.txt
deleted file mode 100644
index a612f080..00000000
--- a/world/map/npc/009-7/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 009-7: The Sanguine Vault
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-7
-npc: npc/009-7/_mobs.txt
-npc: npc/009-7/_nodes.txt
-npc: npc/009-7/_warps.txt
-npc: npc/009-7/battlemaster.txt
-npc: npc/009-7/eventHandler.txt
-npc: npc/009-7/shops.txt
diff --git a/world/map/npc/009-7/_mobs.txt b/world/map/npc/009-7/_mobs.txt
deleted file mode 100644
index 5eb4c228..00000000
--- a/world/map/npc/009-7/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Sanguine Vault mobs
-
diff --git a/world/map/npc/009-7/_nodes.txt b/world/map/npc/009-7/_nodes.txt
deleted file mode 100644
index ad714a60..00000000
--- a/world/map/npc/009-7/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Sanguine Vault nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-7/_warps.txt b/world/map/npc/009-7/_warps.txt
deleted file mode 100644
index dd129692..00000000
--- a/world/map/npc/009-7/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Sanguine Vault warps
-
-009-7,21,19|warp|-1,-1,009-2,38,104
diff --git a/world/map/npc/009-7/battlemaster.txt b/world/map/npc/009-7/battlemaster.txt
deleted file mode 100644
index c7316913..00000000
--- a/world/map/npc/009-7/battlemaster.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-009-7,40,35,0|script|Battle Master#Duels|322
-{
- if($SANGUINE & $@SV_BMDBit != 0) goto L_Disabled;
- mes "[Battle Master]";
- mes "\"Hey, you seem tough enough! Would you like to prove your skills?\"";
- next;
- menu
- "PvP Cave (50gp)", L_Pvp,
- "Last Man Standing (150gp)", L_Brodomir,
- "Nevermind.", L_Next;
-
-L_Disabled:
- mes "[Battle Master]";
- mes "I am busy, come back later.";
- close;
-
-L_Next:
- mes "[Battle Master]";
- mes "\"Ha ha, coward.\"";
- close;
-
-L_Brodomir:
- if (Zeny < 150) goto L_NoMoney;
- set Zeny, Zeny - 150;
- mes "[Battle Master]";
- mes "\"Get ready!\"";
- close2;
- set DUELS, DUELS | $@DuelPvpBit; // tell the arena to send the player back here when he exits
- warp "009-6", 33, 37;
- savepoint "009-7", 39, 37;
- end;
-
-L_Pvp:
- if (Zeny < 50) goto L_NoMoney;
- set Zeny, Zeny - 50;
- mes "[Battle Master]";
- mes "\"Get ready!\"";
- close2;
- set DUELS, DUELS | $@DuelPvpBit; // tell the arena to send the player back here when he dies
- warp "001-3", 0, 0;
- savepoint "009-7", 39, 37;
- end;
-
-L_NoMoney:
- mes "\"Wait a second, you don't have enough money.\"";
- close;
-}
-
-
-// death and exit handlers below
-
-function|script|fightclub_GoBack
-{
- set @Duel_PVP, DUELS & $@DuelPvpBit;
- if(@Duel_PVP != 0) goto L_GoBack;
- return;
-
-L_GoBack:
- set DUELS, DUELS &~ $@DuelPvpBit;
- warp "009-7", 39, 37;
- heal MaxHp, MaxSp;
- message strcharinfo(0), "Thank you for participating!";
- return;
-}
-009-6,36,48,0|script|#GoBack2Duels|32767,0,1
-{
- callfunc "fightclub_GoBack";
- end;
-}
-009-5,53,74,0|script|#GoBack3Duels|32767,3,1
-{
- callfunc "fightclub_GoBack";
- end;
-}
-009-3,158,83,0|script|#GoBack5Duels|32767,7,0
-{
- callfunc "fightclub_GoBack";
- end;
-}
-
-
-001-2,130,22,0|script|#GoBack4Duels|32767,1,1
-{
- callfunc "fightclub_GoBack";
- end;
-}
-001-3,73,28,0|script|#GoBack1Duels|32767,0,1
-{
- callfunc "fightclub_GoBack";
- end;
-}
diff --git a/world/map/npc/009-7/eventHandler.txt b/world/map/npc/009-7/eventHandler.txt
deleted file mode 100644
index 421cefed..00000000
--- a/world/map/npc/009-7/eventHandler.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-009-7,45,33,0|script|#trapdoor2FightClub|327,0,0
-{
- if(countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20)) goto L_Enter;
- end;
-
-L_Enter:
- warp "009-7",34,22; // this warp is a special thanks for contributors
- end;
-}
-
-009-7,33,21,0|script|#trapdoor3FightClub|327,0,0
-{
- warp "009-7",44,32;
- end;
-}
diff --git a/world/map/npc/009-7/shops.txt b/world/map/npc/009-7/shops.txt
deleted file mode 100644
index ff33b313..00000000
--- a/world/map/npc/009-7/shops.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-009-7,34,23,0|shop|Bartender#Duels|177,Beer:*1,IronPotion:*1,ConcentrationPotion:*1,BottleOfWater:*1,Milk:*1
-
-009-7,27,26,0|shop|Garcon#Duels|180,RoastedMaggot:*1,PickledBeets:*30,ChickenLeg:*1,Steak:*1,Beer:*1
diff --git a/world/map/npc/009-8/_import.txt b/world/map/npc/009-8/_import.txt
deleted file mode 100644
index 315f39b2..00000000
--- a/world/map/npc/009-8/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 009-8: Chez Celestia
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 009-8
-npc: npc/009-8/_mobs.txt
-npc: npc/009-8/_nodes.txt
-npc: npc/009-8/_warps.txt
-npc: npc/009-8/celestia.txt
-npc: npc/009-8/mapflags.txt
diff --git a/world/map/npc/009-8/_mobs.txt b/world/map/npc/009-8/_mobs.txt
deleted file mode 100644
index af8e2169..00000000
--- a/world/map/npc/009-8/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Chez Celestia mobs
-
diff --git a/world/map/npc/009-8/_nodes.txt b/world/map/npc/009-8/_nodes.txt
deleted file mode 100644
index 0dd108da..00000000
--- a/world/map/npc/009-8/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Chez Celestia nodes
-
-// (no nodes)
diff --git a/world/map/npc/009-8/_warps.txt b/world/map/npc/009-8/_warps.txt
deleted file mode 100644
index e3e8d45c..00000000
--- a/world/map/npc/009-8/_warps.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Chez Celestia warps
-
-009-8,26,122|warp|-1,-1,009-1,74,50
-009-8,22,134|warp|-1,-1,009-1,72,54
-009-8,56,55|warp|0,-1,069-2,44,127
-009-8,53,40|warp|-1,-1,069-2,97,127
-009-8,58,40|warp|-1,-1,069-2,116,127
-009-8,79,99|warp|-1,-1,069-2,117,61
-009-8,87,78|warp|-1,-1,069-2,86,61
-009-8,87,56|warp|-1,-1,069-2,55,61
-009-8,79,39|warp|-1,-1,069-2,24,61
-009-8,33,39|warp|-1,-1,069-2,117,30
-009-8,24,56|warp|-1,-1,069-2,86,30
-009-8,24,78|warp|-1,-1,069-2,55,30
-009-8,32,98|warp|-1,-1,069-2,24,30
diff --git a/world/map/npc/009-8/celestia.txt b/world/map/npc/009-8/celestia.txt
deleted file mode 100644
index 4fbe6609..00000000
--- a/world/map/npc/009-8/celestia.txt
+++ /dev/null
@@ -1,437 +0,0 @@
-// celestia quest
-// allocation: 8 bit (byte) => QL_CELESTIA (id 22)
-// uses 3rd byte of QUEST_Hurnscald (16th bit to 23th bit)
-// (0000 0000) (0000 0000) (XXXX XXXX) (0000 000-)
-// could stretch to use 7 more bits to the right if need be
-//
-// QL_CELESTIA states:
-// 000 can not do the easy quest
-// 001 can do the easy quest (show quest marker)
-// 002 got the easy quest (show in quest log)
-// 003 completed the easy quest, can not do the adv quest
-// 004 can do the adv quest, scared celestia (show quest marker)
-// 005 got the adv quest (show in quest log)
-// 006 killed 1 yeti
-// [...]
-// 205 killed 200 yetis
-// 206 got reward
-
-009-8,31,123,0|script|Celestia|144
-{
- callfunc "CelestiaState";
- if (getequipid(equip_head) == 4027) // check if yeti mask (4027) is equipped
- goto L_YetiMask;
- if (getequipid(equip_head) == 647) // check if Developer's Cap (647) is equipped
- goto L_Debug;
- if (QL_CELESTIA == 2) // check if the player has the easy quest
- goto L_ExplainEasy;
- if (QL_CELESTIA >= 5 && QL_CELESTIA < 206) // check if the player has the adv quest
- goto L_ExplainAdv;
- if (QL_CELESTIA > 1) // the player finished a quest or both
- goto L_ThankYou;
- goto L_Intro; // if all checks fail go to L_Intro (first meeting)
-
-L_YetiMask:
- mes "Celestia is clearly alarmed upon seeing you."; // send message to dialog window
- next; // require the player to press the "next" button in the dialog window
- mes "Before you have a chance to speak, she screams,"; // every use of "mes" creates a new line
- mes "##B\"YETI IN MY HOUSE!\"##b"; // here we created a new line to add emphasis (and ##B to make bold)
- mes "as she jumps back a few feet.";
- next;
- mes "You catch a glimpse of a black bow while some kind of dark mist quickly overcomes you.";
- next;
- mes "You feel a sharp pain in your heart and everything fades into darkness.";
- heal -Hp, 0; // set the current hp to 0 (kill the player)
- set @scared_celestia, 1; // set a temporary variable (resets on log out) in the player scope (variable is stored in the player, not in the npc)
- close; // terminate the script and require the player to press the "close" button
-
-L_Intro:
- mes "\"Hi, my name is Celestia.\"";
- next;
- mes "\"I used to be a great adventurer who's hunted thousands of yeti single-handedly, though, since I moved to Hurnscald I've been hosting tea parties instead.\"";
- next;
- goto L_MainMenu;
-
-L_MainMenu:
- mes "\"Are you here for this afternoon's tea party?\"";
- if (QL_CELESTIA == 1) // check if the player can do the easy quest
- goto L_EasyQuestMenu; // go to a special menu that has one more option to start the easy quest
- if (QL_CELESTIA == 4) // check if the player can do the quest
- goto L_AdvQuestMenu; // go to a special menu that has one more option to start the adv quest
- menu // else we just show a boring menu
- "Party! Of course I came out for the party!", L_CameForParty,
- "I'm sorry, life is much too serious for tea.", L_SrsBsns,
- "(Walk away)", L_InstaClose;
-
-L_EasyQuestMenu:
- menu // here we display a special menu
- "Party! Of course I came out for the party!", L_CameForParty,
- "I'm sorry, life is much too serious for tea.", L_SrsBsns,
- "Is there anything that I can do to help?", L_OfferHelp, // <= this will start the first quest
- "(Walk away)", L_InstaClose;
-
-L_AdvQuestMenu:
- menu // here we display a special menu
- "Party! Of course I came out for the party!", L_CameForParty,
- "I'm sorry, life is much too serious for tea.", L_SrsBsns,
- "I heard you were looking for help from experienced adventurers...", L_Scared, // <= this will start the adv quest
- "(Walk away)", L_InstaClose;
-
-L_CameForParty:
- mes "\"Wonderful, I am happy to have you over.";
- mes "Lets get things started with some puerh tea.\"";
- next;
- mes "Celestia hands you a cup filled with some type of tea that is unlike anything you have seen before.";
- mes "It has a very dark color and an unusual aroma reminiscent of a moist forest.";
- next;
- mes "For a moment you wonder if Celestia might have gotten confused and tossed in a handful of forest dirt into the teapot.";
- mes "You ponder whether or not it would be wise to drink it.";
- menu
- "(Drink the tea, hoping for the best)", L_DrinkTea,
- "Uh are you sure this is fit to drink?", L_QuestionTea;
-
-L_DrinkTea:
- mes "To your pleasant surprise the tea is actually quite good.";
- next;
- mes "Despite its initial dubious fragrance, the tea comes off as very smooth and mellow with a bit of natural sweetness and a touch of an earthy forest like flavour, but in a very good way.";
- next;
- mes "Clearly an exotic tea, with a refined flavor fit for a refined woman such as Celestia.";
- close;
-
-L_QuestionTea:
- mes "\"Yes, did you really think I was some kind of monster that would try to poison you in my own house?\"";
- mes "##a(it would be way too messy anyway)##0";
- next;
- mes "Celestia then picks up the cup of tea and drinks it in front of you to demonstrate that it is not only harmless but also quite delectable.";
- close;
-
-L_SrsBsns:
- mes "\"Have it your way.\"";
- close;
-
-L_OfferHelp:
- mes "\"Yes there is.\"";
- next;
- mes "\"I am a bit frustrated by the lack of a decent grocery store in Hurnscald, and there is only so much that I can get from Hinnak and Oscar.\"";
- next;
- mes "\"This poses a problem as the few items that I am not able to pick up locally are required for the tea parties that I host.\"";
- next;
- set QL_CELESTIA, 2; // set state to "got the easy quest"
- goto L_ExplainEasy;
-
-L_ExplainEasy:
- npcaction 9; // clear npc dialog to make room for the item list
- mes "\"Please go out and find these items and I will make it more than worth your time and effort.\"";
- mes; // send a blank line (line break)
- mes " %%E 100 ["+ getitemlink("ChocolateBar") +"]"; // use getitemlink to display a click-able item link in the dialog
- mes " %%E 50 ["+ getitemlink("GingerBreadMan") +"]";
- next;
- mes "\"I really hope you can find a reliable provider for these items before it forces me to put an end to my tea parties.\"";
- if (countitem("ChocolateBar") >= 100 && countitem("GingerBreadMan") >= 50) // check if the player has the items
- menu // if yes then allow the player to give them
- "I have the grocery order of Chocolate Bars and Ginger Bread Men for you.", L_GiveGroceries,
- "I will come back later.", L_InstaClose;
- close;
-
-L_GiveGroceries:
- mes "Celestia smiles.";
- next;
- mes "\"Wonderful, I am so glad you were able to track them down.";
- mes "That will be enough to keep me in supply for some time.\"";
- next;
- mes "\"Here, take this Beret.";
- mes "I hope it looks better on you than it does on me, as it does not go well with my fine dresses.\"";
- next;
- mes "Celestia also hands you a heavy pouch filled with gold pieces.";
- mes;
- mes "["+getitemlink("Beret")+"]";
- mes "[10,000 GP]";
- mes "[20,000 EXP]";
- delitem "ChocolateBar", 100; // remove chocolate bars
- delitem "GingerBreadMan", 50; // remove ginger bread men
- getitem "Beret", 1; // give beret
- getexp 20000, 0; // XXX is this amount reasonable?
- set Zeny, Zeny + 10000; // XXX is this amount reasonable?
- set QL_CELESTIA, 3; // set the state to "completed easy quest"
- close;
-
-L_ThankYou:
- mes "\"Welcome back %%1\"";
- next;
- goto L_MainMenu;
-
-L_Scared:
- mes "Celestia takes a close look at you and seems to be satisfied.";
- next;
- mes "\"Wonderful, I am glad you came out.";
- mes "I am really concerned about the growing yeti threat.";
- mes "There simply does not seem to be enough yeti hunters out there to keep their population from growing.\"";
- next;
- mes "\"To the point that a few days ago a yeti somehow managed to get inside my house, and I have never heard of one moving this far south before.\"";
- next;
- menu
- "A Yeti in your house, did you kill it?", L_YetiHouse,
- "A Yeti in your house, are you alright?", L_YetiHouse;
-
-L_YetiHouse:
- mes "Seemingly out of nowhere Celestia pulls a black bow and a fistful of arrows from her dress.";
- mes "\"Don't worry about me, I am able to protect myself.";
- mes "The real concern is the safety of the children of Hurnscald, as yeti tend to prefer children.\"";
- next;
- mes "\"It is scary to think about how many children that yeti could have run into before stumbling into my house to meet its doom.";
- mes "If one yeti has already made it this far south it is only a matter of time before more will follow.\"";
- next;
- mes "\"What disturbs me the most is that Hurnscald is a favorite trading post for adventurers, yet none of them did anything when the yeti entered town.\"";
- next;
- mes "\"Since they are not concerned about keeping Hurnscald safe I am taking matters into my own hands and recruiting more yeti hunters.\"";
- next;
- set QL_CELESTIA, 5; // set state to "got advanced quest";
- goto L_ExplainAdv;
-
-L_ExplainAdv:
- mes "\"Please, for the sake of the children of Hurnscald go out and ##Bslay at least 200 yetis##b to help knock down their growing numbers.\"";
- if (QL_CELESTIA == 205) // check if the player killed 200 yetis
- menu
- "I have returned from the great yeti hunt.", L_YetiComplete;
- if (QL_CELESTIA > 5) // check if at least 1 yeti killed
- menu
- "About those yetis...", L_Encourage;
- close;
-
-L_YetiComplete:
- mes "\"You are my hero!\"";
- next;
- mes "\"Here, take it. This [@@677|family heirloom@@] has been passed from mother to daughter for countless generations now.\"";
- next;
- mes "\"It pains me to let it go, as it is the only remaining trinket of my late mother, but you have proven yourself worthy of it.\"";
- next;
- menu
- "Thank you, I will cherish it dearly.", L_AcceptTrinket,
- "This token is too important, you should keep it.", L_RefuseTrinket;
-
-L_AcceptTrinket:
- mes "\"May our path cross again.\"";
- mes;
- mes "["+getitemlink("HeartNecklace")+"]";
- getitem "HeartNecklace", 1;
- set QL_CELESTIA, 206;
- close;
-
-L_RefuseTrinket:
- mes "\"Really?\"";
- next;
- mes "\"Please at least accept this humble payment for your trouble.\"";
- next;
- mes "\"May out path cross again.\"";
- mes;
- mes "[150,000 GP]";
- set Zeny, Zeny + 150000;
- set QL_CELESTIA, 206;
- close;
-
-L_Encourage:
- mes "\"You are doing great so far.";
- mes "Keep it up and I know you will be able to make a difference in the growing Yeti threat.\"";
- close;
-
-L_InstaClose:
- close;
-
-
-
-////////////// BORING DEBUG STUFF BELOW ////////////////
-L_Debug:
- npcaction 9;
- mes "state: " + QL_CELESTIA;
- mes "scared: " + @scared_celestia;
- mes "---";
- mes "000 can not do easy quest";
- mes "001 can do easy quest";
- mes "002 has gotten easy quest";
- mes "003 completed easy quest";
- mes "004 can do adv quest";
- mes "005 got adv quest";
- mes "006 killed 1 yeti";
- mes "[...]";
- mes "205 killed 200 yeti";
- mes "206 got adv quest reward";
- mes "---";
- if (debug)
- menu
- "restart|reset quest", L_ResetState,
- "toggle|toggle scared", L_ToggleScared,
- // TODO set state to [...]
- "edit|set state manually", L_SetState,
- "close", L_InstaClose;
- close;
-
-L_ToggleScared:
- set @scared_celestia, !(@scared_celestia);
- goto L_Debug;
-
-L_ResetState:
- set QL_CELESTIA, 0;
- set @scared_celestia, 0;
- npcaction 5; // force close dialog
- warp "009-1", 72, 48;
- end;
-
-L_SetState:
- input @cel_state;
- if (@cel_state >= 0 && @cel_state < 256)
- set QL_CELESTIA, @cel_state;
- goto L_Debug;
-}
-
-function|script|CelestiaState
-{
- if (BaseLevel >= 40 && QL_CELESTIA == 0) // if the player is at least level 40
- set QL_CELESTIA, 1; // show the quest marker
- if (BaseLevel >= 90 && QL_CELESTIA == 3 && @scared_celestia) // check if level >= 90, if scared celestia and if easy quest done
- set QL_CELESTIA, 4; // show the quest marker for the secret advanced quest
- return;
-}
-
-009-1,74,50,0|script|Celestia Door|32767,0,0
-{
- warp "009-8", 26, 123;
- callfunc "CelestiaState";
- end;
-}
-009-1,72,54,0|script|Celestia BackDoor|32767,0,0
-{
- warp "009-8", 23, 134;
- callfunc "CelestiaState";
- end;
-}
-009-8,83,125,0|script|#cont-warp7|32767,0,0
-{
- warp "009-8", 39, 126;
- end;
-}
-009-8,40,125,0|script|Celestia Basement|32767,0,0
-{
- if ($DOOMSDAY == 2||countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20)||
- strcharinfo(1) == "Celestia's Tea Party")
- warp "009-8", 82, 126;
- if (strcharinfo(1) != "Celestia's Tea Party" && $DOOMSDAY != 2)
- sendcollision "009-8", 1, 62, 105, 77, 123;
- end;
-
-OnPCLoginEvent:
- if (strcharinfo(1) != "Celestia's Tea Party" && getmap() == "009-8")
- sendcollision "009-8", 1, 62, 105, 77, 123;
- end;
-}
-009-8,68,123,0|script|Celestia Interceptor|32767,1,0
-{
- if (strcharinfo(1) != "Celestia's Tea Party" && $DOOMSDAY != 2)
- goto L_Stomp;
- mapmask 1 | 8;
- end;
-
-L_Stomp:
- set Hp, 0;
- end;
-}
-
-009-8,69,112,0|script|Celestia Mask1|32767,0,0
-{
- set @cel_dir, 0;
- end;
-}
-
-009-8,69,113,0|script|Celestia Mask0|32767,0,0
-{
- if (@cel_dir == 1)
- mapmask 1 | 4;
- else
- mapmask 1 | 8;
- end;
-
-OnPCLoginEvent:
- if (getmap() != "009-8" || strcharinfo(1) != "Celestia's Tea Party")
- end;
-
- if (POS_Y >= 123)
- mapmask 1 | 2 | 8;
- elif (POS_Y >= 113)
- mapmask 1 | 8;
- else
- mapmask 1 | 4;
- end;
-}
-
-009-8,69,114,0|script|Celestia Mask2|32767,0,0
-{
- set @cel_dir, 1;
- end;
-}
-
-// re-apply masks on exit:
-069-2,97,127,0|script|Celestia Mask3|32767,1,0
-{
- warp "009-8", 53, 41;
- mapmask 1 | 4;
- end;
-}
-069-2,116,127,0|script|Celestia Mask4|32767,1,0
-{
- warp "009-8", 58, 41;
- mapmask 1 | 4;
- end;
-}
-069-2,44,127,0|script|Celestia Mask5|32767,2,0
-{
- warp "009-8", 56, 56;
- mapmask 1 | 4;
- end;
-}
-069-2,117,62,0|script|Celestia Mask6|32767,0,0
-{
- warp "009-8", 79, 100;
- mapmask 1 | 4;
- end;
-}
-069-2,86,62,0|script|Celestia Mask7|32767,0,0
-{
- warp "009-8", 87, 79;
- mapmask 1 | 4;
- end;
-}
-069-2,55,62,0|script|Celestia Mask8|32767,0,0
-{
- warp "009-8", 87, 57;
- mapmask 1 | 4;
- end;
-}
-069-2,24,62,0|script|Celestia Mask9|32767,0,0
-{
- warp "009-8", 79, 40;
- mapmask 1 | 4;
- end;
-}
-069-2,117,31,0|script|Celestia Mask10|32767,0,0
-{
- warp "009-8", 33, 40;
- mapmask 1 | 4;
- end;
-}
-069-2,86,31,0|script|Celestia Mask11|32767,0,0
-{
- warp "009-8", 24, 57;
- mapmask 1 | 4;
- end;
-}
-069-2,55,31,0|script|Celestia Mask12|32767,0,0
-{
- warp "009-8", 24, 79;
- mapmask 1 | 4;
- end;
-}
-069-2,24,31,0|script|Celestia Mask13|32767,0,0
-{
- warp "009-8", 32, 99;
- mapmask 1 | 4;
- end;
-}
diff --git a/world/map/npc/009-8/mapflags.txt b/world/map/npc/009-8/mapflags.txt
deleted file mode 100644
index 2c82cbfc..00000000
--- a/world/map/npc/009-8/mapflags.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-009-8|mapflag|town
-009-8|mapflag|resave|009-2,149,43
-009-8|mapflag|mask|11
diff --git a/world/map/npc/010-1/_import.txt b/world/map/npc/010-1/_import.txt
deleted file mode 100644
index 170881fa..00000000
--- a/world/map/npc/010-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 010-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 010-1
-npc: npc/010-1/_mobs.txt
-npc: npc/010-1/_nodes.txt
-npc: npc/010-1/_warps.txt
-npc: npc/010-1/mapflags.txt
diff --git a/world/map/npc/010-1/_mobs.txt b/world/map/npc/010-1/_mobs.txt
deleted file mode 100644
index cf0ebae5..00000000
--- a/world/map/npc/010-1/_mobs.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-010-1,82,63,19,19|monster|Scorpion|1003,1,100000ms,30000ms
-010-1,49,71,31,19|monster|SpikyMushroom|1019,1,100000ms,30000ms
-010-1,0,0,0,0|monster|PinkFlower|1014,30,50ms,0ms
-010-1,0,0,0,0|monster|Snail|1041,20,50ms,0ms
-010-1,0,0,0,0|monster|SpikyMushroom|1019,45,50ms,0ms
-010-1,0,0,0,0|monster|LogHead|1025,40,100ms,0ms
-010-1,0,0,0,0|monster|Mouboo|1028,15,0ms,10ms
-010-1,0,0,0,0|monster|MauvePlant|1029,3,270000ms,180000ms
-010-1,0,0,0,0|monster|CobaltPlant|1030,1,2700000ms,1800000ms
-010-1,0,0,0,0|monster|Silkworm|1035,2,60000ms,30000ms
-010-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-010-1,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms
-010-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
diff --git a/world/map/npc/010-1/_nodes.txt b/world/map/npc/010-1/_nodes.txt
deleted file mode 100644
index 12c08221..00000000
--- a/world/map/npc/010-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-// (no nodes)
diff --git a/world/map/npc/010-1/_warps.txt b/world/map/npc/010-1/_warps.txt
deleted file mode 100644
index d774f301..00000000
--- a/world/map/npc/010-1/_warps.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-010-1,49,24|warp|0,-1,011-1,48,103
-010-1,13,55|warp|-1,0,015-1,92,54
-010-1,36,94|warp|-1,-1,010-2,32,44
-010-1,56,105|warp|1,-1,016-1,56,19
-010-1,131,54|warp|-1,0,007-1,21,53
diff --git a/world/map/npc/010-1/mapflags.txt b/world/map/npc/010-1/mapflags.txt
deleted file mode 100644
index cfbe9788..00000000
--- a/world/map/npc/010-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-010-1|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/010-2/_import.txt b/world/map/npc/010-2/_import.txt
deleted file mode 100644
index 7d790a1b..00000000
--- a/world/map/npc/010-2/_import.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// Map 010-2: Dimond's Cove
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 010-2
-npc: npc/010-2/_mobs.txt
-npc: npc/010-2/_nodes.txt
-npc: npc/010-2/_warps.txt
-npc: npc/010-2/band.txt
-npc: npc/010-2/chef.txt
-npc: npc/010-2/dimonds.txt
-npc: npc/010-2/doug.txt
-npc: npc/010-2/loratay.txt
-npc: npc/010-2/mapflags.txt
-npc: npc/010-2/workers.txt
diff --git a/world/map/npc/010-2/_mobs.txt b/world/map/npc/010-2/_mobs.txt
deleted file mode 100644
index 5ae78616..00000000
--- a/world/map/npc/010-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Dimond's Cove mobs
-
diff --git a/world/map/npc/010-2/_nodes.txt b/world/map/npc/010-2/_nodes.txt
deleted file mode 100644
index 97d1478f..00000000
--- a/world/map/npc/010-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Dimond's Cove nodes
-
-// (no nodes)
diff --git a/world/map/npc/010-2/_warps.txt b/world/map/npc/010-2/_warps.txt
deleted file mode 100644
index bf25cb65..00000000
--- a/world/map/npc/010-2/_warps.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Dimond's Cove warps
-
-010-2,27,24|warp|-1,-1,010-2,35,68
-010-2,32,45|warp|-1,-1,010-1,36,95
-010-2,40,27|warp|1,-1,010-2,83,28
-010-2,36,68|warp|-1,-1,010-2,28,24
-010-2,67,27|warp|1,-1,010-2,67,72
-010-2,83,29|warp|1,-1,010-2,40,28
-010-2,67,73|warp|1,-1,010-2,67,28
diff --git a/world/map/npc/010-2/band.txt b/world/map/npc/010-2/band.txt
deleted file mode 100644
index f1e0632f..00000000
--- a/world/map/npc/010-2/band.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-// dimonds band
-010-2,40,35,0|script|Phil|157
-{
- callfunc "DimondBand";
- end;
-}
-
-010-2,40,37,0|script|Jerry|160
-{
- callfunc "DimondBand";
- end;
-}
-
-010-2,42,36,0|script|Robert|162
-{
- callfunc "DimondBand";
- end;
-}
-function|script|DimondBand
-{
- npctalk strnpcinfo(0), $@SongLyrics$[$@LyricSpot];
- set $@LyricSpot, ($@LyricSpot + 1);
- if (getarraysize($@SongLyrics$) <= $@LyricSpot)
- set $@LyricSpot, 0;
- goto L_Return;
-
-L_Return:
- return;
-}
--|script|#BandConfig|32767
-{
- end;
-
-OnInit:
- set $@LyricSpot, 0;
- setarray $@SongLyrics$, "Laid back in Hurnscald, with a GP in my hand,",
- "Watchin' GMs and players on the street,",
- "And I catch a glimpse of cheap rares on ManaMarket once a while,",
- "There's a woman who wants me to save their child.",
- "I got the Argean blues!";
- end;
-}
diff --git a/world/map/npc/010-2/chef.txt b/world/map/npc/010-2/chef.txt
deleted file mode 100644
index 0de4761c..00000000
--- a/world/map/npc/010-2/chef.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-010-2,33,25,0|script|Chef#dimond|148
-{
- mes "[Chef]";
- mes "";
- mes "\"I'm too busy right now to talk.\"";
-
- callfunc "KadiyaSubquestConsts";
- if ((@Q_kadiya_status == @Q_STATUS_WANTS_CHOCOCAKE) && (countitem ("MopoxCurePotion") > 0))
- goto L_lace_chococake;
- if ((@Q_kadiya_status == @Q_STATUS_WANTS_ORANGECUPCAKE) && (countitem ("MopoxCurePotion") > 0))
- goto L_lace_cupcake;
- close;
-
-L_lace_chococake:
- next;
- menu
- "Sorry.", L_End,
- "I need your help with a sick young girl!", L_Next;
-
-L_Next:
- mes "[Chef]";
- mes "";
- mes "You explain Kadiya's situation to him.";
- mes "\"Hmrmf. I can't help you; I'm a chef, not a baker!\"";
- close;
-
-L_lace_cupcake:
- next;
- menu
- "Sorry.", L_End,
- "I need your help with a sick young girl!", L_Next1;
-
-L_Next1:
- mes "[Chef]";
- mes "";
- mes "You explain Kadiya's situation to him.";
- mes "\"Hmrmf. I was about to make another batch of orange cupcakes. Do you have that potion with you?\"";
- next;
- menu
- "No, sorry.", L_bringit,
- "Yes, here you are.", L_Next2;
-
-L_Next2:
- if (countitem ("MopoxCurePotion") < 1)
- goto L_bringit;
- mes "[Chef]";
- mes "";
- mes "He shudders as he smells the bottle.";
- mes "\"That is disgusting! How do you expect me to mask this?\"";
- mes "He ponders his own question for a moment.";
- next;
- mes "[Chef]";
- mes "";
- mes "\"Ah yes. We need to bind the smell in gingerbread. Bring me three pieces of gingerbread, one orange, and 500 GP for the other ingredients, and I will make you your cupcake.\"";
- next;
- menu
- "I'll go and get it.", L_End,
- "Here you are!", L_Next3,
- "Not now.", L_End;
-
-L_Next3:
- if (countitem ("GingerBreadMan") < 3)
- goto L_no_gingerbread;
- if (countitem ("Orange") < 1)
- goto L_no_orange;
- if (countitem ("MopoxCurePotion") < 1)
- goto L_no_potion;
- if (Zeny < 500)
- goto L_no_Zeny;
-
- set Zeny, Zeny - 500;
- delitem "GingerBreadMan", 3;
- delitem "Orange", 1;
- delitem "MopoxCurePotion", 1;
-
- getitem "LacedOrangeCupcake", 1;
-
- mes "[Chef]";
- mes "";
- mes "\"Good, good. This should work.\"";
- mes "He crumbles the gingerbread, mixes it with the potion and some spices, and finally adds some cupcake batter and the orange pieces.";
- next;
- mes "[Chef]";
- mes "";
- mes "\"Take a seat.\"";
- mes "He fills the mixture into a cupcake form and puts it into the oven. You watch the cupcake grow for a while.";
- mes "Finally, he removes the form and carefully extracts the cupcake.";
- next;
- mes "[Chef]";
- mes "";
- mes "\"Here you are. It's a bit bigger than a regular cupcake and will taste a bit like ginger, I think, but otherwise it should be fine.\"";
- close;
-
-L_no_gingerbread:
- mes "[Chef]";
- mes "";
- mes "\"I will need three pieces of gingerbread.\"";
- close;
-
-L_no_orange:
- mes "[Chef]";
- mes "";
- mes "\"Please bring me an orange for these cupcakes.\"";
- close;
-
-L_no_Zeny:
- mes "[Chef]";
- mes "";
- mes "\"No. I need extra ingredients worth 500 GP, and I expect you to pay for those.\"";
- close;
-
-L_no_potion:
- mes "[Chef]";
- mes "";
- mes "\"Where did your Mopox potion go?\"";
- close;
-
-L_bringit:
- mes "[Chef]";
- mes "";
- mes "\"Bring it here when you do.\"";
- next;
- goto L_End;
-
-L_End:
- close;
-}
diff --git a/world/map/npc/010-2/dimonds.txt b/world/map/npc/010-2/dimonds.txt
deleted file mode 100644
index 868ad796..00000000
--- a/world/map/npc/010-2/dimonds.txt
+++ /dev/null
@@ -1,553 +0,0 @@
-//
-
-010-2,34,38,0|script|Dimond|165
-{
- mes "[Dimond]";
- mes "\"Welcome to Dimond's Cove!\"";
- mes "";
- mes "\"Talk to the waitress to get some Food.\"";
- mes "";
- mes "\"We also have shops on the 2nd Floor,";
- mes "and an inn on the 3rd Floor.\"";
- close;
-}
-
-010-2,35,35,0|script|Shannon|193
-{
- set @month, 1;
- set @start_day, 24;
- set @end_day, 26;
- if (gettime(6) != @month) goto L_no_event;
- if (gettime(5) < @start_day) goto L_no_event;
- if (gettime(5) > @end_day) goto L_no_event;
- if (gettimetick(2)-TUT_var < 2*7*86400 ) //player must be created at least 2 weeks ago
- goto L_no_event;
- if (FLAGS & FLAG_HAS_BOWLER_BURNSDAY ) goto L_event_done;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Full_Inv;
-
- mes "[Shannon]";
- mes "\"Welcome to Dimond's Cove. We are celebrating Robert Burns with supper and poems. You provide the supper and I'll provide a poem by Robert Burns. He was otherwise known as 'The Bard' and wrote many poems. The music of language is what I love most. The language of poetry. While his accent is thick, his poems tell stories that stir the soul. I'll read a poem by him and you can tell me what you think.\"";
- next;
- mes "\"Before I start, it is traditional to eat, drink and be merry, so help from you will be great and keep me reading.\"";
- next;
- mes "\"O thou! whatever title suit thee,--\"";
- mes "\"Auld Hornie, Satan, Nick, or Clootie!\"";
- mes "\"Wha in yon cavern, grim an' sootie,\"";
- mes "\"Clos'd under hatches,\"";
- mes "\"Spairges about the brunstane cootie\"";
- mes "\"To scaud poor wretches!\"";
- callsub S_food_menu;
- mes "\"Hear me, Auld Hangie, for a wee,\"";
- mes "\"An' let poor damned bodies be;\"";
- mes "\"I'm sure sma' pleasure it can gie,\"";
- mes "\"E'en to a deil,\"";
- mes "\"To skelp an' scaud poor dogs like me,\"";
- mes "\"An' hear us squeel!\"";
- callsub S_food_menu;
- mes "\"Great is thy pow'r, an' great thy fame;\"";
- mes "\"Far ken'd an' noted is thy name;\"";
- mes "\"An' tho' yon lowin heugh's thy hame,\"";
- mes "\"Thou travels far;\"";
- mes "\"An' faith! thou's neither lag nor lame,\"";
- mes "\"Nor blate nor scaur.\"";
- callsub S_food_menu;
- mes "\"Whyles, ranging like a roarin lion,\"";
- mes "\"For prey a' holes an' corners tryin;\"";
- mes "\"Whyles, on the strong-wing'd tempest flyin,\"";
- mes "\"Tirlin' the kirks;\"";
- mes "\"Whyles, in the human bosom pryin,\"";
- mes "\"Unseen thou lurks.\"";
- callsub S_food_menu;
- mes "\"I've heard my rev'rend graunie say,\"";
- mes "\"In lanely glens ye like to stray;\"";
- mes "\"Or whare auld ruin'd castles gray\"";
- mes "\"Nod to the moon,\"";
- mes "\"Ye fright the nightly wand'rer's way\"";
- mes "\"Wi' eldritch croon.\"";
- callsub S_food_menu;
- mes "\"When twilight did my graunie summon\"";
- mes "\"To say her pray'rs, douce honest woman!\"";
- mes "\"Aft yont the dike she's heard you bummin,\"";
- mes "\"Wi' eerie drone;\"";
- mes "\"Or, rustlin thro' the boortrees comin,\"";
- mes "\"Wi' heavy groan.\"";
- callsub S_food_menu;
- mes "\"Ae dreary, windy, winter night,\"";
- mes "\"The stars shot down wi' sklentin light,\"";
- mes "\"Wi' you mysel I gat a fright,\"";
- mes "\"Ayont the lough;\"";
- mes "\"Ye like a rash-buss stood in sight,\"";
- mes "\"Wi' waving sugh.\"";
- callsub S_food_menu;
- mes "\"The cudgel in my nieve did shake,\"";
- mes "\"Each bristl'd hair stood like a stake,\"";
- mes "\"When wi' an eldritch, stoor 'Quaick, quaick,'\"";
- mes "\"Amang the springs,\"";
- mes "\"Awa ye squatter'd like a drake,\"";
- mes "\"On whistling wings.\"";
- callsub S_food_menu;
- mes "\"Let warlocks grim an' wither'd hags\"";
- mes "\"Tell how wi' you on ragweed nags\"";
- mes "\"They skim the muirs an' dizzy crags\"";
- mes "\"Wi' wicked speed;\"";
- mes "\"And in kirk-yards renew their leagues,\"";
- mes "\"Owre howket dead.\"";
- callsub S_food_menu;
- mes "\"Thence, countra wives wi' toil an' pain\"";
- mes "\"May plunge an' plunge the kirn in vain;\"";
- mes "\"For oh! the yellow treasure's taen\"";
- mes "\"By witchin skill;\"";
- mes "\"An' dawtet, twal-pint hawkie's gaen\"";
- mes "\"As yell's the bill.\"";
- callsub S_food_menu;
- mes "\"Thence, mystic knots mak great abuse,\"";
- mes "\"On young guidmen, fond, keen, an' croose;\"";
- mes "\"When the best wark-lume i' the house,\"";
- mes "\"By cantraip wit,\"";
- mes "\"Is instant made no worth a louse,\"";
- mes "\"Just at the bit.\"";
- callsub S_food_menu;
- mes "\"When thowes dissolve the snawy hoord,\"";
- mes "\"An' float the jinglin icy-boord,\"";
- mes "\"Then water-kelpies haunt the foord\"";
- mes "\"By your direction,\"";
- mes "\"An' nighted trav'lers are allur'd\"";
- mes "\"To their destruction.\"";
- callsub S_food_menu;
- mes "\"And aft your moss-traversing spunkies\"";
- mes "\"Decoy the wight that late an drunk is:\"";
- mes "\"The bleezin, curst, mischievous monkeys\"";
- mes "\"Delude his eyes,\"";
- mes "\"Till in some miry slough he sunk is,\"";
- mes "\"Ne'er mair to rise.\"";
- callsub S_food_menu;
- mes "\"When Masons' mystic word an grip\"";
- mes "\"In storms an' tempests raise you up,\"";
- mes "\"Some cock or cat your rage maun stop,\"";
- mes "\"Or, strange to tell!\"";
- mes "\"The youngest brither ye wad whip\"";
- mes "\"Aff straught to hell!\"";
- callsub S_food_menu;
- mes "\"Lang syne, in Eden'd bonie yard,\"";
- mes "\"When youthfu' lovers first were pair'd,\"";
- mes "\"An all the soul of love they shar'd,\"";
- mes "\"The raptur'd hour,\"";
- mes "\"Sweet on the fragrant flow'ry swaird,\"";
- mes "\"In shady bow'r;\"";
- callsub S_food_menu;
- mes "\"Then you, ye auld snick-drawin dog!\"";
- mes "\"Ye cam to Paradise incog,\"";
- mes "\"And play'd on man a cursed brogue,\"";
- mes "\"(Black be your fa'!)\"";
- mes "\"An gied the infant warld a shog,\"";
- mes "\"Maist ruin'd a'.\"";
- callsub S_food_menu;
- mes "\"D'ye mind that day, when in a bizz,\"";
- mes "\"Wi' reeket duds an reestet gizz,\"";
- mes "\"Ye did present your smoutie phiz\"";
- mes "\"Mang better folk,\"";
- mes "\"An' sklented on the man of Uz\"";
- mes "\"Your spitefu' joke?\"";
- callsub S_food_menu;
- mes "\"An' how ye gat him i' your thrall,\"";
- mes "\"An' brak him out o' house and hal',\"";
- mes "\"While scabs and blotches did him gall,\"";
- mes "\"Wi' bitter claw,\"";
- mes "\"An' lows'd his ill-tongued, wicked scaul,\"";
- mes "\"Was warst ava?\"";
- callsub S_food_menu;
- mes "\"But a' your doings to rehearse,\"";
- mes "\"Your wily snares an' fechtin fierce,\"";
- mes "\"Sin' that day Michael did you pierce,\"";
- mes "\"Down to this time,\"";
- mes "\"Wad ding a Lallan tongue, or Erse,\"";
- mes "\"In prose or rhyme.\"";
- callsub S_food_menu;
- mes "\"An' now, Auld Cloots, I ken ye're thinkin,\"";
- mes "\"A certain Bardie's rantin, drinkin,\"";
- mes "\"Some luckless hour will send him linkin,\"";
- mes "\"To your black pit;\"";
- mes "\"But faith! he'll turn a corner jinkin,\"";
- mes "\"An' cheat you yet.\"";
- callsub S_food_menu;
- mes "\"But fare you weel, Auld Nickie-ben!\"";
- mes "\"O wad ye tak a thought an' men'!\"";
- mes "\"Ye aiblins might--I dinna ken--\"";
- mes "\"Still hae a stake:\"";
- mes "\"I'm wae to think upo' yon den,\"";
- mes "\"Ev'n for your sake!\"";
- next;
- mes "\"Well, that was the poem. What do you think of it?\"";
- menu
- "It was a bit long and kind of hard to understand, but thanks for reading.", L_Next;
-
-L_Next:
- mes "[Shannon]";
- mes "\"Well, thanks for coming to the supper. Also, thanks for helping me make it through the poem. Here, take this hat. When you wear it, wear it with the class you showed me today. Happy Burns' Supper!\"";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- getitem "BowlerHat", 1;
- set FLAGS, FLAGS | FLAG_HAS_BOWLER_BURNSDAY;
- close;
-
-L_no_event:
- mes "[Shannon]";
- mes "\"I'm a traveling poet and admirer of Robert Burns.\"";
- close;
-
-L_event_done:
- mes "[Shannon]";
- mes "\"Ah, my dear friend. Good to see you again in this remarkable time of the year.\"";
- next;
- mes "\"Welcome to Dimond's Cove. We are celebrating Robert Burns with supper and poems. You provide the supper and I'll provide a poem by Robert Burns. He was otherwise known as 'The Bard' and wrote many poems. The music of language is I love most. The language of poetry. While his accent is thick, his poems tell stories that stir the soul. I'll read a poem by him and you can tell me what you think.\"";
- next;
- mes "\"O thou! whatever title suit thee,--\"";
- mes "\"Auld Hornie, Satan, Nick, or Clootie!\"";
- mes "\"Wha in yon cavern, grim an' sootie,\"";
- mes "\"Clos'd under hatches,\"";
- mes "\"Spairges about the brunstane cootie\"";
- mes "\"To scaud poor wretches!\"";
- next;
- mes "\"Hear me, Auld Hangie, for a wee,\"";
- mes "\"An' let poor damned bodies be;\"";
- mes "\"I'm sure sma' pleasure it can gie,\"";
- mes "\"E'en to a deil,\"";
- mes "\"To skelp an' scaud poor dogs like me,\"";
- mes "\"An' hear us squeel!\"";
- next;
- mes "\"Great is thy pow'r, an' great thy fame;\"";
- mes "\"Far ken'd an' noted is thy name;\"";
- mes "\"An' tho' yon lowin heugh's thy hame,\"";
- mes "\"Thou travels far;\"";
- mes "\"An' faith! thou's neither lag nor lame,\"";
- mes "\"Nor blate nor scaur.\"";
- next;
- mes "\"Whyles, ranging like a roarin lion,\"";
- mes "\"For prey a' holes an' corners tryin;\"";
- mes "\"Whyles, on the strong-wing'd tempest flyin,\"";
- mes "\"Tirlin' the kirks;\"";
- mes "\"Whyles, in the human bosom pryin,\"";
- mes "\"Unseen thou lurks.\"";
- next;
- mes "\"I've heard my rev'rend graunie say,\"";
- mes "\"In lanely glens ye like to stray;\"";
- mes "\"Or whare auld ruin'd castles gray\"";
- mes "\"Nod to the moon,\"";
- mes "\"Ye fright the nightly wand'rer's way\"";
- mes "\"Wi' eldritch croon.\"";
- next;
- mes "\"When twilight did my graunie summon\"";
- mes "\"To say her pray'rs, douce honest woman!\"";
- mes "\"Aft yont the dike she's heard you bummin,\"";
- mes "\"Wi' eerie drone;\"";
- mes "\"Or, rustlin thro' the boortrees comin,\"";
- mes "\"Wi' heavy groan.\"";
- next;
- mes "\"Ae dreary, windy, winter night,\"";
- mes "\"The stars shot down wi' sklentin light,\"";
- mes "\"Wi' you mysel I gat a fright,\"";
- mes "\"Ayont the lough;\"";
- mes "\"Ye like a rash-buss stood in sight,\"";
- mes "\"Wi' waving sugh.\"";
- next;
- mes "\"The cudgel in my nieve did shake,\"";
- mes "\"Each bristl'd hair stood like a stake,\"";
- mes "\"When wi' an eldritch, stoor 'Quaick, quaick,'\"";
- mes "\"Amang the springs,\"";
- mes "\"Awa ye squatter'd like a drake,\"";
- mes "\"On whistling wings.\"";
- next;
- mes "\"Let warlocks grim an' wither'd hags\"";
- mes "\"Tell how wi' you on ragweed nags\"";
- mes "\"They skim the muirs an' dizzy crags\"";
- mes "\"Wi' wicked speed;\"";
- mes "\"And in kirk-yards renew their leagues,\"";
- mes "\"Owre howket dead.\"";
- next;
- mes "\"Thence, countra wives wi' toil an' pain\"";
- mes "\"May plunge an' plunge the kirn in vain;\"";
- mes "\"For oh! the yellow treasure's taen\"";
- mes "\"By witchin skill;\"";
- mes "\"An' dawtet, twal-pint hawkie's gaen\"";
- mes "\"As yell's the bill.\"";
- next;
- mes "\"Thence, mystic knots mak great abuse,\"";
- mes "\"On young guidmen, fond, keen, an' croose;\"";
- mes "\"When the best wark-lume i' the house,\"";
- mes "\"By cantraip wit,\"";
- mes "\"Is instant made no worth a louse,\"";
- mes "\"Just at the bit.\"";
- next;
- mes "\"When thowes dissolve the snawy hoord,\"";
- mes "\"An' float the jinglin icy-boord,\"";
- mes "\"Then water-kelpies haunt the foord\"";
- mes "\"By your direction,\"";
- mes "\"An' nighted trav'lers are allur'd\"";
- mes "\"To their destruction.\"";
- next;
- mes "\"And aft your moss-traversing spunkies\"";
- mes "\"Decoy the wight that late an drunk is:\"";
- mes "\"The bleezin, curst, mischievous monkeys\"";
- mes "\"Delude his eyes,\"";
- mes "\"Till in some miry slough he sunk is,\"";
- mes "\"Ne'er mair to rise.\"";
- next;
- mes "\"When Masons' mystic word an grip\"";
- mes "\"In storms an' tempests raise you up,\"";
- mes "\"Some cock or cat your rage maun stop,\"";
- mes "\"Or, strange to tell!\"";
- mes "\"The youngest brither ye wad whip\"";
- mes "\"Aff straught to hell!\"";
- next;
- mes "\"Lang syne, in Eden'd bonie yard,\"";
- mes "\"When youthfu' lovers first were pair'd,\"";
- mes "\"An all the soul of love they shar'd,\"";
- mes "\"The raptur'd hour,\"";
- mes "\"Sweet on the fragrant flow'ry swaird,\"";
- mes "\"In shady bow'r;\"";
- next;
- mes "\"Then you, ye auld snick-drawin dog!\"";
- mes "\"Ye cam to Paradise incog,\"";
- mes "\"And play'd on man a cursed brogue,\"";
- mes "\"(Black be your fa'!)\"";
- mes "\"An gied the infant warld a shog,\"";
- mes "\"Maist ruin'd a'.\"";
- next;
- mes "\"D'ye mind that day, when in a bizz,\"";
- mes "\"Wi' reeket duds an reestet gizz,\"";
- mes "\"Ye did present your smoutie phiz\"";
- mes "\"Mang better folk,\"";
- mes "\"An' sklented on the man of Uz\"";
- mes "\"Your spitefu' joke?\"";
- next;
- mes "\"An' how ye gat him i' your thrall,\"";
- mes "\"An' brak him out o' house and hal',\"";
- mes "\"While scabs and blotches did him gall,\"";
- mes "\"Wi' bitter claw,\"";
- mes "\"An' lows'd his ill-tongued, wicked scaul,\"";
- mes "\"Was warst ava?\"";
- next;
- mes "\"But a' your doings to rehearse,\"";
- mes "\"Your wily snares an' fechtin fierce,\"";
- mes "\"Sin' that day Michael did you pierce,\"";
- mes "\"Down to this time,\"";
- mes "\"Wad ding a Lallan tongue, or Erse,\"";
- mes "\"In prose or rhyme.\"";
- next;
- mes "\"An' now, Auld Cloots, I ken ye're thinkin,\"";
- mes "\"A certain Bardie's rantin, drinkin,\"";
- mes "\"Some luckless hour will send him linkin,\"";
- mes "\"To your black pit;\"";
- mes "\"But faith! he'll turn a corner jinkin,\"";
- mes "\"An' cheat you yet.\"";
- next;
- mes "\"But fare you weel, Auld Nickie-ben!\"";
- mes "\"O wad ye tak a thought an' men'!\"";
- mes "\"Ye aiblins might--I dinna ken--\"";
- mes "\"Still hae a stake:\"";
- mes "\"I'm wae to think upo' yon den,\"";
- mes "\"Ev'n for your sake!\"";
- next;
- mes "\"Well, that was the poem. What do you think of it?\"";
- menu
- "It was a bit long and kind of hard to understand, but thanks for reading.", L_Close;
-
-L_Full_Inv:
- mes "[Shannon]";
- mes "\"Your possessions seems to be a burden to you.\"";
- next;
- mes "\"Maybe you should turn away from the mundane world and get rid of this burden to change your view to the beauty of poetry.\"";
- close;
-
-S_food_menu:
- setarray @choice_idx, 0,0,0,0,0,0;
- setarray @choice$, "","","","","","";
-
- set @C_steak, 676;
- set @C_chickenleg, 562;
- set @C_redapple, 535;
- set @C_greenapple, 719;
- set @C_beer, 539;
-
- // counter of available answers
- set @choices_nr, 0;
-
- if (countitem("Steak") == 0)
- goto L_nosteaks;
- set @choice_idx[@choices_nr], @C_steak;
- set @choice$[@choices_nr], "Offer him a steak.";
- set @choices_nr, @choices_nr + 1;
- goto L_nosteaks;
-
-L_nosteaks:
- if (countitem("ChickenLeg") == 0)
- goto L_nochickenleg;
- set @choice_idx[@choices_nr], @C_chickenleg;
- set @choice$[@choices_nr], "Offer him a chicken leg.";
- set @choices_nr, @choices_nr + 1;
- goto L_nochickenleg;
-
-L_nochickenleg:
- if (countitem("RedApple") == 0)
- goto L_noredapple;
- set @choice_idx[@choices_nr], @C_redapple;
- set @choice$[@choices_nr], "Offer him a red apple.";
- set @choices_nr, @choices_nr + 1;
- goto L_noredapple;
-
-L_noredapple:
- if (countitem("GreenApple") == 0)
- goto L_nogreenapple;
- set @choice_idx[@choices_nr], @C_greenapple;
- set @choice$[@choices_nr], "Offer him a green apple.";
- set @choices_nr, @choices_nr + 1;
- goto L_nogreenapple;
-
-L_nogreenapple:
- if (countitem("Beer") == 0)
- goto L_nobeer;
- set @choice_idx[@choices_nr], @C_beer;
- set @choice$[@choices_nr], "Offer him a beer.";
- set @choices_nr, @choices_nr + 1;
- goto L_nobeer;
-
-L_nobeer:
- set @choice_idx[@choices_nr], @C_nevermind;
- set @choice$[@choices_nr], "Leave";
-
- menu
- @choice$[0],L_MenuItems,
- @choice$[1],L_MenuItems,
- @choice$[2],L_MenuItems,
- @choice$[3],L_MenuItems,
- @choice$[4],L_MenuItems,
- @choice$[5],L_MenuItems,
- @choice$[6],L_MenuItems,
- @choice$[7],L_MenuItems,
- @choice$[8],L_MenuItems,
- @choice$[9],L_MenuItems,
- @choice$[10],L_MenuItems;
-
-L_MenuItems:
- set @choose, @menu - 1;
- if (@choice_idx[@choose] == 0)
- goto L_Close;
- if ((countitem("Steak") != 0) && (@choice_idx[@choose] == @C_steak))
- goto L_RmItem;
- if ((countitem("ChickenLeg") != 0) && (@choice_idx[@choose] == @C_chickenleg))
- goto L_RmItem;
- if ((countitem("RedApple") != 0) && (@choice_idx[@choose] == @C_redapple))
- goto L_RmItem;
- if ((countitem("GreenApple") != 0) && (@choice_idx[@choose] == @C_greenapple))
- goto L_RmItem;
- if ((countitem("Beer") != 0) && (@choice_idx[@choose] == @C_beer))
- goto L_RmItem;
-
- // fallthrough only when player remove the items while in menu, trying to cheat
- // the quest will need to be started again
- mes "\"What you are offering, you do not have. Do not try to betray me. Come back when you have better morals.\"";
- close;
-
-L_RmItem:
- delitem @choice_idx[@choose], 1;
- return;
-
-L_Close:
- close;
-}
-
-010-2,27,30,0|script|Bar Rules|400
-{
- mes "Dimonds Cove Bar Rules";
- next;
- mes "No excessive drinking!";
- mes "If your sprite starts to stagger we will ask you to leave.";
- next;
- mes "No offensive chat.";
- mes "This is a nice establishment.";
- mes "Crude and offensive behavior will be reported to TMW GM's.";
- next;
- mes "Please be respectful of others.";
- mes "Not everyone has the same experience and should all be treated";
- mes "with equal respect.";
- next;
- mes "Thank You,";
- mes "Dimonds Cove Management";
- close;
-}
-
-010-2,71,38,0|script|Store Policy#1|400
-{
- mes "All sales are final.";
- mes "Returns are subject to a 50% re-stocking fee.";
- close;
-}
-
-010-2,77,38,0|script|Store Policy#2|400
-{
- mes "All sales are final.";
- mes "Returns are subject to a 50% re-stocking fee.";
- close;
-}
-
-010-2,36,30,0|script|Directions|400
-{
- mes "This way to the Dimonds Cove Inn.";
- mes "Five star accommodation for the weary traveler!";
- close;
-}
-
-010-2,80,32,0|script|Dimonds Cove 1|400
-{
- mes "The Story of Dimonds Cove";
- next;
- mes "One day Dimond D. Stone dreamed of her own restaurant.";
- mes "Dimond sold her food alone in this spot for some time,";
- mes "longing for the day she would have a building.";
- mes "She met an adventurer named Merlin outside of the";
- mes "desert mines one day.";
- next;
- mes "They became friends and Dimond told Merlin about her idea.";
- mes "Merlin was a accomplished carpenter and wanted to make a new";
- mes "place in the world. He told Dimond that he would make her";
- mes "restaurant for her. He gathered the tools and after much";
- mes "hard work, Dimonds Cove was built.";
- next;
- mes "(See Dimonds Cove 2)";
- close;
-}
-
-010-2,85,32,0|script|Dimonds Cove 2|400
-{
- mes "List of Events at Dimonds Cove";
- mes "January 2008 - Construction of Dimonds Cove.";
- close;
-}
-
-
-010-2,71,30,0|script|Inn|400
-{
- mes "Welcome to the Dimonds Cove Inn";
- mes "Rooms are 200 gp a night.";
- mes "Plese check in with Basil.";
- close;
-}
-
-
-010-2,24,27,0|shop|Bartender|112,Beer:*1,IronPotion:*1,ConcentrationPotion:*1
-
-010-2,32,34,0|shop|Waitress|139,CherryCake:*1,RoastedMaggot:*1,OrangeCupcake:*1,ChickenLeg:*1,Steak:*1
-
-010-2,85,41,0|shop|Blacksmith|146,ForestBow:*1,IronArrow:*1,LeatherShield:*1
-
-010-2,65,41,0|shop|General Store#dimond|137,CottonShorts:*1,FancyHat:*1,SilkHeadband:*1,CottonSkirt:*1,Boots:*1,CottonBoots:*1
-
-010-2,75,68,0|script|Basil|107
-{
- set @npcname$, "Basil the Inn Keeper";
- set @cost, 200;
- callfunc "Inn";
- end;
-}
diff --git a/world/map/npc/010-2/doug.txt b/world/map/npc/010-2/doug.txt
deleted file mode 100644
index c209e58a..00000000
--- a/world/map/npc/010-2/doug.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-
-010-2,68,87,0|script|Doug|113
-{
- mes "[Doug]";
- mes "\"This room is too dark. I want to brighten it up.\"";
- next;
-
- set @dq_level, 15;
- set @dq_cost, 10;
- set @dq_count, 5;
- set @dq_name$, "CaveSnakeLamp";
- set @dq_friendly_name$, "Cave Snake Lamps";
- set @dq_money, 1000;
- set @dq_exp, 1500;
-
- callfunc "DailyQuest";
-
- next;
- mes "[Doug]";
- mes "\"Too bad these lamps wear off after a while...\"";
- close;
-}
diff --git a/world/map/npc/010-2/loratay.txt b/world/map/npc/010-2/loratay.txt
deleted file mode 100644
index 4e4232d7..00000000
--- a/world/map/npc/010-2/loratay.txt
+++ /dev/null
@@ -1,1055 +0,0 @@
-010-2,83,85,0|script|Lora Tay Debug|151
-{
- mes "[Lora Tay Debug]";
- mes "What do you want to do?";
- menu
- "Show Quest State", L_ShowState,
- "Set Quest State", L_SetState,
- "Reset", L_Reset,
- "Nothing.", L_Close;
-
-L_ShowState:
- set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
- mes "Current State is " + @wg_state;
- goto L_Close;
-
-L_SetState:
- mes "What state do you want?";
- input @wg_state;
- callfunc "setWGState";
- mes "Set to " + @wg_state;
- goto L_Close;
-
-L_Reset:
- set @wg_state, 0;
- callfunc "setWGState";
- mes "Reset!";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Lora Tay Debug";
- end;
-}
-010-2,85,85,0|script|Lora Tay|151
-{
- set @ROBE_COCOONS_NR, 150; // must be multiple of ten
- set @ROBE_ZENY, 10000;
- set @ROBE_SHEETS_NR, 6; // number of silk sheets required for the silk robe. Must be less than 10.
- set @ROBE_SHEETS_ZENY, 6000; // price of the silk robe when bringing silk sheets.
- set @Robe_with_sheets, 0; // will be set to 1 if silk robe is made with sheets
- set @FINEDRESS_COCOONS, 180;
- set @SORCERER_ROBE_SEW_ZENY, 25000;
- set @SORCERER_ROBE_NUM_COTTON_CLOTH, 2;
- set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
-
- if (@loratay_asking_robe == 1) goto L_ExamineSR;
- if (@wg_state == 10) goto L_agostine_menu;
- if (@wg_state == 11 || @wg_state == 12) goto L_regular_intro;
- if (@wg_state == 13) goto L_intro;
- if (@wg_state == 14) goto L_show_materials;
- if (@wg_state == 15) goto L_search_items;
- if (@wg_state == 16) goto L_retrieve_design;
- if (@wg_state == 17) goto L_bringing_design;
- if (@wg_state == 18) goto L_wait_dress_finished;
- if (@wg_state == 19) goto L_dress_finished;
- if (@wg_state >= 20 && @wg_state < 23) goto L_deliver_dress;
- if (@wg_state >= 23) goto L_regular_intro;
-
- set @t, rand(3);
- if (@t == 0) goto L_intro_0;
- if (@t == 1) goto L_intro_1;
-
- mes "You see a middle-aged woman furiously sewing away at what appears to be a very expensive dress. Her fingers are moving so nimbly that you find it near-impossible to follow the needle.";
- goto L_intro_over;
-
-L_intro_0:
- mes "You notice a middle-aged woman carefully drawing lines on a large sheet of cotton.";
- goto L_intro_over;
-
-L_intro_1:
- mes "You see a middle-aged woman cautiously but surprisingly swiftly cutting out shapes from a huge cotton sheet. The scissors glide along the cloth as if it were butter, never leaving the premarked lines.";
- goto L_intro_over;
-
-L_intro_over:
- next;
- mes "She suddenly stops and looks up.";
- next;
- mes "\"Now who are you, and what are you doing here?\"";
- mes "She squints, pushes her thick spectacles up the bridge of her nose and eyes you suspiciously.";
- next;
-
- set @agostine_msg0$, "";
- set @agostine_msg1$, "";
-
- if (@wg_state >= 1)
- set @agostine_msg0$, "Do you know Agostine?";
- if ((@wg_state >= 9) && (countitem("FurBoots")))
- set @agostine_msg1$, "Can you make fur boots, like Agostine?";
-
- menu
- "Hello! My name is " + strcharinfo(0) + ".", L_hello_0,
- "Hello; are you a tailor?", L_hello_1,
- "Can you make something for me?", L_hello_2,
- @agostine_msg0$, L_agostine_0,
- @agostine_msg1$, L_agostine_1;
-
-L_hello_0:
- mes "She raises an eyebrow.";
- mes "\"That,\", she notes dryly, \"is hardly my fault. And now I would greatly appreciate it if you were to get out of here and leave me to my work!\"";
- goto L_Close;
-
-L_hello_1:
- mes "She frowns.";
- mes "\"No, I am an accupuncturist, I just happen to practice on cloth! Get out of here with your silly questions!\"";
- goto L_Close;
-
-L_hello_2:
- mes "She glares at you indignantly.";
- mes "\"Do you even know whom you are talking to? I am Lora Tay, greatest of the seven seamstresses of the South!\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"I do not work for petty peasants or arrogant adventurers. Get out of my sight!\"";
- mes "She waves you away and returns to her work.";
- goto L_Close;
-
-L_agostine_0:
- if (@wg_state < 1)
- goto L_Close;
- mes "She shoots an incensed glare at you.";
- mes "\"Ah, Agostine! The 'legendary tailor'! Now who has not heard of him, been inspired by him! Such charisma! Such popularity! Such unprecedented lack of talent!\"";
- mes "You notice that she prononuces the 't's as if she were trying to slap someone.";
- next;
- mes "\"Please spare me your tales of this fool. He couldn't mend a sock without getting himself trapped inside!\"";
- mes "She frowns and turns back to her work, clearly not interested in discussing the matter further.";
- goto L_Close;
-
-L_agostine_1:
- if ((@wg_state < 9) || (countitem (655) == 0))
- goto L_Close;
- mes "[Lora Tay the Seamstress]";
- mes "She glares at your boots, her lips forming barely more than a thin line. Deep furrows form above her brows.";
- mes "\"I can't believe it! He copied Illana's design but used fluffy fur in place of ice wolvern fur-- Fluffy fur! Of all things! Who would wear such an atrocity of fashion! Everyone knows that you need ice-white, not pale-white, to go with such leather!\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She looks at them more closely.";
- mes "\"This insolent upstart! Even worse, he copied my very own double-backward cross-stitch pattern... I can't believe it!\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "Angry red spots begin to form on her cheeks.";
- mes "\"Get those... things out of my sight before I forget myself!\"";
- if (@wg_state == 9) goto L_Next13;
- goto L_Close;
-
-L_Next13:
- set @wg_state, 10;
- callfunc "setWGState";
- goto L_Close;
-
-L_agostine_menu:
- mes "[Lora Tay the Seamstress]";
- mes "The seamstress looks up at you from her work.";
- mes "\"I do hope that you have not had any more dealings with this... this lumberjack of a tailor?\"";
- next;
- if (countitem("WinterGloves") > 0)
- menu
- "You mean Agostine?", L_agostine_3,
- "Actually, he also made me gloves...", L_agostine_2,
- "Why don't you like him?", L_agostine_4,
- "No, none, really.", L_agostine_5;
- menu
- "You mean Agostine?", L_agostine_3,
- "Why don't you like him?", L_agostine_4,
- "No, none, really.", L_agostine_5;
-
-L_agostine_2:
- if ((@wg_state < 9) || (countitem("WinterGloves") == 0))
- goto L_Close;
- mes "[Lora Tay the Seamstress]";
- mes "Lora inspects your gloves, shock apparent on her face.";
- mes "\"Winter gloves? And he managed the join stitches without adding a single crease... no, that can't be the Agostine we were talking about...\"";
- mes "Without asking, she takes your gloves and inspects them further.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"Triple inverted crossbar... he stole another of my stitching patterns! Except... no, that couldn't hold... what kind of yarn...\"";
- mes "Torn between excitement, worry, and latent disgust, she frantically turns the gloves from side to side, looking for obvious flaws, her face reddening.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"No, it's perfect... Inconceivable! How could that little upstart... I don't believe it!\"";
- mes "Breathing heavily with something that might be anger or confusion, she turns them inside out.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She slides her fingers over the now-exposed inside whilst the color of her face approaches that of an over-ripe tomato.";
- mes "\"Almost perfectly smooth...\", she whispers.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She jumps up in a fit of sudden rage.";
- mes "\"That's impossible! Where did he learn to sew like that! How did he cut the shapes so perfectly! When did he...";
- mes "Suddenly, she breaks into a cough.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"*cough* ... can't possibly... *cough*...\"";
- mes "Lora sinks back on her chair, trying to control her cough.";
- next;
- if (countitem("BottleOfWater"))
- menu
- "(sneak out of the room)", L_end,
- "Are you alright?", L_NextMenu,
- "Here, have a bottle of water...", L_give_water,
- "Can I help you?", L_NextMenu;
- goto L_NextMenu;
-
-L_NextMenu:
- if (countitem("BottleOfWater") == 0)
- menu
- "(sneak out of the room)", L_end,
- "Are you alright?", L_Next,
- "Can I help you?", L_Next;
- goto L_Next;
-
-L_Next:
- mes "[Lora Tay the Seamstress]";
- mes "She holds out your gloves for you to pick up, then waves you out of the room. Fortunately, her cough seems to be slowly subsiding.";
- goto L_Close;
-
-L_agostine_3:
- mes "[Lora Tay the Seamstress]";
- mes "She frowns at you.";
- mes "\"What other self-absorbed tailor-pretends with the sewing skill of a mouboo are there around? Stop wasting my time.\"";
- goto L_Close;
-
-L_agostine_4:
- mes "[Lora Tay the Seamstress]";
- mes "\"Is it not obvious? We are talking about someone so self-absorbed that he chose to ignore the advice of myself, greatest of the seven southern seamstresses! I cannot stand such arrogance.\"";
- goto L_Close;
-
-L_agostine_5:
- mes "[Lora Tay the Seamstress]";
- mes "\"Good for you. That arrogant good-for-nothing couldn't tell a piece of cotton from chain mail if he wiped his nose with it!\"";
- goto L_Close;
-
-L_no_water:
- mes "Checking more closely, you realize that you are out of water.";
- mes "You apologise to Lora, though it fortunately seems that her cough is subsiding.";
- mes "She waves you out of the room.";
- goto L_Close;
-
-L_regular_intro:
- mes "[Lora Tay the Seamstress]";
- mes "\"Ah, you again. Is there anything in particular you need?\"";
- next;
- if (@wg_state == 12)
- goto L_main_menu_proposal;
- goto L_main_menu;
-
-L_give_water:
- if (countitem("BottleOfWater") == 0)
- goto L_no_water;
- delitem "BottleOfWater", 1;
- set @wg_state, 11;
- callfunc "setWGState";
-
- set @xpval, 50000;
-
- getexp @xpval, 0;
- mes "[Lora Tay the Seamstress]";
- mes "Lora grabs your water bottle and take a deep sip. Slowly, her head regains a more natural color. As she puts the bottle down, her cough seems to have subsided.";
- mes "\"Thank you, dear; that was just the right thing at the right time.\"";
- mes "[You gain " + @xpval + " experience points]";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She hands you the winter gloves again.";
- mes "\"Now what happened I don't know, but this wasn't made by the Agostine I remember. But I shan't be made a fool out of by one such as him.\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"If HE can sew petty every-day items for ordinary peasants, then so can I. Very well, is there anything in particular that you need made? I shall show you how a proper seamstress operates!\"";
- next;
-
- if (@wg_state == 12)
- goto L_main_menu_proposal;
- goto L_main_menu;
-
-L_main_menu:
- menu
- "Can you trim something for me?", L_trim,
- "Can you lengthen something for me?", L_lengthen,
- "Can you make me a shirt?", L_shirt,
- "Can you make me a tank top?", L_tanktop,
- "Can you make me a cape?", L_cape,
- "Can you make fur boots for me?", L_Fur,
- "Can you make winter gloves me?", L_Fur,
- "Can you sew a robe for me?", L_robe,
- "Can you make a desert hat for me?", L_desert_hat,
- "Can you enhance a sorcerer robe with another line color?", L_sr_linecolor,
- "Goodbye for now.", L_end;
-
-L_Fur:
- mes "[Lora Tay the Seamstress]";
- mes "\"From what? Fluffy fur? I won't work with such lowly materials.\"";
- next;
- goto L_main_menu;
-
-L_main_menu_proposal:
- menu
- "Actually...I have a proposal for you...", L_agostine_proposal,
- "Goodbye for now.", L_end;
-
-L_agostine_proposal:
- mes "[Lora Tay the Seamstress]";
- mes "\"What kind of proposal are you asking of me?\"";
- next;
-
- menu
- "I have talked to Agostine and he needs your help.", L_Next1,
- "I forgot...", L_end;
-
-L_Next1:
- mes "[Lora Tay the Seamstress]";
- mes "\"That cheat! What could he possibly want from me?";
- mes "We don't even have the same style in seaming. Is this a joke?\"";
- next;
-
- menu
- "It's no joke. He needs your help in creating a new fashion!", L_Next2,
- "Yeah you're right, he was probably joking.", L_end;
-
-L_Next2:
- mes "[Lora Tay the Seamstress]";
- mes "\"Well it depends what he wants from me.";
- mes "Go see Agostine, ask him what he's planning and I will think about it.\"";
-
- set @wg_state, 13;
- callfunc "setWGState";
- goto L_Close;
-
-L_intro:
- mes "Lora Tay seems lost in her thoughts... ";
- menu
- "Sorry to disturb you, but...", L_main_menu,
- "I better go talk to Agostine.", L_end;
-
-L_show_materials:
- mes "[Lora Tay the Seamstress]";
- mes "\"Did you talk to Agostine about his idea?\"";
- next;
- menu
- "Yes, he explained he saw a dress in a dream and gave me these materials.", L_Next3,
- "No, that guy is a total wacko.", L_end;
-
-L_Next3:
- mes "[Lora Tay the Seamstress]";
- mes "\"Wow these are such fine materials!";
- mes "These are certainly not for just any ordinary clothes...";
- mes "He must be thinking of something magnificent.\"";
- next;
-
- menu
- "He said this garment would be his first dress creation and he wanted it to be fabulous!", L_Next4;
-
-L_Next4:
- mes "[Lora Tay the Seamstress]";
- mes "\"Fine I will accept his offer...";
- mes "But the materials he has given you need some sewing on the edges.\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"I will fix them, but I cannot use normal threading to fix these materials.";
- mes "I will need a soft thin thread so I won't spoil the textures.\"";
- next;
- goto L_search_items;
-
-L_search_items:
- mes "[Lora Tay the Seamstress]";
- mes "\"Please bring me " + @FINEDRESS_COCOONS + " silk cocoons.";
- mes "This should cover the materials needed, and will leave extra for sewing the pieces together later on.\"";
- next;
-
- menu
- "I will go get them right away!", L_Next5,
- "Here you are.", L_give_items,
- @FINEDRESS_COCOONS+" silk cocoons for a dress? Find somebody else.", L_end;
-
-L_Next5:
- set @wg_state, 15;
- callfunc "setWGState";
- goto L_Close;
-
-L_not_enough_items:
- mes "[Lora Tay the Seamstress]";
- mes "\"This is not funny. I need " + @FINEDRESS_COCOONS + " silk cocoons. No less.";
- goto L_Close;
-
-L_give_items:
- if (countitem ("SilkCocoon") < @FINEDRESS_COCOONS)
- goto L_not_enough_items;
- delitem "SilkCocoon", @FINEDRESS_COCOONS;
- set @wg_state, 16;
- callfunc "setWGState";
-
- mes "[Lora Tay the Seamstress]";
- mes "\"Great, now I can spin the silk threading and fix this mess made of these fine materials.";
- mes "While I do this, you will need to go get the design drawings from Agostine...";
- mes "Every tailor puts their designs on paper before they forget about it.\"";
- next;
- goto L_retrieve_design;
-
-L_retrieve_design:
- mes "[Lora Tay the Seamstress]";
- mes "\"May you go retrieve the design from Agostine?\"";
- next;
- menu
- "Certainly I'll be back soon!", L_Close,
- "Actually I want something else...", L_main_menu;
-
-L_bringing_design:
- mes "[Lora Tay the Seamstress]";
- mes "\"Welcome back, did you get the drawings I requested?\"";
- next;
- menu
- "Here they are!", L_Next6;
-
-L_Next6:
- mes "[Lora Tay the Seamstress]";
- mes "\"Wonderful, this dress design is magnificent!";
- mes "I am done with the threading but I will now need to sew these materials together into the design.\"";
- next;
- set @wg_state, 18;
- callfunc "setWGState";
- goto L_wait_dress_finished;
-
-L_wait_dress_finished:
- // Sets @time_start to the current time
- // if not set yet, or if the player logged off.
- if (@time_start == 0) set @time_start, gettimetick(2);
- if (gettimetick(2) - @time_start > 30)
- goto L_dress_finished;
- mes "[Lora Tay the Seamstress]";
- mes "\"It will take some time to have the dress finished.";
- mes "Meanwhile, why don't you go take some air outside?\"";
- goto L_Close;
-
-L_dress_finished:
- set @wg_state, 19;
- callfunc "setWGState";
- mes "[Lora Tay the Seamstress]";
- mes "\"Well it was difficult seaming with such fragile materials.";
- mes "But I have done it. The design is finished except for one part of it.\"";
- next;
-
- menu
- "Wow it looks great, but what's missing?", L_Next7;
-
-L_Next7:
- mes "[Lora Tay the Seamstress]";
- mes "\"Well there are white flare designs on the bottom of the dress.";
- mes "I'm not great with fine cloth design so this might be something Agostine must do on his own.";
- next;
-
- mes "[Lora Tay the Seamstress]";
- mes "\"Please take the unfinished dress to him so he may finish the edges with the cloth.\"";
- next;
-
- menu
- "Okay, can't wait to see the finished product! Thanks for your help!", L_Next8;
-
-L_Next8:
- set @wg_state, 20;
- callfunc "setWGState";
- goto L_Close;
-
-L_deliver_dress:
- mes "[Lora Tay the Seamstress]";
- mes "\"Please take the unfinished dress to him so he may finish the edges with the cloth.\"";
- menu
- "I'm on my way.", L_Close,
- "I have a request...", L_main_menu;
-
-L_desert_hat:
- mes "[Lora Tay the Seamstress]";
- mes "The seamstress sighs.";
- mes "\"One of these days it would be nice to have an actual challenge... yes, of course I can make a desert hat. A Cotton Headband, three pieces of cotton cloth. Hmm. And let's add 300 GP to that.\"";
- next;
- cleararray @items$, "", getarraysize(@items$);
- cleararray @item_names$, "", getarraysize(@item_names$);
- set @o, 1;
- setarray @items$, "CottonHeadband";
- setarray @item_names$, "Here is a Cotton Headband.";
- callsub S_CottonHeadbandColors;
-
- callfunc "DynamicItemMenu$";
- if (@item$ == "")
- goto L_main_menu;
- if (@item$ == "CottonHeadband")
- set @genitem$, "DesertHat";
- if (@item$ != "CottonHeadband")
- set @genitem$, $@DYE_colors$[@index] + "DesertHat";
- if (countitem(@item$) < 1)
- goto L_desert_hat_noheadband;
- if (countitem("CottonCloth") < 3)
- goto L_desert_hat_nocotton;
- if (Zeny < 300)
- goto L_desert_hat_nogp;
- delitem @item$, 1;
- delitem "CottonCloth", 3;
- set Zeny, Zeny - 300;
- getitem @genitem$, 1;
- mes "[Lora Tay the Seamstress]";
- mes "\"Now then, this should only take a minute.\"";
- mes "The seamstress folds your cotton cloth in a complicated fashion, wraps the resulting bundle into and out of the headband, and finally sews together several loose ends.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "The result resembles a huge knot.";
- mes "Lora picks two ends and pulls, hard-- to your amazement, the knot unfolds, yielding a Desert Hat.";
- mes "\"Here you are.\"";
- next;
- goto L_main_menu;
-
-S_CottonHeadbandColors:
- set @items$[@o], $@DYE_colors$[@o]+"CottonHeadband";
- set @item_names$[@o], "Here is a "+$@DYE_color_names$[@o]+" Cotton Headband";
- set @o, @o + 1;
- if(@o < getarraysize($@DYE_colors$)) goto S_CottonHeadbandColors;
- return;
-
-L_desert_hat_nocotton:
- mes "[Lora Tay the Seamstress]";
- mes "\"You're asking me to make a desert hat without enough cloth? Here, have your headband back-- see, that's how much I can do without cloth! And since I'm generous today, you can even keep your GP...\"";
- next;
- goto L_main_menu;
-
-L_desert_hat_nogp:
- mes "[Lora Tay the Seamstress]";
- mes "\"No, no, no. 300 GP. That's not that much, I've been told. I can't just work for free, now can I?\"";
- next;
- goto L_main_menu;
-
-L_desert_hat_noheadband:
- mes "[Lora Tay the Seamstress]";
- mes "\"Now that is odd. Where did your headband vanish to? Well, I'm not going to make you something as silly as a headband, so get one from elsewhere.\"";
- next;
- goto L_main_menu;
-
-L_trim:
- mes "[Lora Tay the Seamstress]";
- mes "\"Trimming... you mean that you can't do that yourself? Well, alright... I suppose I should charge 100 GP and do it.\"";
- mes "\"Alright. What is it that you want trimmed?\"";
- next;
-
- cleararray @items, 0, getarraysize(@items);
- cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items, 1202, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 688, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 632, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 648, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189;
- setarray @item_names$, "Cotton Shirt", "Red Cotton Shirt", "Green Cotton Shirt", "Dark Blue Cotton Shirt", "Yellow Cotton Shirt", "Light Blue Cotton Shirt", "Pink Cotton Shirt", "Black Cotton Shirt", "Orange Cotton Shirt", "Purple Cotton Shirt", "Dark Green Cotton Shirt", "Tank Top", "Red Tank Top", "Green Tank Top", "Dark Blue Tank Top", "Yellow Tank Top", "Light Blue Tank Top", "Pink Tank Top", "Black Tank Top", "Orange Tank Top", "Purple Tank Top", "Dark Green Tank Top", "Cotton Skirt", "Red Cotton Skirt", "Green Cotton Skirt", "Dark Blue Cotton Skirt", "Yellow Cotton Skirt", "Light Blue Cotton Skirt", "Pink Cotton Skirt", "Black Cotton Skirt", "Orange Cotton Skirt", "Purple Cotton Skirt", "Dark Green Cotton Skirt", "Cotton Trousers", "Red Cotton Trousers", "Green Cotton Trousers", "Dark Blue Cotton Trousers", "Yellow Cotton Trousers", "Light Blue Cotton Trousers", "Pink Cotton Trousers", "Black Cotton Trousers", "Orange Cotton Trousers", "Purple Cotton Trousers", "Dark Green Cotton Trousers";
- callfunc "DynamicItemMenu";
- if (@item == 0)
- goto L_main_menu;
- set @delitem, @item;
- set @genitem, 0;
- if (@item == 1202)
- set @genitem, 688;
- if (@item == 688)
- set @genitem, 689;
- if (@item == 632)
- set @genitem, 771;
- if (@item == 648)
- set @genitem, 586;
- if (@item >= 2090 && @item <= 2099)
- set @genitem, @item + 30;
- if (@item >= 2050 && @item <= 2059)
- set @genitem, @item + 40;
- if (@item >= 2100 && @item <= 2109)
- set @genitem, @item + 70;
- if (@item >= 2180 && @item <= 2189)
- set @genitem, @item - 70;
- if (@genitem == 0)
- goto L_trim_impossible;
- if (Zeny < 100)
- goto L_trim_nozeny;
- if (countitem(@delitem) < 1)
- goto L_main_menu;
-
- delitem @delitem, 1;
- getitem @genitem, 1;
- set Zeny, Zeny - 100;
- mes "[Lora Tay the Seamstress]";
- mes "";
- mes "\"There you are, dear.\"";
- next;
- goto L_main_menu;
-
-L_trim_impossible:
- mes "[Lora Tay the Seamstress]"; // INTERNAL ERROR
- mes "\"I don't really want to shorten this any more.\"";
- next;
- goto L_main_menu;
-
-L_trim_nozeny:
- mes "[Lora Tay the Seamstress]";
- mes "\"Not enough GP? Well, just do it yourself-- trimming really is trivial.\"";
- next;
- goto L_main_menu;
-
-L_lengthen:
- mes "[Lora Tay the Seamstress]";
- mes "\"Naturally, I will need a piece of Cotton Cloth to sew onto it; I must also charge you some... hmm... does 500 GP sound reasonable? Yes, I think I shall charge that.\"";
- mes "\"Now, let me see. What is it that you want lengthened?\"";
- next;
-
- cleararray @items, 0, getarraysize(@items);
- cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items, 688, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 689, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 771, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 586, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119;
- setarray @item_names$, "Tank Top", "Red Tank Top", "Green Tank Top", "Dark Blue Tank Top", "Yellow Tank Top", "Light Blue Tank Top", "Pink Tank Top", "Black Tank Top", "Orange Tank Top", "Purple Tank Top", "Dark Green Tank Top", "Short Tank Top", "Red Short Tank Top", "Green Short Tank Top", "Dark Blue Short Tank Top", "Yellow Short Tank Top", "Light Blue Short Tank Top", "Pink Short Tank Top", "Black Short Tank Top", "Orange Short Tank Top", "Purple Short Tank Top", "Dark Green Short Tank Top", "Miniskirt", "Red Miniskirt", "Green Miniskirt", "Dark Blue Miniskirt", "Yellow Miniskirt", "Light Blue Miniskirt", "Pink Miniskirt", "Black Miniskirt", "Orange Miniskirt", "Purple Miniskirt", "Dark Green Miniskirt", "Cotton Shorts", "Red Cotton Shorts", "Green Cotton Shorts", "Dark Blue Cotton Shorts", "Yellow Cotton Shorts", "Light Blue Cotton Shorts", "Pink Cotton Shorts", "Black Cotton Shorts", "Orange Cotton Shorts", "Purple Cotton Shorts", "Dark Green Cotton Shorts";
-
- callfunc "DynamicItemMenu";
- if (@item == 0)
- goto L_main_menu;
-
- set @delitem, @item;
- set @genitem, 0;
- if (@item == 688)
- set @genitem, 1202;
- if (@item == 689)
- set @genitem, 688;
- if (@item == 771)
- set @genitem, 632;
- if (@item == 586)
- set @genitem, 648;
- if (@item >= 2120 && @item <= 2129)
- set @genitem, @item - 30;
- if (@item >= 2090 && @item <= 2099)
- set @genitem, @item - 40;
- if (@item >= 2170 && @item <= 2179)
- set @genitem, @item - 70;
- if (@item >= 2110 && @item <= 2119)
- set @genitem, @item + 70;
- if (@genitem == 0)
- goto L_lengthen_impossible;
- if (Zeny < 500)
- goto L_lengthen_nozeny;
- if (countitem ("CottonCloth") < 1)
- goto L_lengthen_nocotton;
- if (countitem(@delitem) < 1)
- goto L_main_menu;
-
- delitem @delitem, 1;
- delitem "CottonCloth", 1;
- getitem @genitem, 1;
- set Zeny, Zeny - 500;
- mes "[Lora Tay the Seamstress]";
- mes "The seamstress cuts your piece of cotton cloth into stripes and sews them on. Using some odd liquid, she flattens the seams and borders.";
- if (@delitem > 2000) // dyed
- mes "She then applies another liquid-- smelling strangely of fermented apples-- to the result, wraps it up, and wrings it tightly. As she unwraps it, you observe to your amazement that the dye has spread to the newly attached area.";
- mes "\"There you are, dear.\"";
- next;
- goto L_main_menu;
-
-L_lengthen_nocotton:
- mes "[Lora Tay the Seamstress]";
- mes "\"Who do you think I am? The cotton fairy? Get yourself some cloth before you ask me to sew it on.\"";
- next;
- goto L_main_menu;
-
-L_lengthen_nozeny:
- mes "[Lora Tay the Seamstress]";
- mes "\"No gold, no sewing.\"";
- next;
- goto L_main_menu;
-
-L_lengthen_impossible:
- mes "[Lora Tay the Seamstress]"; // INTERNAL ERROR
- mes "\"I really can't lengthen that any more.\"";
- next;
- goto L_main_menu;
-
-L_shirt:
- mes "[Lora Tay the Seamstress]";
- mes "\"Oh, how silly. You can buy those everywhere. Please don't bore me with such trifles, dear.\"";
- next;
- goto L_main_menu;
-
-L_tanktop:
- mes "[Lora Tay the Seamstress]";
- mes "\"A tank top? Well, hardly a challenge, but I suppose I could do that. Please get me some cloth-- plain cotton will do-- and, let's see, how does 100,000 GP for my efforts sound?\"";
- mes "\"Wait, I keep forgetting, you are just an adventurer... let's make that 1000 GP, then.\"";
- next;
- goto L_tanktop_menu;
-
-L_tanktop_menu:
- menu
- "I think I would like something else.", L_main_menu,
- "A tank top, please (6 Cotton Cloth)", L_tanktop_long,
- "A short tank top, please (5 Cotton Cloth)", L_tanktop_short,
- "Goodbye for now.", L_end;
-
-L_tanktop_short:
- if (countitem ("CottonCloth") < 5)
- goto L_tanktop_ins_cloth;
- if (Zeny < 1000)
- goto L_tanktop_ins_Zeny;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("CottonCloth") > 5)
- goto L_TooMany;
- set Zeny, Zeny - 1000;
- delitem "CottonCloth", 5;
- getitem "ShortTankTop", 1;
- mes "[Lora Tay the Seamstress]";
- mes "You watch as Lora sews the pieces of cloth together, then flattens the seams and ends with some odd liquid.";
- mes "Amazingly, the result looks like a single piece of cloth.";
- mes "After little more than a few elegant cuts and folds, your tank top is ready.";
- mes "\"Oh dear, it seems that I am done already. Do you need anything else?\"";
- next;
- goto L_tanktop_menu;
-
-L_tanktop_long:
- if (countitem ("CottonCloth") < 6)
- goto L_tanktop_ins_cloth;
- if (Zeny < 1000)
- goto L_tanktop_ins_Zeny;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("CottonCloth") > 6)
- goto L_TooMany;
- set Zeny, Zeny - 1000;
- delitem "CottonCloth", 6;
- getitem "TankTop", 1;
- mes "[Lora Tay the Seamstress]";
- mes "After combining your pieces of cloth into one-- miraculously making the seams and stitches vanish-- the seamstress cuts out all that doesn't belong into a tank top, then folds and stabilises the edges with additional seam lines.";
- mes "\"There you are. Don't worry, I have trimmed it to match your size perfectly.\"";
- next;
- goto L_tanktop_menu;
-
-L_tanktop_ins_cloth:
- mes "[Lora Tay the Seamstress]";
- mes "\"No, no, no, count again-- how much Cotton Cloth did I say I needed? That's not enough.\"";
- next;
- goto L_tanktop_menu;
-
-L_tanktop_ins_Zeny:
- mes "[Lora Tay the Seamstress]";
- mes "As you note that you don't have enough GP on you, Lora rolls her eyes.";
- mes "\"I don't work for free, you know. I already gave you a discounted peasant price.\"";
- next;
- goto L_main_menu;
-
-L_cape:
- mes "[Lora Tay the Seamstress]";
- mes "She shakes her head.";
- mes "\"No capes. You're an adventurer, right? Do you want to get caught by a closing portcullis? Or strangled when your cape gets tangled in a tree? Or brought down by a mushroom stomping on your cape while you're trying to run away? No capes.\"";
- next;
- goto L_main_menu;
-
-L_robe:
- mes "[Lora Tay the Seamstress]";
- mes "\"A robe? Well, as long as you're not asking me to make it out of cotton...\"";
- next;
- if (countitem("SilkCocoon")== 0 && countitem("SilkSheet")== 0)
- goto L_robe_nosilk;
- goto L_robe_menu;
-
-L_robe_menu:
- menu
- "Here, I have some silk cocoons!", L_Next9,
- "Here, I have some silk sheets!", L_robe_sheets,
- "Where can I find silk?", L_where_silk,
- "How much silk do you need?", L_how_much_silk,
- "Oh, never mind.", L_main_menu;
-
-L_Next9:
- mes "[Lora Tay the Seamstress]";
- mes "The seamstress stares at you as if you had gone out of your mind.";
- mes "\"And what precisely do you expect me to do with Silk Cocoons? String them together in some baubly chain? Somehow remove the thread and spin and weave it so that some random person can have their robe?\"";
- next;
- menu
- "Will you trade cocoons for sheets?", L_Next10,
- "Never mind.", L_main_menu;
-
-L_Next10:
- mes "[Lora Tay the Seamstress]";
- mes "Lora frowns.";
- mes "\"It's not all that easy to get properly processed silk around here. Easier for me than for you, I admit...\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She sighs.";
- mes "\"All right, very well then. I have enough spare silk sheets right now, but you pay the silk processing for your cocoons.\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"Let's see... " + @ROBE_COCOONS_NR + " silk cocoons and " + @ROBE_ZENY + " GP should just about cover that.\"";
- next;
- menu
- "I'm not interested.", L_main_menu,
- "Very well then, here you are.", L_Next11;
-
-L_Next11:
- if (countitem("SilkCocoon") < @ROBE_COCOONS_NR)
- goto L_robe_missing_cocoons;
- if (Zeny < @ROBE_ZENY)
- goto L_robe_missing_Zeny;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("SilkCocoon") > @ROBE_COCOONS_NR)
- goto L_TooMany;
- set Zeny, Zeny - @ROBE_ZENY;
- delitem "SilkCocoon", @ROBE_COCOONS_NR;
- mes "[Lora Tay the Seamstress]";
- mes "The seamstress puts your cocoons and GP away, takes your measurements and pulls out several silk sheets. She asks you to stretch out your arms, then pins the silk sheets in place all over your body.";
- next;
- goto L_get_robe;
-
-L_robe_sheets:
- set @Robe_with_sheets, 1;
- mes "[Lora Tay the Seamstress]";
- mes "\"Let's see... " + @ROBE_SHEETS_NR + " silk sheets and " + @ROBE_SHEETS_ZENY + " GP should just about cover that.\"";
- next;
- menu
- "I'm not interested.", L_main_menu,
- "Very well then, here you are.", L_Next12;
-
-L_Next12:
- if (countitem("SilkSheet") < @ROBE_SHEETS_NR)
- goto L_robe_missing_sheets;
- if (Zeny < @ROBE_SHEETS_ZENY)
- goto L_r_sh_miss_zeny;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("SilkSheet") > @ROBE_SHEETS_NR)
- goto L_TooMany;
- set Zeny, Zeny - @ROBE_SHEETS_ZENY;
- delitem "SilkSheet", @ROBE_SHEETS_NR;
- mes "[Lora Tay the Seamstress]";
- mes "The seamstress puts your GP away, takes your measurements and puts the silk sheets on the table. She asks you to stretch out your arms, then pins the silk sheets in place all over your body.";
- next;
- goto L_get_robe;
-
-L_get_robe:
- mes "[Lora Tay the Seamstress]";
- mes "She proceeds to make a number of mysterious marks on the sheets with a charcoal pen. Meanwhile, your arms are getting tired, but you're afraid to lower them-- she used a lot of pins to put everything into place, and you lost track of where they went...";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"Splendid.\"";
- mes "After removing the sheets (and pins!), she picks up a pair of scissors and plows through the cloth at her usual amazing pace, only stopping briefly to sew together parts here and there.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She then treats the seams with some odorless liquid, making them vanish completely. Finally she hands you the finished robe.";
- getitem "SilkRobe", 1;
- if (@Robe_with_sheets == 1)
- goto L_robe_sheet_end;
- mes "\"Here you are now, this will fit. And don't you dare tell anyone that I did this! I'm not about to start a silk cocoon collection!\"";
- next;
- goto L_main_menu;
-
-L_robe_sheet_end:
- mes "\"Here you are now, this will fit. Thank you for bringing the sheets. People are so lazy nowadays! \"";
- next;
- goto L_main_menu;
-
-L_robe_missing_cocoons:
- mes "[Lora Tay the Seamstress]";
- mes "\"" + @ROBE_COCOONS_NR + " cocoons is what I said, not " + countitem("SilkCocoon") + ".";
- mes @ROBE_COCOONS_NR + " is " + (@ROBE_COCOONS_NR / 10) + " as many times as you have fingers, in case that helps.\"";
- next;
- goto L_main_menu;
-
-L_robe_missing_Zeny:
- mes "[Lora Tay the Seamstress]";
- mes "\"No, no no. The way this works is that you give me the GP first and I give you the robe afterwards. You're " + (@ROBE_ZENY - Zeny) + " GP short, so come back when you can afford the robe!\"";
- next;
- goto L_main_menu;
-
-L_robe_missing_sheets:
- mes "[Lora Tay the Seamstress]";
- mes "\"" + @ROBE_SHEETS_NR + " silk sheets is what I said, not " + countitem("SilkSheet") + ".";
- mes @ROBE_SHEETS_NR + " is " + (10-@ROBE_SHEETS_NR) + " less than you have fingers, in case that helps.\"";
- next;
- goto L_main_menu;
-
-L_r_sh_miss_zeny:
- mes "[Lora Tay the Seamstress]";
- mes "\"No, no no. The way this works is that you give me the GP first and I give you the robe afterwards. You're " + (@ROBE_SHEETS_ZENY - Zeny) + " GP short, so come back when you can afford the robe!\"";
- next;
- goto L_main_menu;
-
-L_where_silk:
- mes "[Lora Tay the Seamstress]";
- mes "\"Oh, Hetchel on the Tulimshar Marketplace can weave them for you.\"";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "She hesitates.";
- mes "\"I didn't see her there the last time I visited, though. She may be visiting family. Tough luck.\"";
- next;
- goto L_robe_menu;
-
-L_how_much_silk:
- mes "[Lora Tay the Seamstress]";
- mes "\"Six sheets should do fine, if they're the usual double-elbow squares.\"";
- next;
- goto L_robe_menu;
-
-L_robe_nosilk:
- mes "[Lora Tay the Seamstress]";
- mes "\"What is that? You don't have any silk? Well, you're out of luck, I would say. I shan't make one out of those cotton rags; you might as well be wearing an apple sack.\"";
- next;
- goto L_main_menu;
-
-L_end:
- set @ROBE_COCOONS_NR, 0;
- set @ROBE_ZENY, 0;
- set @ROBE_SHEETS_NR, 0;
- set @ROBE_SHEETS_ZENY, 0;
- set @Robe_with_sheets, 0;
- goto L_Close;
-
-L_TooMany:
- mes "[Lora Tay the Seamstress]";
- mes "\"You don't have anywhere to put this. Come back when you have more room.\"";
- goto L_Close;
-
-L_sr_linecolor:
- mes "[Lora Tay the Seamstress]";
- mes "\"Hmm, this has a line sewed on it already. I don't see another way than remove it and sew a new one.";
- mes "That is quite a difficult work... for a casual tailor of course. I'll do that in a heart beat.\"";
- next;
- mes "\"However, you can expect this will cost you a large fee. Let's say " + @SORCERER_ROBE_SEW_ZENY + " GP.";
- mes "Also, I will need " + @SORCERER_ROBE_NUM_COTTON_CLOTH + " sheets of Cotton Cloth of the color you want.\"";
- next;
- mes "\"Ok. Now please wear the robe you want me to change.\"";
- set @loratay_asking_robe, 1;
- goto L_Close;
-
-L_ExamineSR:
- set @loratay_asking_robe, 0;
- mes "[Lora Tay the Seamstress]";
- mes "\"Let's see...\"";
- next;
- set @chest_equip_id, getequipid(equip_torso);
- callsub S_Get_SRColors;
- mes "Lora Tay takes a closer look at what you are wearing.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"Hmm. This " + $@DYE_color_names$[@current_linecolor] + " lined " + $@DYE_color_names$[@current_maincolor] + " sorcerer robe. I see. Is that ok?\"";
- if (@current_maincolor == -1 || @current_linecolor == -1)
- goto L_NotSR;
- menu
- "Yes, that's fine. Take this one.", L_ChooseSRLineColor,
- "No, I changed my mind.", L_CleanSR;
-
-L_NotSR:
- mes "\"This isn't a Sorcerer Robe dear. Stop taking me for a fool.\"";
- goto L_CleanSR;
-
-L_ChooseSRLineColor:
- // Unequip the robe, just to simulate Lora Tay really took it
- unequipbyid(equip_torso);
- mes "[Lora Tay the Seamstress]";
- mes "\"And which Cotton Cloth color will you give me?\"";
- menu
- "A " + $@DYE_color_names$[0] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[1] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[2] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[3] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[4] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[5] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[6] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[7] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[8] + " one.", L_ItemMenus2,
- "A " + $@DYE_color_names$[9] + " one.", L_ItemMenus2,
- "A White one.", L_ItemMenus2,
- "Hum. I changed my mind. Later maybe.", L_end;
-
-L_ItemMenus2:
- set @chosen_color, @menu - 1;
- set @cotton_cloth_id, 2250 + @chosen_color;
- // The White Cotton Cloth is in fact the undyed one.
- if (@cotton_cloth_id == 2260)
- set @cotton_cloth_id, 660;
- if (countitem(@cotton_cloth_id) < 2)
- goto L_NoColoredCottonCloth;
- if (@current_linecolor == @chosen_color)
- goto L_SR_SameColor;
- callsub S_Get_NewSRId;
- // Should not happen since it has been checked the player submitted a sorcerer robe
- if (@new_sr_id == 0)
- goto L_end;
-
- if (Zeny < @SORCERER_ROBE_SEW_ZENY)
- goto L_SR_NoZeny;
- if (countitem(@chest_equip_id) == 0)
- goto L_SR_Vanished;
- delitem @cotton_cloth_id, @SORCERER_ROBE_NUM_COTTON_CLOTH;
- // Since we delete an unstackable item, we don't need to check
- // for an available inventory slot.
- delitem @chest_equip_id, 1;
- set Zeny, Zeny - @SORCERER_ROBE_SEW_ZENY;
- getitem @new_sr_id, 1;
- mes "Lora Tay adjusts her glasses and removes carefully the " + $@DYE_color_names$[@current_linecolor] + " string of the robe.";
- mes "Then she grabs the " + $@DYE_color_names$[@chosen_color] + " cotton cloth, unfolds it and pins her needle in it.";
- next;
- mes "She begins to sew the new string onto the sorcerer robe.";
- next;
- mes "She regularly flips and flips again the robe, which starts to show her new color.";
- next;
- mes "After a few minutes you barely noticed, the robe seems to be ready.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"There you are dear. I have to say I made a perfect job... As always.";
- mes "I hope you'll enjoy your new robe.\"";
- goto L_CleanSR;
-
-L_SR_SameColor:
- mes "[Lora Tay the Seamstress]";
- mes "\"Are you blind? Your robe is already of this color dear!\"";
- goto L_CleanSR;
-
-L_SR_Vanished:
- mes "Lora Tay adjusts her glasses and looks around, as if something was missing.";
- next;
- mes "[Lora Tay the Seamstress]";
- mes "\"Uh? Where is your sorcerer robe?\"";
- goto L_CleanSR;
-
-S_Get_NewSRId:
- if (@chosen_color == 0 && @current_maincolor == 10)
- set @new_sr_id, 798;
- if (@chosen_color == 0 && @current_maincolor < 10)
- set @new_sr_id, 2220 + @current_maincolor;
- if (@chosen_color > 0)
- set @new_sr_id, 5000 + @current_maincolor + (@chosen_color-1)*11;
- return;
-
-L_NoColoredCottonCloth:
- mes "[Lora Tay the Seamstress]";
- mes "\"You don't seem to own enough Cotton Cloth of this color. I need " + @SORCERER_ROBE_NUM_COTTON_CLOTH + " of them. Too bad.\"";
- goto L_CleanSR;
-
-L_SR_NoZeny:
- mes "[Lora Tay the Seamstress]";
- mes "\"You don't seem to be able to afford my services, dear.\"";
- goto L_CleanSR;
-
-S_Get_SRColors:
- set @current_maincolor, -1;
- set @current_linecolor, -1;
- // Line color
- if (@chest_equip_id == 798 || (@chest_equip_id >= 2220 && @chest_equip_id <= 2229))
- set @current_linecolor, 0;
- if (@chest_equip_id >= 5000 && @chest_equip_id <= 5109)
- set @current_linecolor, 1 + (@chest_equip_id-5000)/11;
- // Main color
- if (@chest_equip_id == 798)
- set @current_maincolor, 10;
- if (@chest_equip_id >= 2220 && @chest_equip_id <= 2229)
- set @current_maincolor, @chest_equip_id - (@chest_equip_id/10)*10;
- if (@chest_equip_id >= 5000 && @chest_equip_id <= 5109)
- set @current_maincolor, @chest_equip_id - 5000 - (@current_linecolor-1)*11;
- return;
-
-L_CleanSR:
- set @current_maincolor, 0;
- set @current_linecolor, 0;
- set @chest_equip_id, 0;
- set @new_sr_id, 0;
- set @chosen_color, 0;
- set @cotton_cloth_id, 0;
- goto L_Close;
-
-L_Close:
- set @wg_state, 0;
- close;
-}
diff --git a/world/map/npc/010-2/mapflags.txt b/world/map/npc/010-2/mapflags.txt
deleted file mode 100644
index c2a82329..00000000
--- a/world/map/npc/010-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-010-2|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/010-2/workers.txt b/world/map/npc/010-2/workers.txt
deleted file mode 100644
index 438a12ca..00000000
--- a/world/map/npc/010-2/workers.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-
-010-2,23,70,0|script|Josh|155
-{
- mes "[Josh]";
- mes "\"We're working on getting the cellar pass open.\"";
- close;
-}
-
-010-2,39,75,0|script|Zack|155
-{
- set @halloween_npc_id, $@halloween_npc_zack;
- callfunc "TrickOrTreat";
-
- mes "[Zack]";
- mes "\"My brother and I are fixing the cellar pass.\"";
- close;
-}
diff --git a/world/map/npc/011-1/_import.txt b/world/map/npc/011-1/_import.txt
deleted file mode 100644
index 161caeb4..00000000
--- a/world/map/npc/011-1/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 011-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 011-1
-npc: npc/011-1/_mobs.txt
-npc: npc/011-1/_nodes.txt
-npc: npc/011-1/_warps.txt
-npc: npc/011-1/alchemist.txt
-npc: npc/011-1/auldsbel.txt
-npc: npc/011-1/mapflags.txt
-npc: npc/011-1/oscar.txt
-npc: npc/011-1/shops.txt
diff --git a/world/map/npc/011-1/_mobs.txt b/world/map/npc/011-1/_mobs.txt
deleted file mode 100644
index 596c7194..00000000
--- a/world/map/npc/011-1/_mobs.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-011-1,0,0,0,0|monster|EvilMushroom|1013,30,0ms,0ms
-011-1,0,0,0,0|monster|PinkFlower|1014,20,0ms,0ms
-011-1,0,0,0,0|monster|SpikyMushroom|1019,5,0ms,0ms
-011-1,0,0,0,0|monster|Snail|1041,1,0ms,0ms
-011-1,0,0,0,0|monster|Mouboo|1028,5,0ms,10ms
-011-1,0,0,0,0|monster|MauvePlant|1029,3,270000ms,180000ms
-011-1,0,0,0,0|monster|AlizarinPlant|1032,1,2700000ms,1800000ms
-011-1,0,0,0,0|monster|Silkworm|1035,2,60000ms,30000ms
-011-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-011-1,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms
-011-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
-011-1,0,0,0,0|monster|Mouboo|1028,5,0ms,10ms
-011-1,1,1,0,0|monster|ManaBug|1131,18,30ms,0ms
-011-1,92,44,35,28|monster|Maggot|1002,10,30ms,0ms
diff --git a/world/map/npc/011-1/_nodes.txt b/world/map/npc/011-1/_nodes.txt
deleted file mode 100644
index 12c08221..00000000
--- a/world/map/npc/011-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-// (no nodes)
diff --git a/world/map/npc/011-1/_warps.txt b/world/map/npc/011-1/_warps.txt
deleted file mode 100644
index 8c5fafca..00000000
--- a/world/map/npc/011-1/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-011-1,58,92|warp|-1,-1,011-3,0,0
-011-1,30,61|warp|-1,1,014-1,108,91
-011-1,49,104|warp|0,-1,010-1,48,25
-011-1,124,62|warp|-1,2,008-1,25,61
-011-1,73,9|warp|0,-1,012-1,132,175
-011-1,38,36|warp|-1,-1,011-6,49,100
diff --git a/world/map/npc/011-1/alchemist.txt b/world/map/npc/011-1/alchemist.txt
deleted file mode 100644
index ade035dd..00000000
--- a/world/map/npc/011-1/alchemist.txt
+++ /dev/null
@@ -1,1035 +0,0 @@
-// This NPC makes potions and dyes
-011-1,117,77,0|script|Rauk|103
-{
- // Setzer quest/monster oil quest participation
- set @SETZER_INITIAL, 0;
- set @SETZER_KNOWS_OIL, 1;
- set @SETZER_KNOWS_STINGER, 2;
-
- set @Q_MASK, NIBBLE_3_MASK;
- set @Q_SHIFT, NIBBLE_3_SHIFT;
-
- set @wants_sulphur, (QUEST_MAGIC & (NIBBLE_6_MASK | NIBBLE_7_MASK));
- set @wants_ironpowder, (((QUEST_MAGIC & (NIBBLE_6_MASK | NIBBLE_7_MASK)) >> NIBBLE_6_SHIFT) >= 7);
- set @Q_status, (QUEST_Forestbow_state & @Q_MASK) >> @Q_SHIFT;
- // End of Setzer quest/monster oil quest participation
-
- set @QUEST_CAN_GET_DYE_HERE, 2;
- set @QUEST_HAS_SOLVED_DYE_PUZZLE, 3;
- set @QUEST_GUESS_BASE, 4;
-
- set @CHOICE_IRON, 0;
- set @CHOICE_CONCENTRATION, 1;
- set @CHOICE_DYEING_INTRO, 2;
- set @CHOICE_DYE, 3;
- set @CHOICE_MONSTER_OIL, 4;
- set @CHOICE_MANA_POTION, 5;
- set @CHOICE_SULPHUR_POWDER, 6;
- set @CHOICE_IRON_POWDER, 7;
- set @CHOICE_ABORT, 8;
-
- setarray @menuitems$, "", "", "", "", "", "", "", "";
- set @c, 0;
-
- set @menuitems$[@c], "Iron potion.";
- set @menuID[@c], @CHOICE_IRON;
- set @c, @c + 1;
-
- set @menuitems$[@c], "Concentration potion.";
- set @menuID[@c], @CHOICE_CONCENTRATION;
- set @c, @c + 1;
-
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
- goto L_post_mana_potion_c;
- set @menuitems$[@c], "Mana potion.";
- set @menuID[@c], @CHOICE_MANA_POTION;
- set @c, @c + 1;
- goto L_post_mana_potion_c;
-
-L_post_mana_potion_c:
- if (QUEST_clothdyer_knowsdye >= @QUEST_CAN_GET_DYE_HERE)
- goto L_skip_introducing;
-
- mes "[Rauk the Alchemist]";
- mes "\"I'm learning the ancient science of the alchemy.";
- mes "I already know how to create a couple of potions!!\"";
- mes "\"Do you want me to create one for you?\"";
- next;
- if (QUEST_clothdyer_knowsdye == 1)
- goto L_pre_dyeing;
- goto L_certain_condition;
-
-L_skip_introducing:
- mes "[Rauk the Alchemist]";
- mes "\"Hello, welcome back! Are you interested in dyes again, or in one of my potions?\"";
- next;
- set @menuitems$[@c], "Dye, please.";
- set @menuID[@c], @CHOICE_DYE;
- set @c, @c + 1;
- goto L_certain_condition;
-
-L_pre_dyeing:
- set @menuitems$[@c], "Actually, can you make dye?";
- set @menuID[@c], @CHOICE_DYEING_INTRO;
- set @c, @c + 1;
- goto L_certain_condition;
-
-L_certain_condition:
- if (!@wants_sulphur)
- goto L_post_sulphur_option;
- set @menuitems$[@c], "Can you make sulphur powder?";
- set @menuID[@c], @CHOICE_SULPHUR_POWDER;
- set @c, @c + 1;
- goto L_post_sulphur_option;
-
-L_post_sulphur_option:
- if (!@wants_ironpowder)
- goto L_post_ironpwd_option;
- set @menuitems$[@c], "Can you make iron powder?";
- set @menuID[@c], @CHOICE_IRON_POWDER;
- set @c, @c + 1;
- goto L_post_ironpwd_option;
-
-L_post_ironpwd_option:
- if (@Q_status == @SETZER_INITIAL)
- goto L_post_monster_oil;
- set @menuitems$[@c], "Can you make monster oil?";
- set @menuID[@c], @CHOICE_MONSTER_OIL;
- set @c, @c + 1;
- goto L_post_monster_oil;
-
-L_post_monster_oil:
- set @menuitems$[@c], "No thanks.";
- set @menuID[@c], @CHOICE_ABORT;
- set @c, @c + 1;
- goto L_main_menu;
-
-L_main_menu:
-
- menu
- @menuitems$[0], L_MenuItems,
- @menuitems$[1], L_MenuItems,
- @menuitems$[2], L_MenuItems,
- @menuitems$[3], L_MenuItems,
- @menuitems$[4], L_MenuItems,
- @menuitems$[5], L_MenuItems,
- @menuitems$[6], L_MenuItems,
- @menuitems$[7], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
-
- if (@menu >= @c)
- goto L_abort;
- if (@menuID[@menu] == @CHOICE_IRON)
- goto L_iron;
- if (@menuID[@menu] == @CHOICE_CONCENTRATION)
- goto L_concentration;
- if (@menuID[@menu] == @CHOICE_DYEING_INTRO)
- goto L_dyeing_intro;
- if (@menuID[@menu] == @CHOICE_DYE)
- goto L_pick_colour;
- if (@menuID[@menu] == @CHOICE_MONSTER_OIL)
- goto L_monster_oil;
- if (@menuID[@menu] == @CHOICE_MANA_POTION)
- goto L_mana_potion;
- if (@menuID[@menu] == @CHOICE_SULPHUR_POWDER)
- goto L_sulphur;
- if (@menuID[@menu] == @CHOICE_IRON_POWDER)
- goto L_iron_powder;
- if (@menuID[@menu] == @CHOICE_ABORT)
- goto L_abort;
- goto L_abort;
-
-L_iron_powder:
- mes "[Rauk the Alchemist]";
- mes "\"Iron powder? Hmm, I can extract some iron powder out of a chunk of iron ore, but that will require me to dissolve it. If you give me a chunk of iron ore and 100 GP for the acid, I can do it.\"";
- next;
- menu
- "Never mind.", L_abort,
- "Here you are!", L_Next;
-
-L_Next:
- if (countitem("IronOre") < 1)
- goto L_iron_powder_noore;
- if (Zeny < 100)
- goto L_iron_powder_nozeny;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("IronOre") > 1
- && countitem("IronPowder") < 1)
- goto L_iron_powder_full;
- delitem "IronOre", 1;
- set Zeny, Zeny - 100;
- getitem "IronPowder", 4;
- mes "[Rauk the Alchemist]";
- mes "Rauk places your chunk of ore in a strange glass container, then pours a steaming yellow liquid over it. Before your eyes, the ore dissolves.";
- next;
- mes "[Rauk the Alchemist]";
- mes "Rauk pours another liquid over the resultant mixture, then pours the result through a piece of cloth placed in a funnel, followed by a cup of water. He removes the residual metal powder from the cloth and hands it to you.";
- mes "\"This is about as fine as I can make it without mechanical help.\"";
- close;
-
-L_iron_powder_noore:
- mes "[Rauk the Alchemist]";
- mes "\"I do need a chunk of iron ore. Please return when you have one.\"";
- close;
-
-L_iron_powder_nozeny:
- mes "[Rauk the Alchemist]";
- mes "\"I'm sorry, but I must ask that you pay 100 GP – the acid I use is not cheap.\"";
- close;
-
-L_iron_powder_full:
- mes "[Rauk the Alchemist]";
- mes "\"I don't think that you have room to carry this. Please come back later.\"";
- close;
-
-L_sulphur:
- mes "[Rauk the Alchemist]";
- mes "\"Oh, that is easy. Bring me three piles of volcanic ash and three mauve leaves, and I will extract twelve piles of sulphur ash for you.\"";
- next;
- menu
- "I will be back.", L_abort,
- "No, I won't!", L_abort,
- "Here you are!", L_Next1;
-
-L_Next1:
- if (countitem("PileOfAsh") < 3)
- goto L_sulphur_noash;
- if (countitem("MauveHerb") < 3)
- goto L_sulphur_nomauve;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("SulphurPowder") == 0
- && countitem("PileOfAsh") > 3
- && countitem("MauveHerb") > 3)
- goto L_sulphur_nospace;
-
- delitem "PileOfAsh", 3;
- delitem "MauveHerb", 3;
- getitem "SulphurPowder", 12;
- mes "[Rauk the Alchemist]";
- mes "You watch Rauk burn the mauve leaves in the midst of the ashes. He then dissolves the result and pours it through a filter, finally heating up the residual liquid.";
- next;
- mes "[Rauk the Alchemist]";
- mes "The water having evaporated, only some yellow powder is left over. Rauk carefully pours it into your hand.";
- mes "\"This should be precisely twelve half-ounces of sulphur powder.\"";
- close;
-
-L_sulphur_noash:
- mes "[Rauk the Alchemist]";
- mes "\"You don't seem to have all three piles of volcanic ash.\"";
- close;
-
-L_sulphur_nomauve:
- mes "[Rauk the Alchemist]";
- mes "\"You don't seem to have the three mauve leaves I asked for.\"";
- close;
-
-L_sulphur_nospace:
- mes "[Rauk the Alchemist]";
- mes "\"Oh dear. You don't seem to be able to carry the sulphur powder.\"";
- close;
-
-L_mana_potion:
- mes "[Rauk the Alchemist]";
- mes "\"Humh... I do believe that I have a recipe somewhere. One moment...\"";
- mes "Rauk pulls a small book out of his sleeve and leafs through it.";
- mes "\"Aha, here we are. Hmm, I'm not convinced that this is the best possible recipe...\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"I shall need one pearl, one bottle of water, thirty mauve leaves, twenty gamboge leaves, and five piles of volcanic ash.\"";
- next;
- menu
- "Here you are!", L_get_mana_potion,
- "Never mind.", L_main_menu;
-
-L_get_mana_potion:
- if(countitem("MauveHerb") < 30)
- goto L_mana_potion_lacking;
- if(countitem("GambogeHerb") < 20)
- goto L_mana_potion_lacking;
- if(countitem("PileOfAsh") < 5)
- goto L_mana_potion_lacking;
- if(countitem("Pearl") < 1)
- goto L_mana_potion_lacking;
- if(countitem("BottleOfWater") < 1)
- goto L_mana_potion_lacking;
- getinventorylist;
- if ((@inventorylist_count == 100)
- && (countitem("MauveHerb") > 30)
- && (countitem("PileOfAsh") > 5)
- && (countitem("Pearl") > 1)
- && (countitem("BottleOfWater") > 1)
- && (countitem("ManaPotion") < 1))
- goto L_mana_potion_toomuch;
- delitem "MauveHerb", 30;
- delitem "GambogeHerb", 20;
- delitem "PileOfAsh", 5;
- delitem "Pearl", 1;
- delitem "BottleOfWater", 1;
- getitem "ManaPotion", 1;
- mes "[Rauk the Alchemist]";
- mes "Rauk grinds the leaves, then crushes the pearl. Taking out a small charcoal oven, he heats up your water bottle and dissolves first the pearl powder, then the ashes.";
- mes "The brew begins to bubble violently.";
- next;
- mes "[Rauk the Alchemist]";
- mes "Taking the bottle with a pair of tongs, he pours the liquid through a fine sieve, discarding the liquid.";
- mes "He then mixes the residual paste with the leaves, stirs in a little water from the pond and fills the result into a separate bottle.";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Here you are. I hope that this is what you wanted.\"";
- next;
- goto L_main_menu;
-
-L_mana_potion_toomuch:
- mes "[Rauk the Alchemist]";
- mes "\"You look quite burdened already. Why don't you drop off a few things first, and come back later?\"";
- next;
- goto L_main_menu;
-
-L_mana_potion_lacking:
- mes "[Rauk the Alchemist]";
- mes "\"Sorry, but I need one Pearl, one Bottle of Water, 30 Mauve Leaves, 20 Gamboge Leaves, and five Piles of Ash.\"";
- next;
- goto L_main_menu;
-
-L_iron:
- set @COST_PER_IRON_POTION, 2;
-
- mes "\" To make them, I'm going to need " + @COST_PER_IRON_POTION + " Small Mushrooms per Iron Potion. How many Iron Potions would you like?\"";
- input @count;
-
- if (@count == 0)
- close;
- set @empty, countitem("SmallMushroom");
-
- if (@empty < @count * @COST_PER_IRON_POTION)
- goto L_no_iron;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("SmallMushroom") == 0 && @empty > @count)
- goto L_TooMany;
-
- delitem "SmallMushroom", @COST_PER_IRON_POTION * @count;
- getitem "IronPotion", @count;
- close;
-
-L_concentration:
- set @COST_PER_CONCENTRATION_POTION, 2;
-
- mes "\" To make them, I'm going to need " + @COST_PER_CONCENTRATION_POTION + " Pink Petals per Concentration Potion. How many Concentration Potions would you like?\"";
- input @count;
-
- if (@count == 0)
- close;
- set @empty, countitem("PinkPetal");
-
- if (@empty < @count * @COST_PER_CONCENTRATION_POTION)
- goto L_no_concentration;
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("PinkPetal") == 0 && @empty > @count)
- goto L_TooMany;
-
- delitem "PinkPetal", @COST_PER_CONCENTRATION_POTION * @count;
- getitem "ConcentrationPotion", @count;
- close;
-
-L_no_iron:
- mes "\"You have to bring me 2 Small Mushrooms for each Iron Potion.\"";
- close;
-
-L_no_concentration:
- mes "\"You have to bring me 2 Pink Petals for each Concentration Potion.\"";
- close;
-
-L_dyeing_intro:
- mes "[Rauk the Alchemist]";
- mes "Rauk pauses for a moment.";
- mes "\"Hmm, I'm not very good at that... I can only make simple dyes, the ones that you can use for cotton and wool.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"For the truly powerful ones that you can use to dye a person or an entire lake with, I would need a powerful catalyst, like an Obsidian Spork or a Wumpus Egg...\"";
- mes "Rauk seems to be lost in his thoughts.";
- next;
- menu
- "I only want to dye clothes, though...", L_Next2,
- "What's a 'Wumpus egg'?", L_wumpus_egg_intro,
- "What's an 'Obsidian Spork'?", L_obsidian_spork_intro,
- "Er, never mind...", L_abort;
-
-L_Next2:
- mes "[Rauk the Alchemist]";
- mes "\"Oh, just for clothes? Well, that is easy. I can make red, yellow, light blue, orange, pink, green, dark blue, black and purple dye, if you can get me the ingredients for it.\"";
- next;
- set QUEST_clothdyer_knowsdye, 2;
- goto L_pick_colour;
-
-L_wumpus_egg_intro:
- mes "[Rauk the Alchemist]";
- mes "Rauk's eyes brighten up.";
- mes "\"Ah, a wumpus egg is one of the most powerful catalysts out there, useful for transmutation and transchromation! Unfortunately the Common Wumpus is almost completely extinct these days, so they are hard to find.";
- mes "Should you find one, please let me know – I will pay well for one!\"";
- close;
-
-L_obsidian_spork_intro:
- mes "[Rauk the Alchemist]";
- mes "Rauk scratches his head.";
- mes "\"Hm, obsidian is a dark, glass-like material that you can normally find near volcanos. Shaping it isn't too hard, but shaping it without it losing its magical properties is almost impossible.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Obsidian sporks are therefore hard to make, but they are said to be very useful in certain kinds of alchemy.";
- mes "Should you find one, please let me know!\"";
- close;
-
-L_pick_colour:
- menu
- "What are the ingredients you need?", L_description,
- "Red", L_red,
- "Yellow", L_yellow,
- "Light blue", L_light_blue,
- "Green", L_green,
- "Orange", L_orange,
- "Pink", L_pink,
- "Dark blue", L_dark_blue,
- "Black", L_black,
- "Purple", L_purple,
- "Dark Green", L_dark_green,
- "Nothing, really.", L_abort;
-
-L_description:
- mes "[Rauk the Alchemist]";
- mes "\"The kinds of dyes I know are made from herbs – alizarin for red, gamboge for yellow, cobalt for blue, and mauve as binding agent for dark colors.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Some of the colors need more ingredients, including some that you can't find here, so I have to charge money for them.";
- mes "Oh, and for a proper dark blue and purple I also need a pearl; without pearl dust they would not shimmer properly.\"";
- next;
- goto L_description_quick;
-
-L_description_quick:
- menu
- "What do you need for red dye?", L_d_red,
- "What do you need for yellow dye?", L_d_yellow,
- "What do you need for light blue dye?", L_d_light_blue,
- "What do you need for green dye?", L_d_green,
- "What do you need for orange dye?", L_d_orange,
- "What do you need for pink dye?", L_d_pink,
- "What do you need for dark blue dye?", L_d_dark_blue,
- "What do you need for black dye?", L_d_black,
- "What do you need for purple dye?", L_d_purple,
- "What do you need for dark green dye?", L_d_dark_green,
- "Actually...", L_NextMenu;
-
-L_NextMenu:
- menu
- "Can you make some dye for me, please?", L_pick_colour,
- "Where can I get the herbs?", L_d_herbs,
- "Where can I find pink petals?", L_d_pink_petals,
- "Where can I find iron ore?", L_d_ore,
- "Where can I find a pearl?", L_d_pearl,
- "Where can I find maggot slime?", L_d_maggot_slime,
- "I see. Thank you, and a good day to you!", L_abort;
-
-L_d_herbs:
- mes "[Rauk the Alchemist]";
- mes "\"Alizarin, mauve, cobalt and gamboge bushes grow in this general area. I haven't seen them nearby, but take a look around; I am sure you will find some.\"";
- next;
- goto L_description_quick;
-
-L_d_pink_petals:
- mes "[Rauk the Alchemist]";
- mes "\"Just take some from the pink flowers around here. But be careful, they seem to be a bit fond of them.\"";
- next;
- goto L_description_quick;
-
-L_d_ore:
- mes "[Rauk the Alchemist]";
- mes "\"Iron ore you should be able to find in some mine, I think. That's where people usually get it from, I have been told.\"";
- next;
- goto L_description_quick;
-
-L_d_pearl:
- mes "[Rauk the Alchemist]";
- mes "\"A pearl... hm, that might be tricky. You normally find them in clams, but I haven't seen many of those here in the woodlands.\"";
- next;
- goto L_description_quick;
-
-L_d_maggot_slime:
- mes "[Rauk the Alchemist]";
- mes "\"As the name might have given away already, maggot slime is most easily obtained from maggots. Still, there are some other creatures – such as bats – that secrete a similar kind of slime that for alchemistic purposes is equivalent.\"";
- next;
- goto L_description_quick;
-
-L_intermediate:
- menu
- "Can you make some dye for me?", L_pick_colour,
- "Can you describe the ingredients?", L_description_quick,
- "Never mind.", L_abort;
-
-L_ok:
- mes "[Rauk the Alchemist]";
- mes "\"Here is your dye. Remember to use all of it at once or the color may bleach out.\"";
- next;
- goto L_pick_colour;
-
-L_red:
- if (countitem("AlizarinHerb") < 10)
- goto L_red_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("AlizarinHerb") > 10)
- goto L_TooMany;
- delitem "AlizarinHerb", 10;
- getitem "RedDye", 1;
- goto L_ok;
-
-L_red_fail:
- mes "[Rauk the Alchemist]";
- mes "\"Hmm, sorry, but I do need ten alizarin leaves to make red dye.\"";
- next;
- goto L_intermediate;
-
-L_d_red:
- mes "[Rauk the Alchemist]";
- mes "\"Red dye is fairly simple to make. Bring me ten leaves of alizarin, and I can brew it for you right away.\"";
- next;
- goto L_intermediate;
-
-L_yellow:
- if (countitem("GambogeHerb") < 10)
- goto L_yellow_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("GambogeHerb") > 10)
- goto L_TooMany;
- delitem "GambogeHerb", 10;
- getitem "YellowDye", 1;
- goto L_ok;
-
-L_yellow_fail:
- mes "[Rauk the Alchemist]";
- mes "\"Without enough gamboge leaves – I would need at least ten--, I can't make yellow dye for you.\"";
- next;
- goto L_intermediate;
-
-L_d_yellow:
- mes "[Rauk the Alchemist]";
- mes "\"Yellow dye is no more than gamboge extract. If you get me ten gamboge leaves, I can make it easily.\"";
- next;
- goto L_intermediate;
-
-L_light_blue:
- if (countitem("CobaltHerb") < 10)
- goto L_light_blue_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("CobaltHerb") > 10)
- goto L_TooMany;
- delitem "CobaltHerb", 10;
- getitem "LightBlueDye", 1;
- goto L_ok;
-
-L_light_blue_fail:
- mes "[Rauk the Alchemist]";
- mes "\"Sorry, but I won't give it to you for less than ten cobalt leaves.\"";
- next;
- goto L_intermediate;
-
-L_d_light_blue:
- mes "[Rauk the Alchemist]";
- mes "\"Light blue dye is what you get if you let cobalt leaves sit in alcohol over night. I have some here and will trade it for ten fresh cobalt leaves.\"";
- next;
- goto L_intermediate;
-
-L_green:
- if (countitem("CobaltHerb") < 20)
- goto L_green_fail;
- if (countitem("GambogeHerb") < 20)
- goto L_green_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("CobaltHerb") > 20
- && countitem("GambogeHerb") > 20)
- goto L_TooMany;
- if (Zeny < 1000)
- goto L_green_fail;
- delitem "CobaltHerb", 20;
- delitem "GambogeHerb", 20;
- set Zeny, Zeny - 1000;
- getitem "GreenDye", 1;
- goto L_ok;
-
-L_green_fail:
- mes "[Rauk the Alchemist]";
- mes "\"No... I need enough gamboge and cobalt to make your dye.\"";
- mes "\"Twenty gamboge leaves, twenty cobalt leaves, and 1000 GP should be sufficient.\"";
- next;
- goto L_intermediate;
-
-L_d_green:
- mes "[Rauk the Alchemist]";
- mes "\"Green dye is a little tricky to make, since you have to boil gamboge leaves at just the right temperature while stirring in a cobalt ester.";
- mes "Making the cobalt ester is not easy, and every time I try I end up melting a crystal flask beyond repair...\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Thus, I will need twenty gamboge leaves, twenty cobalt leaves, and 1000 GP for materials.";
- next;
- goto L_intermediate;
-
-L_d_no_green:
- mes "[Rauk the Alchemist]";
- mes "\"Come back when you are a little more experienced. I might be able to tell you how to make green dye then.\"";
- close;
-
-L_orange:
- if (countitem("AlizarinHerb") < 10)
- goto L_orange_fail;
- if (countitem("GambogeHerb") < 10)
- goto L_orange_fail;
- if (countitem("IronOre") < 2) goto L_orange_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("AlizarinHerb") > 10
- && countitem("GambogeHerb") > 10
- && countitem("IronOre") > 2)
- goto L_TooMany;
- if (Zeny < 1000)
- goto L_orange_fail;
- delitem "AlizarinHerb", 10;
- delitem "GambogeHerb", 10;
- delitem "IronOre", 2;
- set Zeny, Zeny - 1000;
- getitem "OrangeDye", 1;
- goto L_ok;
-
-L_orange_fail:
- mes "[Rauk the Alchemist]";
- mes "\"I'm sorry, but I need 1000 GP, two chunks of iron ore, and ten each of gamboge and alizarin leaves.\"";
- next;
- goto L_intermediate;
-
-L_d_orange:
- mes "[Rauk the Alchemist]";
- mes "\"Orange dye is fun to make, but it requires some burnt iron, and also consummate sulphur powder, which you cannot get here easily.";
- mes "\"Still, for 1000 GP, two pieces of iron ore, ten alizarin leaves and ten gamboge leaves, I can make you a vial of orange dye.\"";
- next;
- goto L_intermediate;
-
-L_pink:
- if (countitem("AlizarinHerb") < 10)
- goto L_pink_fail;
- if (countitem("PinkPetal") < 6)
- goto L_pink_fail;
- if (Zeny < 1000)
- goto L_pink_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("AlizarinHerb") > 10
- && countitem("PinkPetal") > 6)
- goto L_TooMany;
- delitem "AlizarinHerb", 10;
- delitem "PinkPetal", 6;
- set Zeny, Zeny - 1000;
- getitem "PinkDye", 1;
- goto L_ok;
-
-L_pink_fail:
- mes "[Rauk the Alchemist]";
- mes "\"No, you don't have all I need, and that would be ten alizarin leaves, six pink flower petals, and 1000 GP.\"";
- next;
- goto L_intermediate;
-
-L_d_pink:
- mes "[Rauk the Alchemist]";
- mes "\"Pink dye... that's a funny one: you can't get proper pink out of the usual herbs. You do need ten leaves of alizarin, but you also need six pink flower petals.";
- mes "To properly extract the pink from the petals, you have to boil it in concentrated utenum; I will have to charge 1000 GP for that.\"";
- next;
- goto L_intermediate;
-
-L_dark_blue:
- if (countitem("CobaltHerb") < 100)
- goto L_dark_blue_fail;
- if (countitem("MauveHerb") < 50)
- goto L_dark_blue_fail;
- if (countitem("Pearl") < 1)
- goto L_dark_blue_fail;
- if (Zeny < 10000)
- goto L_dark_blue_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("CobaltHerb") > 100
- && countitem("MauveHerb") > 50
- && countitem("Pearl") > 1)
- goto L_TooMany;
- delitem "CobaltHerb", 100;
- delitem "MauveHerb", 50;
- delitem "Pearl", 1;
- set Zeny, Zeny - 10000;
- getitem "DarkBlueDye", 1;
- goto L_ok;
-
-L_dark_blue_fail:
- mes "[Rauk the Alchemist]";
- mes "\"I will need all of the ingredients to make dark blue dye for you.\"";
- mes "\"I need 100 cobalt leaves, 50 mauve leaves, one pearl, and 10,000 GP.\"";
- next;
- goto L_intermediate;
-
-L_d_dark_blue:
- mes "[Rauk the Alchemist]";
- mes "\"Dark blue dye is one of the trickiest ones. You need concentrated extract from 100 leaves of cobalt and 50 mauve leaves for proper binding.";
- mes "For the right shimmer, a pearl is indispensible, and the most expensive part is a rare kind of ayanamian sapphire dust that I have to charge 10,000 GP for.\"";
- next;
- goto L_intermediate;
-
-L_purple:
- if (countitem("CobaltHerb") < 100)
- goto L_purple_fail;
- if (countitem("AlizarinHerb") < 100)
- goto L_purple_fail;
- if (countitem("MauveHerb") < 20)
- goto L_purple_fail;
- if (countitem("Pearl") < 1)
- goto L_purple_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("CobaltHerb") > 100
- && countitem("AlizarinHerb") > 100
- && countitem("MauveHerb") > 20
- && countitem("Pearl") > 1)
- goto L_TooMany;
- if (Zeny < 40000)
- goto L_purple_fail;
- delitem "CobaltHerb", 100;
- delitem "AlizarinHerb", 100;
- delitem "MauveHerb", 20;
- delitem "Pearl", 1;
- set Zeny, Zeny - 40000;
- getitem "PurpleDye", 1;
- goto L_ok;
-
-L_purple_fail:
- mes "[Rauk the Alchemist]";
- mes "\"No... I don't think that you have enough ingredients for this. Let me check my notes.\"";
- mes "\"What I need are 100 cobalt leaves, 100 alizarin leaves, 20 mauve leaves, one pearl, and 40,000 GP.\"";
- next;
- goto L_intermediate;
-
-L_d_purple:
- mes "[Rauk the Alchemist]";
- mes "\"Hm, Purple dye... proper Tritan Purple is hard to make. Fortunately, the correct recipe has survived... but some ingredients are quite costly.";
- mes "I can't even tell you why, unfortunately, since this is a bit of an alchemistic secret, and I really don't want to argue this out with people who can turn my nose into a rhubarb.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Still, I can make it for you, out of 100 cobalt leaves, 100 alizarin leaves, 20 mauve leaves, one pearl, and 40,000 GP. Some other ingredients are covered by the GP.\"";
- next;
- goto L_intermediate;
-
-L_black:
- if (countitem("CobaltHerb") < 40)
- goto L_black_fail;
- if (countitem("AlizarinHerb") < 40)
- goto L_black_fail;
- if (countitem("GambogeHerb") < 40)
- goto L_black_fail;
- if (countitem("MauveHerb") < 40)
- goto L_black_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("CobaltHerb") > 40
- && countitem("AlizarinHerb") > 40
- && countitem("GambogeHerb") > 40
- && countitem("MauveHerb") > 40)
- goto L_TooMany;
- if (Zeny < 20000)
- goto L_black_fail;
- delitem "CobaltHerb", 40;
- delitem "AlizarinHerb", 40;
- delitem "GambogeHerb", 40;
- delitem "MauveHerb", 40;
- set Zeny, Zeny - 20000;
- getitem "BlackDye", 1;
- goto L_ok;
-
-L_black_fail:
- mes "[Rauk the Alchemist]";
- mes "\"I am sorry, but you don't have all the items I need to make black dye. I need fourty leaves of alizarin, cobalt, gamboge and mauve each, and 20,000 GP.\"";
- next;
- goto L_intermediate;
-
-L_d_black:
- mes "[Rauk the Alchemist]";
- mes "\"Black? Ah! such a wonderful choice of color. It's my favorite! Well, if you too want something black, I would be delighted to make you some black dye.";
- mes "Just bring me 40 leaves each of cobalt, alizarin, gamboge and mauve.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Oh, and 20,000 GP for the charcoal and diamond dust mixture you need to keep the mauve smell out.\"";
- next;
- goto L_intermediate;
-
-L_dark_green:
- if (BaseLevel < 30)
- goto L_d_no_green;
- if (QUEST_clothdyer_knowsdye != @QUEST_HAS_SOLVED_DYE_PUZZLE)
- goto L_d_dark_green;
- if (countitem("CobaltHerb") < 10)
- goto L_dark_green_fail;
- if (countitem("GambogeHerb") < 10)
- goto L_dark_green_fail;
- if (countitem("MauveHerb") < 10)
- goto L_dark_green_fail;
- if (countitem("MaggotSlime") < 1)
- goto L_dark_green_fail;
- if (Zeny < 1000)
- goto L_dark_green_fail;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("CobaltHerb") > 10
- && countitem("GambogeHerb") > 10
- && countitem("MauveHerb") > 10
- && countitem("MaggotSlime") > 1)
- goto L_TooMany;
- delitem "CobaltHerb", 10;
- delitem "MauveHerb", 10;
- delitem "GambogeHerb", 10;
- delitem "MaggotSlime", 1;
- set Zeny, Zeny - 1000;
- getitem "DarkGreenDye", 1;
- goto L_ok;
-
-L_dark_green_fail:
- mes "[Rauk the Alchemist]";
- mes "Rauk frowns as he examines the items you hand him.";
- mes "\"No, this will not do. I need ten gamboge leaves, ten cobalt leaves, ten mauve leaves, slime from one maggot, and 1000 GP.\"";
- next;
- goto L_intermediate;
-
-L_d_dark_green:
- mes "[Rauk the Alchemist]";
- if (QUEST_clothdyer_knowsdye != @QUEST_HAS_SOLVED_DYE_PUZZLE)
- goto L_d_dark_green_quest;
- mes "\"Since we have figured out how much maggot slime we need for you, all you have to bring me are 1000 GP, one maggot slime, and ten leaves each of mauve, cobalt, and gamboge.\"";
- next;
- goto L_intermediate;
-
-L_d_dark_green_quest:
- mes "\"Ah, dark green... dark green dye is actually simple to make, except for one tiny little problem: dark green clothes fade very quickly when they touch human skin. By far the best way to fixate the color is argentum powder, mixed with dark green dye essence extracted from maggot slime.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"But just how much maggot slime goes into the fixative and how much into the rest of the mixture varies completely for every individual. We will have to figure out just how many thousandth ounces it is for you before I can make dark green dye for you.\"";
- next;
- if (QUEST_clothdyer_knowsdye == @QUEST_CAN_GET_DYE_HERE)
- set QUEST_clothdyer_knowsdye, (rand(1000) + @QUEST_GUESS_BASE);
- goto L_d_dark_green_q_main;
-
-L_d_dark_green_q_main:
- menu
- "Uh... no thanks.", L_intermediate,
- "So nobody else can wear clothes I dye?", L_dark_green_q_wear,
- "OK, what should I do?", L_dark_green_q_explain,
- "Let's figure it out!", L_dark_green_q_guess_0;
-
-L_dark_green_q_wear:
- mes "[Rauk the Alchemist]";
- mes "\"The color stabilises after a week or so.";
- mes "Others can wear the clothes you have dyed – just make sure that you wear those clothes for a week before passing them on.\"";
- next;
- goto L_d_dark_green_q_main;
-
-L_dark_green_q_explain2:
- mes "[Rauk the Alchemist]";
- mes "Rauk blinks.";
- mes "\"Very well. It works like this: you give me a maggot slime and tell me how many thousandth parts go into one part of the dye potion.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Then we try whether that was the right ratio. I will tell you if you guessed right, but if you were wrong, I will tell you whether you guessed too high or too low.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"With enough slimes and enough tries we should be able to figure out just how much you need.\"";
- next;
- menu
- "Er... can you explain that again?", L_dark_green_q_explain2,
- "Let's do it!", L_dark_green_q_guess_0,
- "I don't have time for this.", L_intermediate;
-
-L_dark_green_q_explain:
- mes "[Rauk the Alchemist]";
- mes "\"We have to measure the balance between your light and your dark bile – two of your humors – and use that as the maggot slime concentration.\"";
- mes "\"This will probably take several tries; for each try we need maggot slime from one maggot.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Each time you tell me how many thousandth parts of one ounce of the concentrate you want to use in the fixative. I will stir the mixture appropriately and put the rest of the slime into the base mixture. We then put the two together, and you dip your finger in.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"If the mixture is too dark, then that means that we put too much maggot slime into the fixative. If it discolours, we put in too little. But if it retains its color, we are done.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "Rauk smiles.";
- mes "\"But don't worry, I will happily do all this for free – I rather enjoy these little games.\"";
- next;
- menu
- "Er... can you explain that again?", L_dark_green_q_explain,
- "Errr... what?", L_dark_green_q_explain2,
- "Let's do it!", L_dark_green_q_guess_0,
- "I don't have time for this.", L_intermediate;
-
-L_dark_green_q_guess_0:
- if (countitem("MaggotSlime") < 1)
- goto L_dark_green_q_noslime;
- delitem "MaggotSlime", 1;
-
- mes "[Rauk the Alchemist]";
- mes "Rauk fills your maggot slime into a small bottle and picks a glass bottle from within his robe.";
- mes "\"Now we need to figure out just how many thousandths you need. First, tell me how many tenths of an ounce you want to put in.\"";
- next;
- menu
- "none", L_MenuItems1,
- "1 tenth", L_MenuItems1,
- "2 tenths", L_MenuItems1,
- "3 tenths", L_MenuItems1,
- "4 tenths", L_MenuItems1,
- "5 tenths", L_MenuItems1,
- "6 tenths", L_MenuItems1,
- "7 tenths", L_MenuItems1,
- "8 tenths", L_MenuItems1,
- "9 tenths", L_MenuItems1;
-
-L_MenuItems1:
- set @menu, @menu - 1;
- set @guess_accumulator, @menu * 100;
-
- mes "[Rauk the Alchemist]";
- if (@menu)
- mes "Rauk pours a good-sized portion of maggot slime from the small bottle into the glass bottle.";
- mes "\"We now have " + @guess_accumulator + " thousandths of an ounce. How many hundredths of an ounce should I add?\"";
- next;
- menu
- "none", L_MenuItems2,
- "1 hundredth", L_MenuItems2,
- "2 hundredths", L_MenuItems2,
- "3 hundredths", L_MenuItems2,
- "4 hundredths", L_MenuItems2,
- "5 hundredths", L_MenuItems2,
- "6 hundredths", L_MenuItems2,
- "7 hundredths", L_MenuItems2,
- "8 hundredths", L_MenuItems2,
- "9 hundredths", L_MenuItems2;
-
-L_MenuItems2:
- set @menu, @menu - 1;
- set @guess_accumulator, @guess_accumulator + (@menu * 10);
-
- mes "[Rauk the Alchemist]";
- if (@menu)
- mes "Rauk pours a portion of maggot slime from the small bottle into the glass bottle.";
- mes "\"These are now " + @guess_accumulator + " thousandths of an ounce. How many thousands more?\"";
- next;
- menu
- "none", L_MenuItems3,
- "1 thousandth", L_MenuItems3,
- "2 thousandths", L_MenuItems3,
- "3 thousandths", L_MenuItems3,
- "4 thousandths", L_MenuItems3,
- "5 thousandths", L_MenuItems3,
- "6 thousandths", L_MenuItems3,
- "7 thousandths", L_MenuItems3,
- "8 thousandths", L_MenuItems3,
- "9 thousandths", L_MenuItems3;
-
-L_MenuItems3:
- set @menu, @menu - 1;
- set @guess_accumulator, @guess_accumulator + @menu;
-
- mes "[Rauk the Alchemist]";
- if (@menu)
- mes "Rauk pours a tiny amount of maggot slime from the small bottle into the glass bottle.";
- mes "Rauk mixes some more ingredients into the bottles, stirs them, heats one of them and mixes the results together.";
- next;
-
- mes "[Rauk the Alchemist]";
- mes "\"Please put your finger in.\"";
- mes "Hesitantly. you stick your finger into the resulting brew. The mixture feels warm and smooth to the touch.";
- next;
- mes "[Rauk the Alchemist]";
- mes "You pull your finger out again.";
-
- if (@guess_accumulator + @QUEST_GUESS_BASE > QUEST_clothdyer_knowsdye)
- goto L_dark_green_q_toomuch;
-
- if (@guess_accumulator + @QUEST_GUESS_BASE < QUEST_clothdyer_knowsdye)
- goto L_dark_green_q_little;
-
- // otherwise correct guess
-
- mes "Nothing seems to be happening with the mixture. Rauk's eyes lighten up.";
- mes "\"This is it! You need precisely " + @guess_accumulator + " thousandts. Let me write this down...\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "Rauk is beaming.";
- mes "\"I can now make dark green dye for you. All I need will be slime from one maggot, ten gamboge leaves, ten cobalt leaves, ten mauve leaves, and 1000 GP for other ingredients.\"";
- mes "[You gain 20,000 experience points]";
- getexp 20000, 0;
- set QUEST_clothdyer_knowsdye, @QUEST_HAS_SOLVED_DYE_PUZZLE;
- next;
- goto L_intermediate;
-
-L_dark_green_q_toomuch:
- mes "After only a second, the mixture begins to blacken. Rauk frowns.";
- mes "\"That was too much... you need fewer than " + @guess_accumulator + " thousandths, I think.";
- goto L_dark_green_q_again;
-
-L_dark_green_q_little:
- mes "Almost instantaneously, the mixture loses its colour and turns transparent. Rauk sighs.";
- mes "\"That was too little. Next time, try more than " + @guess_accumulator + " thousandths.";
- goto L_dark_green_q_again;
-
-L_dark_green_q_again:
- mes "\"Should we try again?\"";
- next;
- menu
- "Yes!", L_dark_green_q_guess_0,
- "No, I've had enough.", L_abort;
-
-L_dark_green_q_noslime:
- mes "[Rauk the Alchemist]";
- mes "\"Oh, you don't have any maggot slime? That's unfortunate; I am out of it myself. Still it should be easy enough to find, just bring me one and we can continue testing.\"";
- next;
- goto L_intermediate;
-
-L_monster_oil:
- mes "[Rauk the Alchemist]";
- mes "Rauk locks his eyes with you and continues in more serious tone.";
- mes "\"I know how to create it, but you won't get it from me. It's far too dangerous; even the best alchemist may need multiple attempts and will risk blowing up! I can give you a recipe though, if you still are wanton.\"";
- next;
- menu
- "Yes, tell me!", L_Next3,
- "No, that sounds too dangerous.", L_abort;
-
-L_Next3:
- mes "[Rauk the Alchemist]";
- mes "You will need a pearl, a pair of snake skins, two piles of volcanic ash, three black scorpion stingers – and a golden scorpion stinger. In addition you must have plenty of herbs to stabilise the concoction; mauve, alizarin, cobalt and gamboge will do just fine.";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Take the pearl, skins, black stingers, ash, and cook briefly in a cauldron. Next add the mauve/alizarin/cobalt/gamboge as needed to stabilise into a black brew. Lastly, add the golden scorpion stinger and let boil briefly. And it's done.\"";
- next;
- mes "[Rauk the Alchemist]";
- mes "\"Good luck not blowing up!\"";
- set @Q_status, @Q_status | @SETZER_KNOWS_STINGER;
- callsub L_Update_Var;
- close;
-
-L_abort:
- close;
-
-L_Update_Var:
- set QUEST_Forestbow_state,
- (QUEST_Forestbow_state & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-
-L_TooMany:
- mes "[Rauk the Alchemist]";
- mes "You don't have room for this.";
- close;
-}
diff --git a/world/map/npc/011-1/auldsbel.txt b/world/map/npc/011-1/auldsbel.txt
deleted file mode 100644
index d42b4492..00000000
--- a/world/map/npc/011-1/auldsbel.txt
+++ /dev/null
@@ -1,1287 +0,0 @@
-// Auldsbel the Wizard
-// Transmutation Magic expert
-
-011-1,50,68,0|script|Auldsbel#_M|168
-{
- set @mexp, MAGIC_EXPERIENCE & 65535;
-
- set @Q_STATUS_INITIAL, 0;
- set @Q_STATUS_POSTINTRO, 1;
- set @Q_STATUS_INITIATION, 2; // quest for being able to cast `create mouboo figurine'
- set @Q_STATUS_STUDENT, 3; // accepted as student
- set @Q_STATUS_STUDENT0, 4; // accepted as student
- set @Q_STATUS_STUDENT1, 5;
- set @Q_STATUS_STUDENT2, 6;
- set @Q_STATUS_STUDENT3, 7;
- set @Q_STATUS_STUDENT4, 8;
- set @Q_STATUS_STUDENT5, 9;
-
-
- set @wants_sulphur, (QUEST_MAGIC & (NIBBLE_6_MASK | NIBBLE_7_MASK)) // war quest
- || (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) >= 4); // Elanore's heal-Kadiya quest
- set @wants_ironpowder, (((QUEST_MAGIC & (NIBBLE_6_MASK | NIBBLE_7_MASK)) >> NIBBLE_6_SHIFT) >= 7);
-
- set @Q_MASK, NIBBLE_0_MASK | NIBBLE_1_MASK;
- set @Q_SHIFT, NIBBLE_0_SHIFT;
-
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
-
- set @Q_main_status, @Q_status & 31;
- set @Q_component_quest, @Q_status >> 5;
-
- set @has_magic, getskilllv(SKILL_MAGIC);
-
- if (@Q_main_status >= @Q_STATUS_POSTINTRO)
- goto L_short_intro;
-
- mes "[Robed Man]";
- mes "You notice a middle-aged man in expensive-looking robes.";
- mes "\"Ah, splendid, you finally came!\"";
- mes "He motions you to come closer.";
- next;
- mes "[Robed Man]";
- mes "The man is visibly excited.";
- mes "\"Here, I found a silk cocoon. Now if you can just give me the obsidian salt, we can see whether it works!\"";
- next;
- menu
- "Whether what works?", L_intro_explain,
- "What are you talking about?", L_intro_explain,
- "I don't have any obsidian salt.", L_intro_nopowder,
- "Do I know you?", L_intro_identity,
- "Goodbye.", L_Close;
-
-L_intro_explain:
- mes "[Robed Man]";
- mes "He frowns.";
- mes "\"The transmutation experiment, of course! You can't have forgotten already...?\"";
- next;
- goto L_intro_identity;
-
-L_intro_nopowder:
- mes "[Robed Man]";
- mes "\"What!? You traveled all this way without any obsidian...\"";
- next;
- goto L_intro_identity;
-
-L_intro_identity:
- mes "[Robed Man]";
- mes "He eyes you more carefully.";
- mes "\"Wait. You're not Padric.\"";
- next;
- set @xmsg$, "Right... my name is " + strcharinfo(0) + ".";
- if (strcharinfo(0) == "Padric")
- set @xmsg$, "Actually, I am, but I don't know you...?";
- menu
- @xmsg$, L_intro_wrongperson,
- "You're not very good with faces, are you?", L_intro_nogood,
- "Who are you?", L_intro_who_are_you,
- "Goodbye.", L_Close;
-
-L_intro_wrongperson:
- mes "[Robed Man]";
- mes "He laughs.";
- mes "\"Ah, I knew it... you're not the first one today, either. I should apologize, I am horrible with faces. Well, if you don't mind, please hurry along, I should go back to my experiments.\"";
- next;
- goto L_intro_primary_menu;
-
-L_intro_primary_menu:
- menu
- "Who are you?", L_intro_who_are_you,
- "Goodbye.", L_Close;
-
-L_intro_nogood:
- mes "[Robed Man]";
- mes "He laughs.";
- mes "\"Yes, you could say that. Well, I shall get back to my experiments, then; I think I shall manage something that requires no obsidian salt instead.\"";
- next;
- menu
- "Who are you?", L_intro_who_are_you,
- "What is obsidian salt, anyway?", L_intro_obsidian_salt,
- "Goodbye.", L_Close;
-
-L_intro_obsidian_salt:
- mes "[Robed Man]";
- mes "\"Oh, obsidian salt is a catalyst... or rather a theoretical catalyst. We know that it has to have an application somewhere, and I do have the strong suspicion that it may be linked to natural transmogrification...\"";
- next;
- goto L_intro_primary_menu;
-
-L_intro_who_are_you:
- mes "[Robed Man]";
- mes "\"Oh, oh my... of course you wouldn't know me, being from the countryside and all.\"";
- mes "He laughs.";
- mes "\"Well, my young friend, I am none other than Auldsbel the Graying, of the Council of Transmuters!\"";
- next;
-
- set @Q_main_status, @Q_STATUS_POSTINTRO;
- callsub S_update_var;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_AULDSBEL;
-
- mes "[Auldsbel the Wizard]";
- mes "\"That means that I'm a wizard, in case you were wondering.\"";
- next;
- goto L_main_menu;
-
-L_short_intro:
- mes "[Auldsbel the Wizard]";
- mes "\"Welcome back, Padric!\"";
- next;
- goto L_main_menu;
-
-L_main_menu:
- if (@has_magic)
- goto L_main_menu_magic;
-
- menu
- "How does this 'magic' work?", L_about_magic,
- "I want to become a wizard!", L_learn_magic,
- "Where are you from?", L_about_auldsbel,
- "Do you need help with your experiments?", L_quest,
- "What do you know about...", L_question,
- "Goodbye.", L_Close;
-
-L_main_menu_magic:
- if (@wants_sulphur && @wants_ironpowder)
- menu
- "How does magic work?", L_about_magic,
- "Can you teach me a spell?", L_learn_spell,
- "Where are you from?", L_about_auldsbel,
- "Do you need help with your experiments?", L_quest,
- "What do you know about...", L_question,
- "Can you make sulphur powder?", L_sulphur,
- "Can you make iron powder?", L_ironpowder,
- "Goodbye.", L_Close;
- if (@wants_sulphur && !@wants_ironpowder)
- menu
- "How does magic work?", L_about_magic,
- "Can you teach me a spell?", L_learn_spell,
- "Where are you from?", L_about_auldsbel,
- "Do you need help with your experiments?", L_quest,
- "What do you know about...", L_question,
- "Can you make sulphur powder?", L_sulphur,
- "Goodbye.", L_Close;
- menu
- "How does magic work?", L_about_magic,
- "Can you teach me a spell?", L_learn_spell,
- "Where are you from?", L_about_auldsbel,
- "Do you need help with your experiments?", L_quest,
- "What do you know about...", L_question,
- "Goodbye.", L_Close;
-
-L_ironpowder:
- mes "[Auldsbel the Wizard]";
- mes "\"No, I do not know the spell for this. I expect that it shouldn't be too hard an invocation, but I'm too busy to work it out.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"I know that they used to make iron ore around here, though, many years ago. Perhaps the secret is still hidden somewhere?\"";
- next;
- goto L_main_menu;
-
-L_sulphur:
- mes "[Auldsbel the Wizard]";
- set @cost, 400 - (@Q_component_quest * 30);
- mes "\"Sulphur powder? Ah, so we have picked up a little offensive magic, haven't we? Good thinking, good thinking. And yes, of course I can transmute volcanic ashes into sulphur powder at a ratio of 1:5, for " + @cost + " GP.\"";
- next;
- if (@Q_main_status >= @Q_STATUS_STUDENT)
- menu
- "No, thank you.", L_Close,
- "I will see what I can find.", L_Close,
- "Can you teach me how to make it myself?", L_Sul_t_s,
- "Here you are.", L_sulphur_buy;
- menu
- "No, thank you.", L_Close,
- "I will see what I can find.", L_Close,
- "Here you are.", L_sulphur_buy;
-
-L_sulphur_buy:
- if (Zeny < @cost)
- goto L_sulphur_nozeny;
- if (countitem("PileOfAsh") < 1)
- goto L_sulphur_noash;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("SulphurPowder") > 1
- && countitem("PileOfAsh") == 0)
- goto L_sulphur_noroom;
-
- set Zeny, Zeny - @cost;
- delitem "PileOfAsh", 1;
- getitem "SulphurPowder", 5;
- mes "[Auldsbel the Wizard]";
- mes "\"I shall transmute it later. Here, have five half-ounces from my own stock.\"";
- next;
- goto L_main_menu;
-
-L_sulphur_nozeny:
- mes "[Auldsbel the Wizard]";
- mes "\"No GP, no service.\"";
- next;
- goto L_main_menu;
-
-L_sulphur_noash:
- mes "[Auldsbel the Wizard]";
- mes "\"Without volcanic ash, I can't give you any sulphur powder. Try hunting some fire goblins, or somesuch.\"";
- next;
- goto L_main_menu;
-
-L_sulphur_noroom:
- mes "[Auldsbel the Wizard]";
- mes "\"Hmm, you really managed to squeeze something into every little place you had that we could have stored the powder in... you might want to return once you have resolved this matter.\"";
- next;
- goto L_main_menu;
-
-L_Sul_t_s:
- if (@Q_component_quest <= 4)
- goto L_Sul_t_s_no;
- mes "[Auldsbel the Wizard]";
- mes "\"Very well, then. You have been quite helpful with my experiments, after all. As you may have noticed, the spell takes a pile of volcanic ashes. Close your hands around it, then whisper the invocation.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"That invocation is '" + get(.invocation$, "make-sulphur") + "'.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"You may find that you can transmute the powder more effectively after a while; that is perfectly natural.\"";
- next;
- goto L_main_menu;
-
-L_Sul_t_s_no:
- mes "[Auldsbel the Wizard]";
- mes "\"Hmm... how about this: you help me with a few of my experiments, and I tell you?\"";
- next;
- menu
- "Very well, I will help you.", L_quest,
- "No.", L_Next;
-
-L_Next:
- mes "[Auldsbel the Wizard]";
- mes "\"Then I fear that I shall not reveal the spell to you either.\"";
- next;
- goto L_main_menu;
-
-L_about_magic:
- mes "[Auldsbel the Wizard]";
- mes "\"Magic is a universal force that comes from within; only few individuals have the power to channel and manipulate it. Most magic users resort to spells – prefabricated invocations – to access and control their magical power.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Most spells are claimed by one of the five schools of magic. To properly use them, a magic user need not only have sufficient prowess in magic overall, but also in the specifics of that particular school.\"";
- next;
- goto L_a_m_minimenu;
-
-L_a_m_minimenu:
- menu
- "What are the five schools?", L_a_m_schools,
- "How can I advance in magic?", L_a_m_advance,
- "How do spells work?", L_a_m_spells,
- "Where can I learn spells?", L_a_m_learn,
- "Never mind.", L_main_menu;
-
-L_a_m_schools:
- mes "[Auldsbel the Wizard]";
- mes "\"With few exceptions, all spells belong to one of the five schools of magic: Transmutation, War, Astral, Life, and Nature.\"";
- next;
- goto L_a_s_minimenu;
-
-L_a_s_minimenu:
- menu
- "What's Transmutation magic?", L_about_transmutation,
- "What's War magic?", L_about_war,
- "What's Astral magic?", L_about_astral,
- "What's Life magic?", L_about_life,
- "What's Nature magic?", L_about_nature,
- "Are there other spells?", L_about_other_spells,
- "Thank you.", L_a_m_minimenu;
-
-L_about_transmutation:
- mes "[Auldsbel the Wizard]";
- mes "\"Transmutation magic deals with forming matter into a new shape. Some advanced transmutation magic can also expose special properties of the material in question.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "He smiles.";
- mes "\"Transmutation magic is the engine of human civilization. By allowing us to shape buildings, tools, and other items according to the power of our imagination, it gives us mastery over nature.\"";
- next;
- goto L_a_s_minimenu;
-
-L_about_astral:
- mes "[Auldsbel the Wizard]";
- mes "\"Astral magic comprises a family of spells that connect the caster to the Astral World. This connection can be used to pull the caster 'through'-- effectively teleporting them – or to 'pull others through'-- summoning creatures.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"There are also some more direct uses of powers of the Astral World; mainly spells that affect other spells.\"";
- next;
- goto L_a_s_minimenu;
-
-L_about_war:
- mes "[Auldsbel the Wizard]";
- mes "\"War magic deals with the inevitable necessity of struggle against other creatures, and sometimes even against other humans. War magic exclusively focuses on dealing damage and destruction.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"If you use War magic, you better have a Transmuter around for the aftermath, to clear up your collateral damage.\"";
- next;
- goto L_a_s_minimenu;
-
-L_about_life:
- mes "[Auldsbel the Wizard]";
- mes "\"Life magic deals with healing. Not much of a surprise there.\"";
- next;
- goto L_a_s_minimenu;
-
-L_about_nature:
- mes "[Auldsbel the Wizard]";
- mes "\"Nature magic is a rather subtle (and, in my eyes, rather weak) kind of magic that deals with manipulating nature as it is. Think of it as Transmutation magic without being able to actually shape things the way you want.\"";
- next;
- goto L_a_s_minimenu;
-
-L_about_other_spells:
- mes "[Auldsbel the Wizard]";
- mes "\"A few spells are not claimed by any particular school of magic. In practice, this means that anyone can cast them if they just have sufficient magical power. The most prominent example is the 'detect magic' spell, '" + get(.invocation$, "detect-magic") + "'.\"";
- next;
- goto L_a_s_minimenu;
-
-L_a_m_advance:
- mes "[Auldsbel the Wizard]";
- mes "\"Advancing in your magical powers must come from two sources: from within and from a person who can guide you in whichever school of magic you wish to advance.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"For advancing in your general magic power, you must practice magical spells. Make sure to vary them; you will learn little if you cast the same spell over and over. Also, spells that consume no components seem not to be very instructive in practice.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Once you have gathered enough spellcasting experience, you should be able to advance to the next level of magic. If you received your magic from a sponsor, you may have to seek out the sponsor again to advance.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Similarly, to advance in a particular school of magic, you should seek out someone sufficiently competent in that school. Each school has a different rite for advancing its students, so make sure to talk to the right person.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"I myself am a Transmutation Wizard. Of course I know some spells from the other schools, but my focus is on Transmutation. Theoretically speaking, I can advance you in this school.\"";
- next;
- goto L_a_m_minimenu;
-
-L_a_m_learn:
- mes "[Auldsbel the Wizard]";
- mes "\"Finding and learning new spells is of course important in a magic user's quest towards becoming a full-fledged wizard.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Some wizards will be willing to share their knowledge, usually for a price. But they are not the only sources of magical spells: many magical books contain spells, and you can occasionally find them written down in the most unusual of places.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Some are even hiding as part of folklore or gossip. Of course, for those it can sometimes be hard to determine just what their prerequisites are...\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"If you decide to hunt for spells, make sure to keep a journal with you. Some spell invocations may only cross your path once in your lifetime; you must not allow them to get away!\"";
- next;
- goto L_a_m_minimenu;
-
-L_a_m_spells:
- mes "[Auldsbel the Wizard]";
- mes "\"Magical spells are shortcuts, true magic bound to a word. No-one today remembers how they were created at the beginning of time, though many have tried to find it out, and failed...\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"These magical words are the spells' invocations. Spoken by someone who can't use magic, or by someone who doesn't satisfy the prerequisites, the word stands just for itself.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"But when spoken by a competent magic user, the word may unleash its effect – consuming any components it may require, draining the caster's mana, changing the world around it.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Some spells require catalysts on top of components, others vary in power depending on whom they are cast on or under what conditions. However, all spells are affected by the caster's astral power.\"";
- next;
- goto L_a_sp_minimenu;
-
-L_a_sp_minimenu:
- menu
- "What is this 'astral power'?", L_about_astral_power,
- "What is a catalyst?", L_about_catalysts,
- "What is a component?", L_about_components,
- "What other prerequisites are there?", L_a_oth_prereq,
- "Where can I learn spells?", L_a_m_learn,
- "How often can I cast spells?", L_about_speed,
- "Never mind.", L_a_m_minimenu;
-
-L_about_astral_power:
- mes "[Auldsbel the Wizard]";
- mes "\"A person's astral power is determined by several factors: overall experience, intelligence, and any and all equipment the person may be wearing at a given time.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Greater astral power means more powerful spells. Since equipment can greatly decrease astral power, most magic users tend to be careful about what they wear – it takes a while to recover astral power even after armour is unequipped.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"The worst offenders are metal items, particularly shields and body armour. Helmets and gloves get in the way, too. Still, a few special or enchanted items may even increase magical power.\"";
- next;
- goto L_a_sp_minimenu;
-
-L_about_catalysts:
- mes "[Auldsbel the Wizard]";
- mes "\"A catalyst is a material prerequisite to a spell that is not consumed as part of the spell. For example, the Transmuter's Tablet is required to properly perform many of the more powerful transmutation spells, but it is never consumed.\"";
- next;
- goto L_a_sp_minimenu;
-
-L_about_components:
- mes "[Auldsbel the Wizard]";
- mes "\"A material component is an item that is consumed as part of the spells magic. For example, when transmuting wood into arrows, you must consume a raw log to shape the arrows out of it.\"";
- next;
- goto L_a_sp_minimenu;
-
-L_a_oth_prereq:
- mes "[Auldsbel the Wizard]";
- mes "\"Some spells have additional requirements – they can only be cast underground, or when you are standing very close to the person you are casting them on, or only when you are wearing a particular enchanted item. Spells are quirky, so read their descriptions carefully – if you do find a description.\"";
- next;
- goto L_a_sp_minimenu;
-
-L_about_speed:
- mes "[Auldsbel the Wizard]";
- mes "\"Most spells are effective immediately, unless they require some complex astral connection – summoning or teleporting can take a while to take effect, for example. Still, after casting a spell you usually need a moment to recover before casting the next.\"";
- next;
- goto L_a_sp_minimenu;
-
-L_about_auldsbel:
- mes "[Auldsbel the Wizard]";
- mes "\"Well, there is no harm in giving you the general picture, I suppose.\"";
- mes "He sighs, as if he had been forced to repeat something one time too many.";
- mes "\"I am from the Council of Transmuters, the head organ of organized Transmutation magic in the known world.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"The council oversees recruitment, education, accreditation, and, if necessary, disciplining of Transmuters.";
- mes "It ensures that Transmuter conduct is according to its statutes and acts as representative and point of contact towards other entities.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Of all the schools of magic, the School of Transmutation is the most organised by far, and held in high esteem by rulers all across the world. Of course this is not only due to the outstanding and rigid structure of the school, but also because of the exceptional services that its members provide.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"The Council, presently overseen by Lord Transmogrifier Pontorias the Plaid (May His Shape Reflect His Soul Forever), consists of fourty-nine members and is situated in the citadel of Dorngard, in the northern mountains near the Crimson Cascade.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"The Council is sovereign over three hundred acres of land and nearby farming communities and has been ever since Yorick the Younger shaped Dorngard out of a mountain by sheer power of will, to build a home for the school his father had founded.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"The Council has held peaceful relations with nearby realms for almost two centuries now and is widely regarded as a reliable partner in shaping civilization to allow it to evolve towards its next stage.\"";
- next;
- menu
- "All right, but what about you?.", L_about_auldsbel_2,
- "Never mind.", L_main_menu;
-
-L_about_auldsbel_2:
- mes "[Auldsbel the Wizard]";
- mes "\"Oh, myself? I am just vacationing in the area. Very relaxed and peaceful place, the Hurnscald area. And plenty of splendid specimens for experimentation.\"";
- next;
- goto L_main_menu;
-
-L_learn_magic:
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel laughs heartily.";
- mes "\"Hah, if only it were so easy! No, my young friend, I fear that 'learning magic' here is not an option. Either you are born with it, or without.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Sure, there are a few entities that may grant you magic – Ether Spirits or Mana Seeds or Great Dragons – but those are the stuff of legends, so I suggest that you don't waste your life trying to find one of them.\"";
- next;
- goto L_main_menu;
-
-L_question:
- callfunc "MagicTalkOptionsSetup";
- set @ignore, @QQ_AULDSBEL;
- callfunc "MagicTalkMenu";
-
- if (@c == 0)
- goto L_main_menu;
- if (@c == @QQ_ELANORE)
- goto L_Q_elanore;
- if (@c == @QQ_MANASEED)
- goto L_Q_manaseed;
- if (@c == @QQ_MANAPOTION)
- goto L_make_mana_potion;
- if (@c == @QQ_WYARA)
- goto L_Q_wyara;
- if (@c == @QQ_SAGATHA)
- goto L_Q_sagatha;
- if (@c == @QQ_IMP)
- goto L_Q_imp;
- if (@c == @QQ_OLDWIZ)
- goto L_Q_old_wizard;
- if (@c == @QQ_ASTRALSOUL)
- goto L_Q_astralsoul;
-
- mes "[Auldsbel the Wizard]";
- mes "\"Let us talk about something else.\"";
- next;
- goto L_main_menu;
-
-L_Q_astralsoul:
- if (!(getskilllv(SKILL_ASTRAL_SOUL)))
- goto L_Q_astralsoul_L;
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Oh that is a really useful focus. It will help you doing magic of all kinds.\"";
- next;
- mes "\"...uhm...\"";
- next;
- mes "\"Didn't I teach you the ability to focus on magic, did I?\"";
- goto L_main_menu;
-
-L_Q_astralsoul_L:
- mes "[Auldsbel the Wizard]";
- mes "\"Oh that is a really useful focus. It will help you doing magic of all kinds.\"";
- next;
- mes "\"I can try to teach you this ability.\"";
- next;
- mes "\"But I will need some very expensive magical substances to focus your brain onto magic.\"";
- next;
- mes "\"It is about... erm, 11300 GP. Do you have so much money?\"";
- menu
- "Here you are", L_Q_astralsoul_L1,
- "I will get it.", L_main_menu;
-
-L_Q_astralsoul_L1:
- if (Zeny < 11300)
- goto L_Q_astralsoul_nz;
- set Zeny, Zeny - 11300;
- mes "[Auldsbel the Wizard]";
- mes "\"Okay, listen:\"";
- next;
- mes "\"Some parts of your brain is still unused. These parts will now get the ability to get focused to magic.\"";
- next;
- mes "\"To do so, think of a magic spell!\"";
- next;
- mes "Auldsbel mumbles some invocations";
- next;
- set @SUP_lvl, 1;
- set @SUP_id, SKILL_ASTRAL_SOUL;
- set @SUP_name$, "Astral Soul";
- set @SUP_xp, 2500;
- callfunc "SkillUp";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Now go and try to find someone who can actually activate that focus.\"";
- next;
- mes "\"You have the powers to focus on magic, but you need to get magic focused now.\"";
- goto L_main_menu;
-
-L_Q_astralsoul_nz:
- mes "[Auldsbel the Wizard]";
- mes "\"When learning powerful stuff, you should try not to make so many jokes.\"";
- next;
- mes "\"Come back when you have the money.\"";
- goto L_main_menu;
-
-L_Q_old_wizard:
- mes "[Auldsbel the Wizard]";
- mes "\"I'm still not sure what exactly to make of him. At first appearance, he seems like a senile old man, but there can be no doubt that he has – or at least had, at some point – a very deep understanding of magic.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"I have not had the opportunity to talk to him too much, though.\"";
- next;
- goto L_main_menu;
-
-L_Q_imp:
- mes "[Auldsbel the Wizard]";
- mes "\"There are many different kinds of spirits in the world. Some are good-natured, others evil; some are weak, others very powerful. I don't know the particular one you have encountered, though I urge caution.\"";
- next;
- goto L_main_menu;
-
-L_Q_elanore:
- mes "[Auldsbel the Wizard]";
- mes "\"Ah, Elanore. A kind little woman. Also a very proficient healer, from what I have been told, though we have interacted little. If you are interested in Life magic, you might want to talk to her.\"";
- next;
- goto L_main_menu;
-
-L_Q_wyara:
- mes "[Auldsbel the Wizard]";
- mes "\"The village witch? Not exactly the brightest person, but she has managed to figure out how to brew potions. I doubt that she can do any real magic, though.\"";
- next;
- goto L_main_menu;
-
-L_Q_sagatha:
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel frowns.";
- mes "\"That witch, hmm? She's a well-known trouble-maker, and quite a clever one at that; she once prevented us from cutting down a forest near Dorngaard that the villages wanted to use for farming, using some ingenious magic.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"That woman has spent too much time alone in the forests... I have the strong suspicion that she is more loyal towards her animals than towards us humans! I recommend that you stay away from her, if you value your well-being.\"";
- next;
- goto L_main_menu;
-
-L_Q_manaseed_rumour:
- mes "\"A mana seed? Around here? Nah, they've been pulling your leg. Those things are extremely rare, after all.\"";
- next;
- goto L_main_menu;
-
-L_Q_manaseed:
- mes "[Auldsbel the Wizard]";
- if (@has_magic)
- goto L_Q_manaseed_withmagic;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANASEED)) // rumour only?
- goto L_Q_manaseed_rumour;
- if (MAGIC_FLAGS & MFLAG_DRANK_POTION)
- goto L_Q_manaseed_prepared;
- if (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)
- goto L_Q_ms_tou;
- mes "\"You have found an actual Mana Seed? That's impossible! Well, very unlikely... Then again, some others have told me similar rumours. I find it hard to believe that...\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Well, if it's true, then try touching it. That should do you no harm, but if you are very, very lucky, it just might grant you some minuscule amount of magical power.\"";
- next;
- goto L_main_menu;
-
-L_Q_ms_tou:
- if (MAGIC_FLAGS & MFLAG_DRANK_POTION)
- goto L_Q_manaseed_prepared;
- mes "\"So you touched the Mana Seed, and its power flowed right through you? You are lucky – it is willing to share – but you are also unlucky, in that you lack the discipline and control needed to contain this power.\"";
- next;
- if (MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION)
- goto L_Q_ms_tou_short;
- mes "[Auldsbel the Wizard]";
- mes "\"Legend has it that you can substitute for such control by imbibing a Mana Potion. I am not sure whether that legend is true, but for you it might be worth trying it out.\"";
- next;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_MANAPOTION;
- goto L_Q_ms_tou_short;
-
-L_Q_ms_tou_short:
- menu
- "Where can I get a Mana Potion?", L_where_mana_potion,
- "Can you make a Mana Potion?", L_make_mana_potion,
- "Thank you.", L_main_menu;
-
-L_where_mana_potion:
- mes "[Auldsbel the Wizard]";
- mes "\"Well, quite a few alchemists should be able to brew one for you. Or maybe the village witch, even, though I personally would recommend seeing an alchemist.\"";
- next;
- goto L_Q_ms_tou_short;
-
-L_make_mana_potion:
- mes "[Auldsbel the Wizard]";
- mes "\"Well, I can transmute some components into a Mana Potion for you. Let's see... I will need one pearl, 10,000 GP, about twenty Mauve leaves, and some Gamboge ones... ten should do, I think. Oh, and a bottle of water, of course.\"";
- next;
- menu
- "Here you are.", L_Next1,
- "I will look for those items.", L_main_menu,
- "I'm not interested.", L_Q_ms_tou_short;
-
-L_Next1:
- if (Zeny < 10000)
- goto L_make_mp_miss;
- if (countitem("GambogeHerb") < 10)
- goto L_make_mp_miss;
- if (countitem("MauveHerb") < 20)
- goto L_make_mp_miss;
- if (countitem("Pearl") < 1)
- goto L_make_mp_miss;
- if (countitem("BottleOfWater") < 1)
- goto L_make_mp_miss;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("GambogeHerb") > 10
- && countitem("MauveHerb") > 20
- && countitem("Pearl") > 1
- && countitem("BottleOfWater") > 1
- && countitem("ManaPotion") < 1)
- goto L_mana_potion_toomuch;
- set Zeny, Zeny - 10000;
- delitem "GambogeHerb", 10;
- delitem "MauveHerb", 20;
- delitem "Pearl", 1;
- delitem "BottleOfWater", 1;
- getitem "ManaPotion", 1;
-
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel pockets your GP and the pearl, then stuffs the leaves into the bottle. Holding the bottle between his hands, he focuses briefly. The water and leaves flash bright red, then the leaves dissolve.";
- next;
- mes "[Auldsbel the Wizard]";
- mes "The wizard pours the resultant mixture into a different bottle. \"It will lose its power quickly if left in a glass bottle\", he explains.";
- mes "He hands you the final result, which feels surprisingly heavy.";
- next;
- menu
- "Thank you!", L_main_menu,
- "What about the pearl and GP?", L_Next2;
-
-L_Next2:
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel raises his eyebrows in surprise.";
- mes "\"Those were payment. You don't expect me to work for free, now do you?\"";
- next;
- goto L_main_menu;
-
-L_mana_potion_toomuch:
- mes "[Auldsbel the Wizard]";
- mes "\"Burdened as you are, I doubt you could carry it. Get rid of some of your old things first, will you?\"";
- next;
- goto L_main_menu;
-
-L_make_mp_miss:
- mes "[Auldsbel the Wizard]";
- mes "\"No, I need one pearl, 10,000 GP, 20 Mauve leaves, 10 Gamboge leaves, and one bottle of water.\"";
- next;
- goto L_main_menu;
-
-L_Q_manaseed_prepared:
- mes "\"So you found a Mana Seed and prepared yourself by drinking a mana potion? I recommend that you visit the seed again and see if that actually works...\"";
- next;
- goto L_main_menu;
-
-L_Q_manaseed_withmagic:
- if (MAGIC_FLAGS & MFLAG_MANASEED_MAXEDOUT)
- goto L_Q_manaseed_maxedout;
- mes "\"I still find it hard to believe that you have found an actual Mana Seed here, in the middle of nowhere... Well, I suggest that you keep visiting it. As your control over magic grows, it may grant you additional power.\"";
- next;
- goto L_main_menu;
-
-L_Q_manaseed_maxedout:
- mes "\"So the mana seed isn't giving you any more power? You might want to try again later; normally those seeds grow in power, over time.\"";
- next;
- goto L_main_menu;
-
-L_quest:
- if (@Q_component_quest == 0)
- goto L_c_quest_0;
- if (@Q_component_quest == 1)
- goto L_c_quest_1;
- if (@Q_component_quest == 2)
- goto L_c_quest_2;
- if (@Q_component_quest == 3)
- goto L_c_quest_3;
- if (@Q_component_quest == 4)
- goto L_c_quest_4;
- if (@Q_component_quest == 5)
- goto L_c_quest_5;
- mes "[Auldsbel the Wizard]";
- mes "\"You have been very helpful, but at this point I have everything I need. Except perhaps for a Wumpus Egg, though I have no idea where you could find one... If you ever come across one, I will give you a special reward for it, though.\"";
- next;
- goto L_main_menu;
-
-L_c_quest_0:
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel is visibly delighted.";
- mes "\"Ah, indeed, indeed! I can often use help with my experiments, and you just happen to be arriving at a particularly opportune time. See, I found this...\"";
- mes "He pulls something from his pocket and shows it to you.";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"It's a silk cocoon. This area has been virtually infested with silkworms, from what I have seen. This is splendid! I will try to... do something very special with this one. But for that I will need twenty Mauve leaves.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"There are plenty of Mauve plants around, so I'm sure that you won't have a hard time finding the leaves.\"";
- next;
- menu
- "I have them here.", L_Next3,
- "Sure, I will look for them.", L_main_menu;
-
-L_Next3:
- if (countitem ("MauveHerb") < 20)
- goto L_c_quest_missing;
- delitem "MauveHerb", 20;
- set Zeny, Zeny + 2500;
- mes "[Auldsbel the Wizard]";
- mes "\"Well done, my young friend! Here is 2,500 GP to compensate you for your efforts.\"";
- mes "[You gain 250 experience points]";
- getexp 250, 0;
- set @Q_component_quest, 1;
- callsub S_update_var;
- next;
- goto L_main_menu;
-
-L_c_quest_1:
- mes "[Auldsbel the Wizard]";
- mes "\"Good, good... I am trying to come up with a way to best use the Mauve leaves you brought me, but it seems that I will need further components. I am not sure about the exact composition yet, but I will need a few potions.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Please be a good helper and get me an iron potion, a concentration potion, and three small and three medium healing potions.\"";
- next;
- menu
- "Here you are.", L_Next4,
- "I'm not your 'good helper'!", L_main_menu,
- "I'll see what I can do.", L_main_menu;
-
-L_Next4:
- if (countitem ("SmallHealingPotion") < 3)
- goto L_c_quest_missing;
- if (countitem ("MediumHealingPotion") < 3)
- goto L_c_quest_missing;
- if (countitem ("IronPotion") < 1)
- goto L_c_quest_missing;
- if (countitem ("ConcentrationPotion") < 1)
- goto L_c_quest_missing;
- delitem "SmallHealingPotion", 3;
- delitem "MediumHealingPotion", 3;
- delitem "IronPotion", 1;
- delitem "ConcentrationPotion", 1;
- set Zeny, Zeny + 2500;
- mes "[Auldsbel the Wizard]";
- mes "\"Ah, excellent, excellent! These are precisely what I needed. Here is another 2,500 GP to compensate you for your efforts.\"";
- mes "[You gain 500 experience points]";
- getexp 500, 0;
- set @Q_component_quest, 2;
- callsub S_update_var;
- next;
- goto L_main_menu;
-
-L_c_quest_2:
- mes "[Auldsbel the Wizard]";
- mes "\"Ah! Excellent! Yes, yes, indeed I need help. I have managed to transmute the components you brought me into a liquid that I believe to be a demetamorphosis stock, but it seems that the details still need some fine-tuning, and I am out of silk cocoons...\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"I would like to run the next batch of experiments on a larger scale, though. Would you be so kind as to fetch me one hundred silk cocoons, please?\"";
- next;
- menu
- "One hundred cocoons, here you are.", L_Next5,
- "That's a lot; I'll see what I can do.", L_main_menu;
-
-L_Next5:
- if (countitem ("SilkCocoon") < 100)
- goto L_c_quest_missing;
- delitem "SilkCocoon", 100;
- set Zeny, Zeny + 5000;
- mes "[Auldsbel the Wizard]";
- mes "\"Splendid, splendid! Here is 5,000 GP for you.\"";
- mes "Auldsbel attempts to cram the cocoons into his pockets, with little success. Finally he gives up and takes them into his hut.";
- mes "[You gain 2,000 experience points]";
- getexp 2000, 0;
- set @Q_component_quest, 3;
- callsub S_update_var;
- next;
- goto L_main_menu;
-
-L_c_quest_3:
- mes "[Auldsbel the Wizard]";
- mes "\"Yes... I'm actually not certain that my demetamorphosis stock will not drain the life out of these little creatures. Perhaps an alchemical revitalization tincture would be called for. Fortunately this one is easy, I can make it myself.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"I'm still not sure how to integrate it into the spell... but leave that to me. Can you get me twenty-five red scorpion stingers and twenty-five lumps of maggot slime? Those should be just what I need.\"";
- next;
- menu
- "Here are your stingers and slimes.", L_Next6,
- "I will get back to you once I have them.", L_main_menu;
-
-L_Next6:
- if (countitem ("RedScorpionStinger") < 25)
- goto L_c_quest_missing;
- if (countitem ("MaggotSlime") < 25)
- goto L_c_quest_missing;
- delitem "RedScorpionStinger", 25;
- delitem "MaggotSlime", 25;
- set Zeny, Zeny + 5000;
- mes "[Auldsbel the Wizard]";
- mes "\"Good helper! Another 5,000 GP for you.\"";
- mes "\"I believe that I have figured out one possible way to integrate the tincture into the spell... I will let you know how that goes.\"";
- mes "[You gain 10,000 experience points]";
- getexp 10000, 0;
- set @Q_component_quest, 4;
- callsub S_update_var;
- next;
- goto L_main_menu;
-
-L_c_quest_4:
- mes "[Auldsbel the Wizard]";
- mes "\"Hmm, yes... See, the thing is that transmuting living beings is not normally something that transmutation magic can do. It seems that the beings' life force must be overcome to transmute them, but that in turn kills them.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"But I was wondering whether creatures that already can auto-transmute – or metamorphose, as some people call it – might not allow themselves to be subjected to magical transmutation more easily... Still, all of my demetamorphosis attempts so far have failed.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"I am thinking of injecting the life force of another creature, perhaps using some astral channeling. Snakes sound most promising, as they have a similar physical shape but a strong life force.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Could you get me twenty regular, cave, and mountain snake tongues, please? So a total of sixty tongues. This is where most of their life force is concentrated, incidentally.\"";
- next;
- menu
- "Here are your tongues.", L_Next7,
- "I will hunt some snakes for you.", L_main_menu;
-
-L_Next7:
- if (countitem ("SnakeTongue") < 20)
- goto L_c_quest_missing;
- if (countitem ("CaveSnakeTongue") < 20)
- goto L_c_quest_missing;
- if (countitem ("MountainSnakeTongue") < 20)
- goto L_c_quest_missing;
- delitem "SnakeTongue", 20;
- delitem "CaveSnakeTongue", 20;
- delitem "MountainSnakeTongue", 20;
- set Zeny, Zeny + 8000;
- mes "[Auldsbel the Wizard]";
- mes "\"8,000 GP should cover your efforts, I think.\"";
- mes "\"Now let's see if this works...\"";
- mes "[You gain 40,000 experience points]";
- getexp 40000, 0;
- set @Q_component_quest, 5;
- callsub S_update_var;
- next;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel focuses on the bundle of snake tongues, which begins to assume a bright red colour, then start to glow. Yellow sparks drop to the ground, as Auldsbel rolls the tongues into a ball.";
- next;
- mes "[Auldsbel the Wizard]";
- mes "He tosses in a cocoon, then squeezes everything together. A bright red flash blinds you momentarily.";
- next;
- mes "[Auldsbel the Wizard]";
- mes "As Auldsbel opens his hands, there is nothing there.";
- next;
- mes "[Auldsbel the Wizard]";
- mes "He frowns. \"Their life force was still not strong enough. Hmm.\"";
- next;
- goto L_main_menu;
-
-L_c_quest_5:
- mes "[Auldsbel the Wizard]";
- mes "\"I do have another assignment for you, but this one will be tricky. I will need fifty grass snake tongues. I believe that this may be just enough life force to return the silkworm back to its original shape.\"";
- next;
- menu
- "Here they are.", L_Next8,
- "That's quite a challenge.", L_main_menu;
-
-L_Next8:
- if (countitem ("GrassSnakeTongue") < 50)
- goto L_c_quest_missing;
- delitem "GrassSnakeTongue", 50;
- set Zeny, Zeny + 10000;
- mes "[Auldsbel the Wizard]";
- mes "\"Excellent! Here is 10,000 GP for you, and now let's see how this goes.\"";
- mes "[You gain 100,000 experience points]";
- getexp 100000, 0;
- set @Q_component_quest, 6;
- callsub S_update_var;
- next;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel rolls the snake tongues into a ball again, whilst chanting some words that you fail to discern. As the ball begins to glow, he tosses in a silkworm cocoon.";
- mes "He then presses his hands together; you are blinded by a blue flash.";
- next;
- mes "[Auldsbel the Wizard]";
- mes "The wizard steps back in horror.";
- mes "\"Oh my... I should have known. I have stepped into Astral spell territory here. This is bad...\"";
- mes "He mumbles a brief spell invocation.";
- mes "\"I suggest that you run.\"";
- next;
- misceffect sfx_magic_transmute;
- monster "this", 50, 68, "", 1034, 4, "Auldsbel#_M::OnSnakeDeath";
- close;
-
-OnSnakeDeath:
- set BOSS_POINTS, BOSS_POINTS + 5;
- message strcharinfo(0), "You gain 5 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-L_c_quest_missing:
- mes "[Auldsbel the Wizard]";
- mes "\"No, you are missing some items. Come back later when you have everything!\"";
- next;
- goto L_main_menu;
-
-L_learn_spell:
- if (@Q_main_status == @Q_STATUS_INITIATION)
- goto L_initiation;
- if (@Q_main_status == @Q_STATUS_STUDENT)
- goto L_stu_start;
- if (@Q_main_status == @Q_STATUS_STUDENT0)
- goto L_stu_0;
- if (@Q_main_status == @Q_STATUS_STUDENT1)
- goto L_stu_1;
- if (@Q_main_status == @Q_STATUS_STUDENT2)
- goto L_stu_2;
- if (@Q_main_status == @Q_STATUS_STUDENT3)
- goto L_stu_3;
- if (@Q_main_status == @Q_STATUS_STUDENT4)
- goto L_stu_4;
- if (@Q_main_status == @Q_STATUS_STUDENT5)
- goto L_stu_5;
-
- mes "[Auldsbel the Wizard]";
- mes "\"Wellll.... you do seem to have some magical abilities. But do you possess the talent and diligence needed for a true wizard?\"";
- mes "He raises an eyebrow at you, then grins.";
- mes "\"Only one way to find out! Let me teach you a first spell.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"This spell is a simple transmutation invocation. All it takes is a clean wooden log. Hold it in your hand, focus your powers, and say the magic invocation.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"You can turn the log into a wooden figurine by imagining the creature whose shape you want in your head and saying `" + get(.invocation$, "spell-transmute-wood") + ",' followed by the last syllable of the name of the creature you want to shape it into.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"So `" + get(.invocation$, "spell-transmute-wood") + " lurk' for a Skytlurk figurine, for example. If you know what a Skytlurk is, I mean, otherwise you will have a hard time imagining it. You may want to try some others instead, though.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Oh... and it has to be the old Tritan name. Most creatures nowadays have very different names, but some old Tritan names have survived. Just try some, until you find one that fits.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Oh, actually, make sure to write that down. You should keep track of all spells and spell fragments, really. I always keep a notebook handy, in fact.\"";
- next;
- set @Q_main_status, @Q_STATUS_INITIATION;
- callsub S_update_var;
- goto L_main_menu;
-
-L_repeat_spell:
- mes "[Auldsbel the Wizard]";
- mes "\"The invocation is `" + get(.invocation$, "spell-transmute-wood") + ",' followed by the last syllable of the name of the creature you want to shape the log into. So `" + get(.invocation$, "spell-transmute-wood") + " lurk' for a Skytlurk figurine.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"But keep two things in mind: First, you must KNOW what the creature looks like – so a Skytlurk probably won't work – and second, you must use the old Tritan name of it. `Fluffy' and `Scorpion' are modern names, so those won't work, you should try some others.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"And make sure to keep notes of your spells! In the future, I will only tell you once.\"";
- next;
- goto L_main_menu;
-
-L_initiation:
- mes "[Auldsbel the Wizard]";
- mes "\"So, have you managed to transmute something?\"";
- next;
- if (countitem("MoubooFigurine"))
- menu
- "Not yet.", L_main_menu,
- "How about this mouboo figurine?", L_initiation_check;
- menu
- "Not yet.", L_main_menu,
- "What was the spell again?", L_repeat_spell;
-
-L_initiation_fail:
- mes "[Auldsbel the Wizard]";
- mes "\"No, no, no. This is no good – too many imperfections.\"";
- mes "He throws it away.";
- mes "\"Keep practicing – and make sure to vary the spells you cast a little; that will make it easier to learn.\"";
- next;
- goto L_main_menu;
-
-L_initiation_check:
- if (!(countitem("MoubooFigurine")))
- goto L_main_menu;
- delitem "MoubooFigurine", 1;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel inspects your figurine.";
- next;
- if (@mexp < 40)
- goto L_initiation_fail;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel nods.";
- mes "\"This looks good.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "He pockets the figurine.";
- mes "\"Very well, then. I shall accept you as my student.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel presses his index and middle finger against your forehead.";
- mes "\"Accept my blessing!\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "You feel new powers flowing into your body!";
- set @Q_main_status, @Q_STATUS_STUDENT;
- callsub S_update_var;
- set @SUP_id, SKILL_MAGIC_TRANSMUTE;
- set @SUP_name$, "Transmutation Magic";
- set @SUP_xp, 5000;
- set @SUP_lvl, 2;
- callfunc "SkillUp";
- next;
- goto L_main_menu;
-
-L_stu_start:
- if (@mexp < 200) goto L_notready;
- mes "[Auldsbel the Wizard]";
- mes "\"Next, I shall teach you a higher-level transmutation spell.\"";
- if (getskilllv(SKILL_MAGIC) < 2)
- mes "\"Beware, for you will not be able to use it yet; you will first have to gain a greater understanding of magic overall.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Bring me ten bug legs, and I will reveal its invocation to you.\"";
- next;
- menu
- "Here you are.", L_Next9,
- "I'll be back with them.", L_main_menu;
-
-L_Next9:
- if (countitem("BugLeg") < 10)
- goto L_c_quest_missing;
- delitem "BugLeg", 10;
- getexp 1000, 0;
- set @Q_main_status, @Q_STATUS_STUDENT0;
- callsub S_update_var;
- mes "[Auldsbel the Wizard]";
- mes "He picks up the bug legs.";
- mes "\"Good. These will come in handy later...\"";
- mes "He grins.";
- mes "[1000 experience points]";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Now, listen carefully: to make a short tank top out of three pieces of cloth, you must use the invocation '" + get(.invocation$, "make-short-tanktop") + "'.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"But be careful; transmutations can go wrong, and that can injure you. When you have more overall spellcasting practice, come back to me.\"";
- next;
- goto L_main_menu;
-
-L_notready:
- mes "[Auldsbel the Wizard]";
- mes "\"You still need more practice with spellcasting; I won't give you another spell until you are ready.\"";
- next;
- goto L_main_menu;
-
-L_stu_0:
- if (@mexp < 350)
- goto L_notready;
- mes "[Auldsbel the Wizard]";
- mes "\"The next transmutation spell is a little harder than the last one I taught you, but you should be able to manage.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Bring me twenty mauve leaves, and I will reveal its invocation.\"";
- next;
- menu
- "Here you are.", L_Next10,
- "I'll be back with them.", L_main_menu;
-
-L_Next10:
- if (countitem("MauveHerb") < 20)
- goto L_c_quest_missing;
- delitem "MauveHerb", 20;
- getexp 1000, 0;
- set @Q_main_status, @Q_STATUS_STUDENT1;
- callsub S_update_var;
- mes "[Auldsbel the Wizard]";
- mes "He pockets your mauve leaves.";
- mes "\"Those should go very well with the salmon.\"";
- mes "[1000 experience points]";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"The next spell I have will make a normal tank top out of four pieces of cloth. The invocation is '" + get(.invocation$, "make-tanktop") + "', make sure to write this down.\"";
- next;
- goto L_main_menu;
-
-L_stu_1:
- if (@mexp < 425)
- goto L_notready;
- mes "[Auldsbel the Wizard]";
- mes "\"Up next is the transmutation spell for regular shirts.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"For this, I would like ten scorpion stingers.\"";
- next;
- menu
- "Here you are.", L_Next11,
- "I'll be back with them.", L_main_menu;
-
-L_Next11:
- if (countitem("ScorpionStinger") < 10)
- goto L_c_quest_missing;
- delitem "ScorpionStinger", 10;
- getexp 1000, 0;
- set @Q_main_status, @Q_STATUS_STUDENT2;
- callsub S_update_var;
- mes "[Auldsbel the Wizard]";
- mes "He carefully takes the stingers.";
- mes "\"You are being quite helpful. If my experiments go well, I will make sure to acknowledge you in a footnote somewhere.\"";
- mes "[1000 experience points]";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"To make a shirt, use the invocation '" + get(.invocation$, "make-shirt") + "'. This will require five pieces of cloth.\"";
- next;
- goto L_main_menu;
-
-L_stu_2:
- if (@mexp < 500)
- goto L_notready;
- mes "[Auldsbel the Wizard]";
- mes "\"You may find the next spell particularly useful.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Bring me twenty wooden logs, and I will teach you.\"";
- next;
- menu
- "Here you are.", L_Next12,
- "I'll be back with them.", L_main_menu;
-
-L_Next12:
- if (countitem("RawLog") < 20)
- goto L_c_quest_missing;
- delitem "RawLog", 20;
- getexp 1000, 0;
- set @Q_main_status, @Q_STATUS_STUDENT3;
- callsub S_update_var;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel places the logs next to his hut.";
- mes "\"I'm hoping to animate them into the shape of one of those odd log heads.\"";
- mes "[1000 experience points]";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"This spell makes arrows out of a single wooden log. Its invocation is '" + get(.invocation$, "make-arrows") + "'.\"";
- next;
- goto L_main_menu;
-
-L_stu_3:
- if (getskilllv(SKILL_MAGIC) < 3)
- goto L_mag_skill_ins;
- mes "[Auldsbel the Wizard]";
- mes "\"I believe that you may be ready for the next level of transmutation magic! Let me teach you one last spell that you can handle before your promotion, and if you can cast this one, I will advance you.\"";
- next;
- goto L_stu_3_repeat;
-
-L_stu_3_repeat:
- mes "[Auldsbel the Wizard]";
- mes "\"This one has the invocation `" + get(.invocation$, "make-concentration-potion") + "'. Put two cobalt leaves and two pink flower petals into a bottle of water, hold it up, and speak that phrase.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"It is a tricky spell, but if it works out, you will transform the bottle into a concentration potion.\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "\"Hmm. That reminds me – there was a similar spell, but I forgot what it was... anyway, try using this, and bring me the potion when you are done.\"";
- next;
- set @Q_main_status, @Q_STATUS_STUDENT4;
- callsub S_update_var;
- goto L_main_menu;
-
-L_stu_4:
- mes "[Auldsbel the Wizard]";
- mes "\"Did you manage to transmute a concentration potion?\"";
- next;
- menu
- "What was the invocation again?", L_stu_3_repeat,
- "No, still working on it...", L_main_menu,
- "Yes.", L_Next13;
-
-L_Next13:
- if (countitem("ConcentrationPotion") < 1)
- goto L_stu_4_no_potion;
- if (!(MAGIC_FLAGS & MFLAG_MADE_CONC_POTION))
- goto L_stu_4_wrong_potion;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel examines your potion and nods.";
- mes "\"Good work! You are ready for a promotion!\"";
- next;
- mes "[Auldsbel the Wizard]";
- mes "Auldsbel presses his index and middle finger against your forehead.";
- mes "\"Accept my blessing!\"";
- next;
- set @Q_main_status, @Q_STATUS_STUDENT5;
- callsub S_update_var;
- mes "[Auldsbel the Wizard]";
- mes "You feel new powers flowing into your body!";
- set @SUP_id, SKILL_MAGIC_TRANSMUTE;
- set @SUP_name$, "Transmutation Magic";
- set @SUP_xp, 30000;
- set @SUP_lvl, 3;
- callfunc "SkillUp";
- next;
- goto L_main_menu;
-
-L_stu_4_wrong_potion:
- mes "[Auldsbel the Wizard]";
- mes "Auldsbell examines your potion, then shakes his head.";
- mes "\"This doesn't look quite right, though I can't quite point at what the problem is. You will have to continue trying.\"";
- next;
- goto L_main_menu;
-
-L_stu_4_no_potion:
- mes "[Auldsbel the Wizard]";
- mes "\"You seem to be rather lacking the concentration potion you need to justify your claim, my dear fellow.\"";
- next;
- goto L_main_menu;
-
-L_stu_5:
- mes "[Auldsbel the Wizard]";
- mes "\"Hmm. Come back some other time, please; I still haven't figured out what to teach you next.\"";
- close;
-
-L_mag_skill_ins:
- mes "[Auldsbel the Wizard]";
- mes "\"No, not at this time. You will have to advance in your overall magic skill before I can teach you more.\"";
- next;
- goto L_main_menu;
-
-L_Close:
- close;
-
-S_update_var:
- set @Q_status, @Q_main_status | (@Q_component_quest << 5);
- set QUEST_MAGIC,
- (QUEST_MAGIC & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/011-1/mapflags.txt b/world/map/npc/011-1/mapflags.txt
deleted file mode 100644
index 0932c5c3..00000000
--- a/world/map/npc/011-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-011-1|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/011-1/oscar.txt b/world/map/npc/011-1/oscar.txt
deleted file mode 100644
index ad088eff..00000000
--- a/world/map/npc/011-1/oscar.txt
+++ /dev/null
@@ -1,514 +0,0 @@
-//############################################################################
-//# #
-//# Halloween seasonal #
-//# #
-//############################################################################
-
-// Annual_Quest variable:
-// This variable contains 4 bytes that are used to check if a player
-// completed or not an annual quest. The first byte will be used by this
-// after-Halloween event.
-// Each byte contains the value "year minus 2000" where year is the next year
-// when the player can start over the annual quest.
-// Be sure to not have a quest whose duration overlaps on two years,
-// or this will cause problems.
-
-// The second byte contains easter information, see annualeaster.txt for more information.
-
-// Halloween quest states:
-// 0: nothing started
-// 1: the player knows the story and is asked to go find pumpkin seeds in the forest
-// 2: the player gathered enough seeds
-// 3: the player gave the pumpkin seeds and can now help the farmer to grow them
-// the player can chose that the pumpkins patches will be watered by kaflosh (requires Nature Magic lvl 2), -> jumps to 5
-// 4: the player is asked to go refill water bottles
-// 5: various possible states here: the water bottles are refilled and the pumpkin spawns will start right away.
-// the player will start by kafloshing ($@HalloweenQuest_PumpkinHunter$ == "")
-// 5 + $@HalloweenQuest_PumpkinHunter$ != "":* the player watered the patches (by kaflosh, or the farmer did). Pumpkins spawn.
-// 6: the player saved the farmer from the pumpkin invasion (all pumpkins / mobs killed)
-// 10: the player failed to save the farmer from the pumpkin invasion (player left the map, died -- logging off is allowed however)
-
-function|script|HalloweenQuestWaterPumpkins
-{
- if (Quest_Halloween != 5 || $@HalloweenQuest_PumpkinHunter$ != "")
- goto L_Return;
- set $@HalloweenQuest_PumpkinHunter$, strcharinfo(0);
- donpcevent "Oscar::OnCommandSpg";
- goto L_Return;
-
-L_Return:
- return;
-}
-
-011-1,94,38,0|script|Oscar|142
-{
- // Check we are at the good time of the year
- if (!(gettime(6) == 11 && (gettime(5) >= 4 && gettime(5) <= 30))) goto L_NoEvent;
- // Check halloween quest has been done or not.
- set @halloween_year, (Annual_Quest & BYTE_0_MASK) >> BYTE_0_SHIFT;
- if (@halloween_year < (gettime(7) - 2000)) goto L_AdjustYear;
- goto L_Init;
-
-L_AdjustYear:
- set Quest_Halloween, 0;
- set @halloween_year, gettime(7) - 2000;
- callsub S_Update_Annual_Quest;
- goto L_Init;
-
-L_NoEvent:
- mes "[Oscar]";
- mes "\"Welcome here!";
- mes "I'm the owner of this farm. I'm growing fruits around here as you can see.\"";
- next;
- mes "\"Some of my fruits are for sale in my shop right here.";
- mes "Don't hesitate to drop by. They are cheap!\"";
- close;
-
-L_Init:
- if (@halloween_year == (gettime(7) - 2000) + 1) goto L_QuestAlreadyDone;
- if (Quest_Halloween == 0) goto L_Introduce;
- if (Quest_Halloween == 1 || Quest_Halloween == 2) goto L_CheckSeeds;
- if (Quest_Halloween == 3) goto L_HelpGrowSeeds;
- if (Quest_Halloween == 4) goto L_HelpFillWaters;
- if (Quest_Halloween == 5 && $@HalloweenQuest_PumpkinHunter$ == "") goto L_HelpWaterPatches;
- if (Quest_Halloween == 5 && $@HalloweenQuest_PumpkinHunter$ == strcharinfo(0)) goto L_HelpCleanPumpkins;
- if (Quest_Halloween == 5 && $@HalloweenQuest_PumpkinHunter$ != "") goto L_WateringBusy;
- if (Quest_Halloween == 6) goto L_GetReward;
- if (Quest_Halloween == 10) goto L_GetSlap;
- goto L_End;
-
-L_Introduce:
- mes "[Oscar]";
- mes "\"Heya!\"";
- next;
- mes "\"I just came back from a long trip... Really tiring, but so interesting.\"";
- menu
- "Oh? Where did you go?", L_Next,
- "Well... I believe.", L_End;
-
-L_Next:
- mes "[Oscar]";
- mes "\"Well, I travelled to the economic center of this continent.";
- mes "It's north-east of here. Quite far I must say.\"";
- next;
- mes "\"But it was worth it really.";
- mes "I went there to see ways to improve my little plantation here.";
- mes "Oh well, sell some of my fruits too, see some of my fellow farmers. Classic business.\"";
- next;
- mes "\"Until a few days ago, they were holding a large party to celebrate Halloween.";
- mes "Very nice really... And in particular, I saw these strange veggies they call pumpkins.\"";
- next;
- mes "\"They taste really good you see, but ahah, they weren't really for eating at that moment!";
- mes "Anyway, I wondered if I could grow some here. Until now I only grow apples and oranges.\"";
- menu
- "That's an interesting idea!", L_Next1,
- "Really, I hate pumpkins.", L_End;
-
-L_Next1:
- mes "[Oscar]";
- mes "\"However, I couldn't get any seeds, but I heard rumors in that city, saying we could find pumpkins in the forests north-east of here.";
- mes "Most likely there are pumpkin seeds laying around them.\"";
- next;
- mes "\"They also mentioned something strange about them, but hey, who cares! Just rumors!\"";
- next;
-
- if (BaseLevel < 45)
- goto L_TooYoung;
-
- mes "\"Do you think you can get some for me?\"";
- menu
- "Sure. Leave it to me!", L_Next2,
- "Well, I don't have time for that right now.", L_End;
-
-L_Next2:
- mes "[Oscar]";
- mes "\"Thanks so much " + strcharinfo(0) + "!";
- mes "I can't wait to try them!\"";
- set Quest_Halloween, 1;
- goto L_End;
-
-L_TooYoung:
- mes "\"Ahm... That may be a little dangerous for you though. I don't want to send a kid in the deep forest.\"";
- goto L_End;
-
-L_End:
- set @halloween_year, 0;
- close;
-
-L_CheckSeeds:
- if (countitem("PumpkinSeeds") < $@halloween_num_seeds)
- goto L_NotEnoughSeeds;
- delitem "PumpkinSeeds", $@halloween_num_seeds;
- set Quest_Halloween, 3;
- mes "[Oscar]";
- mes "\"Yes you found them! I can start to make them grow now!";
- mes "Thank you so much " + strcharinfo(0) + "!\"";
- goto L_End;
-
-L_NotEnoughSeeds:
- mes "[Oscar]";
- mes "\"Oh, it looks like you didn't find enough seeds yet...\"";
- goto L_End;
-
-L_HelpGrowSeeds:
- // Wait 20 seconds before triggering the next step.
- if (@halloween_seeds_timer == 0)
- set @halloween_seeds_timer, gettimetick(2);
- if ((gettimetick(2) - @halloween_seeds_timer) < 5)
- goto L_WaitGrowSeeds;
- mes "[Oscar]";
- mes "\"Oh, you are back!\"";
- next;
- mes "You notice Oscar looks quite disappointed.";
- next;
- mes "[Oscar]";
- mes "\"You see I could use some more help from you.";
- mes "My supplies of water are quite low because of the long trip I made.";
- mes "And I've been watering the pumpkin patches, but unfortunately I'm already out of water before I can see anything growing.\"";
- next;
- mes "\"If you could help me fill these " + $@halloween_num_water_bottles + " bottles with water, that would be very kind of you!\"";
-
- set @nature_magic, getskilllv(SKILL_MAGIC_NATURE);
- if (@nature_magic > 1)
- goto L_ProposeUseKaflosh;
- set @nature_magic, 0;
- menu
- "Yeah sure!", L_Next3,
- "That sounds boring to do. No thanks.", L_End;
-
-L_Next3:
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("EmptyBottle") == 0)
- goto L_InventoryFull;
- set @inventorylist_count, 0;
- set Quest_Halloween, 4;
- goto L_GetEmptyBottles;
-
-L_ProposeUseKaflosh:
- set @nature_magic, 0;
- menu
- "Yeah sure!", L_Next4,
- "Maybe I can help you water them with magic!", L_WaterWithKaflosh,
- "That sounds boring to do. No thanks.", L_End;
-
-L_Next4:
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("EmptyBottle") == 0)
- goto L_InventoryFull;
- set Quest_Halloween, 4;
- goto L_GetEmptyBottles;
-
-L_GetEmptyBottles:
- mes "[Oscar]";
- mes "\"Ok, here are the " + $@halloween_num_water_bottles + " empty bottles.\"";
- next;
- mes "\"Oh and while you fill these bottles, why not bring some friends here as well?";
- mes "Let's not be reckless. Maybe these rumors about the pumpkins are true.";
- mes "Oh, unless you consider yourself strong enough to take care of this alone!\"";
- getitem "EmptyBottle", $@halloween_num_water_bottles;
- goto L_End;
-
-L_WaitGrowSeeds:
- mes "[Oscar]";
- mes "\"Thanks again " + strcharinfo(0) + "!";
- mes "I'm planting these seeds right now.\"";
- next;
- mes "\"Stay around if you want to see what it looks like!";
- mes "Amazing I tell you, amazing!\"";
- goto L_End;
-
-L_HelpFillWaters:
- mes "[Oscar]";
- mes "\"Hey, you again!\"";
- next;
- if ($@HalloweenQuest_PumpkinHunter$ != "")
- goto L_WateringBusy;
- mes "\"So do you have the " + $@halloween_num_water_bottles + " bottles filled with fresh water?\"";
- menu
- "Yes! Fresh and clear water.", L_Next5,
- "Oh, not yet. I'm on my way.", L_End;
-
-L_Next5:
- if (countitem("BottleOfWater") < $@halloween_num_water_bottles)
- goto L_NotEnoughWaters;
-
- // make an additional check here, since the player had a dialog pause in the above menu.
- if ($@HalloweenQuest_PumpkinHunter$ != "")
- goto L_WateringBusy;
- delitem "BottleOfWater", $@halloween_num_water_bottles;
-
- mes "[Oscar]";
- mes "\"Many thanks! I wonder what I would have done without you!";
- mes "I'll water the patches right away. Watch this!\"";
- set Quest_Halloween, 5;
- set $@HalloweenQuest_PumpkinHunter$, strcharinfo(0);
- callsub S_StartPumpkinsSpawn;
- goto L_End;
-
-L_WaterWithKaflosh:
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("BottleOfWater") == 0)
- goto L_InventoryFull;
- mes "[Oscar]";
- mes "\"Oh, I see!";
- next;
- mes "\"So, I'm waiting you show me your skills!";
- mes "Water the pumpkin patches right here with your awesome magic!\"";
- next;
- mes "\"Here is one bottle of water to do it.\"";
- next;
- mes "\"By the way, I told you about the rumors concerning these pumpkins.";
- mes "Why not bring some friends here? Oh, unless you consider yourself strong enough!\"";
- set Quest_Halloween, 5;
- getitem "BottleOfWater", 1;
- goto L_End;
-
-L_HelpWaterPatches:
- // We check again here that the player has magic skills
- // This case happens when the player has logged off
- // during the infestation phase.
- set @nature_magic, getskilllv(SKILL_MAGIC_NATURE);
- if (!(@nature_magic > 1))
- goto L_HelpFillWaters;
- set @nature_magic, 0;
- mes "[Oscar]";
- mes "\"Come on, water the pumpkin patches right here with your awesome magic!";
- mes "For sure you will be more efficient than me!\"";
- goto L_End;
-
-L_WateringBusy:
- mes "[Oscar]";
- mes "\"Sorry. I'm really busy at the moment.";
- mes "May you come back later? Thank you, thank you...";
- mes "Sorry I have to take care of this now!\"";
- goto L_End;
-
-L_HelpCleanPumpkins:
- mes "[Oscar]";
- mes "\"Help me clean all these pumpkins! It's a disaster!\"";
- goto L_End;
-
-L_NotEnoughWaters:
- mes "[Oscar]";
- mes "\"That's not enough bottles to water all these pumpkin patches.";
- mes "Please bring me more.\"";
- goto L_End;
-
-S_Update_Annual_Quest:
- set Annual_Quest, (Annual_Quest & ~(BYTE_0_MASK) | (@halloween_year << BYTE_0_SHIFT));
- return;
-
-OnCommandSpg:
- callsub S_StartPumpkinsSpawn;
- end;
-
-S_StartPumpkinsSpawn:
- set $@HalloweenQuest_PumpkinsCount, $@halloween_num_pumpkins;
- set $@HalloweenQuest_PumpkinsState, 0;
- initnpctimer;
- return;
-
-L_QuestAlreadyDone:
- mes "[Oscar]";
- mes "\"I'm relieved all this mess is sorted out now.";
- mes "That was interesting, but really, fruits are more quiet!\"";
- goto L_End;
-
-OnInit:
- set $@halloween_num_seeds, 12;
- set $@halloween_num_water_bottles, 15;
- set $@halloween_num_pumpkins, $@halloween_num_seeds * 4;
- end;
-
-OnTimer1000:
- goto L_TimerFunction;
-
-OnTimer2000:
- goto L_TimerFunction;
-
-OnTimer3000:
- goto L_TimerFunction;
-
-L_TimerFunction:
- if ($@HalloweenQuest_PumpkinsState != 1)
- end;
- callsub S_CheckPlayer;
- set $@HalloweenQuest_PumpkinsTimer, $@HalloweenQuest_PumpkinsTimer + 1;
- if (mobcount("011-1", "Oscar::OnPD") < 0 &&
- mobcount("011-1", "Oscar::OnPDP") < 0 &&
- $@HalloweenQuest_PumpkinsCount <= 0)
- goto L_AllPumpkinsDead;
- // A quick "cheer up"
- if ($@HalloweenQuest_PumpkinsTimer == 300)
- npctalk strnpcinfo(0), "Hurry up " + $@HalloweenQuest_PumpkinHunter$ + "! My farm is being ruined!";
- // 7 mins max
- if ($@HalloweenQuest_PumpkinsTimer > 420)
- goto L_PumpkinsRuined;
-
- if (getnpctimer(0) >= 2900)
- goto L_TrySpawnPumpkin;
- end;
-
-L_TrySpawnPumpkin:
- if ($@HalloweenQuest_PumpkinsCount > 0)
- areamonster "011-1", 97, 40, 101, 44, "", 1063, 1, "Oscar::OnPD";
- setnpctimer 0;
- end;
-
-OnTimer2500:
- if ($@HalloweenQuest_PumpkinsState != 0)
- end;
- areamonster "011-1", 97, 40, 101, 44, "", 1063, 2, "Oscar::OnPD";
- end;
-
-OnTimer6000:
- if ($@HalloweenQuest_PumpkinsState != 0)
- end;
- emotion EMOTE_AFRAID;
- npctalk strnpcinfo(0), "Oh no, these pumpkins look strange and infested with bugs! Help me get rid of them " + $@HalloweenQuest_PumpkinHunter$ + "!";
- set $@HalloweenQuest_PumpkinsState, 1;
- setnpctimer 0;
- end;
-
-OnPD:
- if (strcharinfo(0) != $@HalloweenQuest_PumpkinHunter$)
- goto L_KillBadHunter;
- set $@HalloweenQuest_PumpkinsCount, $@HalloweenQuest_PumpkinsCount - 1;
- if (@discover_poisonous_pumpkin_again == 0)
- message strcharinfo(0), "Oh no! These pumpkins are poisonous as well!";
- set @discover_poisonous_pumpkin_again, 1;
- // Small damages
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -10, 0;
- sc_start sc_poison, 1, 3;
- // Spawn mobs or get items
- set @halloween_rand, rand(0,100);
- // Seeds reward
- if (@halloween_rand < 10)
- getitem "PumpkinSeeds", 1;
- // Pumpkin helmet reward
- if (@halloween_rand >= 10 && @halloween_rand < 17)
- getitem "PumpkinHelmet", 1;
- // huntsman spider x1
- if (@halloween_rand < (15*BaseLevel)/100)
- areamonster "011-1", 97, 40, 101, 44, "", 1083, 1, "Oscar::OnPDP";
- // Or spider x1
- if (@halloween_rand >= (15*BaseLevel)/100 && @halloween_rand < (75*BaseLevel)/100)
- areamonster "011-1", 97, 40, 101, 44, "", 1012, 1, "Oscar::OnPDP";
- // Or archant x2
- if (@halloween_rand >= (75*BaseLevel)/100)
- areamonster "011-1", 97, 40, 101, 44, "", 1060, 2, "Oscar::OnPDP";
-
- set @halloween_rand, 0;
- end;
-
-OnPDP:
- end;
-
-L_KillBadHunter:
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -Hp, 0;
- end;
-
-L_PumpkinsRuined:
- npctalk strnpcinfo(0), "No! " + $@HalloweenQuest_PumpkinHunter$ + " how could you let that happen? All my farm is a mess now! All my trees are infested with bugs!";
- goto L_Fail;
-
-L_AllPumpkinsDead:
- goto L_Success;
-
-S_CheckPlayer:
- if (attachrid(getcharid(3, $@HalloweenQuest_PumpkinHunter$)) == 0)
- goto L_PlayerOff;
- if (isdead())
- goto L_PlayerDead;
- if (isin("011-1",20,5,130,110) == 0)
- goto L_PlayerLeft;
- detachrid;
- return;
-
-L_PlayerOff:
- npctalk strnpcinfo(0), "What? Where is " + $@HalloweenQuest_PumpkinHunter$ + "? Someone, help me!";
- goto L_Fail;
-
-L_PlayerLeft:
- npctalk strnpcinfo(0), "What the!! " + $@HalloweenQuest_PumpkinHunter$ + " left me alone with all this! Someone, help me!";
- goto L_Fail;
-
-L_PlayerDead:
- npctalk strnpcinfo(0), "Oh no I can't believe it! " + $@HalloweenQuest_PumpkinHunter$ + " just died! Someone, help me!";
- goto L_Fail;
-
-L_Fail:
- // If the player is logged off, since we check every second that the player
- // is online, we can consider it's an accident, so we will allow to redo the quest
- // Otherwise, it's a "valid" fail.
- if (attachrid(getcharid(3, $@HalloweenQuest_PumpkinHunter$)))
- set Quest_Halloween, 10;
- goto L_Clean;
-
-L_Success:
- // Make this check again or the server will crash.
- if (attachrid(getcharid(3, $@HalloweenQuest_PumpkinHunter$)) == 0)
- goto L_PlayerOff;
- set Quest_Halloween, 6;
- emotion EMOTE_GRIN;
- npctalk strnpcinfo(0), "Hurray, " + $@HalloweenQuest_PumpkinHunter$ + " you did it! Thank you thank you! Come here!";
- goto L_Clean;
-
-L_Clean:
- killmonster "011-1", "Oscar::OnPD";
- killmonster "011-1", "Oscar::OnPDP";
- set $@HalloweenQuest_PumpkinHunter$, "";
- set $@HalloweenQuest_PumpkinsCount, 0;
- set $@HalloweenQuest_PumpkinsState, 0;
- set $@HalloweenQuest_PumpkinsTimer, 0;
- stopnpctimer;
- detachrid;
- end;
-
-L_GetReward:
- mes "[Oscar]";
- mes "\"" + strcharinfo(0) + ", you were wonderful!";
- mes "My farm is safe thanks to you!\"";
- next;
- mes "\"Look, when I went to this city a few days ago, I could find this magnificient fruit.";
- mes "I believe not many exist in the world, but hey, this one is for you!\"";
-
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("GoldenDeliciousApple") == 0)
- goto L_InventoryFull;
- set @inventorylist_count, 0;
- getitem "GoldenDeliciousApple", 1;
- set @halloween_year, gettime(7) - 2000 + 1;
- set Quest_Halloween, 0;
- callsub S_Update_Annual_Quest;
- goto L_End;
-
-L_GetSlap:
- mes "[Oscar]";
- mes "\"Ah! There you are "+strcharinfo(0)+"!";
- next;
- mes "\"As you can see, my farm is safe now.";
- mes "I can't really say it's thanks to you though!\"";
- next;
- mes "\"Well, I won't be a bad guy.";
- mes "Take this for your trouble and farewell!\"";
-
- getinventorylist;
- if (@inventorylist_count == 100 && countitem("CandyPumpkin") == 0)
- goto L_InventoryFull;
- set @inventorylist_count, 0;
- getitem "CandyPumpkin", 5;
- set @halloween_year, gettime(7) - 2000 + 1;
- set Quest_Halloween, 0;
- callsub S_Update_Annual_Quest;
- goto L_End;
-
-L_InventoryFull:
- set @inventorylist_count, 0;
- next;
- mes "\"Ah, but you cannot carry anything else!";
- mes "Make some room first.\"";
- goto L_End;
-}
diff --git a/world/map/npc/011-1/shops.txt b/world/map/npc/011-1/shops.txt
deleted file mode 100644
index 1ccedec6..00000000
--- a/world/map/npc/011-1/shops.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-//#################################################################################
-//# #
-//# This script file contains all shops and other NPCs with important functions. #
-//# #
-//#################################################################################
-
-// Shop
-011-1,80,33,0|shop|Fruit Store|400,GreenApple:*1,RedApple:*1,Orange:*1
diff --git a/world/map/npc/011-3/_import.txt b/world/map/npc/011-3/_import.txt
deleted file mode 100644
index d8dd3777..00000000
--- a/world/map/npc/011-3/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 011-3: Hermit's Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 011-3
-npc: npc/011-3/_mobs.txt
-npc: npc/011-3/_nodes.txt
-npc: npc/011-3/_warps.txt
-npc: npc/011-3/hermit.txt
-npc: npc/011-3/mapflags.txt
diff --git a/world/map/npc/011-3/_mobs.txt b/world/map/npc/011-3/_mobs.txt
deleted file mode 100644
index f90961fb..00000000
--- a/world/map/npc/011-3/_mobs.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hermit's Cave mobs
-
-011-3,0,0,0,0|monster|Bat|1017,10,0ms,0ms
-011-3,0,0,0,0|monster|Silkworm|1035,3,60000ms,30000ms
diff --git a/world/map/npc/011-3/_nodes.txt b/world/map/npc/011-3/_nodes.txt
deleted file mode 100644
index d9dd7661..00000000
--- a/world/map/npc/011-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hermit's Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/011-3/_warps.txt b/world/map/npc/011-3/_warps.txt
deleted file mode 100644
index 5c381ab2..00000000
--- a/world/map/npc/011-3/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hermit's Cave warps
-
-011-3,31,14|warp|-1,-1,011-4,73,10
diff --git a/world/map/npc/011-3/hermit.txt b/world/map/npc/011-3/hermit.txt
deleted file mode 100644
index 351b41a4..00000000
--- a/world/map/npc/011-3/hermit.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-
-011-3,30,23,0|script|Arkim|116
-{
- mes "[Arkim the Hermit]";
- mes "\"Do you want to go back outside?\"";
- if (@knowhermitstory == 1) goto L_Short_Menu;
- menu
- "Yes, please!", L_Sure,
- "Not yet.", L_Close,
- "Actually... Why do you live here?", L_Interested;
-
-L_Short_Menu:
- menu
- "Yes, please!", L_Sure,
- "Not yet.", L_Close,
- "What was that deal you were offering?", L_Quest;
-
-L_Sure:
- warp "011-1", 60, 95;
- close;
-
-L_Interested:
- mes "[Arkim the Hermit]";
- mes "\"Oh my, never really thought about it!\"";
- next;
- mes "[Arkim the Hermit]";
- mes "\"I guess mostly I enjoy experimenting with the bats here.\"";
- menu
- "I see...", L_Close,
- "What type of experimenting?", L_Experiment;
-
-L_Experiment:
- mes "[Arkim the Hermit]";
- mes "\"Never really thought about it either...\"";
- next;
- mes "You watch as the hermit's old, lazy eyes open wide, and the old man comes alive with energy.";
- next;
- mes "[Arkim the Hermit]";
- mes "\"I GUESS I REALLY LIKE CUTTING THEM UP TO SEE HOW THEY WORK!! HAHAHA!\"";
- menu
- "YOU'RE CRAZY!", L_Close,
- "Right... me too! Can I help?", L_Quest;
-
-L_Close:
- close;
-
-L_Quest:
- set @knowhermitstory, 1;
-
- set @dq_level, 20;
- set @dq_cost, 4;
- set @dq_count, 3;
- set @dq_name$, "BatWing";
- set @dq_friendly_name$, "bat wings";
- set @dq_money, 600;
- set @dq_exp, 100;
-
- callfunc "DailyQuest";
-
- next;
-
- mes "[Arkim the Hermit]";
- mes "\"And remember: never lend your toothbrush to a slime!\"";
- close;
-}
diff --git a/world/map/npc/011-3/mapflags.txt b/world/map/npc/011-3/mapflags.txt
deleted file mode 100644
index 23143d92..00000000
--- a/world/map/npc/011-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-011-3|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/011-4/_import.txt b/world/map/npc/011-4/_import.txt
deleted file mode 100644
index 1b654a65..00000000
--- a/world/map/npc/011-4/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 011-4: Lake Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 011-4
-npc: npc/011-4/_mobs.txt
-npc: npc/011-4/_nodes.txt
-npc: npc/011-4/_warps.txt
-npc: npc/011-4/bl_barrier.txt
-npc: npc/011-4/mapflags.txt
diff --git a/world/map/npc/011-4/_mobs.txt b/world/map/npc/011-4/_mobs.txt
deleted file mode 100644
index 92d32ddf..00000000
--- a/world/map/npc/011-4/_mobs.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Lake Cave mobs
-
-011-4,52,30,39,39|monster|SpikyMushroom|1019,1,100000ms,30000ms
-011-4,93,114,39,39|monster|CaveSnake|1021,1,100000ms,30000ms
-011-4,0,0,0,0|monster|CaveSnake|1021,40,0ms,0ms
-011-4,0,0,0,0|monster|SpikyMushroom|1019,15,0ms,0ms
-011-4,60,78,56,75|monster|CaveMaggot|1056,10,100000ms,30000ms
-011-4,63,21,110,35|monster|CaveMaggot|1056,10,100000ms,30000ms
-011-4,0,0,0,0|monster|Bat|1017,20,180000ms,40000ms
diff --git a/world/map/npc/011-4/_nodes.txt b/world/map/npc/011-4/_nodes.txt
deleted file mode 100644
index d439cbc5..00000000
--- a/world/map/npc/011-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Lake Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/011-4/_warps.txt b/world/map/npc/011-4/_warps.txt
deleted file mode 100644
index 3280d564..00000000
--- a/world/map/npc/011-4/_warps.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Lake Cave warps
-
-011-4,73,8|warp|-1,-1,011-3,31,16
-011-4,129,86|warp|-1,-1,009-3,20,56
-011-4,39,35|warp|-1,-1,011-6,47,184
-011-4,16,57|warp|-1,-1,011-6,24,205
-011-4,89,20|warp|-1,-1,011-6,97,168
-011-4,105,32|warp|-1,-1,011-6,114,183
-011-4,114,61|warp|-1,-1,011-6,123,212
-011-4,86,75|warp|-1,-1,011-6,95,226
-011-4,62,86|warp|-1,-1,011-6,68,234
-011-4,32,5|warp|0,-1,011-6,186,181
-011-4,45,118|warp|-1,-1,011-6,266,181
diff --git a/world/map/npc/011-4/bl_barrier.txt b/world/map/npc/011-4/bl_barrier.txt
deleted file mode 100644
index 14f64f4e..00000000
--- a/world/map/npc/011-4/bl_barrier.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-//bandit lord barrier
-
-011-4,111,121,0|script|#BL_Barrier|45,0,0
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
-
- if (@state >= 6) goto L_Cave_Abandoned;
- if (@state >= 4) goto L_Lord_Barrier_Open;
-
- message strcharinfo(0), "This entrance appears to be locked.";
- goto L_End;
-
-L_Cave_Abandoned:
- message strcharinfo(0), "This place looks like it was abandoned.";
- warp "011-6",251,275;
- goto L_End;
-
-L_Lord_Barrier_Open:
- message strcharinfo(0), "You insert the silver arrow key and unlock the entrance.";
- warp "011-6",251,275;
- goto L_End;
-
-L_End:
- set @state, 0;
- end;
-}
diff --git a/world/map/npc/011-4/mapflags.txt b/world/map/npc/011-4/mapflags.txt
deleted file mode 100644
index 499a6147..00000000
--- a/world/map/npc/011-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-011-4|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/011-6/_import.txt b/world/map/npc/011-6/_import.txt
deleted file mode 100644
index 216402e5..00000000
--- a/world/map/npc/011-6/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 011-6: Bandit Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 011-6
-npc: npc/011-6/_mobs.txt
-npc: npc/011-6/_nodes.txt
-npc: npc/011-6/_warps.txt
-npc: npc/011-6/barrier.txt
-npc: npc/011-6/bryant.txt
-npc: npc/011-6/crastur.txt
-npc: npc/011-6/mapflags.txt
diff --git a/world/map/npc/011-6/_mobs.txt b/world/map/npc/011-6/_mobs.txt
deleted file mode 100644
index 6a6ea09d..00000000
--- a/world/map/npc/011-6/_mobs.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Bandit Cave mobs
-
-011-6,152,72,283,127|monster|Silkworm|1035,9,30000ms,100000ms
-011-6,263,38,30,34|monster|Bandit|1064,1,30000ms,30000ms
-011-6,262,114,38,38|monster|Bandit|1064,1,30000ms,30000ms
-011-6,132,119,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,170,66,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,67,70,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,196,107,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,196,29,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,36,37,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,112,40,45,48|monster|Bandit|1064,2,30000ms,60000ms
-011-6,31,99,17,21|monster|Bandit|1064,1,30000ms,30000ms
-011-6,223,250,123,65|monster|Bat|1017,5,30000ms,100000ms
-011-6,224,175,118,25|monster|Bat|1017,3,30000ms,100000ms
-011-6,257,77,4,126|monster|Bat|1017,6,30000ms,100000ms
-011-6,192,77,4,126|monster|Bat|1017,9,30000ms,100000ms
-011-6,167,110,87,13|monster|Bat|1017,9,30000ms,100000ms
-011-6,75,70,104,96|monster|Bat|1017,23,30000ms,100000ms
-011-6,78,195,129,97|monster|Bat|1017,9,30000ms,100000ms
-011-6,168,109,36,37|monster|SpikyMushroom|1019,5,30000ms,100000ms
-011-6,199,76,36,37|monster|SpikyMushroom|1019,5,30000ms,100000ms
-011-6,88,163,29,27|monster|SpikyMushroom|1019,5,30000ms,100000ms
-011-6,48,113,35,19|monster|SpikyMushroom|1019,5,30000ms,100000ms
-011-6,177,94,20,28|monster|EvilMushroom|1013,4,30000ms,100000ms
-011-6,194,49,20,28|monster|EvilMushroom|1013,2,30000ms,100000ms
-011-6,51,115,47,24|monster|EvilMushroom|1013,2,30000ms,100000ms
-011-6,63,169,13,17|monster|EvilMushroom|1013,2,30000ms,100000ms
-011-6,100,226,29,14|monster|SpikyMushroom|1019,3,30000ms,100000ms
-011-6,260,44,53,16|monster|SpikyMushroom|1019,3,30000ms,100000ms
-011-6,272,48,21,28|monster|EvilMushroom|1013,2,30000ms,100000ms
-011-6,95,78,31,25|monster|YellowSlime|1007,5,30000ms,100000ms
-011-6,59,36,19,25|monster|YellowSlime|1007,5,30000ms,100000ms
-011-6,26,69,19,25|monster|YellowSlime|1007,5,30000ms,100000ms
-011-6,61,101,14,10|monster|YellowSlime|1007,3,30000ms,100000ms
-011-6,50,61,9,12|monster|YellowSlime|1007,3,30000ms,100000ms
-011-6,128,39,9,12|monster|YellowSlime|1007,3,30000ms,100000ms
-011-6,41,178,9,12|monster|YellowSlime|1007,1,30000ms,100000ms
-011-6,70,229,9,12|monster|YellowSlime|1007,1,30000ms,100000ms
-011-6,20,204,9,12|monster|YellowSlime|1007,1,30000ms,100000ms
-011-6,114,190,9,12|monster|YellowSlime|1007,4,30000ms,100000ms
-011-6,137,205,9,12|monster|YellowSlime|1007,2,30000ms,100000ms
-011-6,79,220,29,14|monster|CaveSnake|1021,3,30000ms,100000ms
-011-6,115,210,29,14|monster|CaveSnake|1021,3,30000ms,100000ms
-011-6,41,193,31,31|monster|CaveSnake|1021,3,30000ms,100000ms
-011-6,70,143,31,31|monster|CaveSnake|1021,3,30000ms,100000ms
-011-6,97,183,29,14|monster|CaveSnake|1021,3,30000ms,100000ms
-011-6,172,252,9,12|monster|CaveMaggot|1056,4,30000ms,100000ms
-011-6,263,236,16,5|monster|CaveMaggot|1056,3,30000ms,100000ms
diff --git a/world/map/npc/011-6/_nodes.txt b/world/map/npc/011-6/_nodes.txt
deleted file mode 100644
index 7a5c6a33..00000000
--- a/world/map/npc/011-6/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Bandit Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/011-6/_warps.txt b/world/map/npc/011-6/_warps.txt
deleted file mode 100644
index 6154839e..00000000
--- a/world/map/npc/011-6/_warps.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Bandit Cave warps
-
-011-6,51,75|warp|-1,-1,011-6,260,127
-011-6,61,71|warp|-1,-1,011-6,270,124
-011-6,270,125|warp|-1,-1,011-6,61,72
-011-6,260,128|warp|-1,-1,011-6,51,76
-011-6,145,118|warp|-1,-1,011-6,47,119
-011-6,196,26|warp|-1,-1,011-6,261,46
-011-6,261,47|warp|-1,-1,011-6,196,27
-011-6,271,52|warp|-1,-1,011-6,98,31
-011-6,98,30|warp|-1,-1,011-6,271,51
-011-6,47,120|warp|-1,-1,011-6,145,117
-011-6,49,101|warp|-1,-1,011-1,38,37
-011-6,24,206|warp|-1,-1,011-4,16,58
-011-6,47,185|warp|-1,-1,011-4,39,36
-011-6,97,169|warp|-1,-1,011-4,89,21
-011-6,113,182|warp|-1,-1,011-4,106,33
-011-6,122,211|warp|-1,-1,011-4,115,62
-011-6,94,225|warp|-1,-1,011-4,87,76
-011-6,68,235|warp|-1,-1,011-4,62,87
-011-6,251,278|warp|-1,-1,011-4,111,122
-011-6,186,182|warp|0,-1,011-4,32,6
-011-6,266,182|warp|-1,-1,011-4,45,119
-011-6,174,256|warp|-1,-1,011-6,264,237
diff --git a/world/map/npc/011-6/barrier.txt b/world/map/npc/011-6/barrier.txt
deleted file mode 100644
index 38188ad2..00000000
--- a/world/map/npc/011-6/barrier.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-011-6,264,236,0|script|#BL_Barrier2|45,0,0
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
-
- if (@state >= 6) goto L_Lord_Hideout_Open;
- message strcharinfo(0), "You have a feeling that you should not enter this place now.";
- goto L_End;
-
-L_Lord_Hideout_Open:
- warp "011-6",174,255;
- goto L_End;
-
-L_End:
- set @state, 0;
- end;
-}
diff --git a/world/map/npc/011-6/bryant.txt b/world/map/npc/011-6/bryant.txt
deleted file mode 100644
index 552d0907..00000000
--- a/world/map/npc/011-6/bryant.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-//NPC to set the state for killing the bandit lord.
-// Variables used: nibble 0 of QUEST_Hurnscald
-
-011-6,27,200,0|script|Bryant|126
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
-
- if (@state >= 5) goto L_Bryant_Quiet;
- if (@state == 4) goto L_Bryant_Waits;
- if (@state == 3) goto L_Bryant_Summon;
-
- mes "[Bryant]";
- mes "\"I'm looking everywhere for the bandit leader. I can't seem to find him.\"";
- goto L_Close;
-
-L_Bryant_Summon:
- mes "[Bryant]";
- mes "\"I ran into that bandit lord and he got me good. I'm going to stay here for a while and heal. He dropped this key. Take it. You might be able to handle him better than I could.\"";
- next;
- mes "Bryant gives you a key, shaped to look like a small silver arrow.";
- next;
- mes "\"I believe I saw him run into a cave south and east of here. There is a red carpet in front of the cave entrance. Be careful and good luck.\"";
- set @state, 4;
- callsub S_Update_Var;
- monster "011-6",260,250,"",1065,1, "Bryant::OnBanditLordDead";
- goto L_Close;
-
-OnBanditLordDead:
- message strcharinfo(0), "You killed the bandit lord.";
- set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- if (@state != 4)
- goto L_End;
- set @state, 5;
- callsub S_Update_Var;
- set BOSS_POINTS, BOSS_POINTS + 20;
- message strcharinfo(0), "You gain 20 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_End;
-
-L_End:
- set @state, 0;
- end;
-
-L_Bryant_Waits:
- mes "[Bryant]";
- mes "\"I think the bandit lord is still around. I fear this could be dangerous for the people of Hurnscald. When you went to the cave with the red carpet in front of it, did you find him and kill him?\"";
- menu
- "No.", L_Bryant_No,
- "Yes.", L_Bryant_Yes;
-
-L_Bryant_No:
- mes "[Bryant]";
- mes "\"Well, maybe he ran off. I'm pretty sure he should be there now.\"";
- killmonster "011-6", "Bryant::OnBanditLordDead";
- monster "011-6",260,250,"",1065,1, "Bryant::OnBanditLordDead";
- goto L_Close;
-
-L_Bryant_Yes:
- mes "[Bryant]";
- mes "\"I don't think you killed him. Please try to find and kill him. He should be in the cave south and east of here with the red carpet in front of it.\"";
- killmonster "011-6", "Bryant::OnBanditLordDead";
- monster "011-6",260,250,"",1065,1, "Bryant::OnBanditLordDead";
- goto L_Close;
-
-L_Bryant_Quiet:
- mes "[Bryant]";
- mes "\"Glad that bandit leader got what was coming to him.\"";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- close;
-
-S_Update_Var:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_0_MASK) | (@state << NIBBLE_0_SHIFT));
- return;
-}
diff --git a/world/map/npc/011-6/crastur.txt b/world/map/npc/011-6/crastur.txt
deleted file mode 100644
index 52298863..00000000
--- a/world/map/npc/011-6/crastur.txt
+++ /dev/null
@@ -1,221 +0,0 @@
-011-6,172,250,0|script|Crastur the Ugly|418
-{
- set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
- if (@spants_state < 3) goto L_Regular;
- if (@spants_state == 3) goto L_Ask;
- if (@spants_state == 4 || @spants_state == 5 || @spants_state == 6) goto L_Ask_Again;
- goto L_Main;
-
-
-L_Ask:
- mes "[Crastur]";
- mes "";
- mes "\"Well, well, well\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"Just look who arrived here\"";
- emotion EMOTE_EVIL, strcharinfo(0);
- next;
- mes "[Crastur]";
- mes "";
- mes "\"If this isn't the person that cleared my way to success\"";
- menu
- "\"Who? Me?\"", L_Unsure,
- "\"Yes I killed the Bandit Lord, but not to make room for more scumbags\"", L_Insult,
- "\"I heard you know a lot\"", L_Ask_Cont,
- "\"Ugh, no. I have to leave now. Bye.\"", L_Close;
-
-L_Ask_Again:
- mes "[Crastur]";
- mes "";
- mes "\"Hello again\"";
- mes "\"Did you do your part of the deal yet?\"";
- menu
- "\"No, I wanted to know if you can tell me anything about me\"", L_Personal,
- "\"Probably not, what was that again?\"", L_Pirate_Proof,
- "\"Yes, check this Bandana I brought.\"", L_Bandana,
- "\"No Idea, Bye.\"", L_Close;
-
-L_Ask_Cont:
- mes "[Crastur]";
- mes "";
- mes "\"Yes I do, for a price.\"";
- menu
- "Explain Hetchels story", L_Jibber,
- "Interesting", L_Main;
-
-L_Jibber:
- mes "You begin to tell Crastur about Hetchel and her Problems";
- next;
- mes "Crastur interrupts you";
- mes "[Crastur]";
- mes "";
- mes "\"I do not care about petty problems, get to the point!\"";
- set @spants_state, 4;
- callsub S_Update_Spants;
- menu
- "\"Hetchel needs the Plans for Cotton Trousers Stolen from Lora Tay\"", L_Jibber_Cont,
- "\"Don't talk to me like that\" (Leave)", L_Close;
-
-L_Jibber_Cont:
- mes "[Crastur]";
- mes "";
- mes "\"this can be done quickly\"";
- next;
- mes "Crastur pauses and checks his papers";
- mes "\"...\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"The issue here is\"";
- mes "\"you have literally nothing that is of any value to me\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"Although... Since you claim to be a hero and everything...\"";
- mes "\"I do have a problem with those pirates in Tulimshar. They are ruining my Business\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"Bring me proof that you killed all of the pirates!\"";
- next;
- set @spants_state, 5;
- callsub S_Update_Spants;
- menu
- "\"I have it right here\"", L_Bandana,
- "\"What kind of proof?\"", L_Pirate_Proof;
-
-
-L_Pirate_Proof:
- mes "[Crastur]";
- mes "";
- mes "\"It is for sure the Pirates give their souls for the rescue of their booty.\"";
- mes "\"Bring me something unique from their treasure and I will give you those plans in return.\"";
- menu
- "\"I have it with me.\"", L_Bandana,
- "\"I will try my best.\"", L_Close;
-
-L_Bandana:
- getinventorylist;
- if (countitem("Bandana") < 1) goto L_No_Item;
- if (@spants_state != 6) goto L_Wrong_Item;
- mes "Crasturs gazes at the bandana in your hand. He scratches his right arm, then he nods";
- mes "[Crastur]";
- mes "";
- mes "\"I am a man of honour, I always pay my debt\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"Here, I couldnt get the original Sheet but this copy should do well enough\"";
- next;
- mes "\"Crastur hands you a page ripped out of his Almanach that has dotted lines in green and red Ink all over it";
- next;
- mes "You put the plans into a hidden pocket";
- set @spants_state, 7;
- callsub S_Update_Spants;
- goto L_Close;
-
-L_No_Item:
- mes "[Crastur]";
- mes "";
- mes "\"What Bandana are we talking about? - Next time you come to me, bring your stuff.\"";
- goto L_Close;
-
-L_Wrong_Item:
- mes "Crastur takes a look at the bandana.";
- next;
- mes "[Crastur]";
- mes "THIS IS NOT FROM THE PIRATES FROM TULIMSHAR, it is a cheap scam.";
- emotion EMOTE_PERTURBED, strcharinfo(0);
- mes "As far as you can tell through his mask he seems very mad";
- goto L_Insult;
-
-L_Regular:
- mes "[Crastur]";
- mes "";
- mes "\"Well, well, well\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"Just look who arrived here\"";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"If this isn't the person that cleared my way to success\"";
- menu
- "\"Who? Me?\"", L_Unsure,
- "\"Yes I killed the Bandit Lord, but not to make room for more scumbags\"", L_Insult,
- "\"Ugh, no. I have to leave now. Bye.\"", L_Close;
-
-L_Insult:
- npctalk strnpcinfo(0), "Crastur : Die " + strcharinfo(0) + "!";
- heal -10000, 0;
- emotion EMOTE_VICIOUS;
- mes "[Crastur]";
- mes "";
- mes "\"Oh I am so sorry, my Dagger must have slipped\"";
- goto L_Close;
-
-L_Unsure:
- mes "[Crastur]";
- mes "";
- mes "\"Yes I hid in a corner while you killed my former master\"";
- mes "\"When he left I claimed command over Argaeses Rats, Caves and Dungeons.\"";
- mes "\"Do not underestimate me, I do know a lot more than you might guess\"";
- goto L_Main;
-
-L_Main:
- if((@inspector >= 1 && @inspector <= 7) || @inspector == 9) goto L_Main_Inspector;
- menu
- "\"What things do you know about me?\"", L_Personal,
- "\"Bye\"", L_Close;
-
-L_Main_Inspector:
- menu
- "\"What things do you know about me?\"", L_Personal,
- "\"Do you know anything about the Robberies in Hurnscald?\"", L_Hurnscald,
- "\"Bye\"", L_Close;
-
-L_Personal:
- mes "";
- mes "Crastur digs in a pile of old paper";
- next;
- mes "[Crastur]";
- mes "";
- mes "\"Ah. Here it is:\"";
- mes "\"Today you have accomplished tasks that are worth " + DailyQuestPoints + " Hours in the Northern Mines\"";
- next;
- if (BOSS_POINTS < 1000) goto L_Worm;
- emotion EMOTE_DEAD, strcharinfo(0);
- mes "[Crastur]";
- mes "";
- mes "\"Also you seem to be quite a hero, it appears you have a record in the Almanach\"";
- mes "Crastur turns a giant book upside down";
- mes "\"According to this you have gained " + BOSS_POINTS / 1000 + "thousand Points in the eternal charts already.\"";
- mes "Crastur shudders";
- goto L_Close;
-
-L_Worm:
- emotion EMOTE_SUSPICIOUS, strcharinfo(0);
- mes "[Crastur]";
- mes "\"Other than that you have not done anything notable for the mana world.\"";
- goto L_Close;
-
-L_Hurnscald:
- emotion EMOTE_FACEPALM, strcharinfo(0);
- mes "Crastur makes a barking sound that probably was meant as a laugh.";
- mes "[Crastur]";
- mes "";
- mes "\"I am sorry but it is not in my best interest to talk about my business with you.\"";
- goto L_Close;
-
-S_Update_Spants:
- set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT));
- return;
-
-L_Close:
- set @spants_state, 0;
- close;
-}
diff --git a/world/map/npc/011-6/mapflags.txt b/world/map/npc/011-6/mapflags.txt
deleted file mode 100644
index 47ba426a..00000000
--- a/world/map/npc/011-6/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-011-6|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/012-1/_import.txt b/world/map/npc/012-1/_import.txt
deleted file mode 100644
index 4ce6c34d..00000000
--- a/world/map/npc/012-1/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 012-1: Woodland Hills
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 012-1
-npc: npc/012-1/_mobs.txt
-npc: npc/012-1/_nodes.txt
-npc: npc/012-1/_warps.txt
-npc: npc/012-1/amrak.txt
-npc: npc/012-1/flowerpentagram2.txt
-npc: npc/012-1/injured-mouboo.txt
-npc: npc/012-1/mapflags.txt
-npc: npc/012-1/shops.txt
diff --git a/world/map/npc/012-1/_mobs.txt b/world/map/npc/012-1/_mobs.txt
deleted file mode 100644
index 4f85e2ff..00000000
--- a/world/map/npc/012-1/_mobs.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills mobs
-
-012-1,0,0,0,0|monster|PinkFlower|1014,13,0ms,100ms
-012-1,0,0,0,0|monster|SpikyMushroom|1019,25,0ms,10ms
-012-1,0,0,0,0|monster|Mouboo|1028,20,0ms,10ms
-012-1,0,0,0,0|monster|MauvePlant|1029,5,2700000ms,1800000ms
-012-1,0,0,0,0|monster|CobaltPlant|1030,2,2700000ms,1800000ms
-012-1,0,0,0,0|monster|GambogePlant|1031,2,2700000ms,1800000ms
-012-1,0,0,0,0|monster|AlizarinPlant|1032,2,2700000ms,1800000ms
-012-1,0,0,0,0|monster|Silkworm|1035,5,60000ms,30000ms
-012-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-012-1,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms
-012-1,0,0,0,0|monster|Butterfly|1055,20,30ms,20ms
diff --git a/world/map/npc/012-1/_nodes.txt b/world/map/npc/012-1/_nodes.txt
deleted file mode 100644
index 13ee4f92..00000000
--- a/world/map/npc/012-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills nodes
-
-// (no nodes)
diff --git a/world/map/npc/012-1/_warps.txt b/world/map/npc/012-1/_warps.txt
deleted file mode 100644
index 0144e8c1..00000000
--- a/world/map/npc/012-1/_warps.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills warps
-
-012-1,51,39|warp|-1,-1,012-3,370,43
-012-1,147,67|warp|-1,-1,012-3,474,106
-012-1,41,48|warp|-1,-1,012-3,353,78
-012-1,44,88|warp|-1,-1,012-3,355,187
-012-1,92,104|warp|-1,-1,012-3,270,111
-012-1,98,99|warp|-1,-1,012-3,37,81
-012-1,109,92|warp|-1,-1,012-3,80,73
-012-1,123,90|warp|-1,-1,012-3,38,156
-012-1,150,61|warp|-1,2,013-1,21,75
-012-1,132,176|warp|0,-1,011-1,73,10
-012-1,65,126|warp|-1,-1,012-3,176,140
diff --git a/world/map/npc/012-1/amrak.txt b/world/map/npc/012-1/amrak.txt
deleted file mode 100644
index 59bafd4e..00000000
--- a/world/map/npc/012-1/amrak.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-
-012-1,137,104,0|script|Amrak|103
-{
- mes "[Amrak]";
- mes "\"I'm studying this waterfall. The water seems to flow from it like magic.\"";
- next;
- mes "[Amrak]";
- mes "\"Unfortunately, I've had trouble getting up there. The monsters in these caves scare me.\"";
- close;
-}
diff --git a/world/map/npc/012-1/flowerpentagram2.txt b/world/map/npc/012-1/flowerpentagram2.txt
deleted file mode 100644
index 3ce479e9..00000000
--- a/world/map/npc/012-1/flowerpentagram2.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-// Author: Jenalya
-
-012-1,143,70,0|script|#FlowerPentagram2|400
-{
- if (OrumQuest >= 31) goto L_PlacedFifthFlower;
-
- if (OrumQuest > 20) goto L_PlacedSecondFlower;
- if (OrumQuest == 20) goto L_SecondFlower;
-
- message strcharinfo(0), "There is something odd about this place.";
- end;
-
-L_SecondFlower:
- mes "Orum described this place. You have to place the second magical flower here.";
- menu
- "Place the flower.", L_Next,
- "Leave.", L_Close;
-
-L_Next:
- if (isin("012-1", 142, 69, 144, 71))
- goto L_Place;
-
- mes "This isn't working, you're too far away.";
- goto L_Close;
-
-L_Place:
- set @localMonsterCount,
- mobcount("012-1", "#FlowerPentagram2::OnSquirrelDeath") +
- mobcount("012-1", "#FlowerPentagram2::OnMushroomDeath") +
- mobcount("012-1", "#FlowerPentagram2::OnScorpionDeath") +
- mobcount("012-1", "#FlowerPentagram2::OnRScorpionDeath") +
- 4; // the mobcount function has an offset of -1, so we add 4 to have the actual amount of monsters
- if (@localMonsterCount > 2)
- goto L_MonstersAlive;
-
- if (countitem("PurpleSummonFlower") < 1)
- goto L_NoFlower;
- delitem "PurpleSummonFlower", 1;
- mes "Remembering what happened the last time, you take a careful look around. Everything's calm. You proceed to place the second flower.";
- mes "Sensing a certain tension build up around you, you can't help but feel alarmed.";
- set OrumQuest, 21;
- close2;
- areamonster "012-1", 140, 64, 146, 73, "", 1105, 2, "#FlowerPentagram2::OnSquirrelDeath";
- areamonster "012-1", 140, 64, 146, 73, "", 1106, 2, "#FlowerPentagram2::OnMushroomDeath";
- areamonster "012-1", 140, 64, 146, 73, "", 1003, 2, "#FlowerPentagram2::OnScorpionDeath";
- areamonster "012-1", 140, 64, 146, 73, "", 1004, 2, "#FlowerPentagram2::OnRScorpionDeath";
- set @value, 15;
- callfunc "QuestSagathaAnnoy";
- set @value, 0;
- end;
-
-OnSquirrelDeath:
- set @mobID, 1105;
- callfunc "MobPoints";
- end;
-
-OnMushroomDeath:
- set @mobID, 1106;
- callfunc "MobPoints";
- end;
-
-OnScorpionDeath:
- set @mobID, 1003;
- callfunc "MobPoints";
- end;
-
-OnRScorpionDeath:
- set @mobID, 1004;
- callfunc "MobPoints";
- end;
-
-L_MonstersAlive:
- mes "As you get closer to the place, you feel an unnerving presence.";
- mes "This place has recently been used to summon something! And the beings are still nearby!";
- next;
- mes "You should get rid of them before attempting the summoning yourself.";
- goto L_Close;
-
-L_NoFlower:
- mes "You look into your pocket, but the flower isn't there. Where did you put it?";
- mes "If you can't find it, you should talk to Orum again.";
- goto L_Close;
-
-L_PlacedSecondFlower:
- mes "You placed the second of Orum's magical flowers on this spot.";
- mes "You can still feel the magical power shimmering around this place, waiting to be unleashed.";
- goto L_Close;
-
-L_PlacedFifthFlower:
- mes "This is where you placed the second of Orum's magical flowers.";
- mes "However, now that the summoning spell has been cast, everything is back to normal here.";
- goto L_Close;
-
-L_Close:
- set @localMonsterCount, 0;
- close;
-}
diff --git a/world/map/npc/012-1/injured-mouboo.txt b/world/map/npc/012-1/injured-mouboo.txt
deleted file mode 100644
index 2aefb0f7..00000000
--- a/world/map/npc/012-1/injured-mouboo.txt
+++ /dev/null
@@ -1,229 +0,0 @@
-// The following auxiliary function is used both by appropriate magic and within the regular script:
-
-function|script|QuestMoubooHeal
-{
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
-
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
- set @Q_status_upper, @Q_status & 12;
- set @Q_status, @Q_status & 3;
-
- set @STATE_INITIAL, 0;
- set @STATE_HEALED_MOUBOO, 3;
-
- if (@Q_status != @STATE_INITIAL)
- goto L_nothing;
-
- set @Q_status, @STATE_HEALED_MOUBOO;
- callsub S_update_var;
- mes "[Injured Mouboo]";
- mes "A soft white glow surrounds the mouboo's leg, which slowly shifts back into place.";
- mes "As the glow subsides, the mouboo gets up, carefully, and takes a few steps. It seems to be fully healed!";
- mes "[5000 experience points]";
- getexp 5000, 0;
- next;
- mes "[Injured Mouboo]";
- mes "Visibly happy, the mouboo lies down on the ground and snuggles with a black piece of cloth it had been lying on.";
- mes "The healing process must have been exhausting, for it is asleep in an instant.";
- next;
- set @value, 15;
- callfunc "QuestSagathaHappy";
- close2;
- return;
-
-L_nothing:
- mes "Your spell has no effect.";
- close2;
- return;
-
-S_update_var:
- set @Q_wr_status, @Q_status | @Q_status_upper;
- set QUEST_MAGIC,
- (QUEST_MAGIC & ~(@Q_MASK)
- | (@Q_wr_status << @Q_SHIFT));
- return;
-}
-
-012-1,57,153,0|script|Mouboo|171
-{
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
-
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
- set @Q_status_upper, @Q_status & 12;
- set @Q_status, @Q_status & 3;
-
- set @STATE_INITIAL, 0;
- set @STATE_KILLED_MOUBOO, 1;
- set @STATE_TOOK_KILL_REWARD, 2;
- set @STATE_HEALED_MOUBOO, 3;
-
- if (@Q_status == @STATE_KILLED_MOUBOO)
- goto L_dead;
- if (@Q_status == @STATE_TOOK_KILL_REWARD)
- goto L_took_reward;
- if (@Q_status == @STATE_HEALED_MOUBOO)
- goto L_healed;
-
- mes "[Injured Mouboo]";
- mes "You notice a mouboo lying on the ground, groaning, as if in pain.";
- next;
- goto L_menu;
-
-L_menu:
- menu
- "Examine the mouboo", L_examine,
- "Give the mouboo something", L_give,
- "Kill the mouboo", L_kill,
- "Leave", L_Close;
-
-L_examine:
- mes "[Injured Mouboo]";
- mes "Looking closer, you notice that the mouboo's left hind leg is bent at a very unnatural angle – that seems to be the cause for its pain.";
- next;
- mes "[Injured Mouboo]";
- mes "You also notice that the mouboo is lying on top of what appears to be a black turtleneck sweater.";
- mes "Do you want to pick up the sweater?";
- next;
- menu
- "Yes.", L_pickup_alive,
- "No.", L_menu;
-
-L_pickup_alive:
- mes "[Injured Mouboo]";
- mes "The Mouboo groans and pushes your hand away. It seems to be rather fond of the sweater.";
- next;
- goto L_menu;
-
-L_give:
- set @items_nr, 12;
- setarray @items$, "CactusDrink", "CactusPotion", "ChocolateBar", "Milk", "OrangeCupcake", "RedApple", "Beer", "BottleOfWater", "TinyHealingPotion", "SmallHealingPotion", "MediumHealingPotion", "LargeHealingPotion";
- setarray @itemnames$, "Cactus Drink", "Cactus Potion", "Chocolate Bar", "Milk", "Orange Cupcake", "Red Apple", "Beer", "Bottle of Water", "Tiny Healing Potion", "Small Healing Potion", "Medium Healing Potion", "Large Healing Potion";
- setarray @itemeat, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0;
-
- setarray @menuItems$, "", "", "", "", "", "", "", "", "", "", "", "", "";
- set @choices_nr, 0;
- setarray @menuNames$, "", "", "", "", "", "", "", "", "", "", "", "", "";
- setarray @choice_eat, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
-
- set @n, 0;
- set @ct, 0;
- goto L_nloop;
-
-L_nloop:
- set @k$, @items$[@n];
- if (countitem(@k$) == 0)
- goto L_nloop_skip;
-
- set @menuItems$[@ct], @itemnames$[@n];
- set @menuNames$[@ct], @k$;
- set @choice_eat[@ct], @itemeat[@n];
- set @ct, @ct + 1;
- goto L_nloop_skip;
-
-L_nloop_skip:
- set @n, @n+1;
- if (@n < @items_nr)
- goto L_nloop;
-
- set @menuItems$[@ct], "Nevermind";
-
- menu
- @menuItems$[0], L_MenuItems,
- @menuItems$[1], L_MenuItems,
- @menuItems$[2], L_MenuItems,
- @menuItems$[3], L_MenuItems,
- @menuItems$[4], L_MenuItems,
- @menuItems$[5], L_MenuItems,
- @menuItems$[6], L_MenuItems,
- @menuItems$[7], L_MenuItems,
- @menuItems$[8], L_MenuItems,
- @menuItems$[9], L_MenuItems,
- @menuItems$[10], L_MenuItems,
- @menuItems$[11], L_MenuItems,
- @menuItems$[12], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
- if (@menu == @ct)
- goto L_menu;
- set @choice$, @menuNames$[@menu];
- set @verb$, "drinks";
- if (@choice_eat[@menu])
- set @verb$, "eats";
- if (@choice$ != "" && countitem(@choice$))
- goto L_consume;
- goto L_menu;
-
-L_consume:
- mes "[Injured Mouboo]";
- mes "The mouboo " + @verb$ + " your " + getitemlink(@choice$) + ".";
- delitem @choice$, 1;
- next;
- if (@choice$ == "LargeHealingPotion")
- goto L_do_heal;
- mes "[Injured Mouboo]";
- mes "Unfortunately, it seems to have had no effect.";
- next;
- goto L_menu;
-
-L_do_heal:
- callfunc "QuestMoubooHeal";
- end;
-
-L_kill:
- mes "[Injured Mouboo]";
- if (BaseLevel > 44)
- goto L_kill_success;
- mes "The mouboo deflects your attack and counterattacks!";
- mes "It misses you only barely.";
- mes "Injured though it may be, this mouboo is still more than a match for you!";
- next;
- goto L_menu;
-
-L_kill_success:
- mes "After some wrestling, the mouboo succumbs to your attacks.";
- mes "[100 experience points]";
- getexp 100, 0;
- set @Q_status, @STATE_KILLED_MOUBOO;
- callsub S_update_var;
- next;
- goto L_dead;
-
-L_dead:
- mes "[Dead Mouboo]";
- mes "The dead mouboo is lying on top of a black T-neck sweater.";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_nopickup;
- getitem "BlackTurtleneck", 1;
- mes "You pull out the sweater and stuff it into your backpack.";
- set @Q_status, @STATE_TOOK_KILL_REWARD;
- callsub S_update_var;
- close;
-
-L_took_reward:
- mes "[Dead Mouboo]";
- mes "You see a dead mouboo.";
- close;
-
-L_nopickup:
- mes "Unfortunately, you can't carry any more.";
- close;
-
-L_healed:
- mes "[Mouboo]";
- mes "The mouboo is sleeping soundly, smiling in its dreams.";
- close;
-
-L_Close:
- close;
-
-S_update_var:
- set @Q_wr_status, @Q_status | @Q_status_upper;
- set QUEST_MAGIC,
- (QUEST_MAGIC & ~(@Q_MASK)
- | (@Q_wr_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/012-1/mapflags.txt b/world/map/npc/012-1/mapflags.txt
deleted file mode 100644
index 915346ad..00000000
--- a/world/map/npc/012-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-012-1|mapflag|resave|012-1,88,141
diff --git a/world/map/npc/012-1/shops.txt b/world/map/npc/012-1/shops.txt
deleted file mode 100644
index 3620b2c9..00000000
--- a/world/map/npc/012-1/shops.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-
-012-1,36,99,0|shop|#FlowerShop|32767,RedRose:*1,PinkRose:*1,YellowRose:*1,WhiteRose:*1,OrangeRose:*1,DarkRedRose:*1,RedTulip:*1,PinkTulip:*1,YellowTulip:*1,WhiteTulip:*1,OrangeTulip:*1
-
-012-1,36,99,0|script|Blossom|163
-{
- mes "[Blossom]";
- mes "\"Hello, would you like to buy some flowers?\"";
- menu
- "Sure.", L_Shop,
- "Not right now.", L_Close,
- "Can I trade this Rose Hat for a differently colored one?", L_RoseHat;
-
-L_Shop:
- close2;
- shop "#FlowerShop";
-
-L_RoseHat:
- set @base_id, 897;
- mes "[Blossom]";
- mes "\"Certainly, which color do you have?\"";
- menu
- "A red one.", L_MenuItems,
- "A white one.", L_MenuItems,
- "A pink one.", L_MenuItems,
- "A yellow one.", L_MenuItems,
- "An orange one.", L_MenuItems,
- "A blue one.", L_MenuItems;
-
-L_MenuItems:
- set @have_id, @base_id + @menu - 1;
-
- mes "[Blossom]";
- mes "\"And which color would you like?\"";
- menu
- "A red one.", L_MenuItems1,
- "A white one.", L_MenuItems1,
- "A pink one.", L_MenuItems1,
- "A yellow one.", L_MenuItems1,
- "An orange one.", L_MenuItems1,
- "A blue one.", L_MenuItems1;
-
-L_MenuItems1:
- set @receive_id, @base_id + @menu - 1;
-
- if (@have_id == @receive_id)
- goto L_SameColor;
- if (countitem(@have_id) < 1)
- goto L_NoItem;
- delitem @have_id, 1;
- getitem @receive_id, 1;
- mes "[Blossom]";
- mes "\"Here it is.\"";
- goto L_Close;
-
-L_NoItem:
- mes "[Blossom]";
- mes "\"Oh, you don't have a Rose Hat in that color.";
- mes "Did you mean a different color?\"";
- menu
- "Yes, I meant a different color.", L_RoseHat,
- "No, I changed my mind.", L_Close;
-
-L_SameColor:
- mes "[Blossom]";
- mes "\"Oh, you already have a hat in that color.";
- mes "Did you want something else?\"";
- menu
- "Yes, let me pick a different color.", L_RoseHat,
- "No, I changed my mind.", L_Close;
-
-L_Close:
- set @base_id, 0;
- set @have_id, 0;
- set @receive_id, 0;
- close;
-}
diff --git a/world/map/npc/012-3/_import.txt b/world/map/npc/012-3/_import.txt
deleted file mode 100644
index 63c915a0..00000000
--- a/world/map/npc/012-3/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 012-3: Moggun Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 012-3
-npc: npc/012-3/_mobs.txt
-npc: npc/012-3/_nodes.txt
-npc: npc/012-3/_warps.txt
-npc: npc/012-3/beheader.txt
-npc: npc/012-3/mana-seed.txt
-npc: npc/012-3/mapflags.txt
-npc: npc/012-3/traveler.txt
-npc: npc/012-3/warningsigns.txt
diff --git a/world/map/npc/012-3/_mobs.txt b/world/map/npc/012-3/_mobs.txt
deleted file mode 100644
index e9314763..00000000
--- a/world/map/npc/012-3/_mobs.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Moggun Cave mobs
-
-012-3,448,65,18,7|monster|Moggun|1061,5,100000ms,30000ms
-012-3,442,45,18,7|monster|Moggun|1061,5,100000ms,30000ms
-012-3,412,31,18,7|monster|Moggun|1061,5,100000ms,30000ms
-012-3,347,39,8,16|monster|Moggun|1061,5,100000ms,30000ms
-012-3,363,101,17,18|monster|Moggun|1061,10,100000ms,30000ms
-012-3,446,81,18,7|monster|Moggun|1061,5,100000ms,30000ms
-012-3,388,138,17,7|monster|Moggun|1061,5,100000ms,30000ms
-012-3,409,78,8,17|monster|Moggun|1061,5,100000ms,30000ms
-012-3,382,152,17,7|monster|Moggun|1061,5,100000ms,30000ms
-012-3,430,117,8,16|monster|Moggun|1061,5,100000ms,30000ms
-012-3,330,100,8,16|monster|Moggun|1061,5,100000ms,30000ms
-012-3,269,138,17,18|monster|Moggun|1061,10,100000ms,30000ms
-012-3,188,52,17,18|monster|Moggun|1061,10,100000ms,30000ms
-012-3,165,106,17,18|monster|Moggun|1061,10,100000ms,30000ms
-012-3,0,0,0,0|monster|Bat|1017,100,0ms,0ms
-012-3,0,0,0,0|monster|CaveSnake|1021,75,0ms,0ms
diff --git a/world/map/npc/012-3/_nodes.txt b/world/map/npc/012-3/_nodes.txt
deleted file mode 100644
index ea6a8cae..00000000
--- a/world/map/npc/012-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Moggun Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/012-3/_warps.txt b/world/map/npc/012-3/_warps.txt
deleted file mode 100644
index 3e418fbf..00000000
--- a/world/map/npc/012-3/_warps.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Moggun Cave warps
-
-012-3,37,82|warp|-1,-1,012-1,98,100
-012-3,80,74|warp|-1,-1,012-1,109,93
-012-3,38,157|warp|-1,-1,012-1,123,91
-012-3,270,112|warp|-1,-1,012-1,92,105
-012-3,176,138|warp|-1,-1,012-1,65,128
-012-3,355,188|warp|-1,-1,012-1,44,89
-012-3,370,44|warp|-1,-1,012-1,51,40
-012-3,353,79|warp|-1,-1,012-1,41,49
-012-3,473,106|warp|-1,-1,012-1,146,67
-012-3,448,61|warp|-1,-1,012-4,193,57
diff --git a/world/map/npc/012-3/beheader.txt b/world/map/npc/012-3/beheader.txt
deleted file mode 100644
index 89fa51ce..00000000
--- a/world/map/npc/012-3/beheader.txt
+++ /dev/null
@@ -1,196 +0,0 @@
-// The Beheader
-// PS. The Hyoid Bone actually exists - https://teachmeanatomy.info/neck/bones/hyoid-bone/
-/////////////////////////////////////////////////////////////////////////////////
-// NOTE: Why bugs don't always drop bug legs? Because when you kill the bugs,
-// you are cautious and/or skilled enough to don't damage the usable parts.
-// Some parts are more prone to damage than others, and Terranites, due their
-// anatomy, has a zero per cent success rate for the head surviving death.
-// ...Ever noticed how they crumble to the floor once slain?
-
-012-3,450,67,0|script|The Beheader|429
-{
- if (FLAGS & FLAG_BEHEADER_MASK) goto L_Complete;
- mes "[The Beheader]";
- mes "\"I am The Beheader, known for beheading Terranites.\"";
- next;
- mes "[The Beheader]";
- mes "\"Unfortunately, even with this disguise they could recognize and avoid me. I'll need a new one...\"";
- next;
- menu
- "I'm sorry to hear that.", L_Close,
- "Uh... Try wearing a mask?", L_Mask,
- "Can I behead Terranites on my own?", L_Beheader,
- "You monster!", L_Close;
-
-L_Mask:
- mes "";
- mes "[The Beheader]";
- mes "\"A mask, ohh! Not a bad idea. I might even have a better idea! If only...\"";
- next;
- mes "[The Beheader]";
- mes "\"Hey, how about we do this deal: You bring me a [@@766|@@] and I'll give you one of my finest [@@5209|@@]. It has even been polished and might be useful in combat for you.\"";
- next;
- menu
- "Maybe later, pal.", L_Close,
- "Sorry, I'm keeping my helmet.", L_Confirm,
- "Take it, I thought it was ugly anyway...", L_Exchange;
-
-L_Exchange:
- mes "";
- if (countitem("TerraniteHelmet") < 1)
- goto L_Nope;
-
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Nope;
-
- delitem "TerraniteHelmet", 1;
- getitem "TerraniteHead", 1;
- getexp 100000, 0;
- set FLAGS, FLAGS | FLAG_BEHEADER_MASK;
- mes "[The Beheader]";
- mes "\"Muahaha, I'll let you know how it went later.\"";
- close;
-
-L_Confirm:
- mes "";
- mes "[The Beheader]";
- mes "\"What, really? A Terranite Head is waaay cooler than the helmet. And to be honest, you will never be able to obtain a head as cool as the one I am offering you.\"";
- next;
- mes "[The Beheader]";
- mes "\"You may regret in not making this deal with me! I ask you to reconsider.\"";
- mes "##9Note: Refusing to exchange is permanent and you'll never be able to obtain a [@@5209|@@] with this char, unless you win one at an event. Please be sure you really want this.##0";
- next;
- menu
- "...I'll think on this more thoroughly.", L_Close,
- "Sorry, I'm keeping my helmet.", L_ReallyGiveUp;
-
-L_ReallyGiveUp:
- mes "";
- if (countitem("TerraniteHelmet") < 1)
- goto L_Nope;
- getexp 100000, 0;
- set FLAGS, FLAGS | FLAG_BEHEADER_MASK;
- mes "[The Beheader]";
- mes "\"Meeeh, I'll try to get someone else to do it for me, then! Hmpf.\"";
- close;
-
-L_Complete:
- mes "[The Beheader]";
- mes "\"I am The Beheader, known for beheading Terranites.\"";
- next;
- mes "[The Beheader]";
- mes "\"Come back later, my [@@576|@@] is itching to strike on something.\"";
- next;
- menu
- "Okay, good bye.", L_Close,
- "How much later?", L_Later,
- "Can I behead Terranites on my own?", L_Beheader;
-
-L_Later:
- mes "";
- mes "[The Beheader]";
- mes "\"Time passes so quickly. It would seem that later is now. I wonder if now is then, then. Hmmmm...\"";
- if (!(FLAGS & FLAG_GOT_BEHEADER_SWORD)) goto L_MaybeBeheader;
- // NOTE: Room for future expansion if needed.
- // Previous text: "Some February, I don't know. If you want to help, go to Hurnscald square, look for the noisy person with an AFK Cap which is always sitting with their kitty, and tell them to start working. That might just do the trick."
- // The "noisy person w/ an AFK Cap and a kytty" is Jesusalva (script author)
- close;
-
-L_MaybeBeheader:
- next;
- menu
- "Okay, good bye.", L_Close,
- "Can I behead Terranites on my own?", L_Beheader;
-
-L_Beheader:
- if (FLAGS & FLAG_GOT_BEHEADER_SWORD) goto L_Again;
- if (TERRAC == 1501) goto L_Finish;
- if (TERRAC > 0) goto L_Status;
- mes "";
- mes "[The Beheader]";
- mes "\"You obviously know nothing about Terranite Anatomy, hahaha!\"";
- next;
- mes "[The Beheader]";
- mes "\"You don't even have the proper tools. Nah, I bet you wouldn't know how to use them even if you had, hahaha!\"";
- next;
- mes "[The Beheader]";
- mes "\"Sorry, this is just funny! Most people of your age already realized that it takes a life of dedication and skill honing to be able to scavenge anything from a monster.\"";
-
- // Quest requirement check (not really needed, is old code)
- if (BaseLevel < 60) goto L_Close;
- next;
- mes "[The Beheader]";
- mes "\"Maybe we can make a deal. I can give you the proper tools but not the proper training, so don't expect much; But I'm interested in seeing how you'll fail at my hands... I'm an old man and seeing young people like you running around doing meaningless tasks is fun.\"";
- next;
- //mes "\"So. Hmm. Lemme think. What I wanted again? *suffers from AFK-induced amnesia and becomes a huge TODO sign*\"";
- menu
- "Very well. Give me your task.", L_Accept,
- "I knew it, you are as crazy as Arkim!", L_Close;
-
-L_Accept:
- mes "";
- mes "[The Beheader]";
- mes "So... Hmm, lemme think... Ah, I know! Thou shall ##Bkill me 1500 [@@m1062|@@]##b. Why? Because that's pointless, and you want a weapon you won't be able to use, so a pointless task for a pointless reward! Now get going!";
- set TERRAC, 1;
- close;
-
-L_Status:
- mes "";
- mes "[The Beheader]";
- mes "\"Get going, running in circles and amusing me, you only killed "+(TERRAC-1)+"/1500 [@@m1062|@@] until now.\"";
- close;
-
-L_Again:
- mes "";
- mes "[The Beheader]";
- mes "\"Again, it takes a life of dedication and skill honing to be able to scavenge anything from a monster.\"";
- next;
- mes "[The Beheader]";
- mes "\"You must imagine where the Hyoid bone would be in a Terranite and make a clear cut with a [@@576|@@], but as you are currently, that will not be possible. Maybe in the future you may find a monster anatomy professor.\"";
- mes "##9(Development note: TMWA Engine does not support altering monster drops depending on the weapon. However, Evol2 engine does, and TMW rEvolt probably will have this feature.)##0";
- close;
-
-L_Finish:
- mes "";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Nope;
-
- mes "[The Beheader]";
- mes "\"I'm always impressed at how the young folks never give up on their dreams. Well, listen carefully:\"";
- next;
-
- mes "[The Beheader]";
- mes "\"To behead a Terranite, you need a clear cut at the Hyoid Bone, otherwise you won't be able to behead them even with the proper weapon. I took a decade training and even so I rarely manage to get a clear cut.\"";
- next;
- mes "[The Beheader]";
- mes "\"Uh? No man, Terranites doesn't have neck bones. Ever saw a Terranite turning its neck to face you?? I said that because we Talpans have and it was the only reference I could think of for you.\"";
- next;
- mes "[The Beheader]";
- mes "\"Well, I guess you'll need an anatomy professor to teach you the specifics to get a Terranite Head... Uh, and of course, you might want to learn how to polish them. You know. For the bonuses.\"";
- next;
-
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Nope;
-
- getitem "Beheader", 1;
- getexp 750000, 0;
- set FLAGS, FLAGS | FLAG_GOT_BEHEADER_SWORD;
- set TERRAC, 0;
-
- mes "[The Beheader]";
- mes "\"Anyway, a deal is a deal and here is your [@@576|@@]. I hope you can actually make good use of it!\"";
- mes "##9(Development note: TMWA Engine does not support altering monster drops depending on the weapon. However, Evol2 engine does, and TMW rEvolt probably will have this feature.)##0";
- close;
-
-L_Nope:
- mes "[The Beheader]";
- mes "\"Stop trolling me, or I might consider putting your head on my collection.\"";
- close;
-
-L_Close:
- close;
-}
-
diff --git a/world/map/npc/012-3/mana-seed.txt b/world/map/npc/012-3/mana-seed.txt
deleted file mode 100644
index 33536c7a..00000000
--- a/world/map/npc/012-3/mana-seed.txt
+++ /dev/null
@@ -1,282 +0,0 @@
-012-3,62,130,0|script|Forest Mana Seed#_M|166
-{
- setarray @magic_exp_needed,
- 0, // level 0
- 0,
- 100,
- 1200,
- 8000,
- 40000; // level 5
-
- setarray @exp_bonus,
- 0,
- 1000, // level 1
- 10000,
- 100000,
- 400000,
- 2000000; // level 5
-
- setarray @min_level,
- 0,
- 10,
- 30,
- 50,
- 65,
- 80; // level 5
-
- set @visions_nr, 12;
- setarray @visions$,
- "You see a dark underground temple; you are kneeling, praying for the safety of the planet. You smile as a friend joins you in the dark – but suddenly a shadow falls over you from above, and a stabbing pain...",
- "It is midnight; you are in an underground cavern deep inside the desert ruins. Slowly, as if half-asleep, you wander up the spiral pathway, towards the ancient vase at its center. As you reach out to touch it...",
- "The old castle smells of mildew and swamp gas. It has not been used in centuries, but you were here before, when the world was young. You turn to face your companions – but something is wrong with all three; an ancient force has possessed them...",
- "As you put the horn to your lips, you feel winds flowing, gathering, condensing in your chest. Soon, you can no longer contain it; the storm unleashes through your mouth, into a deafening fanfare. The black dome around you begins to crack...",
- "You are alone inside your head, confined by the laughing man's circlet. Powerless, you witness how your hands shoot out flame after flame, incinerating innocents for that man's experiments...",
- "The village may be in ruins, but it must have been where you grew up. The engravings on the walls – images of powerful beasts – look strangely familiar, and you can make out writing, words about you, wishes and prayers for you... You are at home...",
- "Deep underneath the city, the rocky cavern maze turns into an opulent palace. This must be where the beast of the many eyes resides. Nervously you grip the wand; will the power to repel it be sufficient to defeat it and its magic?",
- "At the bottom of the abyss, infinity opens before you. You have proven yourself worthy, and the ancient finally reveals its wisdom...",
- "You may only be children, but you recognize that it is this man only who can save the world. As the walls rush towards you to crush your small group, you exchange a glance with your twin sister – there is no doubt what you must do...",
- "The sacred place is surrounded by nothingness; were it not for your magic, you would have no hope of returning. The old and young man stands nearby; he has been waiting for you, for centuries. He has all the time in the world, after all...",
- "Nothing remains behind. The underground castle is empty now, its chambers plundered, its throne destroyed. Shivering, you climb down the stairs, towards the wailing of the underworld that is waiting beneath...",
- "You feel soft, fluffy fur brushing against your skin and are filled with happiness. Somehow, the word `" + get(.invocation$, "happy-curse") + "' comes to mind...";
-
- set @max_magic, 2;
-
- set @has_magic, getskilllv(SKILL_MAGIC);
- set @drank_potion, MAGIC_FLAGS & MFLAG_DRANK_POTION;
- set @knows_seed, MAGIC_FLAGS & MFLAG_KNOWS_MANASEED;
-
- // Set up SkillUp function
- set @SUP_id, SKILL_MAGIC;
- set @SUP_name$, "Magic";
-
- set @manapearl_id, 5270;
- set @manapearl_exp, 500000;
- set @manapearl_lvl_for_reward, 50;
- set @manapearl_mexp_for_reward, 5404;
- // At 5404 #abizit returned always:
- // "Magic flows naturally from you, readily and with ease. Your understanding of what you can currently control at present is flawless, far beyond your requirements to cast magic at this level.";
- // So i take this as needed magic exp.
-
- if (@has_magic)
- goto L_magic_start;
- if (@knows_seed)
- goto L_quick_nomagic;
-
- // first time here
-
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_MANASEED;
-
- mes "[Mana Seed]";
- mes "You see a glowing orb, swimming in the water like a sea rose.";
- mes "An unearthly glow is emanating from within, lighting up the water and filling the cave with an eerie light.";
- next;
- mes "[Mana Seed]";
- if (@drank_potion)
- mes "Slowly, the tingling sensation you felt before begins to spread through your body again.";
- mes "What would you like to do?";
- next;
- goto L_nomagic_mainmenu;
-
-L_quick_nomagic:
- mes "[Mana Seed]";
- mes "Again you stand before the orb.";
- if (@drank_potion)
- mes "Slowly, the tingling sensation you felt before begins to spread through your body again.";
- mes "What would you like to do?";
- next;
- goto L_nomagic_mainmenu;
-
-// Non-Magic main menu ------------------------------------------------------------
-L_nomagic_mainmenu:
- menu
- "Examine it more closely", L_nomagic_examine,
- "Take it with you", L_nomagic_touch,
- "Touch it", L_nomagic_touch,
- "Throw a rock at it", L_nomagic_throwrock,
- "Destroy it", L_nomagic_destroy,
- "Leave it alone", L_end;
-
-L_nomagic_examine:
- mes "[Mana Seed]";
- mes "The orb seems to be perfectly round and emitting a steady glow. It appears to be floating in the water.";
- next;
- goto L_nomagic_mainmenu;
-
-L_nomagic_throwrock:
- mes "[Mana Seed]";
- mes "Your rock makes hardly a sound as it strikes the orb and glances off into the water, leaving neither scratch nor impression.";
- mes "The orb budges slightly, but then floats back into its old position, as if it were tethered into place.";
- next;
- goto L_nomagic_mainmenu;
-
-L_nomagic_touch:
- mes "[Mana Seed]";
- if (@drank_potion)
- goto L_magic_level_1;
- mes "As you touch the orb, you feel a terrible force within, separated from you by only the thinnest of membranes – like a tempest, all packed up in one tiny waterskin.";
- next;
- mes "[Mana Seed]";
- mes "For one instant you feel that force rushing past your hands, through your body, as if you had unleashed this tempest upon yourself. Unable to contain the power, you stumble backwards, away from the orb.";
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_TOUCHED_MANASEED;
- next;
- goto L_nomagic_mainmenu;
-
-L_magic_level_1:
- if (getskilllv(SKILL_MAGIC))
- goto L_end; // shouldn't be happening
- mes "Again you feel the tempest rushing through the Mana Seed's membrane, into your body. You only manage to hold on to it for an instant and find yourself forced to pull your hands away again quickly.";
- next;
- mes "[Mana Seed]";
- mes "But this time something is different – that tingling sensation is back, and stronger than before. It is spreading through your body, head to toes, and you feel yourself brimming with energy.";
- next;
- mes "[Mana Seed]";
- mes "It is a light-headed feeling, and you find yourself forced to sit down for a few seconds to recover.";
- mes "Something is different. A new power has grown within you and is waiting to be understood.";
- set @SUP_xp, 1000;
- set @SUP_lvl, 1;
- callfunc "SkillUp";
- next;
- goto L_end;
-
-L_nomagic_destroy:
- mes "[Mana Seed]";
- mes "Try as you might, the orb seems impervious to all forms of attack you can fathom. You are forced to abandon your efforts.";
- next;
- goto L_nomagic_mainmenu;
-
-// Magic main menu ------------------------------------------------------------
-L_magic_start:
-
- if (MAGIC_FLAGS & MFLAG_GOT_MANA_PEARL) goto L_ManaPearlEnd;
-
- set @debug_mask, 65535;
- set @debug_shift, 0;
- set @mexp, ((MAGIC_EXPERIENCE & @debug_mask) >> @debug_shift);
-
- if (! (@mexp >= @manapearl_mexp_for_reward && BaseLevel >= @manapearl_lvl_for_reward)) goto L_ManaPearlEnd;
- getinventorylist;
- if (countitem("Pearl") > 1 && @inventorylist_count == 100) goto L_ManaPearlHasNoRoom;
- //if (!countitem("Pearl") >= 1) goto L_ManaPearlEnd; // without the brackets it crashes the server!
- if (!(countitem("Pearl") >= 1)) goto L_ManaPearlEnd;
- mes "As you approach the Mana Seed, suddenly a pearl from your bag starts to float and shine in a blue light.";
- mes "It seems since Magic flows naturally from you, you and the Mana Seed are in resonance now";
- mes "and the crystalline structure of that pearl was different from other pearls which let it also resonate with that flow.";
- mes "Since this resonance is established, the Mana Pearl channels some power from the Mana Seed to you.";
- next;
- mes "You gain the [@@" + @manapearl_id + "|@@].";
- mes "[" + @manapearl_exp + " experience points]";
- delitem "Pearl", 1;
- getitem @manapearl_id, 1;
- getexp @manapearl_exp, 0;
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_GOT_MANA_PEARL;
- next;
- goto L_ManaPearlEnd;
-
-L_ManaPearlHasNoRoom:
- mes "Something in your bag is moving but it seems it is stuck since your bag too stuffed.";
- mes "Maybe you should make some room first.";
- next;
- goto L_ManaPearlEnd;
-
-L_ManaPearlEnd:
-
- mes "[Mana Seed]";
- mes "The Mana Seed is still in the same place as during your last visit, spreading its light throughout the cavern.";
- mes "What would you like to do?";
- next;
- goto L_magic_mainmenu;
-
-L_magic_mainmenu:
- menu
- "Touch it", L_magic_touch,
- "Destroy it", L_magic_destroy,
- "Leave it alone", L_end;
-
-L_magic_touch:
- mes "[Mana Seed]";
- mes "You touch the Mana Seed again.";
- if (getskilllv(SKILL_MAGIC) >= @max_magic)
- goto L_magic_maxed_out;
- set @exp_needed, @magic_exp_needed[getskilllv(SKILL_MAGIC) + 1];
- set @magic_exp, MAGIC_EXPERIENCE & 65535;
- if (@magic_exp >= @exp_needed)
- goto L_magic_levelup;
- set @prev_exp_needed, @magic_exp_needed[getskilllv(SKILL_MAGIC)];
- set @exp_diff, @exp_needed - @prev_exp_needed;
- set @index, ((@magic_exp - @prev_exp_needed) * 5) / @exp_diff;
- setarray @messages$,
- "The orb's energy effortlessly rushes through you, ignoring your feeble attempts at containing it. You will need considerably more practice with your magical skills before you can hope to contain it.",
- "You only barely manage to hang on to some strands of the orb's energy, but not enough to contain it. You still need noticeably more practice with your magical skills.",
- "The orb's powers are still no match for you; you will need more practice to contain more of its powers.",
- "You feel close to being able to contain the orb's powers. Still, some more practice is needed.",
- "The orb's energy only barely evades your attempts at containing it. Soon you will be able to extract more power from it.";
- mes @messages$[@index];
- next;
- goto L_magic_mainmenu;
-
-L_magic_levelup:
- set @baselevel_needed, @min_level[getskilllv(SKILL_MAGIC) + 1];
- if (BaseLevel < @baselevel_needed)
- goto L_ins_baselevel;
- mes "Its energy permeates you, surrounds you. You are suddenly uncertain if it is you who is containing the orb's powers or if it is the orb who is seeking out yours.";
- next;
- mes "[Mana Seed]";
- mes "The Seed's tempest is calming beneath your hands, and its energies resonate with yours.";
- next;
- mes "[Mana Seed]";
- mes "A feeling of harmony is spreading through your body, and the tingling sensation is back, within and without.";
- next;
- mes "[Mana Seed]";
- mes "As the tingling increases, you feel light-headed, weightless.";
- mes "Everything fades...";
- next;
- mes "Both the tingling and the sense of harmony have vanished, making room for darkness. You can't feel the Mana Seed anymore...";
- next;
- mes "... you can't feel anything.";
- next;
- mes "You are floating...";
- next;
- mes "The darkness is no longer complete. You begin to make out stars in the distance, circling each other, dancing a cosmic dance.";
- next;
- mes "Images rush past you, shadows of thoughts and dreams. Some touch you, filling you with powerful emotions – despair, ecstasy; sometimes loss, sometimes hope; hate, love.";
- next;
- mes "Someone else's thoughts pass through your mind...";
- next;
- set @nr, rand(@visions_nr);
- mes @visions$[@nr];
- next;
- mes "The image fades.";
- next;
- mes "[Mana Seed]";
- mes "You awaken, lying on the ground.";
- next;
- mes "[Mana Seed]";
- mes "Something has changed... you feel more confident in your magical abilities.";
- set @SUP_xp, @exp_bonus[1 + getskilllv(SKILL_MAGIC)];
- set @SUP_lvl, 1 + getskilllv(SKILL_MAGIC);
- callfunc "SkillUp";
- heal 0, 10000, 1;
- next;
- goto L_end;
-
-L_magic_maxed_out:
- mes "Strangely, you feel nothing, as if its membrane had closed towards you.";
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_MANASEED_MAXEDOUT;
- next;
- goto L_magic_mainmenu;
-
-L_ins_baselevel:
- mes "Its energies rush through you. You fight to keep them under control, to contain them in your body. Alas, your body is too frail – you have to let go.";
- mes "Frustrated, you give up. You have the skill needed to control this power, but you will have to grow up some more before your body can handle it.";
- next;
- goto L_magic_mainmenu;
-
-L_magic_destroy:
- mes "[Mana Seed]";
- mes "Try as you might, you cannot find a way, magical or physical, to destroy the seed. Frustrated, you give up.";
- next;
- goto L_magic_mainmenu;
-
-L_end:
- close;
-}
diff --git a/world/map/npc/012-3/mapflags.txt b/world/map/npc/012-3/mapflags.txt
deleted file mode 100644
index e3fd146f..00000000
--- a/world/map/npc/012-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-012-3|mapflag|resave|012-1,88,141
diff --git a/world/map/npc/012-3/traveler.txt b/world/map/npc/012-3/traveler.txt
deleted file mode 100644
index b3c158ea..00000000
--- a/world/map/npc/012-3/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-012-3,439,62,0|script|Meridith the Traveler|103
-{
- set @npcname$, "Meridith";
- set @NpcTravelBit, $@terranite_cave_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/012-3/warningsigns.txt b/world/map/npc/012-3/warningsigns.txt
deleted file mode 100644
index d95537e0..00000000
--- a/world/map/npc/012-3/warningsigns.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-//warning signs at pvp entrance!
-
-012-3,445,61,0|script|sign#pvp-1|187
-{
- mes "You are about to enter a dangerous area!";
- next;
- mes "This area has a great distance to town. So the protection spell of the town is not active in that cave!";
- mes "That is why other players are able to attack you.";
- close;
-}
-
-012-3,451,61,0|script|sign#pvp-2|186
-{
- mes "You are about to enter a dangerous area!";
- next;
- mes "This area has a great distance to town. So the protection spell of the town is not active in that cave!";
- mes "That is why other players are able to attack you.";
- close;
-}
diff --git a/world/map/npc/012-4/_import.txt b/world/map/npc/012-4/_import.txt
deleted file mode 100644
index ecf5657f..00000000
--- a/world/map/npc/012-4/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 012-4: Terranite Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 012-4
-npc: npc/012-4/_mobs.txt
-npc: npc/012-4/_nodes.txt
-npc: npc/012-4/_warps.txt
-npc: npc/012-4/mapflags.txt
-npc: npc/012-4/pvpflag.txt
diff --git a/world/map/npc/012-4/_mobs.txt b/world/map/npc/012-4/_mobs.txt
deleted file mode 100644
index 142ec427..00000000
--- a/world/map/npc/012-4/_mobs.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Terranite Cave mobs
-
-012-4,217,45,12,3|monster|Moggun|1061,3,100000ms,30000ms
-012-4,223,30,12,3|monster|Moggun|1061,3,100000ms,30000ms
-012-4,239,48,12,3|monster|Moggun|1061,3,100000ms,30000ms
-012-4,197,39,7,8|monster|Moggun|1061,3,100000ms,30000ms
-012-4,210,35,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,241,38,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,237,59,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,226,73,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,209,94,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,263,29,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,274,48,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,267,70,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,259,79,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,274,79,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,268,91,24,15|monster|Moggun|1061,10,100000ms,30000ms
-012-4,209,146,69,55|monster|Spider|1012,50,100000ms,30000ms
-012-4,254,163,19,46|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,167,175,17,22|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,148,176,17,22|monster|RedSlime|1008,20,100000ms,30000ms
-012-4,131,88,17,22|monster|RedSlime|1008,15,100000ms,30000ms
-012-4,140,131,17,22|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,42,128,17,9|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,64,62,25,30|monster|Spider|1012,20,100000ms,30000ms
-012-4,69,89,17,21|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,34,45,17,33|monster|Terranite|1062,3,100000ms,30000ms
-012-4,64,36,24,17|monster|Skeleton|1043,3,100000ms,30000ms
-012-4,100,115,24,17|monster|Skeleton|1043,3,100000ms,30000ms
-012-4,90,137,17,22|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,59,113,14,17|monster|LadySkeleton|1044,3,100000ms,30000ms
-012-4,42,176,15,13|monster|Terranite|1062,3,100000ms,30000ms
-012-4,120,177,24,17|monster|LadySkeleton|1044,3,100000ms,30000ms
-012-4,287,180,24,17|monster|LadySkeleton|1044,3,100000ms,30000ms
-012-4,340,175,24,17|monster|Skeleton|1043,3,100000ms,30000ms
-012-4,390,156,69,54|monster|Spider|1012,40,100000ms,30000ms
-012-4,358,37,20,22|monster|Terranite|1062,3,100000ms,30000ms
-012-4,481,110,19,24|monster|Terranite|1062,3,100000ms,30000ms
-012-4,435,114,24,17|monster|Skeleton|1043,3,100000ms,30000ms
-012-4,477,82,24,17|monster|LadySkeleton|1044,3,100000ms,30000ms
-012-4,354,106,19,46|monster|YellowSlime|1007,10,100000ms,30000ms
-012-4,342,139,17,22|monster|RedSlime|1008,15,100000ms,30000ms
-012-4,389,81,33,15|monster|RedSlime|1008,20,100000ms,30000ms
-012-4,409,35,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,413,73,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,395,63,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,314,182,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,409,121,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,456,99,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,133,153,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,153,98,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,126,65,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,81,180,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,61,159,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,271,157,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,270,182,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,322,141,17,22|monster|RedSlime|1008,20,100000ms,30000ms
-012-4,451,111,7,8|monster|Bat|1017,5,100000ms,30000ms
-012-4,422,50,11,32|monster|Spider|1012,10,100000ms,30000ms
-012-4,380,40,14,22|monster|Spider|1012,10,100000ms,30000ms
-012-4,124,49,9,24|monster|Terranite|1062,1,100000ms,30000ms
-012-4,80,110,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,42,142,20,11|monster|Skeleton|1043,3,100000ms,30000ms
-012-4,41,159,11,20|monster|Spider|1012,20,100000ms,30000ms
-012-4,95,180,9,5|monster|Bat|1017,5,100000ms,30000ms
-012-4,91,180,23,10|monster|Spider|1012,20,100000ms,30000ms
diff --git a/world/map/npc/012-4/_nodes.txt b/world/map/npc/012-4/_nodes.txt
deleted file mode 100644
index 2c9229b2..00000000
--- a/world/map/npc/012-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Terranite Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/012-4/_warps.txt b/world/map/npc/012-4/_warps.txt
deleted file mode 100644
index eaff1897..00000000
--- a/world/map/npc/012-4/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Terranite Cave warps
-
-012-4,193,58|warp|-1,-1,012-3,448,62
-012-4,363,26|warp|-1,-1,012-4,474,187
-012-4,474,188|warp|-1,-1,012-4,363,27
diff --git a/world/map/npc/012-4/mapflags.txt b/world/map/npc/012-4/mapflags.txt
deleted file mode 100644
index aa107ce9..00000000
--- a/world/map/npc/012-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-012-4|mapflag|resave|012-1,143,70
diff --git a/world/map/npc/012-4/pvpflag.txt b/world/map/npc/012-4/pvpflag.txt
deleted file mode 100644
index 3ce803de..00000000
--- a/world/map/npc/012-4/pvpflag.txt
+++ /dev/null
@@ -1 +0,0 @@
-012-4|mapflag|pvp
diff --git a/world/map/npc/013-1/_import.txt b/world/map/npc/013-1/_import.txt
deleted file mode 100644
index 5fca25f0..00000000
--- a/world/map/npc/013-1/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 013-1: Woodland Hills
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 013-1
-npc: npc/013-1/_mobs.txt
-npc: npc/013-1/_nodes.txt
-npc: npc/013-1/_warps.txt
-npc: npc/013-1/flowerpentagram.txt
-npc: npc/013-1/mapflags.txt
-npc: npc/013-1/sagatha.txt
-npc: npc/013-1/traveler.txt
diff --git a/world/map/npc/013-1/_mobs.txt b/world/map/npc/013-1/_mobs.txt
deleted file mode 100644
index ca0b2b68..00000000
--- a/world/map/npc/013-1/_mobs.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills mobs
-
-013-1,0,0,0,0|monster|PinkFlower|1014,13,0ms,100ms
-013-1,0,0,0,0|monster|SpikyMushroom|1019,12,0ms,100ms
-013-1,0,0,0,0|monster|Mouboo|1028,5,0ms,100ms
-013-1,0,0,0,0|monster|MauvePlant|1029,1,270ms,180ms
-013-1,0,0,0,0|monster|MauvePlant|1029,4,2700000ms,1800000ms
-013-1,0,0,0,0|monster|CobaltPlant|1030,1,270ms,180ms
-013-1,0,0,0,0|monster|CobaltPlant|1030,2,2700000ms,1800000ms
-013-1,0,0,0,0|monster|GambogePlant|1031,1,270ms,180ms
-013-1,0,0,0,0|monster|GambogePlant|1031,2,2700000ms,1800000ms
-013-1,0,0,0,0|monster|AlizarinPlant|1032,1,270ms,180ms
-013-1,0,0,0,0|monster|AlizarinPlant|1032,2,2700000ms,1800000ms
-013-1,0,0,0,0|monster|Silkworm|1035,4,60000ms,30000ms
-013-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-013-1,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms
-013-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
diff --git a/world/map/npc/013-1/_nodes.txt b/world/map/npc/013-1/_nodes.txt
deleted file mode 100644
index 13ee4f92..00000000
--- a/world/map/npc/013-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills nodes
-
-// (no nodes)
diff --git a/world/map/npc/013-1/_warps.txt b/world/map/npc/013-1/_warps.txt
deleted file mode 100644
index 5999dded..00000000
--- a/world/map/npc/013-1/_warps.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills warps
-
-013-1,125,104|warp|-1,-1,013-3,34,64
-013-1,20,76|warp|-1,2,012-1,149,60
-013-1,46,20|warp|2,-1,017-1,46,104
-013-1,42,90|warp|-1,-1,013-2,63,41
-013-1,136,52|warp|-1,2,055-1,25,52
diff --git a/world/map/npc/013-1/flowerpentagram.txt b/world/map/npc/013-1/flowerpentagram.txt
deleted file mode 100644
index 001b7e0a..00000000
--- a/world/map/npc/013-1/flowerpentagram.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-013-1,1,1,0|script|#FlowerPentagram|32767
-{
-end;
-
-OnSummon:
- // This is just annoying
- //announce "Sagatha:* What kind of a foolish trick is this? Who dares to create such calamity in my forest?", 0;
-
- callsub S_CleanUp;
- // area closely to sagatha
- areamonster "013-1", 119, 21, 134, 36, "", 1105, 3, "#FlowerPentagram::OnSquirrelDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1106, 2, "#FlowerPentagram::OnMushroomDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1107, 3, "#FlowerPentagram::OnBlueparDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1104, 2, "#FlowerPentagram::OnMoubooDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1003, 10, "#FlowerPentagram::OnScorpionDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1004, 7, "#FlowerPentagram::OnRScorpionDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1057, 5, "#FlowerPentagram::OnAScorpionDeath";
- areamonster "013-1", 119, 21, 134, 36, "", 1009, 3, "#FlowerPentagram::OnBScorpionDeath";
- // wider area around sagatha
- areamonster "013-1", 68, 25, 133, 73, "", 1105, 3, "#FlowerPentagram::OnSquirrelDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1106, 3, "#FlowerPentagram::OnMushroomDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1107, 5, "#FlowerPentagram::OnBlueparDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1104, 2, "#FlowerPentagram::OnMoubooDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1003, 6, "#FlowerPentagram::OnScorpionDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1004, 5, "#FlowerPentagram::OnRScorpionDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1057, 4, "#FlowerPentagram::OnAScorpionDeath";
- areamonster "013-1", 68, 25, 133, 73, "", 1009, 2, "#FlowerPentagram::OnBScorpionDeath";
- // almost the entire map
- areamonster "013-1", 24, 22, 136, 100, "", 1105, 4, "#FlowerPentagram::OnSquirrelDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1106, 3, "#FlowerPentagram::OnMushroomDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1107, 5, "#FlowerPentagram::OnBlueparDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1104, 3, "#FlowerPentagram::OnMoubooDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1003, 5, "#FlowerPentagram::OnScorpionDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1004, 4, "#FlowerPentagram::OnRScorpionDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1057, 3, "#FlowerPentagram::OnAScorpionDeath";
- areamonster "013-1", 24, 22, 136, 100, "", 1009, 1, "#FlowerPentagram::OnBScorpionDeath";
- end;
-
-OnSquirrelDeath:
- set @mobID, 1105;
- callfunc "MobPoints";
- end;
-
-OnMushroomDeath:
- set @mobID, 1106;
- callfunc "MobPoints";
- end;
-
-OnBlueparDeath:
- set @mobID, 1107;
- callfunc "MobPoints";
- end;
-
-OnMoubooDeath:
- set @mobID, 1104;
- callfunc "MobPoints";
- end;
-
-OnScorpionDeath:
- set @mobID, 1003;
- callfunc "MobPoints";
- end;
-
-OnRScorpionDeath:
- set @mobID, 1004;
- callfunc "MobPoints";
- end;
-
-OnAScorpionDeath:
- set @mobID, 1057;
- callfunc "MobPoints";
- end;
-
-OnBScorpionDeath:
- set @mobID, 1009;
- callfunc "MobPoints";
- end;
-
-S_CleanUp:
- killmonster "013-1", "#FlowerPentagram::OnSquirrelDeath";
- killmonster "013-1", "#FlowerPentagram::OnMushroomDeath";
- killmonster "013-1", "#FlowerPentagram::OnBlueparDeath";
- killmonster "013-1", "#FlowerPentagram::OnMoubooDeath";
- killmonster "013-1", "#FlowerPentagram::OnScorpionDeath";
- killmonster "013-1", "#FlowerPentagram::OnRScorpionDeath";
- killmonster "013-1", "#FlowerPentagram::OnAScorpionDeath";
- killmonster "013-1", "#FlowerPentagram::OnBScorpionDeath";
- return;
-}
-
-function|script|FlowerPentagramCount
-{
- set $@Flower_Pentagram_Mobcount,
- mobcount("013-1", "#FlowerPentagram::OnSquirrelDeath") +
- mobcount("013-1", "#FlowerPentagram::OnMushroomDeath") +
- mobcount("013-1", "#FlowerPentagram::OnBlueparDeath") +
- mobcount("013-1", "#FlowerPentagram::OnMoubooDeath") +
- mobcount("013-1", "#FlowerPentagram::OnScorpionDeath") +
- mobcount("013-1", "#FlowerPentagram::OnRScorpionDeath") +
- mobcount("013-1", "#FlowerPentagram::OnAScorpionDeath") +
- mobcount("013-1", "#FlowerPentagram::OnBScorpionDeath") +
- 8; // the mobcount function has an offset of -1, so we add 8 to have the actual amount of monsters
- return;
-}
diff --git a/world/map/npc/013-1/mapflags.txt b/world/map/npc/013-1/mapflags.txt
deleted file mode 100644
index 5c043bd9..00000000
--- a/world/map/npc/013-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-013-1|mapflag|resave|013-1,126,99
diff --git a/world/map/npc/013-1/sagatha.txt b/world/map/npc/013-1/sagatha.txt
deleted file mode 100644
index fe2a4e6f..00000000
--- a/world/map/npc/013-1/sagatha.txt
+++ /dev/null
@@ -1,447 +0,0 @@
-// Sagatha the witch, expert for nature and astral magic
-//----------------------------------------
-
-function|script|QuestSagathaHappy
-{
- set @unhappiness, (QUEST_MAGIC & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
- if (@unhappiness < @value)
- goto L_zero;
-
- set @unhappiness, @unhappiness - @value;
- goto L_write;
-
-L_zero:
- set @unhappiness, 0;
- goto L_write;
-
-L_write:
- set QUEST_MAGIC, (QUEST_MAGIC & ~NIBBLE_3_MASK) | (@unhappiness << NIBBLE_3_SHIFT);
- return;
-}
-
-//----------------------------------------
-function|script|QuestSagathaAnnoy
-{
- set @unhappiness, (QUEST_MAGIC & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
- if ((@unhappiness + @value) > 15)
- goto L_max;
-
- set @unhappiness, @unhappiness + @value;
- goto L_write;
-
-L_max:
- set @unhappiness, 15;
- goto L_write;
-
-L_write:
- set QUEST_MAGIC, (QUEST_MAGIC & ~NIBBLE_3_MASK) | (@unhappiness << NIBBLE_3_SHIFT);
- return;
-}
-
-//----------------------------------------
-function|script|SagathaStatus
-{
- if (getequipid(equip_head) != 1216 && getequipid(equip_head) != 752)
- goto L_next;
- set @value, 15;
- callfunc "QuestSagathaAnnoy";
- goto L_next;
-
-L_next:
- set @mexp, MAGIC_EXPERIENCE & 65535;
- set @has_magic, getskilllv(SKILL_MAGIC);
- set @evil, 0;
- set @good, 0;
- set @unhappy, (QUEST_MAGIC & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
- set @mouboo, ((QUEST_MAGIC & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) & 3;
-
- if (@mouboo == 3)
- set @good, @good + 1;
- if (@mouboo == 2)
- set @evil, 1;
- if (@mouboo == 1)
- set @evil, 1;
-
- if (MAGIC_FLAGS & MFLAG_DID_CUTTREE)
- set @evil, 1;
-
- set @druid, (((QUEST_MAGIC & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) & 12) >> 2;
- if (@druid == 3)
- set @good, @good + 1;
- return;
-}
-
-//----------------------------------------
-013-1,131,24,0|script|Sagatha#_M|167
-{
- callfunc "SagathaStatus";
-
- set @Q_MASK, NIBBLE_4_MASK | NIBBLE_5_MASK;
- set @Q_SHIFT, NIBBLE_4_SHIFT;
-
- set @STATUS_INITIAL, 0;
- set @STATUS_STUDENT, 1; // N14
- set @STATUS_STUDENT_N10, 2;
- set @STATUS_STUDENT_A10, 3;
- set @STATUS_STUDENT_A11, 4;
- set @STATUS_STUDENT_A12, 5;
- set @STATUS_STUDENT_N11, 6;
- set @STATUS_STUDENT_LEVEL_3, 7;
-
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
-
- if (MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA)
- mes "[Sagatha the Witch]";
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
- mes "[Witch]";
- // if fluffyhat
- if (getequipid(equip_head) == 752)
- goto L_hat_attack;
- if (@evil)
- goto L_evil;
- if (@unhappy > 10)
- goto L_unhappy;
- if (MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA)
- goto L_wb;
-
- mes "Before you stands a beautiful woman, dressed in dark purple robes and wearing a witch's hat.";
-
- mes "She looks at you suspiciously.";
- next;
- menu
- "Who are you?", L_Next,
- "What's your name?", L_intro_name,
- "Hello! My name is " + strcharinfo(0) + ".", L_intro_givename,
- "Goodbye.", L_Close;
-
-L_Next:
- mes "[Witch]";
- mes "\"I am what you humans call a witch. I am a human who has chosen all living creatures as what you call family.\"";
- next;
- menu
- "No, I mean... what's your name?", L_intro_name,
- "Hello! My name is " + strcharinfo(0) + ".", L_intro_givename,
- "Uh.... goodbye.", L_Close;
-
-L_hat_attack:
- mes "The witch seems to be trembling with disgust as she stares at your headgear.";
- mes "\"Do you think that is funny?\" she snarls.";
- next;
- if (MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA)
- mes "[Sagatha the Witch]";
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
- mes "[Witch]";
- mes "\"You have no idea what that poor creature felt!\"";
- mes "She snaps her fingers.";
- mes "\"Let me show you...\"";
- misceffect sfx_magic_war, strcharinfo(0);
- misceffect sfx_magic_war;
- heal -300, 0;
- close;
-
-L_intro_name:
- mes "[Sagatha the Witch]";
- mes "\"They call me Sagatha.\"";
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_SAGATHA;
- next;
- goto L_main;
-
-L_intro_givename:
- mes "[Witch]";
- mes "\"Ah.\"";
- next;
- menu
- "What's yours?", L_intro_name,
- "Uhm... bye.", L_Close;
-
-L_evil:
- mes "The witch's eyes flare up in anger as she notices you, and she turns away from you.";
- mes "Whatever the reason, she doesn't seem to like you.";
- close;
-
-L_unhappy:
- mes "The witch glares at you in anger.";
- mes "\"I wonder if you can still sleep after killing those innocent forest creatures!";
- mes "I am sure that they will come back to haunt you in your dreams!\"";
- close;
-
-L_wb:
- if (@good > 1)
- mes "Sagatha nods as she notices you.";
- if (@good == 1)
- mes "Sagatha raises an eyebrow as you address her.";
- if (@good == 0)
- mes "Sagatha glances at you, suspicion evident in her eyes.";
- next;
- goto L_main;
-
-L_main:
- if (@Q_status)
- menu
- "Can you explain magic to me?", L_explain_magic,
- "Can you teach me more magic?", L_teach,
- "What do you know about...", L_Question,
- "Goodbye.", L_Close;
- menu
- "Can you explain magic to me?", L_explain_magic,
- "Can you teach me magic?", L_teach_initial,
- "What do you know about...", L_Question,
- "Goodbye.", L_Close;
-
-L_teach_initial:
- if (@good < 2)
- goto L_initial_nogood;
- if (getskilllv(SKILL_MAGIC_NATURE) < 2)
- goto L_initial_nonature;
- mes "[Sagatha the Witch]";
- mes "She nods.";
- mes "\"For now, yes. But you will have to prove that you really care about more than yourself.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "She snaps her fingers, and without warning you begin to acutely sense the magical energies around you, for a brief instant!";
- set @Q_status, @STATUS_STUDENT;
- callsub S_update_var;
- set @SUP_xp, 5000;
- set @SUP_lvl, 2;
- callsub S_up_astral;
- next;
- mes "[Sagatha the Witch]";
- mes "\"In the future, I will teach you nature and astral magic. For the other schools there are better teachers around.\"";
- if (getskilllv(SKILL_MAGIC) < 2)
- mes "\"Your skill in magic won't be great enough to use some of the spells yet, so keep practicing and visiting the mana seed until it is.\"";
- next;
- goto L_main;
-
-L_initial_nogood:
- mes "[Sagatha the Witch]";
- mes "\"I don't take strangers as students.\"";
- next;
- goto L_main;
-
-L_initial_nonature:
- mes "[Sagatha the Witch]";
- mes "\"I might, but you don't even understand the basics of nature magic.\"";
- next;
- goto L_main;
-
-L_explain_magic:
- mes "[Sagatha the Witch]";
- mes "\"No.\"";
- next;
- goto L_main;
-
-L_teach:
- if (@Q_status == @STATUS_STUDENT)
- goto L_teach_N14;
- if (@Q_status == @STATUS_STUDENT_N10)
- goto L_teach_N10;
- if (@Q_status == @STATUS_STUDENT_A10)
- goto L_teach_A10;
- if (@Q_status == @STATUS_STUDENT_A11)
- goto L_teach_A11;
- if (@Q_status == @STATUS_STUDENT_A12)
- goto L_teach_A12;
- if (@Q_status == @STATUS_STUDENT_N11)
- goto L_teach_N11;
-
- mes "[Sagatha the Witch]";
- mes "\"Not yet. You have to ask the mana seed to give you more power.\"";
- next;
- goto L_main;
-
-L_practice:
- mes "[1000 experience points]";
- set @Q_status, @Q_status + 1;
- callsub S_update_var;
- getexp 1000,0;
- next;
- mes "[Sagatha the Witch]";
- mes "\"Now go and practice.\"";
- next;
- goto L_main;
-
-L_teach_N14:
- if (@mexp < 125)
- goto L_teach_noexp;
- mes "[Sagatha the Witch]";
- mes "\"Some forest creatures sometimes overgrow their fur or hide. That makes them uncomfortable.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"You can help them with shearing magic. Press your hands together and say '" + get(.invocation$, "shear") + "'. Then touch them with your hands, and brush off any excess.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"The spell is strong, so you only need to do this once. Be careful not to cut them. Some things they shed are useful. Often they will leave them to you as a thank-you.\"";
- goto L_practice;
-
-L_teach_N10:
- if (@mexp < 150)
- goto L_teach_noexp;
- mes "[Sagatha the Witch]";
- mes "\"Next, a nature spell. Take a cocoon shell. Hold it in your hand. Feel its lightness.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"Now whisper '" + get(.invocation$, "flying-backpack") + "', and if your backpack was pressing on you you should no longer feel it now.\"";
- goto L_practice;
-
-L_teach_A10:
- if (@mexp < 180)
- goto L_teach_noexp;
- mes "[Sagatha the Witch]";
- mes "\"To protect against others' magic, take a small mushroom from a shady place. Mushrooms draw things out of the earth. Rub your mushroom into pieces between your hands.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"Then say '" + get(.invocation$, "magic barrier") + "' and let the mushroom's power take over.\"";
- goto L_practice;
-
-L_teach_A11:
- if (@mexp < 200)
- goto L_teach_noexp;
- mes "[Sagatha the Witch]";
- mes "\"If you must fight, call allies. You can call spiky mushrooms out of the ground with a mushroom spike and a root. Hold up the spike and call out to them: '" + get(.invocation$, "smsmushrooms") + "'. Then press the root to the ground.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"Spiky mushrooms often grow too many spikes, so you can shear the spikes off of some.\"";
- next;
- goto L_practice;
-
-L_teach_A12:
- if (@mexp < 220)
- goto L_teach_noexp;
- mes "[Sagatha the Witch]";
- mes "\"You can call fluffies, too. But for them you must call out '" + get(.invocation$, "smfluffies") + "' instead, with white fluffy fur instead of a spike. And don't forget the root.\"";
- goto L_practice;
-
-L_teach_N11:
- if (@mexp < 250)
- goto L_teach_noexp;
- mes "[Sagatha the Witch]";
- mes "\"You can harden your skin with a hard spike. Hold it in your hands and speak '" + get(.invocation$, "protect") + "', then draw its hardness into your skin.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"Or call it into someone else's skin, by saying that someone's name right after the '" + get(.invocation$, "protect") + "'.\"";
- next;
- mes "[Sagatha the Witch]";
- mes "\"You can also remove this spell from yourself if you say '" + get(.invocation$, "antiprotect") + "'.\"";
- goto L_practice;
-
-L_teach_noexp:
- mes "[Sagatha the Witch]";
- mes "\"You must practice more first.\"";
- next;
- goto L_main;
-
-L_Question:
- callfunc "MagicTalkOptionsSetup";
- set @ignore, @QQ_SAGATHA;
- callfunc "MagicTalkMenu";
-
- if (@c == 0)
- goto L_main;
- if (@c == @QQ_ELANORE)
- goto L_Q_elanore;
- if (@c == @QQ_MANASEED)
- goto L_Q_manaseed;
- if (@c == @QQ_MANAPOTION)
- goto L_Q_manapotion;
- if (@c == @QQ_WYARA)
- goto L_Q_wyara;
- if (@c == @QQ_AULDSBEL)
- goto L_Q_auldsbel;
- if (@c == @QQ_IMP)
- goto L_Q_imp;
- if (@c == @QQ_OLDWIZ)
- goto L_Q_old_wizard;
- if (@c == @QQ_ASTRALSOUL)
- goto L_Q_astralsoul;
-
- mes "[Sagatha the Witch]";
- mes "\"That doesn't concern you.\"";
- next;
- goto L_main;
-
-L_Q_astralsoul:
- mes "[Sagatha the Witch]";
- mes "\"Yes, there is a way to improve your magic.\"";
- next;
- mes "\"Did you ever hear about focusing?\"";
- next;
- mes "\"It is a mental ability, which improves you at a certain focused skill.\"";
- next;
- mes "\"Yes, I am focused on nature magic, but I cannot teach focusing. That is another realm of magic. Just a few people can really focus your brain to a specific art of magic.\"";
- next;
- mes "\"Maybe you should ask some other people experienced in magic.\"";
- next;
- goto L_main;
-
-L_Q_old_wizard:
- mes "[Sagatha the Witch]";
- mes "\"A kind and wise wizard.\"";
- next;
- goto L_main;
-
-L_Q_imp:
- mes "[Sagatha the Witch]";
- mes "\"He is an evil and cruel one. He lies and cheats and will try to take advantage of you. Stay away from him.\"";
- next;
- goto L_main;
-
-L_Q_elanore:
- mes "[Sagatha the Witch]";
- mes "\"Elanore is the Tulimshar town healer.\"";
- next;
- goto L_main;
-
-L_Q_manaseed:
- mes "[Sagatha the Witch]";
- if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
- goto L_Q_manaseed_unabsorbed;
- if (@has_magic)
- goto L_Q_manaseed_m;
- mes "\"There is a mana seed around here, but I don't see how this concerns you.\"";
- next;
- goto L_main;
-
-L_Q_manaseed_unabsorbed:
- mes "\"If the mana seed didn't pass its magic to you, you clearly aren't attuned to magic.\"";
- next;
- goto L_main;
-
-L_Q_manaseed_m:
- mes "\"You were lucky that the mana seed gave you its magic. I hope that you will use this power for something good now.\"";
- next;
- goto L_main;
-
-L_Q_manapotion:
- mes "[Sagatha the Witch]";
- mes "\"I won't make one without a cauldron, that would be wasteful. And I'm not going to start carrying a cauldron around.\"";
- next;
- goto L_main;
-
-L_Q_wyara:
- mes "[Sagatha the Witch]";
- mes "\"Wyara decided to live with humans, in Hurnscald. She tries to make the world a better place in her own way. Please be kind to her, she is a very good person.\"";
- next;
- goto L_main;
-
-L_Q_auldsbel:
- mes "[Sagatha the Witch]";
- mes "She frowns.";
- mes "\"He's a transmutation wizard, member of the northern council. Reasonably competent wizard, too.\"";
- next;
- goto L_main;
-
-L_Close:
- close;
-
-S_up_astral:
- set @SUP_id, SKILL_MAGIC_ASTRAL;
- set @SUP_name$, "Astral Magic";
- callfunc "SkillUp";
- return;
-
-S_update_var:
- set QUEST_MAGIC,
- (QUEST_MAGIC & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/013-1/traveler.txt b/world/map/npc/013-1/traveler.txt
deleted file mode 100644
index 7439b8d8..00000000
--- a/world/map/npc/013-1/traveler.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-013-1,120,90,0|script|Faris the Traveler|103
-{
- set @npcname$, "Faris";
- set @NpcTravelBit, $@magic_house_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/013-2/_import.txt b/world/map/npc/013-2/_import.txt
deleted file mode 100644
index 6dc243ad..00000000
--- a/world/map/npc/013-2/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 013-2: Magic House
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 013-2
-npc: npc/013-2/_mobs.txt
-npc: npc/013-2/_nodes.txt
-npc: npc/013-2/_warps.txt
-npc: npc/013-2/apprentice.txt
-npc: npc/013-2/mapflags.txt
-npc: npc/013-2/notes.txt
-npc: npc/013-2/wizard.txt
diff --git a/world/map/npc/013-2/_mobs.txt b/world/map/npc/013-2/_mobs.txt
deleted file mode 100644
index b092afcc..00000000
--- a/world/map/npc/013-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Magic House mobs
-
diff --git a/world/map/npc/013-2/_nodes.txt b/world/map/npc/013-2/_nodes.txt
deleted file mode 100644
index 80a032bc..00000000
--- a/world/map/npc/013-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Magic House nodes
-
-// (no nodes)
diff --git a/world/map/npc/013-2/_warps.txt b/world/map/npc/013-2/_warps.txt
deleted file mode 100644
index 32b5e406..00000000
--- a/world/map/npc/013-2/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Magic House warps
-
-013-2,63,42|warp|-1,-1,013-1,42,91
-013-2,67,36|warp|-1,-1,013-2,21,40
-013-2,21,41|warp|-1,-1,013-2,67,37
diff --git a/world/map/npc/013-2/apprentice.txt b/world/map/npc/013-2/apprentice.txt
deleted file mode 100644
index 12bd3926..00000000
--- a/world/map/npc/013-2/apprentice.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-013-2,25,37,0|script|Fabius|115
-{
- mes "[Fabius]";
- mes "\"Hey! Wanna have a drink or something? High quality, low cost. A poor fella like me needs a bit of extra cash, ye know.\"";
- next;
- menu
- "Yes please!", L_Yes,
- "No thanks.", L_No,
- "No way, I thought it was for free!", L_Not_Free;
-
-L_Yes:
- mes "[Fabius]";
- mes "\"So what would ya like, then?\"";
- next;
- menu
- "A beer", L_Beer,
- "A milk", L_Milk,
- "Nevermind", L_No;
-
-L_No:
- mes "[Fabius]";
- mes "\"Suit yourself.\"";
- next;
- goto L_Finish;
-
-L_Not_Free:
- mes "[Fabius]";
- mes "\"Oh, you stupid git! ... But hey, let me tell ya something...\"";
- next;
- mes "[Fabius]";
- mes "\"There's notes flying around in the room up there. Did ya try reading some?\"";
- close;
-
-L_Beer:
- mes "[Fabius]";
- mes "\"That'll be 175 GP.\"";
- next;
- menu
- "Here you are", L_Beer_yes,
- "No thanks", L_Beer_no;
-
-L_Beer_yes:
- if (Zeny < 175)
- goto L_Low_money;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("Beer") == 0)
- goto L_TooMany;
- getitem "Beer", 1;
- set Zeny, Zeny - 175;
- goto L_Finish;
-
-L_Beer_no:
- mes "[Fabius]";
- mes "\"No beer, no civilization!\"";
- next;
- goto L_Finish;
-
-L_Milk:
- mes "[Fabius]";
- mes "\"That'll be 300 GP.\"";
- next;
- menu
- "Here you are", L_Milk_yes,
- "No thanks", L_Milk_no;
-
-L_Milk_yes:
- if (Zeny < 300)
- goto L_Low_money;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("Milk") == 0)
- goto L_TooMany;
- getitem "Milk", 1;
- set Zeny, Zeny - 300;
- goto L_Finish;
-
-L_Milk_no:
- mes "[Fabius]";
- mes "\"Oh alright. Milk is a deadly poison anyway...\"";
- next;
- goto L_Finish;
-
-L_Low_money:
- mes "[Fabius]";
- mes "\"Aw, you don't have enough gold on you!\"";
- next;
- goto L_Finish;
-
-L_Finish:
- mes "[Fabius]";
- mes "\"By the way, have you seen those flying notes and the mirror in the room next door? They're WAY COOL! Try reading some of the notes!\"";
- close;
-
-L_TooMany:
- mes "[Fabius]";
- mes "\"You don't have room for it.\"";
- close;
-}
diff --git a/world/map/npc/013-2/mapflags.txt b/world/map/npc/013-2/mapflags.txt
deleted file mode 100644
index 6d675d4d..00000000
--- a/world/map/npc/013-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-013-2|mapflag|resave|013-1,126,99
diff --git a/world/map/npc/013-2/notes.txt b/world/map/npc/013-2/notes.txt
deleted file mode 100644
index 99de40df..00000000
--- a/world/map/npc/013-2/notes.txt
+++ /dev/null
@@ -1,213 +0,0 @@
-//
-
-013-2,23,32,0|script|Motto#wiz|400
-{
- mes "Mid pleasures and palaces though we may roam,";
- mes "Be it ever so humble, there's no place like home.";
- close;
-}
-
-013-2,30,32,0|script|Note#wiz|400
-{
- mes "Please do not open.";
- close;
-}
-
-013-2,38,20,0|script|Saying#wiz|400
-{
- mes "The early bird catcheth the worm.";
- close;
-}
-
-013-2,27,21,0|script|Mirror#wiz|400
-{
- mes "You say: \"Mirror mirror on the wall, who has the nicest haircut of them all?\"";
- next;
- mes "\"Oh fair adventurer, your hair indeed looks nice. But wouldn't it look much better, after I have rolled my dice?\"";
- next;
- mes "Your looks suddenly change...";
- next;
- set @fixedMirror, 1;
- callfunc "useMirror";
- close;
-}
-
-// Warp to wood clearings
-013-2,25,23,0|script|Spell#wiz1|400
-{
- mes "You read: \"I see trees of green, red roses too. I see them bloom for me and you. And I think to myself: \'What a wonderful world\'\"";
- next;
- mes "You think: \"Huh?\"";
- next;
- mes "The spell fulfills its inevitable purpose...";
- next;
- set @dest, rand(BaseLevel);
- if (@dest < 10)
- goto L_PlaceOne;
- if ((@dest >= 10) && (@dest <= 50))
- goto L_PlaceTwo;
- goto L_PlaceThree;
-
-L_PlaceOne:
- warp "013-1",128,28;
- goto L_Close;
-
-L_PlaceTwo:
- warp "016-1",62,89;
- goto L_Close;
-
-L_PlaceThree:
- warp "014-1",33,35;
- goto L_Close;
-
-L_Close:
- set @dest, 0;
- close;
-}
-
-// Warp to desert
-013-2,27,24,0|script|Spell#wiz2|400
-{
- mes "You read: \"You must not fear, for it is the mind-killer. That and sharp pointy things.\"";
- next;
- mes "You feel the floor disappear below your feet...";
- next;
- callfunc "MiriamCheat";
- set @dest, rand(BaseLevel);
- if (@dest < 10)
- goto L_PlaceOne;
- if ((@dest >= 10) && (@dest <= 50))
- goto L_PlaceTwo;
- goto L_PlaceThree;
-
-L_PlaceOne:
- warp "006-1",83,60;
- goto L_Close;
-
-L_PlaceTwo:
- warp "006-1",77,22;
- goto L_Close;
-
-L_PlaceThree:
- warp "006-1",33,93;
- goto L_Close;
-
-L_Close:
- set @dest, 0;
- close;
-}
-
-// Warp to snow area
-013-2,25,27,0|script|Spell#wiz3|400
-{
- mes "You read: \"Snow-white flakes and eminent frost - I'll go there, whatever the cost!\"";
- next;
- mes "You feel yourself getting lighter...";
- next;
- set @dest, rand(BaseLevel);
- if (@dest < 10)
- goto L_FriendlyPlace;
- if ((@dest >= 10) && (@dest <= 50))
- goto L_DeepCave;
- goto L_Cave;
-
-L_FriendlyPlace:
- warp "019-3",102,77;
- goto L_Close;
-
-L_DeepCave:
- warp "031-3",135,163;
- goto L_Close;
-
-L_Cave:
- warp "031-3",37,213;
- goto L_Close;
-
-L_Close:
- set @dest, 0;
- close;
-}
-
-// Warp to Inns
-013-2,27,27,0|script|Spell#wiz4|400
-{
- mes "You read: \"People and cosiness, lively and fun - that's where I've gone!\"";
- next;
- mes "The world around you slowly dissolves...";
- next;
- set @dest, rand(BaseLevel);
- if (@dest < 10)
- goto L_PlaceOne;
- if ((@dest >= 10) && (@dest <= 50))
- goto L_PlaceTwo;
- goto L_PlaceThree;
-
-L_PlaceOne:
- warp "030-2",88,24;
- goto L_Close;
-
-L_PlaceTwo:
- warp "001-2",30,29;
- goto L_Close;
-
-L_PlaceThree:
- warp "010-2",34,42;
- goto L_Close;
-
-L_Close:
- set @dest, 0;
- close;
-}
-
-// Warp to mines
-013-2,26,28,0|script|Spell#wiz5|400
-{
- mes "You read: \"Darkness and legs, eight of them each - I'd rather not go there, but now it's too late...\"";
- next;
- mes "For a moment everything turns black...";
- next;
- set @dest, rand(BaseLevel);
- if (@dest < 10)
- goto L_PlaceOne;
- if ((@dest >= 10) && (@dest <= 50))
- goto L_PlaceTwo;
- goto L_PlaceThree;
-
-L_PlaceOne:
- warp "012-4",431,36;
- goto L_Close;
-
-L_PlaceTwo:
- warp "013-3",134,54;
- goto L_Close;
-
-L_PlaceThree:
- warp "013-3",178,67;
- goto L_Close;
-
-L_Close:
- set @dest, 0;
- close;
-}
-
-// Death
-013-2,21,29,0|script|Spell#wiz6|400
-{
- mes "You read: \"Heart stops pumping, breath begone - life is stopping, death has come!\"";
- next;
- mes "You're losing control of your body... everything turns black... while slipping to the floor, you hear a faraway scream... suddenly, you see THE LIGHT!";
- next;
- heal -Hp, 0;
- close;
-}
-
-// Naked
-013-2,28,29,0|script|Spell#wiz7|400
-{
- mes "You read: \"Cotton, steel, leather and wool - have I ever seen a greater fool?\"";
- next;
- mes "You suddenly feel naked; you ARE naked!";
- next;
- nude;
- close;
-}
diff --git a/world/map/npc/013-2/wizard.txt b/world/map/npc/013-2/wizard.txt
deleted file mode 100644
index f4e81a72..00000000
--- a/world/map/npc/013-2/wizard.txt
+++ /dev/null
@@ -1,144 +0,0 @@
-013-2,66,39,0|script|Old Wizard#_W|116
-{
- set @has_magic, getskilllv(SKILL_MAGIC);
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_OLD_WIZARD;
-
- set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
- if ((@run == 2) && (QL_KYLIAN == 13))
- goto L_Deliver;
- goto L_Start;
-
-L_Deliver:
- menu
- "I have a delivery for you", L_Delivery;
-
-L_Delivery:
- mes "[Old Wizard]";
- mes "\"Good now I can get to work on some stronger brew..\"";
- set QL_KYLIAN, 14;
- goto L_Close;
-
-L_Start:
- mes "[Old Wizard]";
- mes "\"Welcome, dear wanderer! Come into my humble home. Take a rest, eat and drink.\"";
- next;
- menu
- "Thanks, that's very kind of you!", L_Thanks,
- "Can you teach me magic?", L_TeachRude,
- "Oh, shut up!", L_ShutUp;
-
-L_TeachRude:
- mes "[Old Wizard]";
- mes "\"I certainly could, but I already have an apprentice.\"";
- goto L_Close;
-
-L_ShutUp:
- mes "[Old Wizard]";
- mes "\"That attitude isn't going to get you very far, my dear.\"";
- goto L_Close;
-
-L_Thanks:
- mes "[Old Wizard]";
- mes "\"Behind this door, my apprentice will serve you.\"";
- next;
- if (@has_magic)
- menu
- "Alright.", L_Agree,
- "I am studying magic, can you help?", L_NewStudent,
- "Your apprentice? ... No thanks.", L_Decline;
- menu
- "Alright.", L_Agree,
- "Your apprentice? ... No thanks.", L_Decline;
-
-L_Decline:
- mes "[Old Wizard]";
- mes "\"Goodbye, then!\"";
- goto L_Close;
-
-L_NewStudent:
- mes "[Old Wizard]";
- mes "\"Studying is always an excellent use of one's mind! I fear that I can't offer too much assistance to you, however. But if you are interested, I could perhaps teach you a simple spell?\"";
- next;
-
- // check if the player has the knowledge of any skill
- if (getskilllv(SKILL_POOL) && (getskilllv(SKILL_MAGIC_ASTRAL) < 1) || (getskilllv(SKILL_ASTRAL_SOUL) == 0))
- menu
- "That would be very kind of you!", L_TeachSpell,
- "Actually I am looking for someone teaching me some more magic skills.", L_AstralSoul,
- "No, but thank you!", L_Decline;
- menu
- "That would be very kind of you!", L_TeachSpell,
- "No, but thank you!", L_Decline;
-
-L_TeachSpell:
- mes "[Old Wizard]";
- mes "\"This one may not seem too powerful, but it can be quite handy; it's the 'hide' spell. It will shield you from some forms of detection magic.\"";
- next;
- mes "[Old Wizard]";
- mes "\"Put a piece of cotton cloth on your head, and speak out '" + get(.invocation$, "spell-hide") + "', loudly and clearly. The protection lasts quite long, but you may have to renew it on occasion.\"";
- next;
- mes "[Old Wizard]";
- mes "\"You can also cast it on others, of course. Just speak their name after you pronounce the invocation.\"";
- next;
- mes "[Old Wizard]";
- mes "\"You may find it useful for getting a little peace and quiet at times, but it can also get in the way of friends trying to find you, so use it with care.\"";
- next;
- if (getskilllv(SKILL_MAGIC_ASTRAL) >= 2)
- goto L_Close;
- mes "[Old Wizard]";
- mes "\"I'm not sure if you are experienced enough to cast it yet, though. You may need to first learn astral magic.\"";
- goto L_Close;
-
-L_AstralSoul:
- mes "[Old Wizard]";
- mes "\"Oh yes, there are lots of ways to improve your magic. Skills -some people say mental focus for that- are another way to improve your magic. Of course learning more and more spells is also a need for good mages.\"";
- next;
- mes "\"I can teach you the ability to focus on magical stuff.\"";
- next;
- mes "\"To do so, I am in need of a pearl and about 100 acorns.\"";
- menu
- "Here we go.", L_Next,
- "Ok be right back. I'll get them", L_Decline;
-
-L_Next:
- if (countitem("Pearl") < 1 || countitem("Acorn") < 100) goto L_NotEnough;
- mes "[Old Wizard]";
- mes "\"Okay, listen:\"";
- next;
- mes "\"Some parts of your brain is still unused. These parts will now get the ability to get focused to magic.\"";
- next;
- mes "\"To do so, think of a magic spell!\"";
- next;
- mes "The old wizard mumbles some invocations";
- next;
- if (countitem("Pearl") < 1 || countitem("Acorn") < 100) goto L_NotEnough;
- delitem "Pearl", 1;
- delitem "Acorn", 100;
- set @SUP_lvl, 1;
- set @SUP_id, SKILL_ASTRAL_SOUL;
- set @SUP_name$, "Astral Soul";
- set @SUP_xp, 2500;
- callfunc "SkillUp";
- mes "\"Now go and try to find someone who can actually activate that focus.\"";
- next;
- mes "\"You have the powers to focus on magic, but you need to get magic focused now.\"";
- goto L_Close;
-
-L_NotEnough:
- mes "[Old Wizard]";
- mes "\"Please learn to count.\"";
- next;
- mes "\"When you are done with that, come back again.\"";
- goto L_Close;
-
-L_Agree:
- mes "[Old Wizard]";
- mes "\"Beware the flying notes though, some of them are really dangerous. I haven't been able to persuade them to get back into their book. And avoid the mirror, it's been acting strange lately.\"";
- next;
- mes "\"Oh, and please don't take my apprentice too seriously. He still has a lot to learn.\"";
- goto L_Close;
-
-L_Close:
- set @has_magic, 0;
- close;
-}
diff --git a/world/map/npc/013-3/_import.txt b/world/map/npc/013-3/_import.txt
deleted file mode 100644
index 4a6fd517..00000000
--- a/world/map/npc/013-3/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 013-3: Woodland Hills Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 013-3
-npc: npc/013-3/_mobs.txt
-npc: npc/013-3/_nodes.txt
-npc: npc/013-3/_warps.txt
-npc: npc/013-3/barrier.txt
-npc: npc/013-3/mapflags.txt
-npc: npc/013-3/mask_chest.txt
-npc: npc/013-3/misc.txt
-npc: npc/013-3/sword_chest.txt
diff --git a/world/map/npc/013-3/_mobs.txt b/world/map/npc/013-3/_mobs.txt
deleted file mode 100644
index b1456bc5..00000000
--- a/world/map/npc/013-3/_mobs.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills Cave mobs
-
-013-3,28,89,16,52|monster|CaveSnake|1021,10,120000ms,60000ms
-013-3,61,22,2,2|monster|FireSkull|1023,1,120000ms,60000ms
-013-3,81,22,2,2|monster|PoisonSkull|1024,1,120000ms,60000ms
-013-3,109,31,6,22|monster|BlackScorpion|1009,20,50000ms,25000ms
-013-3,119,84,27,38|monster|Spider|1012,20,120000ms,40000ms
-013-3,176,23,5,6|monster|Spider|1012,10,100000ms,40000ms
-013-3,82,75,2,2|monster|FireSkull|1023,1,180000ms,60000ms
-013-3,142,37,2,2|monster|PoisonSkull|1024,1,180000ms,60000ms
-013-3,79,134,21,16|monster|BlackScorpion|1009,5,80000ms,40000ms
-013-3,71,169,38,17|monster|BlackScorpion|1009,5,80000ms,40000ms
-013-3,64,85,9,21|monster|BlackScorpion|1009,10,80000ms,40000ms
-013-3,81,92,3,20|monster|BlackScorpion|1009,10,80000ms,40000ms
-013-3,163,84,33,37|monster|Snake|1010,30,120000ms,50000ms
-013-3,162,85,33,37|monster|Spider|1012,30,120000ms,50000ms
-013-3,172,77,18,25|monster|BlackScorpion|1009,15,120000ms,50000ms
-013-3,145,36,20,15|monster|RedSlime|1008,25,80000ms,40000ms
-013-3,167,37,23,11|monster|Snake|1010,20,120000ms,40000ms
-013-3,165,25,16,11|monster|BlackScorpion|1009,15,120000ms,40000ms
-013-3,71,39,2,3|monster|Snake|1010,2,40000ms,20000ms
-013-3,159,102,3,5|monster|YellowSlime|1007,2,80000ms,40000ms
-013-3,67,22,2,2|monster|Maggot|1002,2,40000ms,20000ms
-013-3,75,22,2,2|monster|Maggot|1002,2,40000ms,20000ms
-013-3,76,39,7,4|monster|BlackScorpion|1009,8,40000ms,20000ms
-013-3,65,39,7,4|monster|RedSlime|1008,8,40000ms,20000ms
-013-3,62,33,2,1|monster|PoisonSkull|1024,1,120000ms,60000ms
-013-3,80,33,2,1|monster|FireSkull|1023,1,120000ms,60000ms
-013-3,75,46,2,1|monster|PoisonSkull|1024,1,120000ms,60000ms
-013-3,67,46,2,1|monster|FireSkull|1023,1,120000ms,60000ms
diff --git a/world/map/npc/013-3/_nodes.txt b/world/map/npc/013-3/_nodes.txt
deleted file mode 100644
index 689be5d9..00000000
--- a/world/map/npc/013-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/013-3/_warps.txt b/world/map/npc/013-3/_warps.txt
deleted file mode 100644
index 3ad62167..00000000
--- a/world/map/npc/013-3/_warps.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills Cave warps
-
-013-3,28,20|warp|-1,-1,013-1,0,0
-013-3,34,63|warp|-1,-1,013-1,125,103
-013-3,36,96|warp|-1,-1,013-3,79,126
-013-3,79,125|warp|-1,-1,013-3,35,96
-013-3,22,115|warp|-1,-1,018-1,115,41
-013-3,139,45|warp|-1,-1,018-1,127,37
-013-3,61,179|warp|-1,-1,018-1,134,46
-013-3,69,143|warp|-1,-1,018-3,50,89
-013-3,81,103|warp|-1,-1,018-1,147,41
-013-3,177,91|warp|-1,-1,018-1,177,21
-013-3,178,44|warp|-1,-1,018-3,97,70
-013-3,169,45|warp|-1,-1,018-3,27,55
-013-3,152,28|warp|-1,-1,018-3,134,62
-013-3,123,104|warp|-1,-1,018-3,172,22
-013-3,147,104|warp|-1,-1,018-3,177,22
-013-3,158,66|warp|-1,-1,018-3,27,90
-013-3,75,51|warp|-1,-1,013-3,109,65
-013-3,109,64|warp|-1,-1,013-3,75,50
-013-3,67,51|warp|-1,-1,018-3,90,51
-013-3,71,20|warp|-1,-1,013-3,28,39
-013-3,28,41|warp|-1,-1,013-3,71,21
-013-3,71,42|warp|-1,-1,013-3,109,21
-013-3,109,20|warp|-1,-1,013-3,71,41
-013-3,111,42|warp|-1,-1,018-3,71,123
-013-3,62,100|warp|-1,-1,018-3,174,86
-013-3,68,97|warp|-1,-1,018-3,102,70
-013-3,160,103|warp|-1,-1,009-3,117,20
diff --git a/world/map/npc/013-3/barrier.txt b/world/map/npc/013-3/barrier.txt
deleted file mode 100644
index d7875009..00000000
--- a/world/map/npc/013-3/barrier.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-
-013-3,71,21,0|script|#DemonMineBarrier1#_M|32767,1,0
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
-
- if (@state >= 2) goto L_End;
- if (@state == 1 && countitem("Soul") >= 1) goto L_Has_Soul;
-
- message strcharinfo(0), "Barrier : ##3A barrier around the opening pushes you back as you approach.";
-
- warp "013-3", 71, 25;
- goto L_End;
-
-L_Has_Soul:
- message strcharinfo(0), "Barrier : ##3The barrier around the opening allows you passage.";
- set @state, 2;
- callsub S_Update_Mask;
- delitem "Soul", 1;
- goto L_End;
-
-L_End:
- set @state, 0;
- end;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (@state << NIBBLE_2_SHIFT);
- return;
-}
diff --git a/world/map/npc/013-3/mapflags.txt b/world/map/npc/013-3/mapflags.txt
deleted file mode 100644
index 73d2a995..00000000
--- a/world/map/npc/013-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-013-3|mapflag|resave|013-1,126,99
diff --git a/world/map/npc/013-3/mask_chest.txt b/world/map/npc/013-3/mask_chest.txt
deleted file mode 100644
index 204eec4c..00000000
--- a/world/map/npc/013-3/mask_chest.txt
+++ /dev/null
@@ -1,220 +0,0 @@
-//
-
-013-3,28,27,0|script|Chest#DemonMask|111
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
-
- if (@state < 2) goto L_This_shouldn_t_happen;
- if (@state == 3) goto L_Finished;
-
- if (countitem("MaggotSlime") == 0)
- goto L_No_maggot_slime;
- if (countitem("SmallMushroom") == 0)
- goto L_No_mushroom;
- if (countitem("PinkPetal") == 0)
- goto L_No_pink_petal;
- if (countitem("Pearl") == 0)
- goto L_No_pearl;
- if (countitem("HardSpike") == 0)
- goto L_No_hard_spike;
- if (countitem("RawLog") == 0)
- goto L_No_raw_log;
- if (countitem("PinkAntenna") == 0)
- goto L_No_pink_antenna;
- if (countitem("SnakeTongue") == 0
- || countitem("MountainSnakeTongue") == 0
- || countitem("GrassSnakeTongue") == 0
- || countitem("CaveSnakeTongue") == 0)
- goto L_No_tongues;
- if (countitem("TreasureKey") == 0)
- goto L_No_treasure_key;
- if (countitem("PileOfAsh") == 0)
- goto L_no_ash;
- if (countitem("MauveHerb") == 0
- || countitem("CobaltHerb") == 0
- || countitem("GambogeHerb") == 0
- || countitem("AlizarinHerb") == 0)
- goto L_No_herbs;
- if (countitem("BugLeg") == 0)
- goto L_No_bug_leg;
- if (countitem("CaveSnakeLamp") == 0)
- goto L_No_lamp;
- if (countitem("IronOre") == 0)
- goto L_No_iron_ore;
- if (countitem("ScorpionStinger") == 0
- || countitem("RedScorpionStinger") == 0
- || countitem("BlackScorpionStinger") == 0)
- goto L_No_stingers;
- if (countitem("SilkCocoon") == 0)
- goto L_No_silk;
- if (countitem("WhiteFur") == 0)
- goto L_No_fur;
- if (countitem("DarkCrystal") == 0)
- goto L_No_dark_crystal;
- if (countitem("BottleOfWater") == 0)
- goto L_No_water;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("MaggotSlime") > 1
- && countitem("BugLeg") > 1
- && countitem("SilkCocoon") > 1
- && countitem("SmallMushroom") > 1
- && countitem("PinkPetal") > 1
- && countitem("Pearl") > 1
- && countitem("HardSpike") > 1
- && countitem("RawLog") > 1
- && countitem("PinkAntenna") > 1
- && countitem("DarkCrystal") > 1
- && countitem("IronOre") > 1
- && countitem("ScorpionStinger") > 1
- && countitem("RedScorpionStinger") > 1
- && countitem("BlackScorpionStinger") > 1
- && countitem("SnakeTongue") > 1
- && countitem("MountainSnakeTongue") > 1
- && countitem("GrassSnakeTongue") > 1
- && countitem("CaveSnakeTongue") > 1
- && countitem("MauveHerb") > 1
- && countitem("CobaltHerb") > 1
- && countitem("GambogeHerb") > 1
- && countitem("AlizarinHerb") > 1
- && countitem("TreasureKey") > 1
- && countitem("CaveSnakeLamp") > 1
- && countitem("PileOfAsh") > 1
- && countitem("WhiteFur") > 1
- && countitem("BottleOfWater") > 1)
- goto L_TooMany;
-
- delitem "MaggotSlime", 1;
- delitem "BugLeg", 1;
- delitem "SilkCocoon", 1;
- delitem "SmallMushroom", 1;
- delitem "PinkPetal", 1;
- delitem "Pearl", 1;
- delitem "HardSpike", 1;
- delitem "RawLog", 1;
- delitem "PinkAntenna", 1;
- delitem "DarkCrystal", 1;
- delitem "IronOre", 1;
- delitem "ScorpionStinger", 1;
- delitem "RedScorpionStinger", 1;
- delitem "BlackScorpionStinger", 1;
- delitem "SnakeTongue", 1;
- delitem "MountainSnakeTongue", 1;
- delitem "GrassSnakeTongue", 1;
- delitem "CaveSnakeTongue", 1;
- delitem "MauveHerb", 1;
- delitem "CobaltHerb", 1;
- delitem "GambogeHerb", 1;
- delitem "AlizarinHerb", 1;
- delitem "TreasureKey", 1;
- delitem "CaveSnakeLamp", 1;
- delitem "WhiteFur", 1;
- delitem "PileOfAsh", 1;
- delitem "BottleOfWater", 1;
-
- mes "You managed to perform the ritual and open the chest.";
- getitem "DemonMask", 1;
- mes "You found a demon mask inside.";
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_No_maggot_slime:
- mes "You do not have any maggot slime.";
- goto L_Close;
-
-L_No_mushroom:
- mes "You do not have a mushroom, neither big, nor small.";
- goto L_Close;
-
-L_No_pink_petal:
- mes "You can't seem to find that pink petal you had.";
- goto L_Close;
-
-L_No_pearl:
- mes "You do not have a pearl, let alone one from the sea.";
- goto L_Close;
-
-L_No_hard_spike:
- mes "You weren't able to find a hard spike in the stuff you brought.";
- goto L_Close;
-
-L_No_raw_log:
- mes "You don't have any wood.";
- goto L_Close;
-
-L_No_pink_antenna:
- mes "You aren't carrying any antenna.";
- goto L_Close;
-
-L_No_tongues:
- mes "You don't have four different snake tongues.";
- goto L_Close;
-
-L_No_treasure_key:
- mes "No treasure chest key, no opening ritual.";
- goto L_Close;
-
-L_no_ash:
- mes "You still need a pile of ash.";
- goto L_Close;
-
-L_No_herbs:
- mes "Four different herbs are needed to get this thing open.";
- goto L_Close;
-
-L_No_bug_leg:
- mes "You do not have part of a bug on you. That is rather odd considering what you went through to get here.";
- goto L_Close;
-
-L_No_lamp:
- mes "You do not have a lamp. Yet, somehow, you were able to get this far into this dark cave.";
- goto L_Close;
-
-L_No_iron_ore:
- mes "\"Rock and metal, as one.\" You don't seem to have anything that fits the bill.";
- goto L_Close;
-
-L_No_stingers:
- mes "Three scorpion deaths are still missing.";
- goto L_Close;
-
-L_No_silk:
- mes "You could not find the womb for a butterfly among your stuff.";
- goto L_Close;
-
-L_No_fur:
- mes "You wonder how you can carry the \"gentle caress of a creature without blemish.\" But you need it to get this thing open.";
- goto L_Close;
-
-L_No_dark_crystal:
- mes "A piece of darkness is missing.";
- goto L_Close;
-
-L_No_water:
- mes "Just one bottle of water and you can start the ritual.";
- goto L_Close;
-
-L_This_shouldn_t_happen:
- warp "013-3", 71, 25;
- // You need to go through the barrier to get to the chest, so this shouldn't happen. So just warp them like the barrier does.
- goto L_Close;
-
-L_Finished:
- mes "[Chest]";
- mes "You already opened this chest.";
- goto L_Close;
-
-L_TooMany:
- mes "[Chest]";
- mes "You don't have room for what ever is inside. Maybe you should try again later.";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (@state << NIBBLE_2_SHIFT);
- return;
-}
diff --git a/world/map/npc/013-3/misc.txt b/world/map/npc/013-3/misc.txt
deleted file mode 100644
index dde3f366..00000000
--- a/world/map/npc/013-3/misc.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-//
-
-013-3,127,68,0|script|Chest#boring|111
-{
- mes "You can't see any way to open this chest.";
- close;
-}
diff --git a/world/map/npc/013-3/sword_chest.txt b/world/map/npc/013-3/sword_chest.txt
deleted file mode 100644
index 503dda7e..00000000
--- a/world/map/npc/013-3/sword_chest.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-
-013-3,177,22,0|script|Chest#sword|111
-{
- if (FLAGS & FLAG_HURNSMINE_CHEST) goto L_Finished;
-
- mes "[Chest]";
- mes "Would you try to open it?";
- next;
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- if(countitem("TreasureKey") < 10)
- goto L_Not_Enough;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("TreasureKey") > 10)
- goto L_TooMany;
- delitem "TreasureKey", 10;
- getitem "ShortSword", 1;
- mes "[Chest]";
- mes "You opened it and found a short sword!";
- set FLAGS, FLAGS | FLAG_HURNSMINE_CHEST;
- close;
-
-L_Not_Enough:
- mes "It seems that this is not the right key...";
- close;
-
-L_Finished:
- mes "[Chest]";
- mes "You already opened this chest.";
- close;
-
-L_TooMany:
- mes "[Chest]";
- mes "You don't have room for what ever is inside. Maybe you should try again later.";
- close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/014-1/_import.txt b/world/map/npc/014-1/_import.txt
deleted file mode 100644
index 5f4b392d..00000000
--- a/world/map/npc/014-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 014-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 014-1
-npc: npc/014-1/_mobs.txt
-npc: npc/014-1/_nodes.txt
-npc: npc/014-1/_warps.txt
-npc: npc/014-1/goop.txt
-npc: npc/014-1/mapflags.txt
-npc: npc/014-1/wedding-officiator.txt
diff --git a/world/map/npc/014-1/_mobs.txt b/world/map/npc/014-1/_mobs.txt
deleted file mode 100644
index 8abab0ea..00000000
--- a/world/map/npc/014-1/_mobs.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-014-1,0,0,0,0|monster|EvilMushroom|1013,20,0ms,0ms
-014-1,0,0,0,0|monster|PinkFlower|1014,25,0ms,0ms
-014-1,0,0,0,0|monster|SpikyMushroom|1019,15,0ms,0ms
-014-1,0,0,0,0|monster|Mouboo|1028,5,0ms,10ms
-014-1,0,0,0,0|monster|MauvePlant|1029,1,270ms,180ms
-014-1,0,0,0,0|monster|MauvePlant|1029,5,2700000ms,1800000ms
-014-1,0,0,0,0|monster|CobaltPlant|1030,1,270ms,180ms
-014-1,0,0,0,0|monster|CobaltPlant|1030,2,2700000ms,1800000ms
-014-1,0,0,0,0|monster|GambogePlant|1031,1,270ms,180ms
-014-1,0,0,0,0|monster|GambogePlant|1031,2,2700000ms,1800000ms
-014-1,0,0,0,0|monster|AlizarinPlant|1032,1,270ms,180ms
-014-1,0,0,0,0|monster|AlizarinPlant|1032,2,2700000ms,1800000ms
-014-1,0,0,0,0|monster|Silkworm|1035,4,6000ms,3000ms
-014-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-014-1,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms
-014-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
diff --git a/world/map/npc/014-1/_nodes.txt b/world/map/npc/014-1/_nodes.txt
deleted file mode 100644
index 12c08221..00000000
--- a/world/map/npc/014-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-// (no nodes)
diff --git a/world/map/npc/014-1/_warps.txt b/world/map/npc/014-1/_warps.txt
deleted file mode 100644
index 9c5a3873..00000000
--- a/world/map/npc/014-1/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-014-1,109,91|warp|-1,1,011-1,31,61
-014-1,93,58|warp|-1,-1,014-3,57,172
-014-1,76,38|warp|-1,-1,014-3,35,33
diff --git a/world/map/npc/014-1/goop.txt b/world/map/npc/014-1/goop.txt
deleted file mode 100644
index 09f27626..00000000
--- a/world/map/npc/014-1/goop.txt
+++ /dev/null
@@ -1 +0,0 @@
-014-1,90,101,0|shop|Gwyneth|188,GrassFedTofu:*100,Honey:*100,ActivatedSulphur:*100,VeganWater:*100,FairTradeSoil:*100,LactoseFreeAcorn:*100,RawAir:*1000,FreeRangeMoss:*100,JadeEgg:*300
diff --git a/world/map/npc/014-1/mapflags.txt b/world/map/npc/014-1/mapflags.txt
deleted file mode 100644
index 97fe03e3..00000000
--- a/world/map/npc/014-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-014-1|mapflag|resave|014-1,89,102
diff --git a/world/map/npc/014-1/wedding-officiator.txt b/world/map/npc/014-1/wedding-officiator.txt
deleted file mode 100644
index bc759cdf..00000000
--- a/world/map/npc/014-1/wedding-officiator.txt
+++ /dev/null
@@ -1,246 +0,0 @@
-// Wedding officiator: Marriages and divorces
-
-014-1,31,31,0|script|Wedding Officiator|164
-{
- mes "[Wedding Officiator]";
- mes "A young lady in a long, green dress is overseeing the park. As she notices you looking at her, she gives you a broad and happy smile.";
- mes "\"Hi there! I'm Wendy, here for all your marriage needs!\"";
- next;
- goto L_main;
-
-L_main:
- if (PARTNER)
- goto L_main_married;
-
- menu
- "What exactly do you do?", L_explain_self,
- "How do I get married?", L_explain_marriage,
- "I would like to get married.", L_get_married,
- "Goodbye.", L_end;
-
-L_explain_self:
- mes "[Wedding Officiator]";
- mes "\"I'm responsible for marriage and divorce proceedings. Every married couple must be registered, so I keep a looong list of couples and send that to the magistrates every now and then.\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"So if you have a sweetheart and the two of you are getting along particularly well, and you think that you are ready to make that big final step – well, then come here and talk to me!\"";
- next;
- goto L_main;
-
-L_explain_marriage:
- mes "[Wedding Officiator]";
- mes "\"If you are sure that you are ready to get married, then first you come and talk to me here – I need to register you, after all. You will first have to pay me a small fee of " + WEDDING_FEE + " GP.\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"Both you and your partner must be at least " + WEDDING_MIN_LEVEL + " levels of age, though; the law is very firm on that. But if all of that works out, I will give you two wedding rings for the ceremony.\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"To complete the marriage, each of you has to put on one of these rings, and you have to stand next to each other in the southern part of this park. Then one of you says `#marry' and then the other person's name.\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"So if you would want to marry me, for example, you would say `#marry Wendy'. Just like that. Your partner then has to decide whether he or she wants that. And if you both agree, then you're married!\"";
- mes "She again smiles that broad smile of hers.";
- next;
- goto L_main;
-
-L_get_married:
- if (Zeny < WEDDING_FEE)
- goto L_too_poor;
- if (BaseLevel < WEDDING_MIN_LEVEL)
- goto L_too_young;
-
- mes "[Wedding Officiator]";
- mes "Wendy's eyes are sparkling.";
- mes "\"Wow. So you and your sweetheart are ready to take the big step, then?\"";
- next;
- menu
- "Yes, we are ready.", L_Next,
- "On second thought, perhaps not.", L_end;
-
-L_Next:
- mes "[Wedding Officiator]";
- mes "She bounces.";
- mes "\"That's so sweet! You must really love each other, then...?\"";
- next;
- menu
- "We certainly do.", L_Next1,
- "Yes, of course.", L_Next1,
- "Please get on with it.", L_Next1,
- "Hmm. Let me think about this some more.", L_end;
-
-L_Next1:
- mes "[Wedding Officiator]";
- mes "Wendy blushes.";
- mes "\"Sorry if I am asking so many questions, but I have to make sure, you see... rules and all. Where were we...\"";
- next;
- mes "[Wedding Officiator]";
- mes "She composes herself again.";
- mes "\"OK. Now, what vows you exchange precisely is your choice. But a marriage is really something that is meant to last. So please take a moment to think.\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"Is your partner really someone you are serious about, someone you want to be with even when things get nasty, someone whom you will stick your head out for no matter how bad things get?";
- mes "And do both of you feel that you could spend the rest of your time in this mana world together?\"";
- next;
- menu
- "Yes.", L_Next2,
- "YES.", L_Next2,
- "Absolutely.", L_Next2,
- "Yes. We love each other.", L_Next2,
- "This is taking too long.", L_end,
- "No.", L_end;
-
-L_Next2:
- if (Zeny < WEDDING_FEE)
- goto L_too_poor;
- if (BaseLevel < WEDDING_MIN_LEVEL)
- goto L_too_young;
- getinventorylist;
- if (@inventorylist_count > 98)
- goto L_no_room_for_rings;
-
- set Zeny, Zeny - WEDDING_FEE;
- getitem "WeddingRing", 1;
- getitem "WeddingRing", 1;
-
- mes "[Wedding Officiator]";
- mes "Wendy collects the fee.";
- mes "\"Okay... here are your wedding rings. Each of you has to have one. Put them on, stand next to each other in the southern part of this park and say `marry ...' and the name of your partner.";
- mes "So your partner might just say `marry " + strcharinfo(0) + "' to marry you.\"";
- next;
- mes "[Wedding Officiator]";
- mes "Wendy hesitates, then gives you a quick hug. There are tears are in her eyes.";
- mes "\"Sorry, I always get a bit... emotional, I think... but I'm so happy for you!\"";
- mes "She smiles and wipes the tears from her eyes.";
- next;
- mes "[Wedding Officiator]";
- mes "\"So... I wish you the very, very best, a wonderful and happy and successful marriage!\"";
- mes "She smiles at you again.";
- close;
-
-L_end:
- close;
-
-L_too_young:
- mes "[Wedding Officiator]";
- mes "Wendy looks at her notes, shaking her head; pain is evident in her eyes.";
- mes "\"I'm really, really sorry – I wish I could allow that, but you are still too young. You have to be at least " + WEDDING_MIN_LEVEL + " levels of age.\"";
- close;
-
-L_too_poor:
- mes "[Wedding Officiator]";
- mes "\"Oh, this is so sad... you want to get married but don't have the money!\"";
- mes "Wendy is visibly unhappy.";
- mes "\"I wish I could help you, but the rules... you see... Well, I'm afraid that you will just have to come back when you have " + WEDDING_FEE + " GP.\"";
- close;
-
-L_main_married:
- mes "[Wedding Officiator]";
- mes "\"I hope that you and your partner are doing well?\"";
- next;
- menu
- "We are very happy, thanks for asking!", L_farewell,
- "Actually, things aren't so good...", L_talk_divorce;
-
-L_farewell:
- mes "[Wedding Officiator]";
- mes "Wendy is beaming.";
- mes "\"That's wonderful! Please do say `hi' to your spouse from me!\"";
- close;
-
-L_talk_divorce:
- mes "[Wedding Officiator]";
- mes "\"Oh... I am sorry to hear that. What's the problem, then?\"";
- next;
- menu
- "We don't love each other anymore.", L_nolove,
- "My partner loves someone else.", L_partner_otherlove,
- "I think I love someone else.", L_self_otherlove,
- "We can't agree on who carries the loot.", L_loot;
-
-L_nolove:
- mes "[Wedding Officiator]";
- mes "Wendy sighs.";
- mes "\"I am really sorry to hear that. Have you tried talking to your partner? Tried some new dungeons? Solved some quests together?\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"I mean... I am sure that you have many things in common that you are not aware of. If you just do something new, perhaps you will learn something about each other that you will like?\"";
- next;
- menu
- "We tried that, it didn't work.", L_makesure_divorce,
- "Perhaps we should give it another try.", L_end;
-
-L_partner_otherlove:
- mes "[Wedding Officiator]";
- mes "Wendy frowns.";
- mes "\"Are you really sure? Perhaps that other person is just a friend, or even if it isn't, perhaps it was just a small mistake on your partner's side... nobody is perfect, after all!\"";
- next;
- menu
- "I'm sure. I want a divorce.", L_makesure_divorce,
- "Perhaps we should discuss this some more first.", L_end;
-
-L_self_otherlove:
- mes "[Wedding Officiator]";
- mes "Wendy sighs.";
- mes "\"Oh dear... well, I suppose that happens. You don't have any children, I think, but still, you made a promise to your partner.\"";
- next;
- mes "[Wedding Officiator]";
- mes "\"Are you really sure that you love the new person so much that you want to leave your partner? Perhaps it would be good to take some time off first to make sure that you are not making a mistake here.\"";
- next;
- menu
- "I'm sure. I want a divorce.", L_makesure_divorce,
- "Let me think about this more.", L_end;
-
-L_loot:
- mes "[Wedding Officiator]";
- mes "Wendy blinks.";
- mes "\"Err... have you thought about just splitting it up?\"";
- next;
- menu
- "No way. I want a divorce.", L_makesure_divorce,
- "Oh... oh! But of course!", L_end;
-
-L_makesure_divorce:
- set @divorce_cost, DIVORCE_FEE_PER_LEVEL * BaseLevel;
-
- mes "[Wedding Officiator]";
- mes "Resigned, Wendy looks down at her notes.";
- mes "\"Okay. I suppose that if you are sure, I will get your divorce underway. But that will cost you " + @divorce_cost + " in administrative fees.\"";
- next;
- menu
- "Let me think about this again.", L_end,
- "HOW much? Never mind, then.", L_end,
- "That's OK. I want the divorce.", L_do_divorce;
-
-L_divorce_nomoney:
- mes "[Wedding Officiator]";
- mes "\"I am sorry, but you can't seem to afford the " + @divorce_cost + " GP for a divorce at this time. Please come back later.\"";
- close;
-
-L_do_divorce:
- if (Zeny < @divorce_cost)
- goto L_divorce_nomoney;
- set PARTNER, 0, PARTNER; // divorce the partner first, which will also divorce the rid if succesful
- if (PARTNER < 1) goto L_DidDivorce;
-
- mes "[Wedding Officiator]";
- mes "The officiator searches through her records for your partner.";
- mes "\"I can't find your partner's record, you'll have to come back later.\"";
- next;
- mes "[Server]";
- mes "Try again when your partner is online too.";
- close;
-
-L_DidDivorce:
- set Zeny, Zeny - @divorce_cost;
-
- mes "[Wedding Officiator]";
- mes "After collecting her fee, Wendy licks her quill and writes down some notes.";
- mes "Then she sighs heavily.";
- mes "\"You are divorced now. Thank you for your business.\"";
- close;
-
-L_no_room_for_rings:
- mes "[Wedding Officiator]";
- mes "\"You don't have room to carry the rings.\"";
- close;
-}
diff --git a/world/map/npc/014-3/_import.txt b/world/map/npc/014-3/_import.txt
deleted file mode 100644
index 8aedea2e..00000000
--- a/world/map/npc/014-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 014-3: Woodland Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 014-3
-npc: npc/014-3/_mobs.txt
-npc: npc/014-3/_nodes.txt
-npc: npc/014-3/_warps.txt
-npc: npc/014-3/mapflags.txt
diff --git a/world/map/npc/014-3/_mobs.txt b/world/map/npc/014-3/_mobs.txt
deleted file mode 100644
index 90d835c2..00000000
--- a/world/map/npc/014-3/_mobs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Cave mobs
-
-014-3,0,0,0,0|monster|Bat|1017,50,0ms,0ms
diff --git a/world/map/npc/014-3/_nodes.txt b/world/map/npc/014-3/_nodes.txt
deleted file mode 100644
index 2ebc3af1..00000000
--- a/world/map/npc/014-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/014-3/_warps.txt b/world/map/npc/014-3/_warps.txt
deleted file mode 100644
index 7ba0d293..00000000
--- a/world/map/npc/014-3/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Cave warps
-
-014-3,35,32|warp|-1,-1,014-1,76,39
-014-3,57,173|warp|0,-1,014-1,93,59
-014-3,91,108|warp|-1,-1,014-3,103,53
-014-3,103,54|warp|-1,-1,014-3,91,109
diff --git a/world/map/npc/014-3/mapflags.txt b/world/map/npc/014-3/mapflags.txt
deleted file mode 100644
index eee5f6a9..00000000
--- a/world/map/npc/014-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-014-3|mapflag|resave|014-1,89,102
diff --git a/world/map/npc/015-1/_import.txt b/world/map/npc/015-1/_import.txt
deleted file mode 100644
index a376d93a..00000000
--- a/world/map/npc/015-1/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 015-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 015-1
-npc: npc/015-1/_mobs.txt
-npc: npc/015-1/_nodes.txt
-npc: npc/015-1/_warps.txt
-npc: npc/015-1/alice.txt
-npc: npc/015-1/barrier.txt
-npc: npc/015-1/mapflags.txt
-npc: npc/015-1/sword.txt
diff --git a/world/map/npc/015-1/_mobs.txt b/world/map/npc/015-1/_mobs.txt
deleted file mode 100644
index e012a95c..00000000
--- a/world/map/npc/015-1/_mobs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-015-1,0,0,0,0|monster|CloverPatch|1037,2,100000ms,1000ms
-015-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
-015-1,0,0,0,0|monster|Squirrel|1038,30,20ms,10ms
-015-1,0,0,0,0|monster|LogHead|1025,40,0ms,0ms
-015-1,0,0,0,0|monster|SpikyMushroom|1019,20,0ms,0ms
-015-1,0,0,0,0|monster|PinkFlower|1014,20,0ms,0ms
-015-1,0,0,0,0|monster|GambogePlant|1031,5,0ms,0ms
-015-1,0,0,0,0|monster|AlizarinPlant|1032,5,0ms,0ms
-015-1,0,0,0,0|monster|Silkworm|1035,7,15000ms,7000ms
-015-1,0,0,0,0|monster|MauvePlant|1029,4,270000ms,180000ms
diff --git a/world/map/npc/015-1/_nodes.txt b/world/map/npc/015-1/_nodes.txt
deleted file mode 100644
index 12c08221..00000000
--- a/world/map/npc/015-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-// (no nodes)
diff --git a/world/map/npc/015-1/_warps.txt b/world/map/npc/015-1/_warps.txt
deleted file mode 100644
index 3eb40d73..00000000
--- a/world/map/npc/015-1/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-015-1,93,55|warp|-1,0,010-1,14,54
-015-1,59,31|warp|-1,-1,015-3,31,42
-015-1,59,101|warp|2,-1,025-1,89,20
diff --git a/world/map/npc/015-1/alice.txt b/world/map/npc/015-1/alice.txt
deleted file mode 100644
index 3e1d82de..00000000
--- a/world/map/npc/015-1/alice.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-// A herb collector giving the players some hints about finding and brewing
-// herbs.
-
-015-1,52,53,0|script|Alice|106
-{
- set @cat, ((Katze & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- set @Hiss, ((Katze & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
-
- mes "[Alice]";
- mes "\"Greeting, fellow wanderer.";
- mes "Are you collecting herbs, too?\"";
- next;
- if (@Hiss == 2 && @cat < 4)
- menu
- "Yes, sure.", L_findmany,
- "Herbs?", L_herbs,
- "Nope, just enjoying the scenery.", L_Close,
- "I saw the cat, but it doesn't like me.", L_cat;
- if (@Hiss == 1)
- menu
- "Yes, sure.", L_findmany,
- "Herbs?", L_herbs,
- "Nope, just enjoying the scenery.", L_Close,
- "There is a monster in that cave!", L_cave;
- menu
- "Yes, sure.", L_findmany,
- "Herbs?", L_herbs,
- "Nope, just enjoying the scenery.", L_Close;
-
-L_findmany:
- mes "[Alice]";
- mes "\"And? Did you already find a lot?\"";
- next;
- menu
- "Yes, I already got plenty of them.", L_plenty,
- "No, I am out of luck.", L_Next;
-
-L_Next:
- mes "[Alice]";
- mes "\"Oooh, how sad. Let me give you a little tip:";
- mes "Herbs are often growing in places where they can't be spotted that easily. Don't forget to look behind the trees, too.\"";
- goto L_Close;
-
-L_plenty:
- mes "[Alice]";
- mes "\"That's great.";
- mes "When you are not that good at brewing you should consider letting someone else brew them for you.";
- mes "Good brewers get much better healing potions from them.";
- mes "The most important characteristic of a good brewer is intelligence.\"";
- goto L_Close;
-
-L_herbs:
- mes "[Alice]";
- mes "\"Yes, some powerful magic herbs started to grow around here and a mile to the southeast.";
- mes "Caul in Hurnscald found a way to brew magical healing potions from them, and I have heard a rumor that they may also be good for making colors.";
- mes "Now everyone is running around in the woods to harvest the herbs.\"";
- goto L_Close;
-
-L_cave:
- mes "[Alice]";
- mes "\"Haha, that is no monster! It's just a sweet little cat.\"";
- next;
- menu
- "But it wanted to kill me!", L_Next1,
- "A cat!? I'll go and kill it!", L_Next1;
-
-L_Next1:
- mes "[Alice]";
- mes "\"No no, I'm sure it was only frightened. It gets upset when you've got clothes or weapons on you.\"";
- next;
- menu
- "Ok, let's try it without clothes then", L_Next2,
- "What a stupid cat!", L_Next2;
-
-L_Next2:
- mes "[Alice]";
- mes "\"Please don't do her any harm. See you later!\"";
- goto L_Close;
-
-L_cat:
- mes "[Alice]";
- mes "\"You would have to tame her first. Maybe she's thirsty or hungry. Cats also tend to get bored without something to play with. Good luck!\"";
- next;
- menu
- "Thank you so much!", L_Close,
- "Are you crazy? Taming a cat?", L_Next3;
-
-L_Next3:
- mes "[Alice]";
- mes "\"Well, it's up to you.\"";
- goto L_Close;
-
-L_Close:
- set @cat, 0;
- set @Hiss, 0;
- close;
-}
diff --git a/world/map/npc/015-1/barrier.txt b/world/map/npc/015-1/barrier.txt
deleted file mode 100644
index ad20257d..00000000
--- a/world/map/npc/015-1/barrier.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This barrier is for checking whether the player went outside after
-// progressing with the cat quest.
-
-015-1,59,32,0|script|#CatOutsideBarrier|32767,1,1
-{
- set @catNeedsAlone, 0;
- end;
-}
diff --git a/world/map/npc/015-1/mapflags.txt b/world/map/npc/015-1/mapflags.txt
deleted file mode 100644
index fbf1ed0d..00000000
--- a/world/map/npc/015-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-015-1|mapflag|resave|010-1,27,97
-015-1|mapflag|outside
diff --git a/world/map/npc/015-1/sword.txt b/world/map/npc/015-1/sword.txt
deleted file mode 100644
index be23e23a..00000000
--- a/world/map/npc/015-1/sword.txt
+++ /dev/null
@@ -1,324 +0,0 @@
-015-1,97,97,0|script|#MagicSword#_M|400
-{
- if (getskilllv(SKILL_MAGIC))
- goto L_message;
- mes "It appears to be an ordinary sword.";
- close;
-
-L_message:
- set @Q_MASK, (NIBBLE_6_MASK | NIBBLE_7_MASK);
- set @Q_SHIFT, NIBBLE_6_SHIFT;
- set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
-
- // Set up SkillUp function
- set @SUP_id, SKILL_MAGIC_WAR;
- set @SUP_name$, "War Magic";
-
- set @STATUS_INITIAL, 0;
- set @STATUS_LEARNED_FLAREDART, 1;
- set @STATUS_LEARNED_MAGICBLADE, 2;
- set @STATUS_LEVEL2, 3;
- set @STATUS_W11, 4;
- set @STATUS_W12, 5;
- set @STATUS_W11_12, 6;
- set @STATUS_L2_ALLSPELLS, 7;
-
- if (@Q_status == @STATUS_INITIAL) goto L_Initial;
- if (@Q_status == @STATUS_LEARNED_FLAREDART) goto L_FlareStage;
- if (@Q_status == @STATUS_LEARNED_MAGICBLADE) goto L_MagicBladeStage;
- if (@Q_status == @STATUS_LEVEL2) goto L_L2_W12;
- if (@Q_status == @STATUS_W11) goto L_L2_W12;
- if (@Q_status == @STATUS_W12) goto L_L2_almost_done;
- if (@Q_status == @STATUS_W11_12) goto L_L2_W10;
-
- mes "[Mystic Sword]";
- mes "\"I have taught thee all I can teach for now.\"";
- close;
-
-L_Initial:
- mes "[Mystic Sword]";
- mes "At this point, the river deepens, slowing down to a leisurely pace. In its center you notice an unusual stone, waves breaking around it.";
- mes "Sticking out of the rock is a sword hilt.";
- next;
- mes "[Mystic Sword]";
- mes "Suddenly, you hear a strange, metallic voice in your head, the voice of a woman.";
- mes "\"A blissful day to thee, mortal!\"";
- next;
- mes "[Mystic Sword]";
- mes "\"What is it is that brings thee to this place?\"";
- next;
- menu
- "Who are you?", L_noq,
- "Nothing in particular.", L_Initial_nothing,
- "I was just exploring...", L_Initial_nothing,
- "I am trying to learn magic!", L_Initial_learn;
-
-L_noq:
- mes "[Mystic Sword]";
- mes "The voice sounds slightly amused.";
- mes "\"How sad to hear how manners have degenerated in recent centuries. Farewell for now, dear mortal.\"";
- close;
-
-L_Initial_nothing:
- mes "[Mystic Sword]";
- mes "\"Then I wish thee well in thy travels, wanderer!\"";
- close;
-
-L_Initial_learn:
- mes "[Mystic Sword]";
- mes "\"Magic? Unless I am very mistaken thou already possessest some magic. Yet perhaps I can grant thee some slight aid by providing a magical invocation?\"";
- next;
- mes "[Mystic Sword]";
- mes "\"Alas, my nature is not quite conductive for spells of healing or protection, though I can bestow upon thee the powers for a rather more martial kind of power.\"";
- next;
- menu
- "I am not interested in that.", L_Farewell,
- "It might be good for me to learn that.", L_Next,
- "I am quite interested.", L_Next;
-
-L_Next:
- mes "[Mystic Sword]";
- mes "\"Why is it that thou seekest this power?\"";
- next;
- menu
- "Never mind.", L_Farewell,
- "To become stronger!", L_Initial_selfish,
- "To kill!", L_Initial_selfish,
- "I don't know yet...", L_Initial_dontknow,
- "To protect the ones I love!", L_Initial_protect;
-
-L_Initial_selfish:
- mes "[Mystic Sword]";
- mes "\"Please return when thou art taking thy quest for magic a little more seriously.\"";
- close;
-
-L_Initial_dontknow:
- mes "[Mystic Sword]";
- mes "\"A fair and honest thought at so early a point in thine quest.\"";
- goto L_Initial_ok;
-
-L_Initial_protect:
- mes "[Mystic Sword]";
- mes "\"Quite a high and laundable goal thou hast chosen for thyself! I do hope that thou canst live up to it.\"";
- goto L_Initial_ok;
-
-L_Initial_ok:
- mes "\"Hark, then, mortal! For I shall bestow upon thee the secret of the flare dart spell!\"";
- next;
- mes "[Mystic Sword]";
- mes "\"Oh, my apologies – that was a little overly dramatic. But I do not get to talk to thy kin anymore all that often.\"";
- next;
- mes "[Mystic Sword]";
- mes "\"For the flare dart spell throw a handful of sulphur powder up into the air, and say, '" + get(.invocation$, "flare-dart") + "'.\"";
- set @Q_status, @STATUS_LEARNED_FLAREDART;
- callsub S_update_var;
- next;
- mes "[Mystic Sword]";
- mes "\"From then on, thou canst shoot fiery missiles from thy fingers, for a limited time.\"";
- next;
- mes "[Mystic Sword]";
- mes "\"Use it wisely, mortal!.\"";
- next;
- goto L_Farewell;
-
-L_FlareStage:
- menu
- "Uhm... Hello, Sword?", L_FlareStage_hello,
- "Can you teach me more magic?", L_FlareStage_impolite,
- "Where can I get sulphur powder?", L_FlareStage_impolite;
-
-L_FlareStage_impolite:
- mes "[Mystic Sword]";
- mes "You hear a metallic chime in your head. After a second, you come to the conclusion that it was probably the sword sighing.";
- mes "\"Greetings to thee, too, mortal, and farewell until thou hast learned some proper manners.\"";
- close;
-
-L_FlareStage_hello:
- mes "[Mystic Sword]";
- mes "\"Well met once more, mortal! What brings thee here?\"";
- next;
- menu
- "Can you teach me more magic?", L_FlareStage_moremagic,
- "Where can I find sulphur powder?", L_FlareStage_sulphur,
- "Farewell!", L_Farewell;
-
-L_FlareStage_moremagic:
- mes "[Mystic Sword]";
- mes "\"I can indeed! But first I must see if thou art worthy. Find my brother, and talk to him! If thou canst find him, he shall teach thee another spell.\"";
- next;
- goto L_Farewell;
-
-L_FlareStage_sulphur:
- mes "[Mystic Sword]";
- mes "\"I do not know, though I suggest to seek out a local alchemist, if there is any.\"";
- next;
- goto L_Farewell;
-
-L_MagicBladeStage:
- mes "[Mystic Sword]";
- mes "\"Welcome back! Thou hast now learned two basic spells of War magic.\"";
- next;
- mes "[Mystic Sword]";
- mes "\"Dost thou wish to continue thy pursuits of this school of magic?\"";
- next;
- menu
- "No.", L_Farewell,
- "Yes.", L_Levelup2_yes;
-
-L_Levelup2_yes:
- mes "[Mystic Sword]";
- mes "\"Beware of what thou wishest for, mortal...\"";
- next;
-
- if (!MPQUEST)
- goto L_Lvl2_must_reg;
- if (MPQUEST && (Mobpt < 1000))
- goto L_Lvl2_must_practice;
-
- mes "[Mystic Sword]";
- mes "\"Thou hast collected " + Mobpt + " Monster Points. For one thousand of them, I shall admit thee to the school of war magic.\"";
- next;
- menu
- "OK!", L_Next1,
- "No... never mind.", L_Farewell;
-
-L_Next1:
- set Mobpt, Mobpt - 1000;
-
- mes "[Mystic Sword]";
- mes "The sword begins to chant in your head!";
- mes "\"Lords of Thunder, Fire, Rage!\"";
- mes "\"Grant thy powers to this mage,\"";
- mes "\"Rising with thy dreadful roar,\"";
- mes "\"Answer to their call to War!\"";
- next;
- mes "[Mystic Sword]";
- mes "Your heart starts pounding, and suddenly you can hear the sound of drums in your head.";
- mes "You smell something metallic...";
- next;
- mes "[Mystic Sword]";
- mes "The sensation and the noises vanish as quickly as they came.";
-
- set @Q_status, @STATUS_LEVEL2;
- callsub S_update_var;
-
- set @SUP_xp, 5000;
- set @SUP_lvl, 2;
- callfunc "SkillUp";
- next;
-
- mes "[Mystic Sword]";
- mes "\"Thou hast now taken thy first true step down the path of war magic.\"";
- if (getskilllv(SKILL_MAGIC) < 2)
- mes "\"When thou returnest, I shall teach thee another spell, but beware: thou must increase thy overall grasp of magic before thou canst wield it!\"";
- next;
- goto L_Farewell;
-
-L_Lvl2_must_reg:
- mes "[Mystic Sword]";
- mes "\"To learn further magic, thou must advance in the school of war magic. I shall grant thee this advance if thou provest thy worthiness as a warrior.\"";
- next;
- mes "[Mystic Sword]";
- mes "\"Travel to the city of Tulimshar, and talk to Aidan. Then, collect one thousand Monster Points and return to me.\"";
- next;
- goto L_Farewell;
-
-L_Lvl2_must_practice:
- mes "[Mystic Sword]";
- mes "\"To advance thy magical powers, I must admit thee to the school of war magic. Prove to me that thou art a worthy warrior by collecting one thousand Monster Points, and return.\"";
- next;
- goto L_Farewell;
-
-L_L2_W12:
- mes "[Mystic Sword]";
- mes "\"Welcome back, traveler! Hast thou returned to advance in thy quest for magic?\"";
- next;
- menu
- "No.", L_Farewell,
- "Yes.", L_Next2;
-
-L_Next2:
- mes "[Mystic Sword]";
- mes "\"Very well. I shall teach thee another spell, if thou provest thy progress by sacrificing another five thousand monster points.\"";
- next;
- menu
- "No, I don't want that.", L_Farewell,
- "So be it.", L_Next3;
-
-L_Next3:
- if (Mobpt < 5000)
- goto L_lacking_mobpoints;
- mes "[Mystic Sword]";
- mes "\"Indeed thou art worthy. The next spell I shall teach thee will enchant thy knuckles to turn them into powerful weapons; the component is a mere beer.\"";
- mes "[1000 experience points]";
- set Mobpt, Mobpt - 5000;
- getexp 1000, 0;
- set @Q_status, @Q_status + 2;
- callsub S_update_var;
- next;
- mes "[Mystic Sword]";
- mes "\"Speak '" + get(.invocation$, "magic-knuckles") + "' and take a glass of beer and drink it, without ever taking it off thy lips. This will harden and enchant thy fists, turning them into powerful weapons.\"";
- close;
-
-L_L2_almost_done:
- mes "[Mystic Sword]";
- mes "\"Greetings once more, traveler! I have another spell I wish to teach thee, but first thou must learn my brother's arrow spell.\"";
- close;
-
-L_L2_W10:
- mes "[Mystic Sword]";
- mes "\"Welcome back!\"";
- next;
- mes "[Mystic Sword]";
- mes "\"I shall now teach thee the final spell of this level of war magic. For further spells thou wilt have to increase thy magical powers more.\"";
- next;
- mes "[Mystic Sword]";
- mes "\"For this spell, I ask that thou bringest a lump of iron ore. Thou must also sacrifice ten thousand monster points.\"";
- next;
- menu
- "OK.", L_Next4,
- "No way.", L_Farewell;
-
-L_Next4:
- if (countitem("IronOre") < 1)
- goto L_no_ore;
- if (MPQUEST && (Mobpt < 10000))
- goto L_lacking_mobpoints;
-
- mes "[Mystic Sword]";
- mes "\"Raise up the ore, mortal!\"";
- mes "As you do so, the ore begins to crumble, leaving only iron powder behind.";
- mes "[1000 experience points]";
- set Mobpt, Mobpt - 10000;
- getexp 1000, 0;
- delitem "IronOre", 1;
- getitem "IronPowder", 5;
- set @Q_status, @STATUS_L2_ALLSPELLS;
- callsub S_update_var;
- next;
- mes "[Mystic Sword]";
- mes "\"This powder thou shalst need to cast the lightning spell. Throw it up into the air and shout '" + get(.invocation$, "lightning-strike") + "', and smite thine enemies with lightning.\"";
- next;
- goto L_Farewell;
-
-L_no_ore:
- mes "[Mystic Sword]";
- mes "\"Thou dost appear to lack ore. We cannot continue; please fare well and return swiftly!\"";
- close;
-
-L_Farewell:
- mes "[Mystic Sword]";
- mes "\"Then I bid thee farewell for now!\"";
- close;
-
-L_lacking_mobpoints:
- mes "[Mystic Sword]";
- mes "\"Thou dost not have enough monster points to prove thy worthiness. Return when thou hast slain more monsters!\"";
- close;
-
-S_update_var:
- set QUEST_MAGIC,
- (QUEST_MAGIC & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/015-3/_import.txt b/world/map/npc/015-3/_import.txt
deleted file mode 100644
index d1b95191..00000000
--- a/world/map/npc/015-3/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 015-3: Cat's Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 015-3
-npc: npc/015-3/_mobs.txt
-npc: npc/015-3/_nodes.txt
-npc: npc/015-3/_warps.txt
-npc: npc/015-3/barrier.txt
-npc: npc/015-3/katze.txt
-npc: npc/015-3/mapflags.txt
-npc: npc/015-3/pot.txt
diff --git a/world/map/npc/015-3/_mobs.txt b/world/map/npc/015-3/_mobs.txt
deleted file mode 100644
index faab0b97..00000000
--- a/world/map/npc/015-3/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cat's Cave mobs
-
-015-3,22,25,2,4|monster|Bat|1017,2,100000ms,30000ms
-015-3,29,31,2,2|monster|Maggot|1002,2,100000ms,30000ms
-015-3,23,19,1,1|monster|Maggot|1002,1,100000ms,30000ms
-015-3,40,19,1,1|monster|Spider|1012,1,100000ms,30000ms
diff --git a/world/map/npc/015-3/_nodes.txt b/world/map/npc/015-3/_nodes.txt
deleted file mode 100644
index e37c6a3c..00000000
--- a/world/map/npc/015-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cat's Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/015-3/_warps.txt b/world/map/npc/015-3/_warps.txt
deleted file mode 100644
index 2fd9fe85..00000000
--- a/world/map/npc/015-3/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cat's Cave warps
-
-015-3,31,43|warp|-1,-1,015-1,59,32
diff --git a/world/map/npc/015-3/barrier.txt b/world/map/npc/015-3/barrier.txt
deleted file mode 100644
index f65b6c85..00000000
--- a/world/map/npc/015-3/barrier.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// You can only enter the cat cave naked, otherwise the cat's reaction scares
-// you away. You can also get in while wearing the cat ears.
-
-015-3,31,42,0|script|#CatCaveBarrier|45,1,1
-{
- set @Hiss, ((Katze & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
- if (getequipid(equip_head) != 1217
- && (getequipid(equip_head) > 0
- || getequipid(equip_shield) > 0
- || getequipid(equip_hand1) > 0
- || getequipid(equip_hand2) > 0
- || getequipid(equip_gloves) > 0
- || getequipid(equip_shoes) > 0
- || getequipid(equip_misc1) > 0
- || getequipid(equip_misc2) > 0
- || getequipid(equip_torso) > 0
- || getequipid(equip_legs) > 0))
- goto L_Not_Naked;
-
- if (@Hiss != 2)
- mes "\"Hissss...\"";
- set @Hiss, 2;
- callsub S_Update_Hiss;
- goto L_Close;
-
-L_Not_Naked:
- warp "015-1", 60, 32;
- set @Hiss, 1;
- callsub S_Update_Hiss;
- mes "\"GRAAUWL! Hissss...\"";
- mes "Scared of what you hear, you flee back outside.";
- goto L_Close;
-
-L_Close:
- set @Hiss, 0;
- close;
-
-S_Update_Hiss:
- set Katze, (Katze & ~(NIBBLE_1_MASK)) | (@Hiss << NIBBLE_1_SHIFT);
- return;
-}
diff --git a/world/map/npc/015-3/katze.txt b/world/map/npc/015-3/katze.txt
deleted file mode 100644
index 15dea917..00000000
--- a/world/map/npc/015-3/katze.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-// Katze doesn't like the player at first, needs following:
-//
-// 1. Some milk
-// 2. Some steak or chicken leg
-// 3. Some fur
-//
-// Now the cat starts to speak, still needs:
-//
-// 4. Some wood for scratching
-// 5. Some stuff for making somethings nice for the player:
-//
-// * 2 Snake skins
-// * 2 Snake tongues
-// * 2 Maggot slimes
-// * 2 White furs
-// * 2 Hard spikes
-// * 2 Tiny potions
-
-015-3,32,25,0|script|Katze|172
-{
- set @cat, ((Katze & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
-
- if (@cat == 1 && @catNeedsAlone == 0) goto L_NeedsFood;
- if (@cat == 1) goto L_NeedsFood;
- if (@cat == 2 && @catNeedsAlone == 0) goto L_NeedsFur;
- if (@cat == 2) goto L_NeedsFur;
- if (@cat == 3) goto L_NeedsWood;
- if (@cat == 4 && @catNeedsAlone == 0) goto L_NeedsStuff;
- if (@cat == 4) goto L_PreNeedsStuff;
- if (@cat == 5) goto L_NeedsStuff2;
- if (@cat == 6 && @catNeedsAlone == 0) goto L_GainEars;
- if (@cat == 6) goto L_PreGainEars;
- if (@cat == 7) goto L_Finished;
- goto L_NeedsMilk;
-
-L_NeedsMilk:
- mes "[Katze]";
- mes "\"Meow.\"";
- next;
- menu "Throw a stone at the cat.", L_ThrowStone,
- "Leave the cat alone.", L_Close;
-
-L_ThrowStone:
- set @cat, 0;
- callsub S_Update_Katze;
- heal ((MaxHp/100) * -30), 0;
- warp "015-1", 60, 32;
- mes "\"GRAAUWL! Hissss...\"";
- mes "Yikes, the cat attacked you! Your whole body is scratched. Maybe throwing a stone wasn't such a great idea...";
- goto L_Close;
-
-L_NeedsFood:
- mes "[Katze]";
- mes "\"Meow, prrrr...\"";
- next;
- menu
- "Throw a stone at the cat.", L_ThrowStone,
- "Leave the cat alone.", L_Close;
-
-L_NeedsFur:
- mes "[Katze]";
- mes "\"Prrr. Meow, prrr...\"";
- next;
- if (countitem("WhiteFur") > 0)
- menu
- "Make funny movements with the fur near the ground.", L_MoveFur,
- "Throw a stone at the cat.", L_ThrowStone,
- "Leave the cat alone.", L_Close;
- if (countitem("WhiteFur") == 0)
- menu
- "Throw a stone at the cat.", L_ThrowStone,
- "Leave the cat alone.", L_Close;
- goto L_Close;
-
-L_MoveFur:
- delitem "WhiteFur", 1;
- set @cat, 3;
- callsub S_Update_Katze;
- mes "The cat jumps at the fur! You quickly let go of it. The cat happily returns to its spot, carrying the fur in its mouth.";
- next;
- mes "The cat drops the fur and looks at you with half opened eyes. Suddenly she starts talking, and says: \"That was very kind of you.\" She seems to be smiling.";
- goto L_Close;
-
-L_NeedsWood:
- mes "[Katze]";
- mes "\"Prrrr, now I'd like something to sharpen my claws on.\"";
- next;
-
- if (countitem("RawLog") > 0)
- menu
- "Want this piece of wood?", L_GiveWood,
- "Ok, see you later.", L_Close;
- goto L_Close;
-
-L_GiveWood:
- mes "[Katze]";
- mes "\"Sure! Please put it next to the pot.\"";
- goto L_Close;
-
-L_PreNeedsStuff:
- mes "The cat is still eyeing the piece of wood. She probably needs to be left alone for a bit again.";
- goto L_Close;
-
-L_NeedsStuff:
- set @cat, 5;
- callsub S_Update_Katze;
- mes "[Katze]";
- mes "\"You've been really kind to me. I can make you something nice, but I will need";
- mes "2 Snake Skins,";
- mes "2 Snake Tongues,";
- mes "2 Maggot Slimes,";
- mes "2 White Furs,";
- mes "2 Hard Spikes and";
- mes "2 Tiny Healing Potions.\"";
- goto L_Close;
-
-L_NeedsStuff2:
- mes "[Katze]";
- mes "\"Did you bring what I asked you for?\"";
- next;
- menu
- "Look here.", L_CatChecksStuff,
- "What do you need again?", L_WhatsNeeded,
- "No, I haven't got everything yet.", L_Close;
-
-L_WhatsNeeded:
- mes "[Katze]";
- mes "\"Actually, you should have remembered yourself.\"";
- next;
- menu
- "Please tell me.", L_Please,
- "Never mind.", L_Close;
-
-L_Please:
- mes "[Katze]";
- mes "\"Alright... [the cat glares at you] it was";
- mes "2 Snake Skins,";
- mes "2 Snake Tongues,";
- mes "2 Maggot Slimes,";
- mes "2 White Furs,";
- mes "2 Hard Spikes and";
- mes "2 Tiny Healing Potions.\"";
- goto L_Close;
-
-L_CatChecksStuff:
- if (countitem("SnakeSkin") > 1
- && countitem("SnakeTongue") > 1
- && countitem("MaggotSlime") > 1
- && countitem("WhiteFur") > 1
- && countitem("HardSpike") > 1
- && countitem("TinyHealingPotion") > 1)
- goto L_GiveStuff;
- mes "[Katze]";
- mes "\"You don't seem to have everything yet. Come back later when you do.\"";
- goto L_Close;
-
-L_GiveStuff:
- delitem "SnakeSkin", 2;
- delitem "SnakeTongue", 2;
- delitem "MaggotSlime", 2;
- delitem "WhiteFur", 2;
- delitem "HardSpike", 2;
- delitem "TinyHealingPotion", 2;
- set @cat, 6;
- callsub S_Update_Katze;
- set @catNeedsAlone, 1;
- mes "[Katze]";
- mes "\"Nicely done! Now leave me alone for a while, I need some time to prepare your present.\"";
- goto L_Close;
-
-L_PreGainEars:
- mes "[Katze]";
- mes "\"Please leave me alone for a while, so I can prepare your present.\"";
- goto L_Close;
-
-L_GainEars:
- getitem "CatEars", 1;
- set @xpval, 5000;
- getexp @xpval, 0;
- set @cat, 7;
- callsub S_Update_Katze;
- mes "[Katze]";
- mes "\"Look what I made for you! It makes you look a bit like me! Maybe it will give you a feeling of what it is like to be a cat.\"";
- mes "The cat winks at you.";
- mes "[You gain " + @xpval + " experience points]";
- goto L_Close;
-
-L_Finished:
- mes "[Katze]";
- if (getequipid(equip_head) == 1217) // Cat ears
- mes "\"Meow, fellow cat.\"";
- if (getequipid(equip_head) != 1217)
- mes "\"Meow. Lost your ears?\"";
- goto L_Close;
-
-L_Close:
- set @cat, 0;
- close;
-
-S_Update_Katze:
- set Katze, (Katze & ~(NIBBLE_0_MASK)) | (@cat << NIBBLE_0_SHIFT);
- return;
-}
diff --git a/world/map/npc/015-3/mapflags.txt b/world/map/npc/015-3/mapflags.txt
deleted file mode 100644
index 04397e31..00000000
--- a/world/map/npc/015-3/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-015-3|mapflag|nosave|015-1,59,32
-015-3|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/015-3/pot.txt b/world/map/npc/015-3/pot.txt
deleted file mode 100644
index 523be319..00000000
--- a/world/map/npc/015-3/pot.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-// The pot where the player can deposit stuff for the cat.
-
-015-3,37,29,0|script|Pot|400
-{
- set @cat, ((Katze & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
-
- if (@cat > 0)
- mes "It's that old pot again.";
- if (@cat == 0)
- mes "It's a pot.";
- next;
-
- if (@cat == 1 && @catNeedsAlone == 0)
- goto L_NeedsFood;
- if (@cat == 1)
- goto L_HasMilk;
- if (@cat == 2 && @catNeedsAlone == 0)
- goto L_NeedsFur;
- if (@cat == 2)
- goto L_HasFood;
- if (@cat == 3)
- goto L_NeedsWood;
- if (@cat == 4 && @catNeedsAlone == 1)
- goto L_HasWood;
- if (@cat >= 4)
- goto L_Close;
- goto L_NeedsMilk;
-
-L_NeedsMilk:
- if (countitem("Milk") > 0)
- menu
- "Pour in some milk.", L_GiveMilk,
- "Leave it alone.", L_Close;
- goto L_Close;
-
-L_GiveMilk:
- delitem "Milk", 1;
- set @cat, 1;
- callsub S_Update_Katze;
- set @catNeedsAlone, 1;
- goto L_Close;
-
-L_HasMilk:
- mes "There is milk in it.";
- goto L_Close;
-
-L_NeedsFood:
- mes "The milk is gone!";
- next;
-
- if (countitem("ChickenLeg") > 0 && countitem("Steak") > 0)
- menu
- "Put in a chicken leg.", L_GiveChicken,
- "Put in a steak.", L_GiveSteak,
- "Leave it alone.", L_Close;
- if (countitem("ChickenLeg") > 0 && countitem("Steak") == 0)
- menu
- "Put in a chicken leg.", L_GiveChicken,
- "Leave it alone.", L_Close;
- if (countitem("ChickenLeg") == 0 && countitem("Steak") > 0)
- menu
- "Put in a steak.", L_GiveSteak,
- "Leave it alone.", L_Close;
- goto L_Close;
-
-L_GiveChicken:
- delitem "ChickenLeg", 1;
- set @cat, 2;
- callsub S_Update_Katze;
- set @catNeedsAlone, 1;
- goto L_Close;
-
-L_GiveSteak:
- delitem "Steak", 1;
- set @cat, 2;
- callsub S_Update_Katze;
- set @catNeedsAlone, 1;
- goto L_Close;
-
-L_HasFood:
- mes "There is some food in it.";
- goto L_Close;
-
-L_NeedsFur:
- mes "And it's empty!";
- next;
-
- if (countitem("WhiteFur") > 0)
- menu
- "Put a white fur next to the pot.", L_GiveFur,
- "Leave it alone.", L_Close;
- goto L_Close;
-
-L_GiveFur:
- mes "You put down the fur, but the cat doesn't seem to take any notice. Maybe there's something else you could do. You pick the fur up again.";
- goto L_Close;
-
-L_NeedsWood:
- if (countitem("RawLog") > 0)
- menu
- "Put a wooden log next to the pot.", L_GiveWood,
- "Leave it alone.", L_Close;
- goto L_Close;
-
-L_GiveWood:
- delitem "RawLog", 1;
- set @cat, 4;
- callsub S_Update_Katze;
- set @catNeedsAlone, 1;
- mes "You put the wooden log next to the pot. The cat eyes it suspiciously, but remains on her spot.";
- goto L_Close;
-
-L_HasWood:
- mes "A wooden log is patiently lying next to it.";
- goto L_Close;
-
-L_Close:
- set @cat, 0;
- close;
-
-S_Update_Katze:
- set Katze, (Katze & ~(NIBBLE_0_MASK)) | (@cat << NIBBLE_0_SHIFT);
- return;
-}
diff --git a/world/map/npc/016-1/_import.txt b/world/map/npc/016-1/_import.txt
deleted file mode 100644
index 45ca5d79..00000000
--- a/world/map/npc/016-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 016-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 016-1
-npc: npc/016-1/_mobs.txt
-npc: npc/016-1/_nodes.txt
-npc: npc/016-1/_warps.txt
-npc: npc/016-1/gwendolyn.txt
-npc: npc/016-1/mapflags.txt
-npc: npc/016-1/rossy.txt
diff --git a/world/map/npc/016-1/_mobs.txt b/world/map/npc/016-1/_mobs.txt
deleted file mode 100644
index f87db1cc..00000000
--- a/world/map/npc/016-1/_mobs.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-016-1,0,0,0,0|monster|CloverPatch|1037,2,100000ms,30000ms
-016-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
-016-1,0,0,0,0|monster|Squirrel|1038,30,20ms,10ms
-016-1,0,0,0,0|monster|Mouboo|1028,5,0ms,0ms
-016-1,0,0,0,0|monster|MauvePlant|1029,3,0ms,0ms
-016-1,0,0,0,0|monster|MauvePlant|1029,4,270000ms,180000ms
-016-1,0,0,0,0|monster|CobaltPlant|1030,3,0ms,0ms
-016-1,0,0,0,0|monster|MauvePlant|1029,4,270000ms,180000ms
-016-1,0,0,0,0|monster|Silkworm|1035,7,150000ms,7000ms
diff --git a/world/map/npc/016-1/_nodes.txt b/world/map/npc/016-1/_nodes.txt
deleted file mode 100644
index 12c08221..00000000
--- a/world/map/npc/016-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-// (no nodes)
diff --git a/world/map/npc/016-1/_warps.txt b/world/map/npc/016-1/_warps.txt
deleted file mode 100644
index 2a23d931..00000000
--- a/world/map/npc/016-1/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-016-1,56,18|warp|1,-1,010-1,56,104
-016-1,20,53|warp|-1,1,025-1,129,58
diff --git a/world/map/npc/016-1/gwendolyn.txt b/world/map/npc/016-1/gwendolyn.txt
deleted file mode 100644
index a257e905..00000000
--- a/world/map/npc/016-1/gwendolyn.txt
+++ /dev/null
@@ -1,592 +0,0 @@
-// Authors: PjotrOrial, Jenalya
-// This script is for gaining the skill "Hawk's Eye"
-//
-// Needed: Forest Bow Quest
-//
-// Quest1: Proving Dexterity
-// Needed: 18 cave snake eggs, 15 snake eggs, 5 mountain snake eggs, 2 grass snake eggs
-// Reward: 10000 Exp
-// Quest2: Hitting the Target
-// Needed: win the minigame and hit the target depending on the wind, dex and agi
-// Reward: Skill Hawk's Eye
-//
-// Variables used: QUEST_Forestbow_state, nibble 6
-//
-// This nibble will have these values:
-// 0, state0: never talked to Gwendolyn
-// 1, state1: talked with her, but not a student yet
-// 2, state2: student, but no bow (from alan of course)
-// 3, state3: heard first lesson, she is waiting for the snake eggs
-// 4, state4: quest done, but too young, or having the ability for skills not learned
-// 5, state5: you are ready to do the targeting minigame
-// 6, state6: you did the minigame
-
-016-1,91,54,0|script|Gwendolyn|182
-{
- // schoolfee in gp
- set @SCHOOLFEE, 25000;
- // how many eggs do you need of each kind?
- set @CAVE_EGGS_AMOUNT, 18;
- set @SNAKE_EGGS_AMOUNT, 15;
- set @MOUNTAIN_EGGS_AMOUNT, 5;
- set @GRASS_EGGS_AMOUNT, 2;
- // experience for eggs
- set @QUEST_EGG_EXP, 10000;
- // The needed level for the minigame:
- set @BASELEVEL_GAME, 50;
- // experience gained for hitting the bullseye:
- set @QUEST_HAWK_EXP, 10000;
-
- set @Q_hawkseye_MASK, NIBBLE_6_MASK;
- set @Q_hawkseye_SHIFT, NIBBLE_6_SHIFT;
-
- set @Q_hawkseye, (QUEST_Forestbow_state & @Q_hawkseye_MASK) >> @Q_hawkseye_SHIFT;
-
- set @Q_forestbow_MASK, NIBBLE_0_MASK;
- set @Q_forestbow_SHIFT, NIBBLE_0_SHIFT;
-
- set @FORESTBOW, ((QUEST_Forestbow_state) & @Q_forestbow_MASK) >> @Q_forestbow_SHIFT;
-
- if (@Q_hawkseye == 6) goto L_state6;
- if (@Q_hawkseye == 5) goto L_state5;
- if (@Q_hawkseye == 4) goto L_state4;
- if (@Q_hawkseye == 3) goto L_state3;
- if (@Q_hawkseye == 2) goto L_state2;
- if (@Q_hawkseye == 1) goto L_state1;
-
- mes "[Gwendolyn Bowmaker]";
- mes "\"Hello, and welcome to my reopened School of Archery. My name is Gwendolyn Bowmaker; I'm the granddaughter of the famous Gwendolyn Bowmaker.\"";
- next;
- mes "\"As you surely know, she was the greatest archer this world had ever seen and opened this School of Archery together with her husband Simon Bowmaker. He was able to make the most well-balanced and the finest bows.\"";
- next;
- mes "\"I am now back from my training journey and want to continue with my family's tradition, to teach the Way of Archery.\"";
- next;
- mes "\"Are you interested in becoming a student of Archery?\"";
- next;
- menu
- "I want to become an archer!",L_fee,
- "I'm not interested right now.",L_no_student;
-
-L_fee:
- mes "[Gwendolyn Bowmaker]";
- mes "\"Wonderful! The school's fee is " + @SCHOOLFEE + ".\"";
- next;
- menu
- "That's a lot, but I think it will be worth it.",L_Next,
- "I'm not sure I want to spend that much.",L_no_student;
-
-L_Next:
- if (Zeny < @SCHOOLFEE)
- goto L_no_money;
-
- set Zeny, Zeny - @SCHOOLFEE;
- set @Q_hawkseye, 2;
- callsub S_Update_Var;
-
- mes "[Gwendolyn Bowmaker]";
- mes "\"The first thing you need is, obviously, a bow. You should not use any you come across, but a high quality one. I think it would be best to go to Alan in Hurnscald. He is my cousin, and knows how to make Forest Bows of exquisite quality. \"";
-
- if (countitem("ForestBow") < 1)
- goto L_Close;
- next;
- menu
- "I already have a Forest Bow.",L_state2;
-
-L_state2:
- mes "[Gwendolyn Bowmaker]";
- mes "\"Let me see your bow.\"";
- next;
-
- if (countitem("ForestBow") < 1)
- goto L_no_bow;
- if (@FORESTBOW < 5)
- goto L_bow_bought;
-
- set @Q_hawkseye, 3;
- callsub S_Update_Var;
- mes "[Gwendolyn Bowmaker]";
- mes "\"Very well, this looks fine. It is time for your first lesson. \"";
- next;
- goto L_lesson;
-
-L_lesson:
- mes "[Gwendolyn Bowmaker]";
- mes "\"The advantage of fighting with a ranged weapon is that you can stay out of the enemy's range. So there is no need to spend training on your resistibility.\"";
- next;
- mes "\"But remember: this makes you much more vulnerable, so watch your step and don't stumble into your enemy's attack.\"";
- next;
- mes "\"Also your strength doesn't matter much. You might be able to shoot a little harder, but not so much as to make it important.\"";
- next;
- mes "\"The most important thing to improve is your dexterity. When you use a bow, it is your dexterity that determines if you are able to hit your enemy where it hurts most.\"";
- next;
- mes "\"Also worth mentioning is how to improve your ability to shoot fast. You need to be agile to grab a new arrow from your quiver and aim for the next shot before your enemy has recovered from your last.\"";
- next;
- goto L_state3;
-
-L_state3:
- mes "[Gwendolyn Bowmaker]";
- mes "\"To demonstrate that you understood what I'm trying to teach you, you should go and fight against some snakes. To prove me your results, bring me " + @CAVE_EGGS_AMOUNT + " cave snake eggs, " + @SNAKE_EGGS_AMOUNT + " snake eggs, " + @MOUNTAIN_EGGS_AMOUNT + " mountain snake eggs and " + @GRASS_EGGS_AMOUNT + " grass snake eggs.\"";
- next;
- menu
- "Can you please repeat your lesson?",L_lesson,
- "I will go and hunt some snakes.",L_Close,
- "I have what you want.",L_Next1;
-
-L_Next1:
- if (countitem("CaveSnakeEgg") < @CAVE_EGGS_AMOUNT
- ||countitem("SnakeEgg") < @SNAKE_EGGS_AMOUNT
- ||countitem("MountainSnakeEgg") < @MOUNTAIN_EGGS_AMOUNT
- ||countitem("GrassSnakeEgg") < @GRASS_EGGS_AMOUNT)
- goto L_not_enough_eggs;
-
- delitem "CaveSnakeEgg", @CAVE_EGGS_AMOUNT;
- delitem "SnakeEgg", @SNAKE_EGGS_AMOUNT;
- delitem "MountainSnakeEgg", @MOUNTAIN_EGGS_AMOUNT;
- delitem "GrassSnakeEgg", @GRASS_EGGS_AMOUNT;
-
- getexp @QUEST_EGG_EXP, 0;
-
- set @Q_hawkseye, 4;
- callsub S_Update_Var;
-
- mes "[Gwendolyn Bowmaker]";
- mes "\"Very well. That will make a great meal.\"";
- next;
- goto L_state4;
-
-L_state4:
- if (BaseLevel < @BASELEVEL_GAME)
- goto L_not_ready;
- if (!(getskilllv(SKILL_POOL)))
- goto L_not_ready;
- mes "Gwendolyn takes an analyzing look at you. Then she nods.";
- next;
-
- set @Q_hawkseye, 5;
- callsub S_Update_Var;
- mes "[Gwendolyn Bowmaker]";
- mes "\"Ok. You have made great progress. I think you are ready for further tasks.\"";
- next;
- goto L_game_explain;
-
-L_game_explain:
- mes "[Gwendolyn Bowmaker]";
- mes "\"As you might have noticed, it depends on many circumstances if your arrow finds its target. Your shot may be too powerful or too weak, so the arrow goes far beyond your target or hits the ground before it reaches its destination.\"";
- next;
- mes "\"The greater the distance to your target is, the more important is the strength and direction of the wind. Even if you are exploring a cave, there might be air flow caused by the corners in the cave.\"";
- next;
- mes "\"Ok, you can see that target over there? I will tell you how strong the wind blows and from which direction. Then you will try to hit the target by moving right or left and decide how powerful you want to shoot.\"";
- next;
- goto L_state5;
-
-L_state5:
- // needed for the minigame:
- set @wdX, 0; // wind direction x-coordinate, rand
- set @wdY, 0; // wind direction y-coordinate, rand
- // set @wp, 0; // windpower
- set @spX, 0; // start position x-coordinate, player decision
- // set @spY, 0; // start position y-coordinate, const
- set @sp, 0; // shotpower, player decision
- //set @targetX, 0; // target position, const
- //set @targetY, 20; // target position, const
- set @pointX, 0; // point the player hits, x-coordinate
- set @pointY, 0; // point the player hits, y-coordinate
- set @wdIndex, 0;
- //
- mes "[Gwendolyn Bowmaker]";
- mes "\"Show me what you can!\"";
- next;
- menu
- "Can you please explain the task again?",L_game_explain,
- "I'm ready, let's start!",L_game,
- "I'm sorry, I will come back later.",L_Close;
-
-L_game:
- if (countitem("ForestBow") < 1)
- goto L_no_bow;
- if (countitem("Arrow") < 1)
- goto L_no_arrows;
- delitem "Arrow", 1;
- mes "You go to the training field and stand exactly on the same level with the target. The target is located about 43 feet north of you.You take one arrow and look at Gwendolyn.";
- next;
-
- // possibility for wdX and wdY to become zero is reduced, so windless status is less often
- set @wdX, rand(9) - 4;
- if (@wdX != 2 && @wdX !=-2) set @wdX, rand(9) - 4;
- if (@wdX == 0) set @wdX, rand(9) - 4;
-
- set @wdY, rand(9) - 4;
- if (@wdY != 2 && @wdY !=-2) set @wdY, rand(9) - 4;
- if (@wdY == 0) set @wdY, rand(9) - 4;
-
- // wind direction array, where the wind blows to:
- // 123
- // 456
- // 789
- //here is where the wind comes from, that's why it is the opposite.
- setarray @wd$,"error1, please report", "southeast", "south", "southwest", "east", "error2, please report", "west", "northeast", "north", "northwest" ;
- set @paramX, @wdX;
- set @paramY, @wdY;
- callsub S_getDirection;
- set @wdIndex, @returnIndex;
-
- set @wp_sq, (@wdX * @wdX) + (@wdY * @wdY);
-
- if (@wp_sq == 0)
- goto L_wp0;
- if (@wp_sq < 3)
- goto L_wp1;
- if (@wp_sq < 9)
- goto L_wp2;
- if (@wp_sq < 19)
- goto L_wp3;
- goto L_wp4;
-
-
-L_wp0:
- mes "[Gwendolyn Bowmaker]";
- mes "\"You're lucky. It is windless now.\"";
- next;
- goto L_choose_start_pos;
-
-L_wp1:
- mes "[Gwendolyn Bowmaker]";
- mes "\"There is a slight breeze coming from "+ @wd$[@wdIndex] + ".\"";
- next;
- goto L_choose_start_pos;
-
-L_wp2:
- mes "[Gwendolyn Bowmaker]";
- mes "\"The wind is blowing from "+ @wd$[@wdIndex] + ".\"";
- next;
- goto L_choose_start_pos;
-
-L_wp3:
- mes "[Gwendolyn Bowmaker]";
- mes "\"Right now, there is a strong wind blowing from " + @wd$[@wdIndex] + ".\"";
- next;
- goto L_choose_start_pos;
-
-L_wp4:
- mes "[Gwendolyn Bowmaker]";
- mes "\"Here we have a squall from "+ @wd$[@wdIndex] + ".\"";
- next;
- goto L_choose_start_pos;
-
-L_choose_start_pos:
- mes "Do you want to go to the left, the right or stay where you are?";
- next;
- menu
- "I want to move left.",L_step_left,
- "I go right.",L_step_right,
- "I stay.",L_step_no,
- "I will try it later.",L_Close;
-
-L_step_no:
- set @spX, 0;
- mes "You stay where you are..";
- next;
- goto L_choose_shotpower;
-
-L_step_left:
- mes "How many steps?";
- next;
- menu
- "1",L_step_left1,
- "2",L_step_left2,
- "3",L_step_left3,
- "4",L_step_left4;
-
-L_step_left1:
- set @spX, -1;
- mes "You take one step to the left.";
- next;
- goto L_choose_shotpower;
-
-L_step_left2:
- set @spX, -2;
- mes "You take two steps to the left.";
- next;
- goto L_choose_shotpower;
-
-L_step_left3:
- set @spX, -3;
- mes "You take three steps to the left.";
- next;
- goto L_choose_shotpower;
-
-L_step_left4:
- set @spX, -4;
- mes "You take four steps to the left.";
- next;
- goto L_choose_shotpower;
-
-L_step_right:
- mes "How many steps?";
- next;
- menu
- "1",L_step_right1,
- "2",L_step_right2,
- "3",L_step_right3,
- "4",L_step_right4;
-
-L_step_right1:
- set @spX, 1;
- mes "You take one step to the right.";
- next;
- goto L_choose_shotpower;
-
-L_step_right2:
- set @spX, 2;
- mes "You take two steps to the right.";
- next;
- goto L_choose_shotpower;
-
-L_step_right3:
- set @spX, 3;
- mes "You take three steps to the right.";
- next;
- goto L_choose_shotpower;
-
-L_step_right4:
- set @spX, 4;
- mes "You take four steps to the right.";
- next;
- goto L_choose_shotpower;
-
-L_choose_shotpower:
- mes "How powerfully do you want to shoot?";
- next;
- menu
- "very weak shot",L_MenuItems,
- "rather weak shot",L_MenuItems,
- "weak shot",L_MenuItems,
- "somewhat weak shot",L_MenuItems,
- "medium shot",L_MenuItems,
- "somewhat powerful shot",L_MenuItems,
- "powerful shot",L_MenuItems,
- "rather powerful shot",L_MenuItems,
- "very powerful shot",L_MenuItems;
-
-L_MenuItems:
- // we have 9 menu entries, so scale @menu, which is in range 1-9, to a scale in -4 to +4
- set @sp, @menu - 5;
- // calculate where you hit. You range is in [-8, 8] in X and Y as well
- set @pointX, @wdX + @spX;
- set @pointY, @wdY + @sp;
-
- if( @pointX==0 && @pointY==0 )
- goto L_target_hit;
-
- //set @targethit to these numbers:
- //1,2,3 for left above, above, right above,
- //4,5,6 for left, hit, right
- //7,8,9 for lower left, below, lower right;
- setarray @target_direction$, "error3, please report", "left above", "above", "right above","left","error4, please report","right","lower left","below","lower right";
-
- set @paramX , @pointX;
- set @paramY , @pointY;
- callsub S_getDirection;
- set @targethit, @returnIndex;
-
- //now check how close
- //get the distance squared:
- // so it is in range 0 - 64:
- // 0 is hit
- // < 5 is very close
- // <17 is close
- // rest is a quite fucking shot
- set @target_dist_sq, (@pointX * @pointX) + (@pointY*@pointY);
-
- if (@target_dist_sq < 5)
- goto L_target_veryclose;
- if (@target_dist_sq < 17)
- goto L_target_close;
-
- //here are bad shots:
- mes "[Gwendolyn Bowmaker]";
- mes "\"D'oh, what a terrible shot!\"";
- next;
- mes "\"Do you even know what a bow is?\"";
- next;
- mes "\"That was far "+@target_direction$[@targethit]+".\"";
- next;
- goto L_game;
-
-L_target_close:
- mes "[Gwendolyn Bowmaker]";
- mes "\"That was "+@target_direction$[@targethit]+".\"";
- next;
- mes "\"I suggest some training.\"";
- next;
- goto L_game;
-
-L_target_veryclose:
- mes "[Gwendolyn Bowmaker]";
- mes "\"That was quite close. Impressive!\"";
- next;
- mes "\"It was a little "+@target_direction$[@targethit]+".\"";
- next;
- mes "\"But you did not hit... have another try.\"";
- next;
- //like a coin toss: 2 possibilites, the same chance for both:
- //if(0 == rand(2)) goto L_game;
- mes "\"Hurry up, before the wind changes.\"";
- next;
- goto L_choose_start_pos;
-L_target_hit:
- mes "[Gwendolyn Bowmaker]";
- mes "\"Wonderful! That was great! Directly hit the bull's eye!\"";
- next;
- mes "\"Seems like you did it!\"";
- next;
- mes "\"Let me inspect it...\" She walks to the target.";
- next;
- if( rand(500) > (2*Dex + Agi))
- goto L_target_nohit;
- set @Q_hawkseye, 6;
- callsub S_Update_Var;
-
- setskill SKILL_MALLARDS_EYE, 1;
- getexp @QUEST_HAWK_EXP, 0;
-
- mes "\"You proved that you are worthy to call yourself a graduate of the School of Archery.\"";
- next;
- mes "\"But remember, there is always something new to learn. And you should not let your training down in order to keep and improve your abilities.\"";
- goto L_Close;
-
-L_target_nohit:
- mes "\"Ohh! Half a fingerbreadth aside.\"";
- next;
- mes "\"That is quite impressive, but you can perform better with more training.\"";
- next;
- goto L_game;
-
-L_state6:
- mes "[Gwendolyn Bowmaker]";
- mes "\"You really have a reason to be proud.\"";
- goto L_Close;
-
-L_state1:
- mes "[Gwendoly Bowmaker]";
- mes "\"Welcome back. Did you decide to follow the Way of Archery?\"";
- next;
- menu
- "I want to become an archer!",L_fee,
- "I am not interested.",L_no_student;
-
-L_no_student:
- mes "\"That's a pity. Well, if you change your mind, come back any time.\"";
- set @Q_hawkseye, 1;
- callsub S_Update_Var;
- goto L_Close;
-
-L_no_money:
- mes "\"I am sorry, but it seems that you don't have enough money. Come back when you have reorganized your finances.\"";
- set @Q_hawkseye, 1;
- callsub S_Update_Var;
- goto L_Close;
-
-L_no_bow:
- mes "\"As an archer, you should always carry your bow with you. Go and get it.\"";
- goto L_Close;
-
-L_bow_bought:
- mes "\"You just bought it? You won't learn anything from that. To understand the nature of this bow, you have to collect the needed material by yourself. Only this way will you get a feeling of what it means to use such a weapon. \"";
- next;
- mes "\"The best thing would be to let you make the bow by yourself. But I guess, that would go to far. And it would take ages to get a high quality bow.\"";
- next;
- mes "\"Ok, go to Alan and come back with a bow made out of the logs you collected.\"";
- goto L_Close;
-
-L_not_enough_eggs:
- mes "\"Maybe I should also give you a lesson in how to count? You haven't enough.\"";
- goto L_Close;
-
-L_not_ready:
- mes "\"I am pleased about your progrees, but you are not ready for the next step yet. Go and do some more training, before you come back. Remember also: It is wise to speak with people you meet on your journey, there is always something new to learn.\"";
- goto L_Close;
-
-L_no_arrows:
- mes "Gwendolyn sighs and shake her head.";
- next;
- mes "\"Another lecture: Take always enough arrows with you. Go and come back when you are equipped adequately.\"";
- goto L_Close;
-
-L_Close:
- set @SCHOOLFEE, 0;
- set @CAVE_EGGS_AMOUNT, 0;
- set @SNAKE_EGGS_AMOUNT, 0;
- set @MOUNTAIN_EGGS_AMOUNT, 0;
- set @GRASS_EGGS_AMOUNT, 0;
- set @QUEST_EGG_EXP, 0;
- set @BASELEVEL_GAME, 0;
- set @QUEST_HAWK_EXP, 0;
- set @Q_hawkseye_MASK, 0;
- set @Q_hawkseye_SHIFT, 0;
- set @Q_hawkseye, 0;
- set @Q_forestbow_MASK, 0;
- set @Q_forestbow_SHIFT, 0;
- set @FORESTBOW, 0;
-
- set @wdX, 0;
- set @wdY, 0;
- set @spX, 0;
- set @sp, 0;
- set @pointX, 0;
- set @pointY, 0;
- set @wdIndex, 0;
- set @paramX, 0;
- set @paramY, 0;
- set @returnIndex,0;
- set @wp_sq, 0;
- set @targethit, 0;
- set @target_dist_sq, 0;
- cleararray @target_direction, 0, 10;
- cleararray @wd, 0, 10;
-
- close;
-
-S_Update_Var:
- set QUEST_Forestbow_state, (QUEST_Forestbow_state & ~(@Q_hawkseye_MASK) | (@Q_hawkseye << @Q_hawkseye_SHIFT));
- return;
-
-S_getDirection:
- // get @paramX @paramY as parameters
- // returns an index where these parameters are in relation to origin
- // 123
- // 456 whereas 5 is the origin. (3,6,9 there is paramX>0); (1,2,3 there is paramY>0)
- // 789
- //first check the quadrants and after check more precisely
- if(@paramX>0 && @paramY>0) set @returnIndex, 3;
- if(@paramX>0 && @paramY<0) set @returnIndex, 9;
- if(@paramX<0 && @paramY>0) set @returnIndex, 1;
- if(@paramX<0 && @paramY<0) set @returnIndex, 7;
-
- //straight left
- if ( (@paramX < 0) && (@paramY >= @paramX/2) && (-@paramY >= @paramX/2) ) set @returnIndex, 4;
-
- //straight right
- if ( (@paramX > 0) && (@paramY <= @paramX/2) && (-@paramY <= @paramX/2) ) set @returnIndex, 6;
-
- //straight above
- if ( (@paramY > 0) && (@paramX <= @paramY/2) && (-@paramX <= @paramY/2) ) set @returnIndex, 2;
-
- //straight below
- if ( (@paramY < 0) && (@paramX >= @paramY/2) && (-@paramX >= @paramY/2) ) set @returnIndex, 8;
-
- //check the origin, because the origin is found by the "straight" lines as well. (should not, but is.. maybe a bug?)
- if( @paramX==0 && @paramY==0 ) set @returnIndex, 5;
- return;
-}
-////////////////////////////////////
-// rand(X) returns a random number uniformly distributed between in range [0; X-1]
-//
-// A=rand(2) => (0,1) 50% for 0 50% for 1
-// B=rand(2) => (0,1) 50% for 0 50% for 1
-// C=rand(2) => (0,1) 50% for 0 50% for 1
-// D=rand(2) => (0,1) 50% for 0 50% for 1
-//
-// A+B => 0+0, 1+0, 0+1, 1+1 => [0,1,2] 25% for 0 50 % for 1 25 % for 2
-//
-// rand(3) => [0,1,2] 33% for 0 33% for 1 33% for 2
diff --git a/world/map/npc/016-1/mapflags.txt b/world/map/npc/016-1/mapflags.txt
deleted file mode 100644
index 90dc43f6..00000000
--- a/world/map/npc/016-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-016-1|mapflag|resave|010-1,27,97
-016-1|mapflag|outside
diff --git a/world/map/npc/016-1/rossy.txt b/world/map/npc/016-1/rossy.txt
deleted file mode 100644
index 126dd8b9..00000000
--- a/world/map/npc/016-1/rossy.txt
+++ /dev/null
@@ -1,290 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-016-1,32,44,0|script|Rossy|114
-{
- set @child_number, 6;
- callfunc "XmasList";
-
- set @Cherry_Amount, 10;
- set @Cherry_EXP, 2000;
-
- set @CactusDrink_Amount, 24;
- set @MaggotSlime_Amount, 32;
- set @GambodgeHerb_Amount, 50;
- set @AlizarinHerb_Amount, 43;
- set @BugLeg_Amount, 30;
- set @Potion_EXP, 3000;
-
- set @RedRose_Amount, 15;
- set @RedTulip_Amount, 15;
- set @Flower_EXP, 2500;
-
- set @Finish_EXP, 5000;
- set @Finish_Money, 5000;
-
- if (FLAGS & FLAG_ROSSI_COMPLETED) goto L_FinalEnd;
- if (Rossy_Quest == 17 || Rossy_Quest == 18) goto L_End;
-
- if (Rossy_Quest >= 14 && Rossy_Quest <= 16) goto L_Julia;
- if (Rossy_Quest >= 13) goto L_Best;
- if (Rossy_Quest >= 11) goto L_Allergic;
- if (Rossy_Quest >= 8 && Rossy_Quest < 11) goto L_Donet;
- if (Rossy_Quest == 7) goto L_BT;
- if (Rossy_Quest == 6) goto L_Check2;
- if (Rossy_Quest == 5) goto L_Let;
- if (Rossy_Quest == 4 || Rossy_Quest == 5) goto L_Cherry_Done;
- if (Rossy_Quest == 3) goto L_Check;
- if (Rossy_Quest == 2) goto L_Mother;
-
- mes "A young girl looks at you in tears.";
- if (Rossy_Quest < 1)
- close;
- next;
- menu
- "Hey there.... Why are you crying? Are you hurt?", L_Next,
- "Sorry kid, I don't have time to play with children.", L_No;
-
-L_Next:
- mes "[Young Girl]";
- mes "\"No. I'm crying because I lost all my fruits. My sister and I were collecting some near Dimond's Cove, but then I stumbled on a giant snail and it attacked us!";
- next;
- mes "But we were lucky, because the snail is really slow and we ran away from it. Julia ran to the left and I ran to the right. The snail got pretty confused, because we are identical twins. The problem is that I dropped the basket full of fruits on the ground and that evil snail ate them all! And now I can't find Julia to help me collect more fruits.\"";
- next;
- menu
- "Did you say \"Julia?\" I talked to your mother; she's very worried about you!", L_SheWorried;
-
-L_SheWorried:
- mes "[Rossy]";
- mes "\"Really? But she let us play in the woods. There's no reason to be worried – unless....\"";
- next;
- mes "Rossy suddenly gets a strange look on her face, mumbling something about Julia.";
- next;
- mes "[Rossy]";
- mes "\"Could you do me a favor? Please, tell my mother that we're alright. There's ... well ... there's no reason to worry about us.\"";
- next;
- menu
- "Very well, if you say so....", L_SaySo,
- "Sorry, but I really don't have time for this.", L_No;
-
-L_SaySo:
- mes "[Rossy]";
- mes "\"Thank you very much!\"";
- set Rossy_Quest, 2;
- close;
-
-L_No:
- close;
-
-L_Mother:
- mes "[Rossy]";
- mes "\"Please, tell my mother we are fine. If you feel like helping, come back after you talk to my mother. Maybe you could help us find some fruits.\"";
- close;
-
-L_Get_Cherry:
- mes "[Young Girl]";
- mes "\"No, you don't have " + @Cherry_Amount + " cherries. I know how to count. I hope you get them soon.\"";
- close;
-
-L_Check:
- mes "[Rossy]";
- mes "\"Hey, that is nice of you to come back. I was thinking about giving a basket full of cherries to my mother, to make her happy, you know. But we'd need at least " + @Cherry_Amount + " cherries, and it would take ages for me to get so many by myself!\"";
- next;
- menu
- "That is no problem for me. Just wait and I will come back with the cherries.", L_No,
- "Hey, I have some cherries in my backpack!", L_HaveSomeCherries,
- "You should get them yourself.", L_No;
-
-L_HaveSomeCherries:
- if(countitem("Cherry") < @Cherry_Amount)
- goto L_Get_Cherry;
- mes "[Rossy]";
- set Rossy_Quest, 4;
- getexp @Cherry_EXP, 0;
- mes "\"I can't believe it! You got all the cherries needed! Please give them to my mother. Tell her that it is a gift from me and Julia and that there's no reason to worry about us.\"";
- next;
- mes "Rossy mumbles to herself.";
- mes "[Rossy]";
- mes "\"I hope....\"";
- next;
- mes "[Rossy]";
- mes "\"Oh, and after you give the cherries to my mother, please come back here. Err, if you have some free time, of course.\"";
- close;
-
-L_Cherry_Done:
- mes "[Rossy]";
- mes "\"Please, try to distract my mother. I don't want her to be worried about us. While you do this, I will try to find Julia.\"";
- close;
-
-L_Let:
- mes "[Rossy]";
- mes "\"Hello "+ strcharinfo(0) +", nice to see you again. Hey, what are you hiding behind your back? Is that a ... letter?\"";
- next;
- menu
- "Your mother asked me to hand you this letter. She told me it was from your teacher.", L_Let2,
- "Not at all. I need to go now, see you next time.", L_No;
-
-L_Let2:
- mes "The little girl grabs the piece of paper and reads it quickly. Her face turns pale.";
- menu
- "What does it say?", L_PaperSays;
-
-L_PaperSays:
- mes "[Rossy]";
- mes "\"Oh no, I completely forgot! My magic school exam! I need to make a potion and give it to my teacher today! But I haven't found Julia yet and I don't even have any of the ingredients required. Could you get them for me, please?\"";
- next;
- set Rossy_Quest, 6;
- mes "\"I need " + @CactusDrink_Amount + " Cactus Drinks, " + @MaggotSlime_Amount + " Maggot Slimes, " + @GambodgeHerb_Amount + " Gamboge Herbs, " + @AlizarinHerb_Amount + " Alizarin Herbs and " + @BugLeg_Amount + " Bug Legs.\"";
- next;
- mes "\"Please come back to see me when you have the ingredients. I know the recipe by heart.\"";
- close;
-
-L_NE:
- mes "[Rossy]";
- mes "\"Please bring me " + @CactusDrink_Amount + " Cactus Drinks, " + @MaggotSlime_Amount + " Maggot Slimes, " + @GambodgeHerb_Amount + " Gamboge Herbs, " + @AlizarinHerb_Amount + " Alizarin Herbs and " + @BugLeg_Amount + " Bug Legs.\"";
- next;
- mes "\"Please hurry!\"";
- close;
-
-L_Check2:
- if(countitem("CactusDrink") < @CactusDrink_Amount)
- goto L_NE;
- if(countitem("MaggotSlime") < @MaggotSlime_Amount)
- goto L_NE;
- if(countitem("GambogeHerb") < @GambodgeHerb_Amount)
- goto L_NE;
- if(countitem("AlizarinHerb") < @AlizarinHerb_Amount)
- goto L_NE;
- if(countitem("BugLeg") < @BugLeg_Amount)
- goto L_NE;
- delitem "CactusDrink", @CactusDrink_Amount;
- delitem "MaggotSlime", @MaggotSlime_Amount;
- delitem "GambogeHerb", @GambodgeHerb_Amount;
- delitem "AlizarinHerb", @AlizarinHerb_Amount;
- delitem "BugLeg", @BugLeg_Amount;
- mes "Rossy takes all the ingredients and places them on the ground. She starts to mix some herbs with the cactus drinks and appears to cast some spells. She seems to know what she is doing.";
- next;
- mes "[Rossy]";
- mes "\"Oh, thank you "+ strcharinfo(0) +"! It is done. If you don't mind, please give this potion to my teacher.\"";
- set Rossy_Quest, 7;
- getexp @Potion_EXP, 0;
- message strcharinfo(0), "Rossy hands you the potion, holding the bottle very carefully.";
- next;
- mes "\"My teacher's name is David. He is a very young magician and lives near the magic school in the north of Tulimshar.\"";
- next;
- mes "\"Please, give it to him as soon as you can!\"";
- close;
-
-L_BT:
- mes "[Rossy]";
- mes "\"Great. Now if you could just give it to my teacher. His name is David. He is a very young magician and lives near the magic school in the north of Tulimshar.\"";
- next;
- mes "\"You should take the ferry, that'll be faster than swimming!\"";
- close;
-
-L_Donet:
- if (Rossy_Quest == 10
- && countitem("RedRose") >= @RedRose_Amount)
- goto L_RG;
- menu
- "David took your potion and he tested it in front of me. It worked perfectly!", L_DavidPotion;
-
-L_DavidPotion:
- mes "[Rossy]";
- mes "\"YPhew! That was close: I almost forgot about my exam. Please, tell my mother about my success for me. I'm sure she'll be pleased.\"";
- close;
-
-L_RG:
- if (countitem("RedRose") < @RedRose_Amount)
- goto L_No;
- delitem "RedRose", @RedRose_Amount;
- menu
- "Your mother was so happy that she asked me to bring you these flowers.", L_MotherFlowers;
-
-L_MotherFlowers:
- mes "[Rossy]";
- mes "\"How nice!\"";
- next;
- mes "Rossy takes the flowers from your hands and suddenly throws them on the ground. She begins sneezing.";
- set Rossy_Quest, 11;
- menu
- "I presume you don't like roses, right?", L_LikeRoses;
-
-L_LikeRoses:
- mes "[Rossy]";
- mes "\"I am allergic to roses, my mother should already know that!\"";
- close;
-
-L_Allergic:
- mes "Rossy sneezes a lot.";
- if (Rossy_Quest == 12
- && countitem("RedTulip") >= @RedTulip_Amount)
- goto L_Sorry;
- close;
-
-L_Sorry:
- menu
- "Your mother is sorry about the roses. Here are some beautiful red tulips instead.", L_See;
-
-L_See:
- mes "[Rossy]";
- if (countitem("RedTulip") < @RedTulip_Amount)
- goto L_No;
- delitem "RedTulip", @RedTulip_Amount;
- set Rossy_Quest, 13;
- mes "\"That's better! Go and tell my mother that she is the nicest mother in the world.\"";
- next;
- mes "\"Now I should really find my sister. Come back later.\"";
- getexp @Flower_EXP, 0;
- close;
-
-L_Best:
- mes "[Rossy]";
- mes "\"Thank you "+ strcharinfo(0) +", you helped me so much!\"";
- next;
- menu
- "Did you find your sister? I am starting to get worried too.", L_FindMySister;
-
-L_FindMySister:
- mes "\"I think I have an idea where she might be. Come back in a few minutes, I will tell you if she is ok.\"";
- set Rossy_Quest, 14;
- close;
-
-L_Julia:
- mes "[Rossy]";
- mes "\"I saw Julia! She was running away from something and entered a cave not far from here. I heard her scream. Please can you enter the cave and save her? I'm so scared!\"";
- close;
-
-L_End:
- mes "[Rossy]";
- mes "\"Oh no! Julia ... why would you go to that scary place? ... Have you seen her yet?\"";
- menu
- "She'll be back soon, trust me. I saved her.", L_Found,
- "I didn't see her yet, sorry.", L_No;
-
-L_Found:
- mes "[Rossy]";
- if (Rossy_Quest == 17)
- set Rossy_Quest, 18;
- if (Rossy_Quest == 18)
- set Rossy_Quest, 19;
- mes "\"Oh, "+ strcharinfo(0) +", thank you very much! Take this, you deserve it!\"";
- next;
- mes "Rossy hands you a huge bag full of coins.";
- getexp @Finish_EXP, 0;
- set Zeny, Zeny + @Finish_Money;
- if (Rossy_Quest == 19)
- goto L_Clear;
- close;
-
-L_Clear:
- set Rossy_Quest, 0;
- set cavefights, 0;
- set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED;
- close;
-
-L_FinalEnd:
- mes "[Rossy]";
- mes "\"Julia and I are playing hide and seek right now. It is fun in the forest!\"";
- mes "The young girl laughs quietly.";
- close;
-}
diff --git a/world/map/npc/016-2/_import.txt b/world/map/npc/016-2/_import.txt
deleted file mode 100644
index 9df05c27..00000000
--- a/world/map/npc/016-2/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 016-2: Gwendolyn's
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 016-2
-npc: npc/016-2/_mobs.txt
-npc: npc/016-2/_nodes.txt
-npc: npc/016-2/_warps.txt
-npc: npc/016-2/contributor.txt
diff --git a/world/map/npc/016-2/_mobs.txt b/world/map/npc/016-2/_mobs.txt
deleted file mode 100644
index 069b9d46..00000000
--- a/world/map/npc/016-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Gwendolyn's mobs
-
diff --git a/world/map/npc/016-2/_nodes.txt b/world/map/npc/016-2/_nodes.txt
deleted file mode 100644
index 71dc557d..00000000
--- a/world/map/npc/016-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Gwendolyn's nodes
-
-// (no nodes)
diff --git a/world/map/npc/016-2/_warps.txt b/world/map/npc/016-2/_warps.txt
deleted file mode 100644
index f72f8b85..00000000
--- a/world/map/npc/016-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Gwendolyn's warps
-
-016-2,28,32|warp|-1,-1,016-1,84,54
-016-2,26,22|warp|-1,-1,016-1,84,49
diff --git a/world/map/npc/016-2/contributor.txt b/world/map/npc/016-2/contributor.txt
deleted file mode 100644
index af3e087e..00000000
--- a/world/map/npc/016-2/contributor.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// special warps for contributors
-
-016-1,84,54,0|script|#cont-warp0|32767,0,0
-{
- if (countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20))
- warp "016-2", 28, 31;
- end;
-}
-
-016-1,84,50,0|script|#cont-warp1|32767,0,0
-{
- if (countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20))
- warp "016-2", 26, 23;
- end;
-}
-
-018-1,50,63,0|script|#cont-warp2|32767,0,0
-{
- if (countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20))
- warp "018-1", 24, 95;
- end;
-}
-
-018-1,24,94,0|script|#cont-warp3|32767,0,0
-{
- warp "018-1", 50, 62;
- end;
-}
-
-004-5,78,66,0|script|#cont-warp4|32767,0,1
-{
- warp "004-5", 89, 66;
- end;
-}
-
-004-5,88,66,0|script|#cont-warp5|32767,0,1
-{
- if (countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20))
- warp "004-5", 77, 66;
- end;
-}
diff --git a/world/map/npc/017-1/_import.txt b/world/map/npc/017-1/_import.txt
deleted file mode 100644
index a8bc80c9..00000000
--- a/world/map/npc/017-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 017-1: Woodland Hills
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 017-1
-npc: npc/017-1/_mobs.txt
-npc: npc/017-1/_nodes.txt
-npc: npc/017-1/_warps.txt
-npc: npc/017-1/flowerpentagram1.txt
-npc: npc/017-1/flowerpentagram5.txt
-npc: npc/017-1/mapflags.txt
diff --git a/world/map/npc/017-1/_mobs.txt b/world/map/npc/017-1/_mobs.txt
deleted file mode 100644
index d4e5955a..00000000
--- a/world/map/npc/017-1/_mobs.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills mobs
-
-017-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-017-1,99,30,2,1|monster|CloverPatch|1037,1,150000ms,50000ms
-017-1,29,29,19,12|monster|GambogePlant|1031,1,0ms,25000ms
-017-1,91,25,76,8|monster|LogHead|1025,3,5000ms,60000ms
-017-1,31,48,19,12|monster|LogHead|1025,3,5000ms,60000ms
-017-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms
-017-1,0,0,0,0|monster|Bat|1017,5,0ms,0ms
-017-1,0,0,0,0|monster|FireGoblin|1011,5,0ms,0ms
-017-1,0,0,0,0|monster|Mouboo|1028,5,0ms,0ms
-017-1,0,0,0,0|monster|PinkFlower|1014,5,0ms,0ms
-017-1,0,0,0,0|monster|SpikyMushroom|1019,5,0ms,0ms
-017-1,0,0,0,0|monster|EvilMushroom|1013,10,0ms,0ms
-017-1,0,0,0,0|monster|AlizarinPlant|1032,3,0ms,0ms
-017-1,0,0,0,0|monster|GambogePlant|1031,3,0ms,0ms
-017-1,0,0,0,0|monster|CobaltPlant|1030,3,0ms,0ms
-017-1,0,0,0,0|monster|MauvePlant|1029,5,0ms,0ms
-017-1,0,0,0,0|monster|Silkworm|1035,10,0ms,0ms
-017-1,0,0,0,0|monster|Squirrel|1038,30,20ms,10ms
diff --git a/world/map/npc/017-1/_nodes.txt b/world/map/npc/017-1/_nodes.txt
deleted file mode 100644
index 13ee4f92..00000000
--- a/world/map/npc/017-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills nodes
-
-// (no nodes)
diff --git a/world/map/npc/017-1/_warps.txt b/world/map/npc/017-1/_warps.txt
deleted file mode 100644
index 7f9dc8bf..00000000
--- a/world/map/npc/017-1/_warps.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills warps
-
-017-1,46,105|warp|2,-1,013-1,45,21
-017-1,43,32|warp|-1,-1,017-2,26,30
-017-1,76,31|warp|-1,-1,017-3,69,68
-017-1,98,20|warp|-1,-1,017-3,83,52
-017-1,97,31|warp|-1,-1,017-3,76,65
-017-1,168,90|warp|-1,-1,056-2,34,30
-017-1,188,104|warp|-1,-1,055-1,74,21
-017-1,182,16|warp|1,-1,045-1,25,178
diff --git a/world/map/npc/017-1/flowerpentagram1.txt b/world/map/npc/017-1/flowerpentagram1.txt
deleted file mode 100644
index 64128b4b..00000000
--- a/world/map/npc/017-1/flowerpentagram1.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-// Author: Jenalya
-
-017-1,95,42,0|script|#FlowerPentagram1|400
-{
- if (OrumQuest >= 31) goto L_PlacedFifthFlower;
-
- if (OrumQuest > 17) goto L_PlacedFirstFlower;
- if (OrumQuest == 17) goto L_FirstFlower;
-
- message strcharinfo(0), "Something is odd about this place.";
- end;
-
-L_FirstFlower:
- mes "This looks like the place Orum described.";
- menu
- "Place the flower.", L_Next,
- "Leave.", L_Close;
-
-L_Next:
- if (isin("017-1", 94, 41, 96, 43))
- goto L_Place;
-
- mes "You're too far away.";
- goto L_Close;
-
-L_Place:
- set @localMonsterCount,
- mobcount("017-1", "#FlowerPentagram1::OnSquirrelDeath") +
- mobcount("017-1", "#FlowerPentagram1::OnScorpionDeath") +
- 2; // the mobcount function has an offset of -1, so we add 2 to have the actual amount of monsters
- if (@localMonsterCount > 2)
- goto L_MonstersAlive;
-
- if (countitem("OrangeSummonFlower") < 1)
- goto L_NoFlower;
- delitem "OrangeSummonFlower", 1;
- mes "You carefully place the magic flower on the marked spot. You feel some tension in the air around you.";
- set OrumQuest, 18;
- close2;
- areamonster "017-1", 91, 37, 101, 46, "", 1105, 2, "#FlowerPentagram1::OnSquirrelDeath";
- areamonster "017-1", 91, 37, 101, 46, "", 1003, 3, "#FlowerPentagram1::OnScorpionDeath";
- set @value, 15;
- callfunc "QuestSagathaAnnoy";
- set @value, 0;
- end;
-
-OnSquirrelDeath:
- set @mobID, 1105;
- callfunc "MobPoints";
- end;
-
-OnScorpionDeath:
- set @mobID, 1003;
- callfunc "MobPoints";
- end;
-
-L_MonstersAlive:
- mes "As you get closer to the place, you feel an unnerving presence.";
- mes "This place has recently been used to summon something! And the beings are still nearby!";
- next;
- mes "You should get rid of them before attempting the summoning yourself.";
- goto L_Close;
-
-L_NoFlower:
- mes "You don't have the flower with you. Where did you put it?";
- mes "If you can't find it, you should talk to Orum again.";
- goto L_Close;
-
-L_PlacedFirstFlower:
- mes "You placed the first of Orum's magical flowers on this spot.";
- mes "You can still feel the magical power shimmering around this place, waiting to be unleashed.";
- goto L_Close;
-
-L_PlacedFifthFlower:
- mes "This is where you placed the first of Orum's magical flowers.";
- mes "However, now that the summoning spell has been cast, everything is back to normal here.";
- goto L_Close;
-
-L_Close:
- set @localMonsterCount, 0;
- close;
-}
diff --git a/world/map/npc/017-1/flowerpentagram5.txt b/world/map/npc/017-1/flowerpentagram5.txt
deleted file mode 100644
index f8947dbd..00000000
--- a/world/map/npc/017-1/flowerpentagram5.txt
+++ /dev/null
@@ -1,140 +0,0 @@
-// Author: Jenalya
-// $@Flower_Pentagram_Time saves the time when the last summoning happened
-
-017-1,176,59,0|script|#FlowerPentagram5|400
-{
- if (OrumQuest >= 31) goto L_PlacedFifthFlower;
-
- if (OrumQuest == 30) goto L_FifthFlower;
-
- message strcharinfo(0), "Something is odd about this place.";
- end;
-
-L_FifthFlower:
- mes "This has to be the spot for the last magical flower. When you place it, the pentagram will be completed.";
- menu
- "Place the flower.", L_PlaceTheFlower,
- "Leave.", L_Close;
-
-L_PlaceTheFlower:
- if (isin("017-1", 175, 58, 177, 60))
- goto L_Place;
-
- mes "This isn't working, you're too far away.";
- goto L_Close;
-
-L_Place:
- set @localMonsterCount,
- mobcount("013-1", "#FlowerPentagram5::OnSquirrelDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnMushroomDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnBlueparDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnMoubooDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnScorpionDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnRScorpionDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnAScorpionDeath") +
- mobcount("013-1", "#FlowerPentagram5::OnBScorpionDeath") +
- 8; // the mobcount function has an offset of -1, so we add 8 to have the actual amount of monsters
- if (@localMonsterCount > 4)
- goto L_MonstersAlive;
-
- mes "Nervous about what's going to happen, you take the last of the flowers and put it into its place.";
- next;
- mes "Tension builds up around you, much stronger than before. You can feel it compressing your head, and a liquid warmth spreads under your nose, leaving a metallic taste on your lips.";
- heal -5, 0;
- next;
- callfunc "FlowerPentagramCount";
- if (($@Flower_Pentagram_Time > gettimetick(2) - 3600) && ($@Flower_Pentagram_Mobcount > 15))
- goto L_TooEarly;
- set $@Flower_Pentagram_Time, gettimetick(2);
- if (countitem("RedSummonFlower") < 1)
- goto L_NoFlower;
- delitem "RedSummonFlower", 1;
-
- mes "The pressure builds to the point where you don't think you can endure it any longer; the fabric that binds your consciousness together seemingly unravels.";
- set OrumQuest, 31;
- close2;
- areamonster "017-1", 170, 55, 190, 75, "", 1105, 3, "#FlowerPentagram5::OnSquirrelDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1106, 2, "#FlowerPentagram5::OnMushroomDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1107, 3, "#FlowerPentagram5::OnBlueparDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1104, 2, "#FlowerPentagram5::OnMoubooDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1003, 3, "#FlowerPentagram5::OnScorpionDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1004, 2, "#FlowerPentagram5::OnRScorpionDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1057, 2, "#FlowerPentagram5::OnAScorpionDeath";
- areamonster "017-1", 170, 55, 190, 75, "", 1009, 2, "#FlowerPentagram5::OnBScorpionDeath";
- set @value, 15;
- callfunc "QuestSagathaAnnoy";
- set @value, 0;
- donpcevent "#FlowerPentagram::OnSummon";
- end;
-
-OnSquirrelDeath:
- set @mobID, 1105;
- callfunc "MobPoints";
- end;
-
-OnMushroomDeath:
- set @mobID, 1106;
- callfunc "MobPoints";
- end;
-
-OnBlueparDeath:
- set @mobID, 1107;
- callfunc "MobPoints";
- end;
-
-OnMoubooDeath:
- set @mobID, 1104;
- callfunc "MobPoints";
- end;
-
-OnScorpionDeath:
- set @mobID, 1003;
- callfunc "MobPoints";
- end;
-
-OnRScorpionDeath:
- set @mobID, 1004;
- callfunc "MobPoints";
- end;
-
-OnAScorpionDeath:
- set @mobID, 1057;
- callfunc "MobPoints";
- end;
-
-OnBScorpionDeath:
- set @mobID, 1009;
- callfunc "MobPoints";
- end;
-
-L_TooEarly:
- mes "Suddenly, everything calms down again and the tension vanishes. You find yourself confused about what's going on.";
- next;
- mes "You pick up the flower again.";
- next;
- mes "Looking at the place more closely, it seems another summoning has happened just before, leaving the pathway between this world and the astral plane drained and exhausted.";
- next;
- mes "You should wait a while until it recharges, or go and search for the creatures that were summoned.";
- goto L_Close;
-
-L_MonstersAlive:
- mes "As you get closer to the place, you feel an unnerving presence.";
- mes "This place has recently been used to summon something! And the beings are still nearby!";
- next;
- mes "You should get rid of them before attempting the summoning yourself.";
- goto L_Close;
-
-L_NoFlower:
- mes "You reach into your pocket, but you can't find the flower! You're so close to completing your task.";
- mes "How could you lose the last flower? If you can't get it back, you have to tell Orum.";
- goto L_Close;
-
-L_PlacedFifthFlower:
- mes "This is where you placed the last of Orum's magical flowers.";
- mes "However, now that the summoning spell has been cast, everything is back to normal here.";
- goto L_Close;
-
-L_Close:
- set @localMonsterCount, 0;
- close;
-}
diff --git a/world/map/npc/017-1/mapflags.txt b/world/map/npc/017-1/mapflags.txt
deleted file mode 100644
index 5a7ac704..00000000
--- a/world/map/npc/017-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-017-1|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-2/_import.txt b/world/map/npc/017-2/_import.txt
deleted file mode 100644
index 84618771..00000000
--- a/world/map/npc/017-2/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 017-2: Theater
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 017-2
-npc: npc/017-2/_mobs.txt
-npc: npc/017-2/_nodes.txt
-npc: npc/017-2/_warps.txt
-npc: npc/017-2/mapflags.txt
diff --git a/world/map/npc/017-2/_mobs.txt b/world/map/npc/017-2/_mobs.txt
deleted file mode 100644
index 57e93531..00000000
--- a/world/map/npc/017-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Theater mobs
-
diff --git a/world/map/npc/017-2/_nodes.txt b/world/map/npc/017-2/_nodes.txt
deleted file mode 100644
index 0e37f1ef..00000000
--- a/world/map/npc/017-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Theater nodes
-
-// (no nodes)
diff --git a/world/map/npc/017-2/_warps.txt b/world/map/npc/017-2/_warps.txt
deleted file mode 100644
index 75f26a9d..00000000
--- a/world/map/npc/017-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Theater warps
-
-017-2,26,31|warp|-1,-1,017-1,43,33
-017-2,26,21|warp|-1,-1,017-9,26,27
diff --git a/world/map/npc/017-2/mapflags.txt b/world/map/npc/017-2/mapflags.txt
deleted file mode 100644
index 9f81d1b5..00000000
--- a/world/map/npc/017-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-017-2|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-3/_import.txt b/world/map/npc/017-3/_import.txt
deleted file mode 100644
index ec5b651f..00000000
--- a/world/map/npc/017-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 017-3: Woodland Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 017-3
-npc: npc/017-3/_mobs.txt
-npc: npc/017-3/_nodes.txt
-npc: npc/017-3/_warps.txt
-npc: npc/017-3/mapflags.txt
diff --git a/world/map/npc/017-3/_mobs.txt b/world/map/npc/017-3/_mobs.txt
deleted file mode 100644
index ee92826e..00000000
--- a/world/map/npc/017-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Cave mobs
-
diff --git a/world/map/npc/017-3/_nodes.txt b/world/map/npc/017-3/_nodes.txt
deleted file mode 100644
index 2ebc3af1..00000000
--- a/world/map/npc/017-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/017-3/_warps.txt b/world/map/npc/017-3/_warps.txt
deleted file mode 100644
index fd090d64..00000000
--- a/world/map/npc/017-3/_warps.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Cave warps
-
-017-3,69,69|warp|-1,-1,017-1,76,32
-017-3,83,53|warp|-1,-1,017-1,98,21
-017-3,76,64|warp|-1,-1,017-1,98,30
-017-3,63,26|warp|-1,-1,017-4,52,24
-017-3,29,48|warp|-1,-1,017-4,30,48
-017-3,69,52|warp|-1,-1,017-4,91,27
-017-3,58,60|warp|-1,-1,017-4,83,40
-017-3,32,70|warp|0,-1,017-4,123,27
-017-3,82,77|warp|1,-1,017-4,166,27
diff --git a/world/map/npc/017-3/mapflags.txt b/world/map/npc/017-3/mapflags.txt
deleted file mode 100644
index 90a2bb6f..00000000
--- a/world/map/npc/017-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-017-3|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-4/_import.txt b/world/map/npc/017-4/_import.txt
deleted file mode 100644
index 33a00b9b..00000000
--- a/world/map/npc/017-4/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 017-4: Hideout
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 017-4
-npc: npc/017-4/_mobs.txt
-npc: npc/017-4/_nodes.txt
-npc: npc/017-4/_warps.txt
-npc: npc/017-4/guardingspirit.txt
-npc: npc/017-4/mapflags.txt
-npc: npc/017-4/orum.txt
-npc: npc/017-4/waric.txt
diff --git a/world/map/npc/017-4/_mobs.txt b/world/map/npc/017-4/_mobs.txt
deleted file mode 100644
index 5270e787..00000000
--- a/world/map/npc/017-4/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hideout mobs
-
diff --git a/world/map/npc/017-4/_nodes.txt b/world/map/npc/017-4/_nodes.txt
deleted file mode 100644
index 357bf9fd..00000000
--- a/world/map/npc/017-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hideout nodes
-
-// (no nodes)
diff --git a/world/map/npc/017-4/_warps.txt b/world/map/npc/017-4/_warps.txt
deleted file mode 100644
index 560f75d9..00000000
--- a/world/map/npc/017-4/_warps.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Hideout warps
-
-017-4,201,25|warp|-1,-1,017-4,173,46
-017-4,91,26|warp|-1,-1,017-3,69,51
-017-4,123,26|warp|-1,-1,017-3,32,69
-017-4,166,26|warp|-1,-1,017-3,82,76
-017-4,30,47|warp|-1,-1,017-3,29,47
-017-4,52,25|warp|-1,-1,017-3,63,27
-017-4,83,41|warp|-1,-1,017-3,58,61
diff --git a/world/map/npc/017-4/guardingspirit.txt b/world/map/npc/017-4/guardingspirit.txt
deleted file mode 100644
index 8fef95ed..00000000
--- a/world/map/npc/017-4/guardingspirit.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-// Author: Jenalya
-
-017-4,173,47,0|script|#Guarding Spirit#_M|204,0,0
-{
- goto L_Talk;
-
-L_Talk:
- if (OrumQuest == 35)
- goto L_Block;
- if (OrumQuest < 14)
- goto L_Block;
- if (OrumQuest > 14)
- goto L_Chat;
-
- mes "[Guarding Spirit]";
- mes "\"Hold there! My master does not wish to be disturbed! I cannot let you enter.\"";
- menu
- "Who is your master?", L_Master,
- "But I have important things I need to discuss with your master!", L_Helped,
- "Oh, so he's finally back?", L_Back,
- "Okay, okay.", L_Close;
-
-L_Back:
- mes "[Guarding Spirit]";
- mes "\"Yes, he was gone for quite a while. When he arrived home, he had a rather frightening looking guy with him.\"";
- next;
- mes "\"Ahem, I mean, yes Mortal. He came back to his residence and does not wish to interact with those below his status. Leave!\"";
- goto L_Close;
-
-L_Master:
- mes "[Guarding Spirit]";
- mes "\"He is a powerful wizard. He can force the very elements to obey his will! He regularly communes with demons and higher beings from the astral plane, such as myself.\"";
- next;
- mes "\"Mankind knows his name as 'Orum'.\"";
- menu
- "Hey, I helped him out some while ago!", L_Helped,
- "Orum? That guy who feels weary due to some transmutation spells?", L_Disrespectful,
- "Then I better respect his wish and leave!", L_Close;
-
-L_Disrespectful:
- mes "[Guarding Spirit]";
- mes "\"What are you saying? Who are you to mock my Master?! You will regret that!\"";
- set Hp, 1 + Hp/5;
- goto L_Close;
-
-L_Helped:
- mes "[Guarding Spirit]";
- mes "\"Really? That sounds implausible to me.\"";
- next;
- mes "\"Why would my master mess around with such a puny mortal as yourself?\"";
- menu
- "I'd like to offer him my humble services...", L_Pass,
- "Listen, he'll get angry if you don't let me pass. ", L_Pass,
- "You're right, I was just bluffing.", L_Close;
-
-L_Pass:
- mes "[Guarding Spirit]";
- mes "\"Alright, I will let you pass.\"";
- next;
- mes "\"Remember that when you speak with him, do so with respect for someone befitting his status.\"";
- set OrumQuest, 15;
- warp "017-4", 201, 26;
- goto L_Close;
-
-L_Block:
- mes "[Guarding Spirit]";
- mes "\"Stop, mortal! I cannot let you pass!\"";
- menu
- "What? Who are you?", L_Next,
- "Why?", L_Next,
- "Ok...", L_Close;
-
-L_Next:
- mes "[Guarding Spirit]";
- mes "\"My master summoned me for the sole purpose of preventing anyone else from entering his refuge.";
- mes "I'll stand guard and protect it with all my power!\"";
- next;
- mes "\"If I fail, he will punish me. I do not like being punished by his magic, it hurts.\"";
- goto L_Close;
-
-L_Chat:
- mes "[Guarding Spirit]";
- mes "Oh, it's you. You may enter.";
- // TODO: more chat, maybe depending on the quest progress?
- goto L_Close;
-
-L_Close:
- close;
-
-OnTouch:
- if (OrumQuest < 15)
- goto L_Talk;
- if (OrumQuest == 35)
- goto L_Block;
- warp "017-4", 201, 26;
- end;
-}
diff --git a/world/map/npc/017-4/mapflags.txt b/world/map/npc/017-4/mapflags.txt
deleted file mode 100644
index a137e471..00000000
--- a/world/map/npc/017-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-017-4|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-4/orum.txt b/world/map/npc/017-4/orum.txt
deleted file mode 100644
index 213f14af..00000000
--- a/world/map/npc/017-4/orum.txt
+++ /dev/null
@@ -1,843 +0,0 @@
-// Author: Jenalya
-// Quest states:
-// 14: Completed first part of the quest
-// 15: Persuaded the Guarding Spirit to let you into the cave
-// 16: Got task to bring materials for first magical flower
-// 17: Got task to place the first magical flower
-// 18: Placed first magical flower
-// 19: Got task to bring materials for second magical flower
-// 20: Got task to place the second magical flower
-// 21: Placed second magical flower
-// 22: Got task to bring materials for third magical flower
-// 23: Completed easy minigame and got task to place the third magical flower
-// 24: Placed third magical flower
-// 25: Got task to bring materials for fourth magical flower
-// 26: Completed difficult minigame and got task to place the fourth magical flower
-// 27: Placed fourth magical flower
-// 28: Got task to bring materials for fifth magical flower
-// 29: Failed unbeatable minigame and got the flower hat
-// 30: Got task to place the fifth flower
-// 31: Placed fifth flower
-// 32: Got reward
-
-017-4,211,32,0|script|Orum|158
-{
- // first flower
- set @AMOUNT_SMALLMUSHROOM, 5;
- set @AMOUNT_ASH, 5;
- set @RECOMPENSATION_1, 5000;
- // second flower
- set @AMOUNT_PINKPETAL, 5;
- set @AMOUNT_STINGER, 5;
- set @RECOMPENSATION_2, 10000;
- // third flower
- set @AMOUNT_WHITEFUR, 5;
- set @AMOUNT_REDSTINGER, 5;
- set @RECOMPENSATION_3, 20000;
- // fourth flower
- set @AMOUNT_HARDSPIKE, 5;
- set @AMOUNT_ANGRYSTINGER, 5;
- set @RECOMPENSATION_4, 40000;
- // fifth flower
- set @AMOUNT_ACORN, 20;
- set @AMOUNT_PEARL, 3;
- set @AMOUNT_BLACKSTINGER, 5;
- set @RECOMPENSATION_5, 80000;
-
- set @REWARD_MONEY, 100000;
- set @REWARD_EXP, 100000;
-
- if (OrumQuest > 31) goto L_Done;
-
- if (OrumQuest == 31) goto L_PlacedFifthFlower;
- if (OrumQuest == 30) goto L_PlaceFifthFlower;
- if (OrumQuest == 29) goto L_FailedFifthFlower;
- if (OrumQuest == 28) goto L_FifthFlower;
-
- if (OrumQuest == 27) goto L_PlacedFourthFlower;
- if (OrumQuest == 26) goto L_PlaceFourthFlower;
- if (OrumQuest == 25) goto L_FourthFlower;
-
- if (OrumQuest == 24) goto L_PlacedThirdFlower;
- if (OrumQuest == 23) goto L_PlaceThirdFlower;
- if (OrumQuest == 22) goto L_ThirdFlower;
-
- if (OrumQuest == 21) goto L_PlacedSecondFlower;
- if (OrumQuest == 20) goto L_PlaceSecondFlower;
- if (OrumQuest == 19) goto L_SecondFlower;
-
- if (OrumQuest == 18) goto L_PlacedFirstFlower;
- if (OrumQuest == 17) goto L_PlaceFirstFlower;
- if (OrumQuest == 16) goto L_FirstFlower;
-
- if (OrumQuest == 15) goto L_InitialTalk;
-
- goto L_Banish;
-
-L_InitialTalk: // 15: Persuaded the Guarding Spirit to let you into the cave
- mes "[Orum]";
- mes "\"I... My Guarding Spirit... You... What...\"";
- mes "[Waric]";
- mes "\"Pull yourself together!\"";
- next;
- mes "[Orum]";
- mes "\"Y-yes, master.\"";
- mes "He turns to you.";
- mes "\"I told you not to follow us! Are you so eager to die?\"";
- menu
- "I'm here to offer my services...", L_Next,
- "Ha! You thought you could hide from me?", L_Banish,
- "Keep calm, I want to work with you.", L_Next,
- "D-d-die?!", L_Banish;
-
-L_Next:
- mes "[Orum]";
- mes "\"You want to help us?\"";
- mes "Waric raises his eyebrows.";
- next;
- mes "[Orum]";
- mes "\"I don't think that's a good idea.\"";
- menu
- "You won't know until you try.", L_Next1,
- "You have no choice, I've found your hideout!", L_Banish;
-
-L_Next1:
- mes "[Orum]";
- mes "\"Well, why not? Here is a simple enough task to prove you're serious.";
- mes "Bring me " + @AMOUNT_SMALLMUSHROOM + " Small Mushrooms, " + @AMOUNT_ASH + " Piles of Ash and one Orange Tulip.\"";
-
- set OrumQuest, 16;
- menu
- "Sure!", L_Close,
- "Why do you need that?", L_Next2;
-
-L_Next2:
- mes "[Orum]";
- mes "\"Don't ask stupid questions! Do as you're told.\"";
- mes "...";
- mes "\"Those things are ingredients for a magical artifact. You don't need to know more at the moment.\"";
- goto L_Close;
-
-L_Banish:
- mes "[Orum]";
- mes "\"This will be the last mistake you did...\"";
- mes "He starts mumbling under his breath and you suddenly feel weirdly weightless. Your vision fades...";
- mes "The last thing you hear is Waric shouting something about untalented apprentices.";
- set Hp, 1 + rand(5);
- warp "017-1", 0, 0;
- goto L_Close;
-
-L_FirstFlower: // 16: Got task to bring materials for first magical flower
- mes "[Orum]";
- mes "\"So? Where are the " + @AMOUNT_SMALLMUSHROOM + " Small Mushrooms, " + @AMOUNT_ASH + " Piles of Ash and Orange Tulip you should've brought?\"";
- menu
- "I have everything you want!", L_Next3,
- "I don't have it yet.", L_Close;
-
-L_Next3:
- if ((countitem("SmallMushroom") < @AMOUNT_SMALLMUSHROOM)
- || (countitem("PileOfAsh") < @AMOUNT_ASH)
- || (countitem("OrangeTulip") < 1))
- goto L_NoItem;
-
- delitem "SmallMushroom", @AMOUNT_SMALLMUSHROOM;
- delitem "PileOfAsh", @AMOUNT_SMALLMUSHROOM;
- delitem "OrangeTulip", 1;
- getitem "OrangeSummonFlower", 1;
- set OrumQuest, 17;
-
- mes "Orum takes the items and starts crushing them, using a very old-looking mortar and pestle. As they turn into a fine powder, he mixes some of it together in the cauldron and finally dips the tulip into it, mumbling enchantements. The tulip changes its appearance. Then he hands it over to you.";
- mes "[Orum]";
- mes "\"Phew, done. Now I feel exhausted. You need to place it at its destination.\"";
- next;
- goto L_WayFirstFlower;
-
-L_WayFirstFlower:
- mes "\"We prepared a place for this in the forest outside the caves. When you leave the cave, go a couple of steps to the east and you'll find a spot of grass with flowers on a small hill. You have to place it there, right in the middle.\"";
- goto L_Close;
-
-L_PlaceFirstFlower: // 17: Got task to place the first magical flower
- mes "[Orum]";
- mes "\"Go ahead and place the first magical flower.\"";
- menu
- "Okay, I'll do that.", L_Close,
- "Could you explain where to place it, one more time?", L_WayFirstFlower,
- "I... I lost it.", L_Next4;
-
-L_Next4:
- mes "[Orum]";
- mes "\"What?! I can't believe this! How could you handle a powerful magical artifact in such a careless way?\"";
- next;
- mes "\"This behaviour shouldn't remain unpunished. Pay a recompensation fee of " + @RECOMPENSATION_1 + " GP, and I'm going to allow you to continue helping us. So?\"";
- menu
- "Okay.", L_Next5,
- "No way, that's too much!", L_NoRecompensation;
-
-L_Next5:
- if (Zeny < @RECOMPENSATION_1)
- goto L_NoMoney;
- set Zeny, Zeny - @RECOMPENSATION_1;
- set OrumQuest, 16;
-
- mes "[Orum]";
- mes "\"Very well. Now bring me " + @AMOUNT_SMALLMUSHROOM + " Small Mushrooms, " + @AMOUNT_ASH + " Piles of Ash and one Orange Tulip again, so we can start over.\"";
- goto L_Close;
-
-L_PlacedFirstFlower: // 18: Placed first magical flower
- mes "[Orum]";
- mes "\"I felt the eruption of magical power when you placed it! Wonderful! Let's start with the next one right now.\"";
- menu
- "Okay, what should I do now?", L_Next6,
- "Weird monsters appeared when I placed it!", L_AskMonsters;
-
-L_Next6:
- set OrumQuest, 19;
- goto L_SecondFlower;
-
-L_AskMonsters:
- mes "[Orum]";
- mes "\"Oh, right. Well, that was to be expected, some of the power seeped out when you placed it. I hope those monsters didn't harm you.";
- mes "However, we should continue.\"";
- set OrumQuest, 19;
- next;
- goto L_SecondFlower;
-
-L_SecondFlower: // 19: Got task to bring materials for second magical flower
- mes "[Orum]";
- mes "\"Bring me " + @AMOUNT_PINKPETAL + " Pink Petals, " + @AMOUNT_STINGER + " Scorpion Stingers and one Pink Tulip.\"";
- menu
- "I have it.", L_Next7,
- "All right, I'll get it.", L_Close,
- "What's the purpose of this?", L_AskPurpose;
-
-L_Next7:
- if ((countitem("PinkPetal") < @AMOUNT_PINKPETAL)
- || (countitem("ScorpionStinger") < @AMOUNT_STINGER)
- || (countitem("PinkTulip") < 1))
- goto L_NoItem;
-
- delitem "PinkPetal", @AMOUNT_PINKPETAL;
- delitem "ScorpionStinger", @AMOUNT_STINGER;
- delitem "PinkTulip", 1;
- getitem "PurpleSummonFlower", 1;
- set OrumQuest, 20;
-
- mes "Orum starts to work on the materials you've gathered, in the same manner he did the first time. Suddenly something from the mortar gets on his hand and it makes a nasty sizzling noise. He yells in pain, clutching his hand to his chest. After cleaning his hand he continues. In the end he gives you another magical flower while rubbing his hand.";
- next;
- mes "[Orum]";
- mes "\"Ouch, it still hurts. I need some time to recover. In the meantime, go and place the flower.\"";
- next;
- goto L_WaySecondFlower;
-
-L_WaySecondFlower:
- mes "[Orum]";
- mes "\"The next spot is in the Woodland Hills. When you leave our caves, go south until you come out of the forest. Then walk west, past the hut of that old man.";
- mes "The spot where you have to place it is on higher ground, so you'll have to find a way through the caves to reach it.\"";
- goto L_Close;
-
-L_AskPurpose:
- mes "[Orum]";
- mes "\"Purpose? Well... We're building a pentagram.\"";
- goto L_Close;
-
-L_PlaceSecondFlower: // 20: Got task to place the second magical flower
- mes "[Orum]";
- mes "\"Go and place the second magical flower.\"";
- menu
- "I'm on my way.", L_Close,
- "Where do I have to put it again?", L_WaySecondFlower,
- "Sorry, I've lost it.", L_Next8;
-
-L_Next8:
- mes "[Orum]";
- mes "\"What?! You incompetent dunderhead! I got hurt while creating this powerful magical artifact and you managed to lose it!?\"";
- next;
- mes "\"This behaviour shouldn't remain unpunished. Pay a recompensation fee of " + @RECOMPENSATION_2 + " GP, and I'm going to allow you to continue helping us. So?\"";
- menu
- "Ok.", L_Next9,
- "No way, that's too much!", L_NoRecompensation;
-
-L_Next9:
- if (Zeny < @RECOMPENSATION_2)
- goto L_NoMoney;
- set Zeny, Zeny - @RECOMPENSATION_2;
- set OrumQuest, 19;
-
- mes "[Orum]";
- mes "\"Okay, now that this is settled, bring me " + @AMOUNT_PINKPETAL + " Pink Petals, " + @AMOUNT_STINGER + " Scorpion Stingers and one Pink Tulip again.\"";
- goto L_Close;
-
-L_PlacedSecondFlower: // 21: Placed second magical flower
- mes "[Orum]";
- mes "\"Very good. You placed the second flower, right? I could feel it here.";
- mes "Everything is going very well.\"";
- mes "Orum grins contently.";
- menu
- "What do you need next?", L_Next10,
- "How can we build a pentagram by randomly planting flowers?", L_AskPentagram;
-
-L_Next10:
- set OrumQuest, 22;
- goto L_ThirdFlower;
-
-L_AskPentagram:
- mes "[Orum]";
- mes "\"Randomly? The spots for the flowers have been very carefully chosen! You see, it's going to be a very LARGE pentagram.\"";
- set OrumQuest, 22;
- next;
- goto L_ThirdFlower;
-
-L_ThirdFlower: // 22: Got task to bring materials for third magical flower
- mes "[Orum]";
- mes "\"Now we need " + @AMOUNT_WHITEFUR + " White Furs, " + @AMOUNT_REDSTINGER + " Red Scorpion Stingers and one White Tulip.\"";
- menu
- "I got everything you want.", L_Next11,
- "I'm still trying to gather what you need.", L_Close,
- "And what is the pentagram going to do?", L_AskPentaEffect;
-
-L_Next11:
- if ((countitem("WhiteFur") < @AMOUNT_WHITEFUR)
- || (countitem("RedScorpionStinger") < @AMOUNT_REDSTINGER)
- || (countitem("WhiteTulip") < 1))
- goto L_NoItem;
-
- delitem "WhiteFur", @AMOUNT_WHITEFUR;
- delitem "RedScorpionStinger", @AMOUNT_REDSTINGER;
- delitem "WhiteTulip", 1;
-
- mes "Orum takes the materials out of your hands and starts preparing them.";
- mes "[Orum]";
- mes "\"This time you're going to help me. It's safer when I don't have to handle all of it myself. Okay, listen.\"";
- next;
- mes "\"Here is the rheological additive that you have to pour on it when the reaction between the powders is on its peak level. I'm going to slowly add a little more of the powder, which will make it react faster. Got it?\"";
- menu
- "Rheo-what?", L_Next12,
- "Okay, let's try.", L_Next12,
- "I'm not sure I understand...", L_Next12;
-
-L_Next12:
- mes "[Orum]";
- mes "\"Well, just pour when it's bubbling really hard.\"";
- mes "He starts to mix the powders together in the caldron.";
- next;
-
- setarray @bubblingLevels$, "calmly", "slightly", "noticeably", "heavily";
- set @bubblingLevel, rand(10);
- goto L_EasyMinigame;
-
-L_EasyMinigame:
- mes "The mixture is bubbling " + @bubblingLevels$[@bubblingLevel/7] + ". What do you want to do?";
- menu
- "Wait.", L_Next13,
- "Pour.", L_EasyCheck;
-
-L_Next13:
- if (@menu == 1)
- set @bubblingLevel, @bubblingLevel + rand(1,10);
- if (@bubblingLevel > 27)
- goto L_EasyTooHigh;
- mes "Orum adds some more powder.";
- goto L_EasyMinigame;
-
-L_EasyCheck:
- set @bubblingLevel, @bubblingLevel + 3 - rand(7);
- if (@bubblingLevel < 21)
- goto L_EasyTooEarly;
- if (@bubblingLevel > 27)
- goto L_EasyTooLate;
- goto L_EasySuccess;
-
-L_EasyTooLate:
- mes "You are about to pour in the additive, but just before you do it...";
- next;
- goto L_EasyTooHigh;
-
-L_EasyTooHigh:
- mes "Suddenly the mixture glows brightly. Then it calms down very quickly and turns into a weird greyish color.";
- mes "[Orum]";
- mes "\"Are you sleeping? Now it's ruined. You waited too long.\"";
- next;
- mes "\"You have to collect all the ingredients again, now.\"";
- goto L_Close;
-
-L_EasyTooEarly:
- mes "You pour the liquid Orum gave you into the mixture.";
- mes "It stops bubbling and gets thicker... and thicker... and thicker...";
- mes "[Orum]";
- mes "\"No! That was too early. Look at what you've done! It's hard as a rock now.\"";
- next;
- mes "\"How annoying! You have to gather new ingredients.\"";
- goto L_Close;
-
-L_EasySuccess:
- getitem "WhiteSummonFlower", 1;
- set OrumQuest, 23;
-
- mes "As you pour the liquid into the bubbling mixture, it calms down and becomes viscous. Orum takes the tulip and dips it into the mixture.";
- mes "[Orum]";
- mes "\"Excellent! Here it is.\"";
- next;
- goto L_WayThirdFlower;
-
-L_WayThirdFlower:
- mes "[Orum]";
- mes "\"This flower needs to be placed on top of the Hurnscald mines. It might be a bit hard to reach, but I'm sure you'll do fine.\"";
- goto L_Close;
-
-L_AskPentaEffect:
- mes "[Orum]";
- mes "\"Don't you know anything about Astral magic? A pentagram is used for summoning, of course.\"";
- goto L_Close;
-
-L_PlaceThirdFlower: // 23: Completed easy minigame and got task to place the third magical flower
- mes "[Orum]";
- mes "\"What are you waiting for? Place the third flower where it's supposed to go.\"";
- menu
- "Okay.", L_Close,
- "I forgot where to put it.", L_WayThirdFlower,
- "Unfortunately... I don't have it anymore.", L_Next14;
-
-L_Next14:
- mes "Orum sighs.";
- mes "[Orum]";
- mes "\"I hope this is a joke. No, you're serious? What impudence! This was a valuable and powerful magical artifact.\"";
- next;
- mes "\"This behaviour shouldn't remain unpunished. Pay a recompensation fee of " + @RECOMPENSATION_3 + " GP, and I'm going to allow you to continue helping us. So?\"";
- menu
- "Here it is.", L_Next15,
- "That's too much!", L_NoRecompensation;
-
-L_Next15:
- if (Zeny < @RECOMPENSATION_3)
- goto L_NoMoney;
- set Zeny, Zeny - @RECOMPENSATION_3;
- set OrumQuest, 22;
-
- mes "[Orum]";
- mes "\"Once again we need " + @AMOUNT_WHITEFUR + " White Furs, " + @AMOUNT_REDSTINGER + " Red Scorpion Stingers and one White Tulip.\"";
- goto L_Close;
-
-L_PlacedThirdFlower: // 24: Placed third magical flower
- mes "[Orum]";
- mes "\"We're making very good progress. Now that you've placed the third magical flower, only two more are left.";
- mes "But we shouldn't become careless now, with each flower the procedure gets more difficult.\"";
- menu
- "Understood! What's next?", L_Next16,
- "What are we going to summon with that pentagram?", L_AskSummon;
-
-L_Next16:
- set OrumQuest, 25;
- goto L_FourthFlower;
-
-L_AskSummon:
- mes "[Orum]";
- mes "\"Beings from the astral plane, of course. Some of them are already coming through the rift when you place the flowers.";
- mes "But that is NOTHING compared to what will happen when the pentagram is complete! Hahaha!\"";
- set OrumQuest, 25;
- next;
- goto L_FourthFlower;
-
-L_FourthFlower: // 25: Got task to bring materials for fourth magical flower
- mes "[Orum]";
- mes "\"Now we need " + @AMOUNT_HARDSPIKE + " Hard Spikes, " + @AMOUNT_ANGRYSTINGER + " Angry Scorpion Stingers and one Yellow Rose.\"";
- menu
- "I managed to get everything.", L_Next17,
- "I'll go and gather the items.", L_Close,
- "Won't it be dangerous to summon so many aggressive monsters?", L_AskDanger;
-
-L_Next17:
- if ((countitem("HardSpike") < @AMOUNT_HARDSPIKE)
- || (countitem("AngryScorpionStinger") < @AMOUNT_ANGRYSTINGER)
- || (countitem("YellowRose") < 1))
- goto L_NoItem;
-
- delitem "HardSpike", @AMOUNT_HARDSPIKE;
- delitem "AngryScorpionStinger", @AMOUNT_ANGRYSTINGER;
- delitem "YellowRose", 1;
-
- mes "Orum takes the materials and starts to pulverize them once again. You notice that his movements are slower this time and he seems to be really concentrating.";
- mes "[Orum]";
- mes "\"Okay. We're going to do it together again, but this time we'll switch the roles. You're going to mix the powders and I'm going to pour the rheological additive into the mixture.\"";
- next;
- mes "\"This is because... ahm, because you will learn something from it, yes.";
- mes "But remember to handle the powders carefuly, they're highly vitriolic.\"";
- next;
- mes "\"You have two powders, one of them will make the mixture turn yellow, the other one will make it turn red.";
- mes "You need to make it a clear, strong orange and hold that for a moment. That way I'll have enough time to pour the rheological additive.\"";
- menu
- "Let's try it.", L_Next18,
- "I'm not sure what to do...", L_Next18;
-
-L_Next18:
- mes "[Orum]";
- mes "\"Just use the red powder when it's too bright, and the yellow powder when it's too dark. And be careful how much powder you use. The mixture will randomly fluctuate a bit, too, so keep that in mind.\"";
- mes "He mixes together a few of each ingredients and then hands you two small bowls with the powders.";
- next;
-
- setarray @colorLevels$, "red", "light red", "dark orange", "orange", "light orange", "dark yellow", "yellow";
- set @colorLevel, rand(49);
- set @goodColor, 0;
- goto L_HardMinigame;
-
-L_HardMinigame:
- mes "The color of the mixture is " + @colorLevels$[@colorLevel/7] + ". What do you want to do?";
- menu
- "Add a small portion of Red Powder.", L_MenuItems,
- "Add a large portion of Red Powder.", L_MenuItems,
- "Add a small portion of Yellow Powder.", L_MenuItems,
- "Add a large portion of Yellow Powder.", L_MenuItems;
-
-L_MenuItems:
- if (@menu == 1)
- set @colorLevel, @colorLevel - rand(1,3);
- if (@menu == 2)
- set @colorLevel, @colorLevel - rand(6,8);
- if (@menu == 3)
- set @colorLevel, @colorLevel + rand(1,3);
- if (@menu == 4)
- set @colorLevel, @colorLevel + rand(6,8);
-
- if (@colorLevel > 48)
- goto L_TooYellow;
- if (@colorLevel < 0)
- goto L_TooRed;
-
- mes "Due to your addition, the mixture is now " + @colorLevels$[@colorLevel/7] + ".";
-
- if ((@colorLevel > 20) && (@colorLevel < 28))
- goto L_Good;
- goto L_HardRandom;
-
-L_HardRandom:
- set @colorLevel, @colorLevel + 3 - rand(6);
- mes "The mixture sizzles and bubbles.";
-
- if ((@colorLevel < 21) || (@colorLevel > 27))
- set @goodColor, 0;
-
- if (@colorLevel > 48)
- goto L_TooYellow;
- if (@colorLevel < 0)
- goto L_TooRed;
- next;
- goto L_HardMinigame;
-
-L_Good:
- set @goodColor, @goodColor + 1;
- if (@goodColor == 3)
- goto L_HardSuccess;
- mes "Hold it like this for a moment!";
- next;
- goto L_HardRandom;
-
-L_TooYellow:
- next;
- mes "The mixture can't get any more yellow. The bubbling increases and most of the liquid quickly turns into steam that makes you cough.";
- goto L_HardTooExtreme;
-L_TooRed:
- next;
- mes "The mixture can't get any more red. Suddenly, the bubbling gets even more violent. It seems to be corroding the cauldron! Orum hastily pours the rheological additive on it to make it stop.";
- goto L_HardTooExtreme;
-
-L_HardTooExtreme:
- mes "[Orum]";
- mes "\"What are you doing? It is supposed to turn orange. You have to use both powders for that!\"";
- next;
- mes "\"This is ruined now. Go and collect new ingredients.\"";
- goto L_Close;
-
-L_HardSuccess:
- getitem "YellowSummonFlower", 1;
- set OrumQuest, 26;
-
- mes "Orum pours the rheological additive on the mixture and then dips the flower into the cauldron.";
- mes "[Orum]";
- mes "\"Excellent! Wonderful. Here's the flower. I need to clean up the cauldron, so in the meantime go place the flower.\"";
- next;
- goto L_WayFourthFlower;
-
-L_WayFourthFlower:
- mes "[Orum]";
- mes "\"To find the place: go south after leaving our cave, and then follow the path to the east. Watch out for that nasty forest witch living there, she doesn't like humans.";
- mes "You have to place the flower on a small island in front of the coast. To get there, you have to find a way through the caves that connect it with the mainland.\"";
- goto L_Close;
-
-L_AskDanger:
- mes "[Orum]";
- mes "\"Dangerous? Well, not really, since Waric and I are going to stay here in the cave.\"";
- menu
- "That's... very comforting.", L_Next19,
- "And what about everyone outside? Like me!?", L_Next19;
-
-L_Next19:
- mes "[Orum]";
- mes "\"Umm, well. You won't be in the center of it where the monsters will appear, of course.";
- mes "And you can handle a few of them, right?\"";
- goto L_Close;
-
-L_PlaceFourthFlower: // 26: Completed difficult minigame and got task to place the fourth magical flower
- mes "[Orum]";
- mes "\"I can't wait! Everything is going so well! Why are you wasting time? Go and place the fourth magical flower!\"";
- menu
- "All right.", L_Close,
- "Please describe where to place it again.", L_WayFourthFlower,
- "The magical flower... I lost it.", L_Next20;
-
-L_Next20:
- mes "Orum shakes his head in disbelief.";
- mes "[Orum]";
- mes "\"Lost it? Unbelievable! How could you lose it?\"";
- next;
- mes "\"This behaviour shouldn't remain unpunished. Pay a recompensation fee of " + @RECOMPENSATION_4 + " GP, and I will to allow you to continue helping us. So?\"";
- menu
- "Here it is.", L_Next21,
- "That's too expensive!", L_NoRecompensation;
-
-L_Next21:
- if (Zeny < @RECOMPENSATION_4)
- goto L_NoMoney;
- set Zeny, Zeny - @RECOMPENSATION_4;
- set OrumQuest, 25;
-
- mes "[Orum]";
- mes "\"Now bring " + @AMOUNT_HARDSPIKE + " Hard Spikes, " + @AMOUNT_ANGRYSTINGER + " Angry Scorpion Stingers and one Yellow Rose again.\"";
- goto L_Close;
-
-L_PlacedFourthFlower: // 27: Placed fourth magical flower
- mes "[Orum]";
- mes "\"Oh, almost! Only the last flower needs to be placed. Don't lose your focus now!";
- mes "This last flower is the most complicated one. Pay attention.\"";
- menu
- "Tell me what you need!", L_Next22,
- "Why do you want to summon so many beings?", L_AskReason;
-
-L_Next22:
- set OrumQuest, 28;
- goto L_FifthFlower;
-
-L_AskReason:
- mes "[Orum]";
- mes "\"Let's say... it's about paying back an old debt.";
- mes "I'll give you a hint: think about what's in the center of the pentagram. Or rather who is.\"";
- next;
- mes "\"Anyway, let's get back to business!\"";
- set OrumQuest, 28;
- next;
- goto L_FifthFlower;
-
-L_FifthFlower: // 28: Got task to bring materials for fifth magical flower
- mes "[Orum]";
- mes "\"For the last flower we need " + @AMOUNT_ACORN + " Acorns, " + @AMOUNT_PEARL + " Pearls, " + @AMOUNT_BLACKSTINGER + " Black Scorpion Stingers and 1 Red Rose.\"";
- menu
- "Here it is.", L_Next23,
- "Understood.", L_Close,
- "Sagatha is the target of the spell, right?", L_AskSagatha;
-
-L_Next23:
- if ((countitem("Acorn") < @AMOUNT_ACORN)
- || (countitem("Pearl") < @AMOUNT_PEARL)
- || (countitem("BlackScorpionStinger") < @AMOUNT_BLACKSTINGER)
- || (countitem("RedRose") < 1))
- goto L_NoItem;
-
- delitem "Acorn", @AMOUNT_ACORN;
- delitem "Pearl", @AMOUNT_PEARL;
- delitem "BlackScorpionStinger", @AMOUNT_BLACKSTINGER;
- delitem "RedRose", 1;
-
- mes "Orum takes the materials and draws a deep breath. He then begins to prepare them similarly to the materials for the other flowers.";
- mes "[Orum]";
- mes "\"Well, basically, we need to do the same as with the other flowers. We need to be careful, however, because this mixture is a bit more delicate. Would you like to do the add the rheological additive or mix the powders?\"";
- menu
- "I'll handle the additive.", L_Additive,
- "Let me mix the powders.", L_Pulvers;
-
-L_Additive:
- mes "Orum agrees and starts mixing the powders. You're ready to pour in the additive once the mixture reached a high level of bubbling.";
- next;
- mes "The next dash of powder Orum adds causes the mixture to sputter and splash. Some of the hot liquid lands on the back of your hand!";
- heal -5, 0;
- menu
- "Ouch!",L_Next24,
- "Aah!", L_Next24,
- "Urgh!", L_Next24;
-
-L_Next24:
- mes "As you step back from the cauldron you jostle Orum, and the Red Rose falls out of his pocket into the cauldron.";
- goto L_FlowerHat;
-
-L_Pulvers:
- mes "You start mixing the powders together. It bubbles much more than during the previous brewing.";
- next;
- mes "The next dash of powder you add causes the mixture to bubble and splash. Some of the hot liquid lands on Orum's hand! He screams and jumps back while waving his hand around.";
- next;
- mes "This causes the flower to fall out of his pocket, landing right into the cauldron.";
- next;
- mes "Orum stares at it.";
- goto L_FlowerHat;
-
-L_FlowerHat:
- mes "[Orum]";
- mes "\"Fool! See what you've done? It's ruined!\"";
- next;
- mes "\"Though, we still have enough of the materials left to start over. Here, take this garbage out and get a new Red Rose!\"";
- getitem "RedRoseHat", 1;
- set OrumQuest, 29;
- goto L_Close;
-
-L_AskSagatha:
- mes "[Orum]";
- mes "\"Ah, clever. Yes, you're right.";
- mes "That self-righteous forest witch thinks she's better than other people. She thinks that gives her the right to stick her nose into other mages' affairs.\"";
- next;
- mes "\"What's even worse, she thinks she can punish other mages for actions she considers wrong - \"";
- mes "[Waric]";
- mes "\"Orum! You do not need to get into the details of this.\"";
- next;
- mes "[Orum]";
- mes "\"Oh, heh, of course. However, we'll teach her a lesson.";
- mes "You are going to help us.\"";
- goto L_Close;
-
-L_FailedFifthFlower: // 29: Failed unbeatable minigame and got the flower hat
- mes "[Orum]";
- mes "\"Did you get a new Red Rose, so we can create the last magical flower?\"";
- menu
- "Yes.", L_Next25,
- "Not yet.", L_Close,
- "Will those monsters hurt Sagatha? Or kill her?", L_AskHurtSagatha;
-
-L_Next25:
- if (countitem("RedRose") < 1)
- goto L_NoItem;
-
- delitem "RedRose", 1;
- mes "[Orum]";
- mes "\"Finally! This time I'll do it all by myself. You and your clumsy fingers need to take a step back so it won't get ruined again.\"";
- next;
- mes "You watch while Orum carefully prepares the last magic flower.";
- next;
- getitem "RedSummonFlower", 1;
- set OrumQuest, 30;
- mes "[Orum]";
- mes "\"Here it is. We're almost done. Don't mess it up!\"";
- next;
- goto L_WayFifthFlower;
-
-L_WayFifthFlower:
- mes "[Orum]";
- mes "\"To place the last flower: go east and follow the road. At some point it might be difficult to get through, since the road isn't used anymore, and the forest is growing back.";
- mes "But you have to find a way and reach a clearing with a very old and tall tree. There you'll find another prepared spot with some flowers.\"";
- goto L_Close;
-
-L_AskHurtSagatha:
- mes "[Orum]";
- mes "\"Oh, are you getting scared? I thought you wanted to support us.\"";
- next;
- mes "\"However, no need to worry. Sagatha is much too powerful to get seriously injured by this, sadly.\"";
- next;
- mes "\"If wanted to actually harm her, we'd need to summon some greater powers. That'd be risky in the best case, and devastatingly costly in the worst.\"";
- next;
- mes "\"Unless... well, I assume you're not open to donating your soul for a pact with a higher astral being, are you?\"";
- goto L_Close;
-
-L_PlaceFifthFlower: // 30: Got task to place the fifth flower
- mes "[Orum]";
- mes "\"What are you waiting for? We've almost reached our goal! Go and place the last magical flower to finish the pentagram!\"";
- menu
- "Yes.", L_Close,
- "Where do I have to place it?", L_WayFifthFlower,
- "Please keep calm, but I lost the flower.", L_Next26;
-
-L_Next26:
- mes "[Orum]";
- mes "\"Lost it? You incompetent excuse for a servant! What do you think you're doing?\"";
- next;
- mes "\"This behaviour shouldn't remain unpunished. Pay a recompensation fee of " + @RECOMPENSATION_5 + " GP, and I'm going to allow you to continue helping us. You also have to bring the necessary materials for a new flower.\"";
- menu
- "Okay, here it is.", L_Next27,
- "What materials do we need?", L_MaterialFifth,
- "That's too expensive!", L_NoRecompensation;
-
-L_Next27:
- if (Zeny < @RECOMPENSATION_5)
- goto L_NoMoney;
- if ((countitem("Acorn") < @AMOUNT_ACORN)
- || (countitem("Pearl") < @AMOUNT_PEARL)
- || (countitem("BlackScorpionStinger") < @AMOUNT_BLACKSTINGER)
- || (countitem("RedRose") < 1))
- goto L_NoItem;
-
- set Zeny, Zeny - @RECOMPENSATION_5;
- delitem "Acorn", @AMOUNT_ACORN;
- delitem "Pearl", @AMOUNT_PEARL;
- delitem "BlackScorpionStinger", @AMOUNT_BLACKSTINGER;
- delitem "RedRose", 1;
- getitem "RedSummonFlower", 1;
-
- mes "Orum takes the materials and prepares a new flower.";
- mes "[Orum]";
- mes "\"Here is another flower. Don't mess it up this time, understood?\"";
- goto L_Close;
-
-L_MaterialFifth:
- mes "[Orum]";
- mes "\"For the last flower we need " + @AMOUNT_ACORN + " Acorns, " + @AMOUNT_PEARL + " Pearls, " + @AMOUNT_BLACKSTINGER + " Black Scorpion Stingers and 1 Red Rose.\"";
- goto L_Close;
-
-L_PlacedFifthFlower: // 31: Placed fifth flower
- mes "[Orum]";
- mes "\"Hahahaha! Wonderful! We were able to hear Sagatha's screaming and ranting here in the cave!\"";
- next;
- mes "\"Well done, really. I think you've earned yourself a small reward. Here, take this.\"";
- set Zeny, Zeny + @REWARD_MONEY;
- getexp @REWARD_EXP, 0;
- set OrumQuest, 32;
- goto L_Close;
-
-L_Done:
- mes "[Orum]";
- mes "\"Ah, whenever I think of Sagatha's reaction, it brings a smile to my face. You've done a very good job.\"";
- goto L_Close;
-
-L_NoRecompensation:
- mes "[Orum]";
- mes "\"Well, you could still try to recover the magical flower instead. It's your decision.\"";
- goto L_Close;
-
-L_NoMoney:
- mes "[Orum]";
- mes "\"Hey, you don't have enough money!\"";
- goto L_Close;
-
-L_NoItem:
- mes "[Orum]";
- mes "\"Hey, you don't have it!\"";
- goto L_Close;
-
-L_Close:
- set @AMOUNT_SMALLMUSHROOM, 0;
- set @AMOUNT_ASH, 0;
- set @RECOMPENSATION_1, 0;
- set @AMOUNT_PINKPETAL, 0;
- set @AMOUNT_STINGER, 0;
- set @RECOMPENSATION_2, 0;
- set @AMOUNT_WHITEFUR , 0;
- set @AMOUNT_REDSTINGER , 0;
- set @RECOMPENSATION_3, 0;
- set @bubblingLevel, 0;
- cleararray @bubblingLevels$[0], "", 4;
- set @AMOUNT_HARDSPIKE , 0;
- set @AMOUNT_ANGRYSTINGER , 0;
- set @RECOMPENSATION_4, 0;
- set @colorLevel, 0;
- set @goodColor, 0;
- cleararray @colorLevels$[0], "", 7;
- set @AMOUNT_ACORN, 0;
- set @AMOUNT_PEARL, 0;
- set @AMOUNT_BLACKSTINGER, 0;
- set @RECOMPENSATION_5, 0;
- set @REWARD_MONEY, 0;
- set @REWARD_EXP, 0;
- close;
-}
diff --git a/world/map/npc/017-4/waric.txt b/world/map/npc/017-4/waric.txt
deleted file mode 100644
index 1fc489f3..00000000
--- a/world/map/npc/017-4/waric.txt
+++ /dev/null
@@ -1,421 +0,0 @@
-// Author: Jenalya
-// Current state: only dialog, magic teaching not finished
-// Waric is intended to teach the player some dark magic spells
-// in case the player is not a follower of Sagatha and can't become
-// one anymore (killed the wounded mouboo or cut the druid tree).
-// Waric would teach the spells based on the progress in the pentagram
-// creation, but save which spells were taught in a different variable.
-// Author: tux9th
-// Editing a few things and creating the Quests for Dark Magic school and spells
-// OrumQuest State 32 - had the talk about Dark Magic with Waric.
-// OrumQuest State 33 - Completed the long talk with Waric
-// OrumQuest State 34 - Aborted the oath of dark magic once
-// OrumQuest State 35 - Aborted the oath of dark magic twice - cannot learn dark magic anymore.
-// OrumQuest State 36 - Learned Dark Magic Skill.
-// OrumQuest State 37 - Learned summon wicked mushroom.
-// OrumQuest State 38 - Learned toxic dart.
-// OrumQuest State 39 - Talked about summoning Snakes, get ingredients.
-// OrumQuest State 40 - Given ingredients for Snake spell.
-// OrumQuest State 41 - Learned Summon snake
-// When extending these Quest Variable to 51 all of the other dark magic spells will be available. Keep this in mind.
-
-017-4,216,36,0|script|Waric|153
-{
- set @mouboo_status, ((QUEST_MAGIC & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) & 3;
- set @killed_mouboo, 0;
- if ((@mouboo_status == 1) || (@mouboo_status == 2))
- set @killed_mouboo, 1;
- set @mouboo_status, 0;
-
- if (MAGIC_FLAGS & MFLAG_DID_CUTTREE)
- set @cut_tree, 1;
-
- set @sagatha_follower, (QUEST_MAGIC & (NIBBLE_4_MASK | NIBBLE_5_MASK)) >> NIBBLE_4_SHIFT;
- if (OrumQuest > 40) goto L_MoreMagic;
- if (OrumQuest > 39) goto L_SnakesSpell;
- if (OrumQuest > 38) goto L_SnakesIngredients;
- if (OrumQuest > 37) goto L_Snakes;
- if (OrumQuest > 36) goto L_ToxicDart;
- if (OrumQuest > 35) goto L_Mushroom;
- if (OrumQuest > 34) goto L_Banished;
- if (OrumQuest > 33) goto L_LastChance;
- if (OrumQuest > 32) goto L_BackforOath;
- if (OrumQuest > 31) goto L_DarkMagic;
- if (OrumQuest > 30) goto L_Flower5;
- if (OrumQuest > 26) goto L_Flower4;
- if (OrumQuest > 23) goto L_Flower3;
- if (OrumQuest > 20) goto L_Flower2;
- if (OrumQuest > 17) goto L_Flower1;
- if (OrumQuest > 15) goto L_Mistrust;
-
- mes "[Waric]";
- mes "\"You! You really are far too persistent to know what is good for you!\"";
- mes "He turns towards Orum.";
- next;
- mes "[Waric]";
- mes "\"It seems your ridiculous Guarding Spirit has failed at his task.";
- mes "Deal with this. We cannot afford any more of these distractions.\"";
- goto L_Close;
-
-L_Mistrust:
- mes "[Waric]";
- mes "\"So, you say you want to help us? You do not look very competent.";
- mes "Also, I do not see what motivation you have to help.\"";
- next;
- mes "\"Demonstrate your worth and I might take you seriously.\"";
- goto L_Close;
-
-L_Flower1:
- mes "[Waric]";
- mes "\"You placed the first flower. Why, I am surprised! I did not expect you to actually stay and become useful.\"";
- if (!(getskilllv(SKILL_MAGIC)))
- goto L_Close;
- menu
- "Can you teach me some magic?", L_Next,
- "Of course!", L_Close;
-
-L_Next:
- if (@sagatha_follower)
- goto L_Sagatha;
- if (!@killed_mouboo && !@cut_tree)
- goto L_Undecided;
- mes "[Waric]";
- mes "\"Hmm. I suppose I could do that. You seem to have some potential.";
- mes "First, proceed with the task given by Orum.\"";
- goto L_Close;
-
-L_Flower2:
- mes "[Waric]";
- mes "\"You placed the second flower? It seems Orum's choice of tools is better than expected.\"";
- goto L_Close;
-
-L_Flower3:
- mes "[Waric]";
- mes "\"I saw that you helped to create and place the third flower. Good.\"";
- goto L_Close;
-
-L_Flower4:
- mes "[Waric]";
- mes "\"Now that you have placed the fourth flower, we are very close to reaching our goal. Keep it up.\"";
- goto L_Close;
-
-L_Flower5:
- mes "[Waric]";
- mes "\"Hahaha, excellent. You handled the creation of our pentagram very well. I will be keeping that in mind.";
- mes "I have advised Orum to give you a reward. Go now and speak with him.\"";
- goto L_Close;
-
-L_DarkMagic:
- mes "[Waric]";
- mes "\"So, you have gotten your reward and finished the task Orum had for you. Very good.\"";
- menu
- "Can you teach me some magic?", L_Next1,
- "I'm great or what!", L_Close;
-
-L_Next1:
- if (@sagatha_follower)
- goto L_Sagatha;
- if (!@killed_mouboo && !@cut_tree)
- goto L_Undecided;
- mes "[Waric]";
- mes "\"You appear to be trustworthy. I will allow you to become my apprentice.\"";
- mes "\"I will teach you the basics of the branch of magic I practice. It is called Dark Magic. Very few people know of its existence these days, and hardly anyone is capable of teaching it.\"";
- mes "\"You are very lucky that fate has brought us together.\"";
- next;
- mes "[Waric]";
- mes "\"You cut the tree to please the Earth Spirit. You chose the Dark Side of magic, and this cannot be undone.\"";
- mes "\"Dark Magic draws its power from hate and anger. Your magic will be stronger against good creatures, and weaker against the undead and the corrupt.\"";
- next;
- mes "\"Once you start practicing Dark Magic, using certain spells will be painful. Everything comes with a price.\"";
- next;
- mes "[Waric]";
- mes "\"So, now that you know more about Dark Magic, are you still willing to become my apprentice?\"";
- mes "\"Once you cross this line, there is no going back. Keep this in mind!\"";
- set OrumQuest, 33;
- menu
- "I'll have to think about it.", L_ComeBackLater,
- "Yes.", L_Oath;
-
-L_DarkTalkAgain:
- mes "The old wizard seems to be annoyed.";
- mes "[Waric]";
- mes "\"Very well. Once you start practicing Dark Magic, certain spells will be painful to cast. Your magic will be stronger against good creatures, and weaker against the undead and the corrupt.\"";
- next;
- mes "\"When you cross this line, there is no going back. Remember that!\"";
- mes "\"So, are you ready to become my apprentice?\"";
- next;
- menu
- "No.", L_ComeBackLater,
- "Yes. I want to be your apprentice.", L_Oath;
-
-L_BackforOath:
- mes "[Waric]";
- mes "\"Ah, you're back. Have you decided yet if you want to become my apprentice?\"";
- menu
- "No." , L_ComeBackLater,
- "Please, tell me about Dark Magic again.", L_DarkTalkAgain,
- "Yes. I want to be your apprentice.", L_Oath;
-
-L_LastChance:
- mes "Waric looks at you, with despise evident on his face.";
- next;
- mes "[Waric]";
- mes "\"I knew you were a coward.\"";
- mes "\"I will give you one last chance to take the oath. If you refuse this time as well, I will no longer teach you.\"";
- next;
- mes "\"If you are still not sure, I will give you some time to reconsider, but if you start the ritual and run away, you are dead to me!\"";
- next;
- menu
- "I am ready to take the oath. [last chance!]", L_Next2,
- "I have to reconsider.", L_ComeBackLater;
-
-L_Next2:
- mes "[Waric]";
- mes "\"If you stop during the oath again, I will not teach you anything. If you are not sure whether you want to become my apprentice or not, take more time to reconsider. However, this is your last chance to do so.\"";
- next;
- menu
- "I have to reconsider.", L_ComeBackLater,
- "I am ready to take the oath. [last chance!]", L_Oath;
-
-L_Oath:
- mes "[Waric]";
- mes "\"Now say the oath of the Dark.\"";
- next;
- mes "Suddenly the room turns darker and writing penned in flames appears in front of you. You feel yourself shaking and shivering.";
- next;
- mes "As Waric yells, the walls tremble.";
- mes "[Waric]";
- mes "\"Read it!\"";
- mes "The sound of his voice echoes in the cave.";
- next;
- mes "You start to read the letters, but your throat closes up and you have a hard time speaking the words out loud.";
- next;
- mes "I swear to darkness and hate.";
- mes "Destruction shall be my guide.";
- mes "I shall not be the cure to poison,";
- mes "but the salt to an open wound.";
- mes "Sickness and death I shall spread,";
- mes "take the food from those unfed.";
- mes "Nothing is to be loved, everything has to end.";
- mes "I shall prevail, other shall perish.";
- next;
- mes "Waric screams at your silence.";
- mes "[Waric]";
- mes "\"Say it! Say it now!\"";
- next;
- menu
- "[Say the oath]", L_Next3,
- "I can't say this, it's too much for me!", L_NoOath;
-
-L_Next3:
- mes "As you speak the words written in flames, you feel all of your positive feelings drain away. You no longer love, you're no longer happy. You feel indifferent to the world. But there is also a newfound feeling of power in you. You feel capable of doing anything.";
- set @SUP_id, SKILL_MAGIC_DARK;
- set @SUP_name$, "Dark Magic";
- set @SUP_xp, 150000;
- set @SUP_lvl, 2;
- callfunc "SkillUp";
- next;
- heal MaxHp, 0;
- heal ((MaxHp/100) * -99), 0;
- mes "You feel completely exhausted.";
- set OrumQuest, 36;
- goto L_Close;
-
-L_NoOath:
- mes "Waric mumbles something. You guess it's a magic spell.";
- warp "005-3", 86 , 33;
- heal MaxHp, 0;
- heal ((MaxHp/100) * -50), 0;
- set OrumQuest, OrumQuest + 1;
- goto L_Close;
-
-L_Mushroom:
- mes "[Waric]";
- mes "\"Now that you are a student of mine, I will teach you some spells.\"";
- next;
- mes "\"We will start with an easy one. I will teach you how to summon a wicked mushroom.\"";
- mes "\"The spell consumes a Small Mushroom and a Dark Crystal. Shove the Dark Crystal into the Small Mushroom and yell " + get(.invocation$, "smwmushroom") +".\"";
- next;
- mes "\"A wicked mushroom will appear to fight for you.\"";
- set OrumQuest, 37;
- next;
- mes "##1WARNING: Summoning spells DO NOT work inside towns.##0";
- goto L_Close;
-
-L_ToxicDart:
- mes "[Waric]";
- mes "\"Welcome back, apprentice.\"";
- mes "\"Are you read for another spell?\"";
- menu
- "No, I still have to practice the first one.", L_Close,
- "Yes. Show me some more!", L_Next4;
-
-L_Next4:
- mes "[Waric]";
- mes "\"Very well. This spell is more complex than the last one. It is called toxic dart. Only your peers are susceptible to the dart's poison. If you hit an animal the dart will injure it, but the poison will not work.\"";
- next;
- mes "\"You have to use two roots for this spell. First you have to take one root and break off all the root hair. Shape it into a stick, if you will. Then put it on top of the other root and form an arrow-like structure.\"";
- next;
- mes "\"Once this is done you have to throw it in the air and scream " + get(.invocation$, "toxic-dart") + " and the two roots will turn into toxic darts, a projectile you can throw.\"";
- next;
- mes "\"If you want to learn more, come back later.\"";
- set OrumQuest, 38;
- goto L_Close;
-
-L_Snakes:
- mes "Waric nods at you.";
- mes "[Waric]";
- mes "\"Have you practiced enough?\"";
- menu
- "Yes, I'm an outstanding Dark Mage!", L_Next5,
- "No. I'm too lazy.", L_ComeBackLater;
-
-L_Next5:
- mes "[Waric]";
- mes "\"Very well. I shall teach you another spell.\"";
- mes "\"This one is so complex that I have to show it to you before explaining it further. Bring me a snake egg and a dark crystal.\"";
- next;
- mes "\"Off you go now. Bring me the ingredients.\"";
- set OrumQuest, 39;
- goto L_Close;
-
-L_SnakesIngredients:
- set OrumQuest, 39;
- mes "[Waric]";
- mes "\"Did you bring one Dark Crystal and a Snake Egg?\"";
- menu
- "Yes, I have what you want.", L_Next6,
- "No, I need more time.", L_NoItem;
-
-L_Next6:
- if ((countitem("DarkCrystal") < 0)
- || (countitem("SnakeEgg") < 0))
- goto L_NoItem;
- delitem "DarkCrystal", 1;
- delitem "SnakeEgg", 1;
- mes "[Waric]";
- mes "\"Observe!\"";
- next;
- mes "The wizard takes the crystal and the egg, mumbling something you don't understand. Suddenly, he throws the egg into the air and throws the crystal right through it midair.";
- next;
- mes "The Egg cracks open and a living snake comes out of the egg.";
- next;
- monster "017-4", 217,36, "", 1010, 1;
- mes "The wizard looks at you, his eyes flashing, and laughs diabolically.";
- set OrumQuest, 40;
- goto L_Close;
-
-L_SnakesSpell:
- mes "[Waric]";
- mes "\"Did you see how this spell is cast?\"";
- menu
- "Yes. What did you mumble?", L_Next7,
- "No. Could you show me again?", L_SnakesAgain;
-
-L_Next7:
- mes "[Waric]";
- mes "\"I said " + get(.invocation$, "summon-snakes") + ".\"";
- mes "\"Have fun with those spells and use them to cause hate, anger and death.\"";
- set OrumQuest, 41;
- goto L_Close;
-
-L_SnakesAgain:
- mes "[Waric]";
- mes "\"Do you really want me to show you the spell again? You will have to bring new ingredients.\"";
- menu
- "No.", L_SnakesSpell,
- "Yes.", L_SnakesIngredients;
-
-L_ComeBackLater:
- mes "[Waric]";
- mes "\"Then come back later.\"";
- goto L_Close;
-
-L_MoreMagic:
- mes "[Waric]";
- mes "\"Hello, apprentice.\"";
- mes "\"You must practice more! I will teach you more spells once you have mastered the ones I have already demonstrated.\"";
- next;
- menu
- "Can you tell me the invocations for the spells you taught me again?", L_Next8,
- "Thanks, master. I will come back later", L_Close;
-
-L_Next8:
- mes "[Waric]";
- mes "\"Yes, of course.\"";
- mes "\"To summon the snakes use " + get(.invocation$, "summon-snakes") + ". Make sure to have a snake egg and a dark crystal with you.\"";
- mes "\"Say " + get(.invocation$, "toxic-dart") + " to make your two roots into toxic darts.\"";
- mes "\"And the first spell, to summon wicked mushrooms, is " + get(.invocation$, "smwmushroom") + ". Remember, you will need a small mushroom and dark crystal.\"";
- next;
- mes "\"Now leave. Spread chaos with the spells I have taught you!\"";
- goto L_Close;
-
-L_Undecided:
- mes "[Waric]";
- mes "\"Well, I could. However, I am not sure you are trustworthy.\"";
- next;
- mes "\"How do I know you will not run off to Sagatha with what I would be teaching you?\"";
- goto L_Close;
-
-L_Sagatha:
- mes "[Waric]";
- mes "\"You are already a student of Sagatha. I will not teach you anything!\"";
- goto L_Close;
-
-L_Banished:
- mes "The wizard looks at you with despise.";
- mes "[Waric]";
- mes "\"How did you...\"";
- heal -Hp, 0;
- goto L_Close;
-
-L_NoItem:
- mes "[Waric]";
- mes "\"Why are you wasting my time? Come back when you got everything I need.\"";
- goto L_Close;
-
-L_Close:
- set @killed_mouboo, 0;
- set @cut_tree, 0;
- set @sagatha_follower, 0;
- set @SUP_id, 0;
- set @SUP_name$, "";
- set @SUP_lvl, 0;
- set @SUP_xp, 0;
- close;
-}
-
-017-1,74,32,0|script|DebugFlowerP|153
-{
- mes "Debug options for Orum's quest:";
- menu
- "Candle Helmet done.", L_CandleHelmet,
- "Input quest variable.", L_Var,
- "Show current quest state.", L_CurrentState,
- "Reset quest.", L_Reset,
- "Nevermind.", L_Close;
-
-L_CandleHelmet:
- set OrumQuest, 14;
- goto L_Close;
-
-L_Var:
- input OrumQuest;
- goto L_Close;
-
-L_CurrentState:
- mes "The value of the quest variable OrumQuest is currently " + OrumQuest + ".";
- goto L_Close;
-
-L_Reset:
- set OrumQuest, 0;
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "DebugFlowerP";
- end;
-}
diff --git a/world/map/npc/017-9/_import.txt b/world/map/npc/017-9/_import.txt
deleted file mode 100644
index 06bab503..00000000
--- a/world/map/npc/017-9/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 017-9: GM Lounge
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 017-9
-npc: npc/017-9/_mobs.txt
-npc: npc/017-9/_nodes.txt
-npc: npc/017-9/_warps.txt
-npc: npc/017-9/mapflags.txt
-npc: npc/017-9/npcs.txt
diff --git a/world/map/npc/017-9/_mobs.txt b/world/map/npc/017-9/_mobs.txt
deleted file mode 100644
index d8d6de99..00000000
--- a/world/map/npc/017-9/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Lounge mobs
-
diff --git a/world/map/npc/017-9/_nodes.txt b/world/map/npc/017-9/_nodes.txt
deleted file mode 100644
index 78aae663..00000000
--- a/world/map/npc/017-9/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Lounge nodes
-
-// (no nodes)
diff --git a/world/map/npc/017-9/_warps.txt b/world/map/npc/017-9/_warps.txt
deleted file mode 100644
index 15bde415..00000000
--- a/world/map/npc/017-9/_warps.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Lounge warps
-
-017-9,29,20|warp|-1,-1,020-1,60,75
-017-9,26,21|warp|-1,-1,009-1,43,45
-017-9,21,20|warp|-1,-1,001-1,54,118
-017-9,31,20|warp|-1,-1,027-2,46,110
-017-9,23,20|warp|-1,-1,029-1,34,95
diff --git a/world/map/npc/017-9/mapflags.txt b/world/map/npc/017-9/mapflags.txt
deleted file mode 100644
index 7a013d6a..00000000
--- a/world/map/npc/017-9/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-017-9|mapflag|resave|017-9,26,25
diff --git a/world/map/npc/017-9/npcs.txt b/world/map/npc/017-9/npcs.txt
deleted file mode 100644
index 9ba0e498..00000000
--- a/world/map/npc/017-9/npcs.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-009-1,42,43,0|script|#SecretDoor|32767,0,0
-{
- if (GM < MAP_LOUNGE && GM < G_SYSOP && !debug) end;
- gmlog "@warp 017-9";
- warp "017-9", 27, 23;
- end;
-}
-
-020-1,60,76,0|script|#SecretDoor2|32767,0,0
-{
- if (GM < MAP_LOUNGE && GM < G_SYSOP && !debug) end;
- gmlog "@warp 017-9";
- warp "017-9", 29, 21;
- end;
-}
-
-001-1,54,118,0|script|#SecretDoor3|32767,0,0
-{
- if (GM < MAP_LOUNGE && GM < G_SYSOP && !debug) end;
- gmlog "@warp 017-9";
- warp "017-9", 21, 21;
- end;
-}
-
-027-2,46,111,0|script|#SecretDoor4|32767,0,0
-{
- if (GM < MAP_LOUNGE && GM < G_SYSOP && !debug) end;
- gmlog "@warp 017-9";
- warp "017-9", 31, 21;
- end;
-}
-
-029-1,34,96,0|script|#SecretDoor5|32767,0,0
-{
- if (GM < MAP_LOUNGE && GM < G_SYSOP && !debug) end;
- gmlog "@warp 017-9";
- warp "017-9", 23, 21;
- end;
-}
diff --git a/world/map/npc/018-1/_import.txt b/world/map/npc/018-1/_import.txt
deleted file mode 100644
index bf00cad9..00000000
--- a/world/map/npc/018-1/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 018-1: Woodland Mining Camp
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 018-1
-npc: npc/018-1/_mobs.txt
-npc: npc/018-1/_nodes.txt
-npc: npc/018-1/_warps.txt
-npc: npc/018-1/flowerpentagram3.txt
-npc: npc/018-1/mapflags.txt
-npc: npc/018-1/mike.txt
-npc: npc/018-1/miners.txt
-npc: npc/018-1/sword.txt
diff --git a/world/map/npc/018-1/_mobs.txt b/world/map/npc/018-1/_mobs.txt
deleted file mode 100644
index ced34aa9..00000000
--- a/world/map/npc/018-1/_mobs.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Mining Camp mobs
-
-018-1,136,79,9,41|monster|SeaSlime|1033,10,100000ms,30000ms
-018-1,108,87,53,25|monster|ManaBug|1131,10,100000ms,30000ms
-018-1,116,44,6,7|monster|SeaSlime|1033,3,100000ms,30000ms
-018-1,119,56,13,6|monster|PinkFlower|1014,2,100000ms,30000ms
-018-1,175,28,17,19|monster|JackO|1022,1,180000ms,120000ms
-018-1,78,59,3,1|monster|YellowSlime|1007,1,100000ms,30000ms
-018-1,57,63,14,7|monster|Silkworm|1035,2,100000ms,30000ms
-018-1,43,63,31,28|monster|Bat|1017,10,100000ms,30000ms
-018-1,134,39,18,10|monster|GrassSnake|1034,4,100000ms,50000ms
-018-1,124,42,9,11|monster|GrassSnake|1034,2,100000ms,50000ms
-018-1,124,19,22,9|monster|GrassSnake|1034,3,100000ms,50000ms
-018-1,122,29,19,9|monster|GrassSnake|1034,2,100000ms,50000ms
-018-1,149,45,10,8|monster|Bat|1017,5,100000ms,30000ms
-018-1,169,47,20,10|monster|RedSlime|1008,4,120000ms,30000ms
-018-1,136,49,13,8|monster|Bat|1017,4,100000ms,30000ms
-018-1,166,49,13,9|monster|CloverPatch|1037,1,100000ms,30000ms
-018-1,111,62,5,2|monster|Silkworm|1035,1,60000ms,30000ms
-018-1,117,50,4,3|monster|SeaSlime|1033,1,120000ms,60000ms
-018-1,96,47,18,11|monster|RedSlime|1008,3,100000ms,50000ms
-018-1,106,52,15,6|monster|CobaltPlant|1030,1,240000ms,120000ms
-018-1,78,55,37,6|monster|RedSlime|1008,7,100000ms,50000ms
-018-1,145,24,10,9|monster|RedSlime|1008,3,100000ms,50000ms
-018-1,68,89,14,17|monster|Bat|1017,3,100000ms,50000ms
-018-1,160,31,11,18|monster|RedSlime|1008,5,100000ms,50000ms
-018-1,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms
-018-1,0,0,0,0|monster|Butterfly|1055,20,30ms,20ms
-018-1,134,80,14,39|monster|Maggot|1002,15,30ms,0ms
diff --git a/world/map/npc/018-1/_nodes.txt b/world/map/npc/018-1/_nodes.txt
deleted file mode 100644
index 9ac98a33..00000000
--- a/world/map/npc/018-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Mining Camp nodes
-
-// (no nodes)
diff --git a/world/map/npc/018-1/_warps.txt b/world/map/npc/018-1/_warps.txt
deleted file mode 100644
index b3a6c62b..00000000
--- a/world/map/npc/018-1/_warps.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Mining Camp warps
-
-018-1,79,59|warp|0,-1,018-3,100,132
-018-1,112,61|warp|-1,-1,018-3,44,38
-018-1,115,40|warp|-1,-1,013-3,22,114
-018-1,128,56|warp|-1,-1,018-3,49,99
-018-1,90,42|warp|-1,-1,018-3,123,166
-018-1,69,54|warp|-1,-1,018-3,70,105
-018-1,127,36|warp|-1,-1,013-3,139,44
-018-1,134,45|warp|-1,-1,013-3,61,178
-018-1,147,40|warp|-1,-1,013-3,81,102
-018-1,153,46|warp|-1,-1,018-3,145,162
-018-1,158,34|warp|-1,-1,018-3,64,103
-018-1,162,44|warp|-1,-1,018-3,29,166
-018-1,177,20|warp|-1,-1,013-3,177,90
-018-1,65,73|warp|-1,-1,018-2,50,28
-018-1,79,98|warp|2,-1,008-1,78,18
-018-1,64,70|warp|-1,-1,018-2,41,21
-018-1,78,34|warp|-1,-1,018-3,107,147
diff --git a/world/map/npc/018-1/flowerpentagram3.txt b/world/map/npc/018-1/flowerpentagram3.txt
deleted file mode 100644
index 857c412d..00000000
--- a/world/map/npc/018-1/flowerpentagram3.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-// Author: Jenalya
-
-018-1,83,29,0|script|#FlowerPentagram3|400
-{
- if (OrumQuest >= 31) goto L_PlacedFifthFlower;
-
- if (OrumQuest > 23) goto L_PlacedThirdFlower;
- if (OrumQuest == 23) goto L_ThirdFlower;
-
- message strcharinfo(0), "Something is odd about this place.";
- end;
-
-L_ThirdFlower:
- mes "You recognize this place as the spot where Orum wants you to place the third of his magical flowers.";
- menu
- "Place the flower.", L_Next,
- "Leave.", L_Close;
-
-L_Next:
- if (isin("018-1", 82, 28, 84, 30))
- goto L_Place;
-
- mes "This isn't working, you're too far away.";
- goto L_Close;
-
-L_Place:
- set @localMonsterCount,
- mobcount("018-1", "#FlowerPentagram3::OnSquirrelDeath") +
- mobcount("018-1", "#FlowerPentagram3::OnMushroomDeath") +
- mobcount("018-1", "#FlowerPentagram3::OnBlueparDeath") +
- mobcount("018-1", "#FlowerPentagram3::OnScorpionDeath") +
- mobcount("018-1", "#FlowerPentagram3::OnRScorpionDeath") +
- mobcount("018-1", "#FlowerPentagram3::OnAScorpionDeath") +
- 6; // the mobcount function has an offset of -1, so we add 6 to have the actual amount of monsters
- if (@localMonsterCount > 4)
- goto L_MonstersAlive;
-
- if (countitem("WhiteSummonFlower") < 1)
- goto L_NoFlower;
- delitem "WhiteSummonFlower", 1;
- mes "Knowing what will happen, you prepare yourself for a fight. Then you go ahead with the ritual and place the magical flower.";
- mes "You feel the now familiar tension around you. Here they come.";
- set OrumQuest, 24;
- close2;
- areamonster "018-1", 73, 22, 89, 36, "", 1105, 1, "#FlowerPentagram3::OnSquirrelDeath";
- areamonster "018-1", 73, 22, 89, 36, "", 1106, 2, "#FlowerPentagram3::OnMushroomDeath";
- areamonster "018-1", 73, 22, 89, 36, "", 1107, 1, "#FlowerPentagram3::OnBlueparDeath";
- areamonster "018-1", 73, 22, 89, 36, "", 1003, 2, "#FlowerPentagram3::OnScorpionDeath";
- areamonster "018-1", 73, 22, 89, 36, "", 1004, 1, "#FlowerPentagram3::OnRScorpionDeath";
- areamonster "018-1", 73, 22, 89, 36, "", 1057, 2, "#FlowerPentagram3::OnAScorpionDeath";
- set @value, 15;
- callfunc "QuestSagathaAnnoy";
- set @value, 0;
- end;
-
-OnSquirrelDeath:
- set @mobID, 1105;
- callfunc "MobPoints";
- end;
-
-OnMushroomDeath:
- set @mobID, 1106;
- callfunc "MobPoints";
- end;
-
-OnBlueparDeath:
- set @mobID, 1107;
- callfunc "MobPoints";
- end;
-
-OnScorpionDeath:
- set @mobID, 1003;
- callfunc "MobPoints";
- end;
-
-OnRScorpionDeath:
- set @mobID, 1004;
- callfunc "MobPoints";
- end;
-
-OnAScorpionDeath:
- set @mobID, 1057;
- callfunc "MobPoints";
- end;
-
-L_MonstersAlive:
- mes "As you get closer to the place, you feel an unnerving presence.";
- mes "This place has recently been used to summon something! And the beings are still nearby!";
- next;
- mes "You should get rid of them before attempting the summoning yourself.";
- goto L_Close;
-
-L_NoFlower:
- mes "You reach into your inventory to take out the flower and place it, but you can't find it!";
- mes "Did you lose it somewhere along the way? If you can't find it, go talk to Orum again.";
- goto L_Close;
-
-L_PlacedThirdFlower:
- mes "You placed the third of Orum's magical flowers on this spot.";
- mes "You can feel the magical power around the place, waiting to be unleashed.";
- goto L_Close;
-
-L_PlacedFifthFlower:
- mes "You remember this place. You placed the third of Orum's magical flowers here.";
- mes "However, now that the summoning spell has been cast, everything is back to normal here.";
- goto L_Close;
-
-L_Close:
- set @localMonsterCount, 0;
- close;
-}
diff --git a/world/map/npc/018-1/mapflags.txt b/world/map/npc/018-1/mapflags.txt
deleted file mode 100644
index a1b62aab..00000000
--- a/world/map/npc/018-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-018-1|mapflag|resave|018-2,88,32
diff --git a/world/map/npc/018-1/mike.txt b/world/map/npc/018-1/mike.txt
deleted file mode 100644
index 38fce03d..00000000
--- a/world/map/npc/018-1/mike.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-018-1,77,60,0|script|Mike|113
-{
- mes "[Mike]";
- mes "\"I need black stingers to make some medicine to cure my sister.\"";
- next;
-
- set @dq_level, 40;
- set @dq_cost, 16;
- set @dq_count, 4;
- set @dq_name$, "BlackScorpionStinger";
- set @dq_friendly_name$, "black stingers";
- set @dq_money, 2500;
- set @dq_exp, 500;
-
- callfunc "DailyQuest";
-
- next;
- mes "\"Hopefully I'll have enough soon.\"";
- close;
-}
diff --git a/world/map/npc/018-1/miners.txt b/world/map/npc/018-1/miners.txt
deleted file mode 100644
index a634ded4..00000000
--- a/world/map/npc/018-1/miners.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-018-1,80,61,0|script|Miner|109
-{
- mes "[Miner]";
- mes "\"Be careful in there.\"";
- next;
- mes "\"Actually maybe you can help an old miner out.\"";
- next;
- goto L_Keys;
-
-L_Keys:
- mes "[Miner]";
- set @dq_level, 40;
- set @dq_cost, 35;
- set @dq_count, 10;
- set @dq_name$, "TreasureKey";
- set @dq_friendly_name$, "Treasure Key";
- set @dq_money, 3000;
- set @dq_exp, 300;
-
- callfunc "DailyQuest";
- goto L_Close;
-
-L_Close:
- set @money, 0;
- set @state, 0;
- set @dq_level, 0;
- set @dq_cost, 0;
- set @dq_count, 0;
- set @dq_name$, "";
- set @dq_friendly_name$, "";
- set @dq_money, 0;
- set @dq_exp, 0;
- set @dq_return, 0;
- close;
-
-}
diff --git a/world/map/npc/018-1/sword.txt b/world/map/npc/018-1/sword.txt
deleted file mode 100644
index 8d5dc827..00000000
--- a/world/map/npc/018-1/sword.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-018-1,110,43,0|script|#IceSword#_M|400
-{
- if (getskilllv(SKILL_MAGIC))
- goto L_message;
- close;
-
-L_message:
- mes "[Sword in Pond]";
- mes "\"Zzzzzz.....\"";
- close;
-}
diff --git a/world/map/npc/018-2/_import.txt b/world/map/npc/018-2/_import.txt
deleted file mode 100644
index 93025f9d..00000000
--- a/world/map/npc/018-2/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 018-2: Woodland Mining Camp Indoor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 018-2
-npc: npc/018-2/_mobs.txt
-npc: npc/018-2/_nodes.txt
-npc: npc/018-2/_warps.txt
-npc: npc/018-2/angus.txt
-npc: npc/018-2/books.txt
-npc: npc/018-2/caul.txt
-npc: npc/018-2/mapflags.txt
-npc: npc/018-2/miners.txt
-npc: npc/018-2/receptionist.txt
diff --git a/world/map/npc/018-2/_mobs.txt b/world/map/npc/018-2/_mobs.txt
deleted file mode 100644
index 13188ee7..00000000
--- a/world/map/npc/018-2/_mobs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Mining Camp Indoor mobs
-
-018-2,114,21,4,3|monster|YellowSlime|1007,1,100000ms,30000ms
diff --git a/world/map/npc/018-2/_nodes.txt b/world/map/npc/018-2/_nodes.txt
deleted file mode 100644
index 93459a98..00000000
--- a/world/map/npc/018-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Mining Camp Indoor nodes
-
-// (no nodes)
diff --git a/world/map/npc/018-2/_warps.txt b/world/map/npc/018-2/_warps.txt
deleted file mode 100644
index 24b07019..00000000
--- a/world/map/npc/018-2/_warps.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Mining Camp Indoor warps
-
-018-2,50,29|warp|-1,-1,018-1,65,74
-018-2,41,20|warp|-1,-1,018-1,64,69
-018-2,20,24|warp|-1,-1,018-2,112,26
-018-2,112,25|warp|-1,-1,018-2,20,23
-018-2,21,28|warp|0,-1,018-2,79,25
-018-2,79,26|warp|0,-1,018-2,21,29
-018-2,114,19|warp|-1,-1,018-3,177,55
diff --git a/world/map/npc/018-2/angus.txt b/world/map/npc/018-2/angus.txt
deleted file mode 100644
index 3c53862d..00000000
--- a/world/map/npc/018-2/angus.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-// Angus the craftsman
-
-018-2,31,39,0|script|Angus|147
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@inspector == 10) goto L_NohMask;
-
- mes "[Angus]";
- mes "Angus is tinkering with some mechanical concoction.";
- mes "\"It keeps breakin' left an' right... fortunat'ly I put in redundancies everywhere, but I haf' to keep repairin'.\"";
- goto L_Close;
-
-L_NohMask:
- mes "[Angus]";
- mes "\"I'm sorry, I truely am, but I stay in the town. One o' the miners might have heard something.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/018-2/books.txt b/world/map/npc/018-2/books.txt
deleted file mode 100644
index 24624762..00000000
--- a/world/map/npc/018-2/books.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-
-018-2,112,19,0|script|#Bookcase38|400,0,1
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- if (@inspector == 11) goto L_NohMask;
- mes "Looking over the bookcase, you find nothing strange or out of order.";
- goto L_Close;
-
-L_NohMask:
- mes "Looking over the bookcase closely, you find a book is upside down.";
- next;
- mes "The book has been hollowed out. Inside is a theater mask and a note that you cannot even begin to read.";
- next;
- set @inspector, 12;
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/018-2/caul.txt b/world/map/npc/018-2/caul.txt
deleted file mode 100644
index 4709cfc9..00000000
--- a/world/map/npc/018-2/caul.txt
+++ /dev/null
@@ -1,1097 +0,0 @@
-//#################################################################################
-//#
-//# this script file contains the script for the NPC which allows the
-//# PCs to create potions from herbs.
-//#
-//# Participates in the monster oil subquest (cf. Nicholas' Setzer quest)
-//#
-//#################################################################################
-
-018-2,37,22,0|script|Caul|107
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- set @SETZER_INITIAL, 0;
- set @SETZER_KNOWS_OIL, 1;
- set @SETZER_KNOWS_STINGER, 2;
- set @SETZER_FLAG_MADE_OIL, 4;
-
- set @MONSTER_OIL_XP, 100000;
- set @MOPOX_CURE_XP, 30000;
-
- set @Q_MASK, NIBBLE_3_MASK;
- set @Q_SHIFT, NIBBLE_3_SHIFT;
-
- set @Q_status, (QUEST_Forestbow_state & @Q_MASK) >> @Q_SHIFT;
-
- set @Q_knows_mopox_cure, ((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) >= 4; // Elanore's quest for curing Kadiya
-
- // Can the player get XP for brewing the cure?
- set @Q_can_score_mopox_cure, (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) == 4) // Elanore's quest for curing Kadiya
- && (((QUEST_MAGIC2 & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT) < 2); // Haven't brewed it yet
-
- mes "[Caul]";
- mes "\"I can help you to brew healing potions out of mauve, cobalt, gamboge and alizarin herbs.";
- mes "How many potions do you want to brew?\"";
- next;
-
- set @C_monster_oil, 20;
- set @C_mopox_cure, 21;
- set @C_nohmask, 22;
- set @C_dementiapotion, 23;
- set @C_bye, 24;
-
- setarray @choice$, "One.", "Five.", "Ten.", "Fifty.", "", "", "", "", "";
- setarray @choice_idx, 1, 5, 10, 50, 0, 0, 0, 0, 0;
- set @choices_nr, 4;
-
-
- if (!(@Q_status))
- goto L_M_no_monster_oil;
-
- set @choice_idx[@choices_nr], @C_monster_oil;
- set @choice$[@choices_nr], "I would like to brew Monster Oil.";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_monster_oil;
-
-L_M_no_monster_oil:
- if (!@Q_knows_mopox_cure)
- goto L_M_no_mopox_cure;
-
- set @choice_idx[@choices_nr], @C_mopox_cure;
- set @choice$[@choices_nr], "I would like to brew a Mopox Cure Potion.";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_mopox_cure;
-
-L_M_no_mopox_cure:
- if (@inspector != 10)
- goto L_M_no_inspector;
-
- set @choice_idx[@choices_nr], @C_nohmask;
- set @choice$[@choices_nr], "Actually...";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_inspector;
-
-L_M_no_inspector:
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_UNFOCUS_RECIPE))
- goto L_M_no_dempo;
-
- set @choice_idx[@choices_nr], @C_dementiapotion;
- set @choice$[@choices_nr], "I would like to brew a Dementia Potion.";
- set @choices_nr, @choices_nr + 1;
- goto L_M_no_dempo;
-
-L_M_no_dempo:
- set @choice_idx[@choices_nr], @C_bye;
- set @choice$[@choices_nr], "Never mind.";
- set @choices_nr, @choices_nr + 1;
-
- menu
- @choice$[0], L_MenuItems,
- @choice$[1], L_MenuItems,
- @choice$[2], L_MenuItems,
- @choice$[3], L_MenuItems,
- @choice$[4], L_MenuItems,
- @choice$[5], L_MenuItems,
- @choice$[6], L_MenuItems,
- @choice$[7], L_MenuItems;
-
-L_MenuItems:
- set @choice, @choice_idx[@menu - 1];
-
- if (@choice == @C_monster_oil)
- goto L_mo_start;
- if (@choice == @C_mopox_cure)
- goto L_mox_start;
- if (@choice == @C_nohmask)
- goto L_NohMask;
- if (@choice == @C_dementiapotion)
- goto L_DemPotion;
- if (@choice == @C_bye)
- goto L_Close;
-
- // otherwise the choice is the number of potions-to-brew
- set @num, @choice;
- if (@num == 0)
- goto L_Close;
- goto L_brew;
-
-L_brew:
- mes "[Caul]";
- mes "\"Now put " + @num + " herbs of each kind into the cauldron, stir, and concentrate all your mental energy on it.\"";
- next;
-
- if (countitem("MauveHerb") < @num)
- goto L_NotEnough;
- if (countitem("CobaltHerb") < @num)
- goto L_NotEnough;
- if (countitem("GambogeHerb") < @num)
- goto L_NotEnough;
- if (countitem("AlizarinHerb") < @num)
- goto L_NotEnough;
-
- set @a, @num;
- set @result1, 0;
- set @result2, 0;
- set @result3, 0;
- set @result4, 0;
- goto L_CraftLoop;
-
-L_CraftLoop:
- set @throw, rand(Int);
- set @result, 1;
- if (@throw >= 5) set @result, 2;
- if (@throw >= 15) set @result, 3;
- if (@throw >= 35) set @result, 4;
-
- if (@result == 1) set @result1, @result1 + 1;
- if (@result == 2) set @result2, @result2 + 1;
- if (@result == 3) set @result3, @result3 + 1;
- if (@result == 4) set @result4, @result4 + 1;
-
- set @a, @a - 1;
- if (@a > 0) goto L_CraftLoop;
-
- delitem "MauveHerb", @num;
- delitem "CobaltHerb", @num;
- delitem "GambogeHerb", @num;
- delitem "AlizarinHerb", @num;
-
- getitem "TinyHealingPotion", @result1;
- getitem "SmallHealingPotion", @result2;
- getitem "MediumHealingPotion", @result3;
- getitem "LargeHealingPotion", @result4;
-
- mes "[Caul]";
- mes "\"Well done! You made:";
- if (@result1 > 0)
- mes @result1 + " tiny potions";
- if (@result2 > 0)
- mes @result2 + " small potions";
- if (@result3 > 0)
- mes @result3 + " medium potions";
- if (@result4 > 0)
- mes @result4 + " large potions";
- mes "Come again.\"";
- close;
-
-L_NotEnough:
- mes "[Caul]";
- mes "\"Oh, it seems like you don't have enough herbs. You can find herbs in deep forests.\"";
- close;
-
-L_mo_start:
- mes "[Caul]";
- mes "\"Monster oil? Hmm, I have heard of it, but I don't remember the precise recipe to make it...\"";
- next;
- if (@Q_status == @SETZER_KNOWS_OIL)
- menu
- "OK, I'll ask around, perhaps someone else knows.", L_Close;
- if (@Q_status > @SETZER_KNOWS_OIL)
- menu
- "Rauk told me the recipe.", L_mo_knows_recipe;
- close;
-
-L_mo_knows_recipe:
- mes "[Caul]";
- mes "\"Ah, but of course! Yes, we should be able to brew that here. Except that... hmm. Pearl and three black scorpion stingers? This sounds very dangerous;";
- mes "I fear that I will have to ask you to do this yourself.\"";
- next;
- goto L_mo_main_menu;
-
-L_mo_main_menu:
- set @main_menu, 1;
- menu
- "What do you mean by 'dangerous'?", L_mo_why_dangerous,
- "What do I need, again?", L_mo_ingredients,
- "How does this work?", L_mo_explain,
- "Let's start!", L_mo_start_brew,
- "Where can I get a golden scorpion stinger?", L_mo_where_gold,
- "I've changed my mind.", L_Close;
-
-L_mo_why_dangerous:
- mes "[Caul]";
- mes "\"Well, with those two reagents in there at that ratio, you risk an explosion – quite possibly a fatal one. So be prepared to duck if the brew gets too bubbly – it's better to lose the ingredients than your head!\"";
- next;
- goto L_mo_main_menu;
-
-L_mo_ingredients:
- mes "[Caul]";
- mes "\"You will need one pearl, two snake skins, three black scorpion stingers, two piles of ash, and a golden scorpion stinger. The golden stinger goes in last, after the dangerous part, so you won't lose it if your brew blows up.\"";
- next;
- mes "[Caul]";
- mes "\"You should also bring gamboge, mauve, alizarin and cobalt leaves. You will have to stabilize the brew, and they will help with that.\"";
- next;
- goto L_mo_main_menu;
-
-L_mo_explain:
- mes "[Caul]";
- mes "\"After you have put in the monster parts – except for the golden stinger – the brew will take on some random color; this can be a light, dark, or medium color. You have to stabilize this color by adding leaves to it.\"";
- next;
- mes "[Caul]";
- mes "\"Of course, with such a violent brew the mixture will change color by itself, too, probably faster than your leaves can affect it. It will randomly add or remove colors, and might even get lighter.\"";
- next;
- mes "[Caul]";
- mes "\"From what I have seen, it seems to go through phases – for each alternate leaf it adds a colour, then removes a color, then adds again and so on. Of course, if the color is there already it can't add any more.\"";
- next;
- mes "[Caul]";
- mes "\"I haven't figured out yet precisely when it gets lighter, though.\"";
- next;
- mes "[Caul]";
- mes "\"By adding Mauve, you can make it darker. Alizarin adds red, Gamboge yellow, Cobalt blue. To make it a proper black, you have to get it to be dark gray, then add one Mauve leaf.\"";
- next;
- mes "[Caul]";
- mes "\"Unfortunately the brew changes randomly before your leaves dissolve, so sometimes you can't help but add the wrong color...\"";
- next;
- mes "[Caul]";
- mes "\"Since the brew changes its color first, you might want to add the Mauve when your color is a dark purple or dark green or dark orange and hope for the best.\"";
- next;
- mes "[Caul]";
- mes "\"But don't add too much! If you add a color that is already there, or try to make it darker at the wrong spot, it may backfire.\"";
- next;
- if (@main_menu)
- goto L_mo_main_menu;
- goto L_mo_loop;
-
-L_mo_where_gold:
- mes "[Caul]";
- mes "\"Good question. There aren't any golden scorpions nearby. Perhaps you can find a trader or an adventurer who have travelled further south and ask them to help?\"";
- next;
- goto L_mo_main_menu;
-
-L_mo_start_brew:
- set @main_menu, 0;
- if (countitem ("Pearl") < 1)
- goto L_mo_missing;
- if (countitem ("SnakeSkin") < 2)
- goto L_mo_missing;
- if (countitem ("BlackScorpionStinger") < 3)
- goto L_mo_missing;
- if (countitem ("PileOfAsh") < 2)
- goto L_mo_missing;
- if (countitem ("GoldenScorpionStinger") < 1)
- goto L_mo_missing_gold;
-
- delitem "Pearl", 1;
- delitem "SnakeSkin", 2;
- delitem "BlackScorpionStinger", 3;
- delitem "PileOfAsh", 2;
-
- set @bubble_mode, 0;
- setarray @bubble_modes$,
- "The brew is calm.",
- "The brew is bubbling.",
- "The brew is bubbling violently.";
-
- set @color, 1 << (rand(3));
- setarray @colors$,
- "white",
- "red",
- "yellow",
- "orange",
- "blue",
- "purple",
- "green",
- "gray";
-
- set @intensity, 1;
- setarray @intensities$,
- "light",
- "medium",
- "dark";
-
- set @auto_mode, 0; // Start by adding a colour or going lighter
-
- goto L_mo_loop;
-
-L_mo_missing:
- mes "[Caul]";
- mes "\"You don't seem to have all of the ingredients. You need one pearl, two snake skins, three black stingers, two piles of ash, and one golden stinger.\"";
- close;
-
-L_mo_missing_gold:
- mes "[Caul]";
- mes "\"You seem to have everything except for the golden stinger. I understand that this one is hard to get, but I'm sure that you can find one somewhere.\"";
- close;
-
-L_mo_loop:
- mes "[Brewing monster oil]";
- mes @bubble_modes$[@bubble_mode];
- mes "It is currently a " + @intensities$[@intensity] + " " + @colors$[@color] + ".";
- next;
-
- menu
- "Add alizarin leaf", L_mo_alizarin,
- "Add gamboge leaf", L_mo_gamboge,
- "Add cobalt leaf", L_mo_cobalt,
- "Add mauve leaf", L_mo_mauve,
- "Ask Caul for advice", L_mo_explain,
- "Duck!", L_Explodes;
-
-L_Explodes:
- mes "[Brewing monster oil]";
- mes "You throw yourself onto the ground. Seconds later, the cauldron shakes, and your entire mixture explodes upwards.";
- mes "Caul crawls out from underneath a char.";
- next;
- mes "[Caul]";
- mes "\"I'm glad to see that you chose to brew another day... perhaps it might be best if you give up on this dangerous concoction, though!\"";
- close;
-
-L_mo_out_of_leaves:
- mes "[Brewing monster oil]";
- mes "You don't have any of these leaves left!";
- next;
- goto L_mo_loop;
-
-L_mo_alizarin:
- set @use_leaf$, "AlizarinHerb";
- set @use_color, 1;
- goto L_mo_leaf_color;
-
-L_mo_gamboge:
- set @use_leaf$, "GambogeHerb";
- set @use_color, 2;
- goto L_mo_leaf_color;
-
-L_mo_cobalt:
- set @use_leaf$, "CobaltHerb";
- set @use_color, 4;
- goto L_mo_leaf_color;
-
-L_mo_leaf_color:
- if (countitem (@use_leaf$) < 1)
- goto L_mo_out_of_leaves;
-
- callsub S_mo_random_move;
- if (@color & @use_color)
- goto L_mo_pc_bad;
- set @color, @color | @use_color;
- delitem @use_leaf$, 1;
-
- mes "The brew changes its hue as your leaf dissolves.";
- next;
- goto L_mo_loop;
-
-L_mo_mauve:
- if (countitem("MauveHerb") < 1)
- goto L_mo_out_of_leaves;
- delitem "MauveHerb", 1;
-
- callsub S_mo_random_move;
- if (@intensity == 2 && @color == 7)
- goto L_mo_done;
- if (@intensity == 2)
- goto L_mo_pc_bad;
-
- set @intensity, @intensity + 1;
- mes "The brew darkens as your mauve leaf dissolves.";
- next;
- goto L_mo_loop;
-
-S_mo_random_move:
- mes "[Brewing monster oil]";
- mes "You throw in a leaf and stir.";
-
- if (@auto_mode == 1)
- goto L_mo_random_1;
- goto L_mo_random_0;
-
-L_mo_random_0: // mode 0: add colour or lighten up
- set @auto_mode, 1;
- if (rand(3) == 0)
- goto L_mo_random_0_lighten;
-
- set @choice, 1 << (rand(3));
- if (@color & @choice)
- goto L_mo_auto_bad;
- set @color, @color | @choice;
-
- mes "Before your leaf has a chance to dissolve, the brew changes to a " + @colors$[@color] + " hue.";
- return;
-
-L_mo_random_0_lighten:
- if (@intensity == 0)
- goto L_mo_auto_bad;
- set @intensity, @intensity - 1;
- mes "Before your leaf has a chance to dissolve, the brew takes on a lighter shade of " + @colors$[@color] + ".";
- return;
-
-L_mo_random_1: // mode 1: remove colour
- set @auto_mode, 0;
- set @choice, 1 << (rand(3));
- if (!(@color & @choice))
- goto L_mo_auto_bad;
- set @color, @color & (~@choice);
- mes "Before your leaf has a chance to dissolve, the brew changes to a " + @colors$[@color] + " hue.";
- return;
-
-L_mo_pc_bad:
- if (rand(Int + 100) > 60)
- goto L_mo_pc_bad_ok;
- if (@bubble_mode)
- mes "As your leaf dissolves, the intensity of the bubbling increases.";
- if (!@bubble_mode)
- mes "As your leaf dissolves, the brew begins to bubble.";
- next;
- set @bubble_mode, @bubble_mode + 1;
- if (@bubble_mode > 2)
- goto L_mo_explode;
- goto L_mo_loop;
-
-L_mo_pc_bad_ok:
- mes "Your leaf dissolves but seems to have no effect.";
- next;
- goto L_mo_loop;
-
-L_mo_auto_bad:
- if (rand(3) == 0)
- goto L_Return;
- if (rand(Int + 100) > 70)
- goto L_Return;
- mes "The brew begins to bubble more violently.";
- set @bubble_mode, @bubble_mode + 1;
- if (@bubble_mode > 2)
- next;
- if (@bubble_mode > 2)
- goto L_mo_explode;
- return;
-
-L_mo_explode:
- mes "[Exploding monster oil]";
- mes "Your brew explodes!";
- if (rand(Agi) > 40)
- goto L_mo_explode_dodge;
- mes "The burst of boiling monster brew hits you.";
- next;
- heal (15 * rand(Vit)) - 1500, 0, 1;
- close;
-
-L_mo_explode_dodge:
- mes "You throw yourself to the ground at the very last moment, barely avoiding the burst of boiling monster brew.";
- next;
- mes "[Caul]";
- mes "Caul nods at you from underneath a chair.";
- mes "\"I told you, it's dangerous!!\"";
- close;
-
-L_mo_done:
- mes "As you throw in another mauve leaf, the brew takes on a deep black color and calms down.";
- next;
- mes "[Brewing monster oil]";
- mes "As instructed, you toss in your golden scorpion stinger.";
-
- if (countitem ("GoldenScorpionStinger") < 1)
- goto L_mo_no_gold_end;
-
- mes "The brew bubbles once more, then calms completely.";
-
- delitem "GoldenScorpionStinger", 1;
- getitem "MonsterOilPotion", 1;
-
- if (!(@Q_status & @SETZER_FLAG_MADE_OIL))
- getexp @MONSTER_OIL_XP, 0;
- if (!(@Q_status & @SETZER_FLAG_MADE_OIL))
- mes "[" + @MONSTER_OIL_XP + " experience points]";
-
- set @Q_status, @Q_status | @SETZER_FLAG_MADE_OIL;
- callsub S_Update_Var;
- next;
- mes "[Caul]";
- mes "Caul gets up from underneath the cover he was taking and looks at your brew. He is visibly impressed.";
- mes "\"Well done! This should be just enough for one potion of monster oil. Let me get you a bottle.\"";
- mes "He hands you the monster oil.";
- close;
-
-L_mo_no_gold_end:
- mes "But where is your golden stinger? Didn't you have one earlier?";
- mes "Frustrated, you give up.";
- close;
-
-L_mox_start:
- mes "[Caul]";
- mes "\"The mopox cure potion? Certainly, if you have all of the ingredients... oh, and make sure to bring water, roots, sulphur powder and Mauve leaves.\"";
- mes "\"This is a very easy one, so I think I should let you do this yourself. It is very good exercise.\"";
- next;
- goto L_mox_overview_menu;
-
-L_mox_overview_menu:
- menu
- "I'm ready!", L_mox_setup,
- "What are the ingredients?", L_mox_ingredients,
- "How does this work?", L_mox_howto,
- "I'd rather not try.", L_Close;
-
-L_mox_ingredients:
- mes "[Caul]";
- mes "\"You will need one concentration potion, one iron potion, a lifestone, and one gamboge leaf.\"";
- next;
- goto L_mox_overview_menu;
-
-L_mox_howto:
- mes "[Caul]";
- mes "\"When you start brewing, the liquid very rarely has the proper consistency and color. You need to make it gooey and medium dark.\"";
- next;
- mes "[Caul]";
- mes "\"You can affect the consistency by adding ground roots and water, and you can change the color by adding mauve leaves (to darken it) and sulphur powder (to make it brighter).\"";
- next;
- mes "[Caul]";
- mes "\"The ingredients have some side effects, though, so you will have to experiment a little.\"";
- next;
- mes "[Caul]";
- mes "\"Oh, and be careful: water will evaporate over time, too.\"";
- next;
- goto L_mox_overview_menu;
-
-L_mox_no_lifestone:
- mes "[Caul]";
- mes "\"You will need a lifestone.\"";
- goto L_mox_overview_menu;
-
-L_mox_no_gamboge:
- mes "[Caul]";
- mes "\"You will need a gamboge leaf.\"";
- goto L_mox_overview_menu;
-
-L_mox_no_concentration:
- mes "[Caul]";
- mes "\"You will need a concentration potion.\"";
- goto L_mox_overview_menu;
-
-L_mox_no_iron:
- mes "[Caul]";
- mes "\"You will need an iron potion.\"";
- goto L_mox_overview_menu;
-
-L_mox_setup:
- if (countitem("IronPotion") < 1)
- goto L_mox_no_iron;
- if (countitem("ConcentrationPotion") < 1)
- goto L_mox_no_concentration;
- if (countitem("GambogeHerb") < 1)
- goto L_mox_no_gamboge;
- if (countitem("Lifestone") < 1)
- goto L_mox_no_lifestone;
-
- delitem "IronPotion", 1;
- delitem "ConcentrationPotion", 1;
- delitem "GambogeHerb", 1;
- delitem "Lifestone", 1;
-
- mes "[Brewing Mopox Cure]";
- mes "You pour your two potions into the cauldron, then add a gamboge herb and a lifestone. Caul heats up the cauldron and you wait until it begins to boil.";
-
- setarray @colours$, "white", "almost white", "light", "medium-dark", "dark", "very dark", "almost black", "black";
- setarray @stickinesses$, "watery", "very runny", "runny", "gooey", "sticky", "very sticky", "almost solid";
- set @stickiness, rand(7);
- set @colour, 2 + rand(5);
-
- // Target: (@stickiness, @colour) = (3, 3)
-
- if (@stickiness == 3 && @colour == 3)
- set @colour, 4; // don't allow insta-win; it's easy enough.
- set @rounds, 0;
- goto L_mox_loop;
-
-L_mox_loop:
- mes "[Brewing Mopox Cure]";
- mes "The brew is " + @colours$[@colour] + " and " + @stickinesses$[@stickiness] + ".";
-
- if (@colour == 3 && @stickiness == 3)
- goto L_mox_win;
- next;
-
- set @colour, @colour + 10;
- set @stickiness, @stickiness + 10;
-
- menu
- "Add root", L_mopox_B_root,
- "Add water", L_mopox_B_water,
- "Add sulphur powder", L_mopox_B_sulphur,
- "Add mauve", L_mopox_B_mauve,
- "...what should I do again?", L_mopox_reexplain,
- "Wait", L_mox_next;
-
-L_mox_next:
- set @stickiness, @stickiness + @rounds;
- set @rounds, 1 - @rounds;
-
- if (@stickiness < 10)
- set @stickiness, 10;
- if (@colour < 10)
- goto L_mopox_fail_bc;
- if (@colour > 17)
- goto L_mopox_fail_bc;
- if (@stickiness > 16)
- goto L_mopox_failed_hard;
- if (@colour > 17)
- goto L_mopox_fail_bc;
-
- set @colour, @colour - 10;
- set @stickiness, @stickiness - 10;
-
- goto L_mox_loop;
-
-L_mopox_reexplain:
- mes "[Caul]";
- mes "\"Make this brew gooey and medium dark.\"";
- mes "\"(Gooey is right between runny and sticky.)\"";
- mes "\"You can add different items that will affect both color and stickiness.\"";
- next;
- mes "[Caul]";
- mes "\"Water and ground roots mostly affect stickiness.\"";
- mes "\"Mauve and sulphur powder mostly affect color, with Mauve darkening the brew.\"";
- next;
- goto L_mox_next;
-
-L_mopox_B_none:
- mes "[Brewing Mopox Cure]";
- mes "You don't have any left!";
- next;
- goto L_mox_next;
-
-L_mopox_B_root:
- if (countitem ("Root") < 1)
- goto L_mopox_B_none;
- delitem "Root", 1;
-
- mes "[Brewing Mopox Cure]";
- mes "You grind a root and pour it into the brew.";
- next;
- set @colour, @colour + 1;
- set @stickiness, @stickiness + 3;
- goto L_mox_next;
-
-L_mopox_B_water:
- if (countitem ("BottleOfWater") < 1)
- goto L_mopox_B_none;
- delitem "BottleOfWater", 1;
- getitem "EmptyBottle", 1;
-
- mes "[Brewing Mopox Cure]";
- mes "You pour a bottle of water into the brew.";
- next;
- set @colour, @colour;
- set @stickiness, @stickiness - 2;
- goto L_mox_next;
-
-L_mopox_B_sulphur:
- if (countitem ("SulphurPowder") < 1)
- goto L_mopox_B_none;
- delitem "SulphurPowder", 1;
-
- mes "[Brewing Mopox Cure]";
- mes "You mix some sulphur powder into the brew.";
- next;
- set @colour, @colour - 3;
- set @stickiness, @stickiness + 1;
- goto L_mox_next;
-
-L_mopox_B_mauve:
- if (countitem ("MauveHerb") < 1)
- goto L_mopox_B_none;
- delitem "MauveHerb", 1;
-
- mes "[Brewing Mopox Cure]";
- mes "You grind a mauve herb and toss it in.";
- next;
- set @colour, @colour + 2;
- set @stickiness, @stickiness + 1;
- goto L_mox_next;
-
-L_mopox_fail_bc:
- mes "[Brewing Mopox Cure]";
- mes "The brew suddenly begins to bubble again, turning green.";
- mes "\"Oh dear,\" Caul remarks, \"you let the color stray too much.\"";
- next;
- mes "[Caul]";
- mes "\"Better luck next time!\"";
- close;
-
-L_mopox_failed_hard:
- mes "[Brewing Mopox Cure]";
- mes "You find it almost impossible to stir the brew.";
- mes "Suddenly, the thick mass bends outwards, a huge bubble bursting open right in your face!";
- next;
-
- if (rand(Vit) < 40)
- sc_start sc_poison, 1, 20;
-
- mes "[Brewing Mopox Cure]";
- mes "Yeech. That smelled bad.";
- mes "\"Don't worry, I'll clean up the cauldron,\", interrupts Caul. \"You should wipe that off your face and make sure that you didn't get poisoned.\"";
- next;
- mes "[Caul]";
- mes "\"Better luck next time!\"";
- close;
-
-L_mox_win:
- mes "Caul looks pleased. \"Well done! This looks very good to me.\"";
- next;
- mes "[Caul]";
- mes "Caul picks a bottle from a shelf and fills it with your brew.";
- mes "\"One potion of Mopox cure, here you are. Good luck!\"";
- getitem "MopoxCurePotion", 1;
- if (!@Q_can_score_mopox_cure)
- goto L_mox_win_quick;
- getexp @MOPOX_CURE_XP, 0;
- mes "[" + @MOPOX_CURE_XP + " experience points]";
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~NIBBLE_3_MASK) | (2 << NIBBLE_3_SHIFT); // Make sure we can only get XP for brewing this once
- goto L_mox_win_quick;
-
-L_mox_win_quick:
- close;
-
-L_DemPotion:
- mes "[Caul]";
- mes "\"Ok, you do know this potion is one of the most dangerous potions brewed? My cauldron is empty, you can try it yourself.\"";
- next;
- mes "Caul goes three steps away and watches your actions carefully.";
- menu
- "Please explain to me what you know about that potion.", L_explain_dempo,
- "Ok, I will start brewing.", L_brew_dempo_init,
- "Nevermind", L_Close;
-
-L_explain_dempo:
- mes "[Caul]";
- mes "\"Hrrm. I have heard of that potion. I hope I can remember all the stuff needed.\"";
- next;
- mes "\"Basically this potion is a balancing between death and life; between knowledge and forgetting.\"";
- next;
- mes "\"So, to get it balanced, we need ingredients for both sides.\"";
- next;
- mes "\"For the death and forgetting side we can use bones. Although, bones do not work well. We would get the best results with a diseased heart of zombies. Of course, we can use undead ears and skulls as well.\"";
- next;
- mes "\"For the life and knowledge side we can use fresh mauve herbs. Lifestones would be even better. Roots will do as well, although these must be really fresh to show effect.\"";
- next;
- mes "\"Brewing such a powerful potion is dangerous. That is why you will need to do it yourself. I will try to assist you as best as I can.\"";
- next;
- mes "\"I don't know exactly, but there is a slight chance of exploding all time.\"";
- next;
- mes "\"The color of the mixture will give you a very good impression of what you need to do.\"";
- mes "\"And to get that potion working, we need to stabilize it with a pearl at the end.\"";
- next;
- mes "\"The color will be in a range of really dark black to bright shining white. In between it is grey in different nuances.\"";
- mes "\"When it is calm grey, the finalisation with a pearl will work best, so I have heard.\"";
- next;
- goto L_DemPotion;
-
-L_brew_dempo_init:
- if ((countitem("BottleOfWater") == 0)
- || (countitem("Bone") == 0)
- || (countitem("Lifestone") == 0)
- || (countitem("Pearl") == 0))
- goto L_dempo_noinit;
- delitem "BottleOfWater", 1;
- delitem "Bone", 1;
- delitem "Lifestone", 1;
-
- set @finish_dempo, 0;
- // color can be either black or white at the beginning.
- // with a slight randomness in there.
- set @dempo_color, rand(10);
- if (rand(2)==0)
- set @dempo_color, @dempo_color + 90 ;
- mes "To start that potion you put in the cauldron a bone, a bottle of water and a lifestone.";
- next;
- goto L_brew_dempo;
-
-L_dempo_noinit:
- mes "[Caul]";
- mes "\"Hrrm. Usually you start that potion with a bone, a bottle of water and a lifestone.\"";
- mes "\"I'd propose you do it exactly that way. You see, maybe it would even work with a skull and a healing potion, but since we don't know, and I don't want to repair my cauldron again, please don't try other solutions.\"";
- next;
- mes "\"Please use only this way to start the recipe: a bone, a bottle of water and a lifestone. In that order!\"";
- mes "\"Ah, and of course you will need at least one pearl with you. This pearl is needed to finalize the potion.\"";
- close;
-
-L_brew_dempo:
- callsub L_check_explosion;
-
- callsub L_calc_dempo_color;
- mes "After a little while of cooking you see its color turning into " + @dempo_color_S$+ ".";
- next;
-
- setarray @choice_idx, 0,0,0,0,0,0,0,0,0,0,0;
- setarray @choice$, "","","","","","","","","","","";
-
- set @C_root, 12;
- set @C_mauve, 13;
- set @C_lifestone, 14;
- set @C_diseasedheart, 15;
- set @C_bone, 16;
- set @C_skull, 17;
- set @C_undeadear, 18;
- set @C_pearl, 19;
- set @C_nevermind, 20;
-
- // counter of avalable answers
- set @choices_nr, 0;
-
- if (countitem("Root") == 0)
- goto L_noroots;
- set @choice_idx[@choices_nr], @C_root;
- set @choice$[@choices_nr], "Add a root";
- set @choices_nr, @choices_nr + 1;
- goto L_noroots;
-
-L_noroots:
- if (countitem("MauveHerb") == 0)
- goto L_nomauve;
- set @choice_idx[@choices_nr], @C_mauve;
- set @choice$[@choices_nr], "Add a mauve herb";
- set @choices_nr, @choices_nr + 1;
- goto L_nomauve;
-
-L_nomauve:
- if (countitem("Lifestone") == 0)
- goto L_nolifestone;
- set @choice_idx[@choices_nr], @C_lifestone;
- set @choice$[@choices_nr], "Add a lifestone";
- set @choices_nr, @choices_nr + 1;
- goto L_nolifestone;
-
-L_nolifestone:
- if (countitem("DiseasedHeart") == 0)
- goto L_noheart;
- set @choice_idx[@choices_nr], @C_diseasedheart;
- set @choice$[@choices_nr], "Add a diseased heart";
- set @choices_nr, @choices_nr + 1;
- goto L_noheart;
-
-L_noheart:
- if (countitem("Bone") == 0)
- goto L_nobone;
- set @choice_idx[@choices_nr], @C_bone;
- set @choice$[@choices_nr], "Add a bone";
- set @choices_nr, @choices_nr + 1;
- goto L_nobone;
-
-L_nobone:
- if (countitem("Skull") == 0)
- goto L_noskull;
- set @choice_idx[@choices_nr], @C_skull;
- set @choice$[@choices_nr], "Add a skull";
- set @choices_nr, @choices_nr + 1;
- goto L_noskull;
-
-L_noskull:
- if (countitem("UndeadEar") == 0)
- goto L_noear;
- set @choice_idx[@choices_nr], @C_undeadear;
- set @choice$[@choices_nr], "Add an undead ear";
- set @choices_nr, @choices_nr + 1;
- goto L_noear;
-
-L_noear:
- if (countitem("Pearl") == 0)
- goto L_nopearl;
- set @choice_idx[@choices_nr], @C_pearl;
- set @choice$[@choices_nr], "Finalize with a pearl.";
- set @choices_nr, @choices_nr + 1;
- goto L_nopearl;
-
-L_nopearl:
- set @choice_idx[@choices_nr], @C_nevermind;
- set @choice$[@choices_nr], "Nevermind and leave";
-
- menu
- @choice$[0],L_MenuItems1,
- @choice$[1],L_MenuItems1,
- @choice$[2],L_MenuItems1,
- @choice$[3],L_MenuItems1,
- @choice$[4],L_MenuItems1,
- @choice$[5],L_MenuItems1,
- @choice$[6],L_MenuItems1,
- @choice$[7],L_MenuItems1,
- @choice$[8],L_MenuItems1,
- @choice$[9],L_MenuItems1,
- @choice$[10],L_MenuItems1;
-
-L_MenuItems1:
- set @menu, @menu - 1;
- if (@choice_idx[@menu] == 0)
- goto L_brew_dempo;
- if ((countitem("Root") != 0)
- && (@choice_idx[@menu] == @C_root))
- goto L_useroot;
- if ((countitem("MauveHerb") != 0)
- && (@choice_idx[@menu] == @C_mauve))
- goto L_usemauve;
- if ((countitem("Lifestone") != 0)
- && (@choice_idx[@menu] == @C_lifestone))
- goto L_uselifestone;
- if ((countitem("DiseasedHeart") != 0)
- && (@choice_idx[@menu] == @C_diseasedheart))
- goto L_usediseasedheart;
- if ((countitem("Bone") != 0)
- && (@choice_idx[@menu] == @C_bone))
- goto L_usebone;
- if ((countitem("Skull") != 0)
- && (@choice_idx[@menu] == @C_skull))
- goto L_useskull;
- if ((countitem("UndeadEar") != 0)
- && (@choice_idx[@menu] == @C_undeadear))
- goto L_useear;
- if ((countitem("Pearl") != 0)
- && (@choice_idx[@menu] == @C_pearl))
- goto L_usepearl;
- if ((@choice_idx[@menu] == @C_nevermind))
- goto L_ask_quit;
-
- // fallthrough only when player remove the items while in menu, trying to cheat
- // the potion will be lost then
- mes "\"Do not try to betray me. Come back when you have a better morale.\"";
- close;
-
-L_useroot:
- delitem "Root", 1;
- set @dempo_color, @dempo_color + 9 + rand(9);
- goto L_brew_dempo;
-
-L_usemauve:
- delitem "MauveHerb", 1;
- set @dempo_color, @dempo_color + 1 + rand(2);
- goto L_brew_dempo;
-
-L_uselifestone:
- delitem "Lifestone", 1;
- set @dempo_color, @dempo_color + 3 + rand(4);
- goto L_brew_dempo;
-
-L_usediseasedheart:
- delitem "DiseasedHeart", 1;
- set @dempo_color, @dempo_color - 35 - rand(25);
- goto L_brew_dempo;
-
-L_usebone:
- delitem "Bone", 1;
- set @dempo_color, @dempo_color - 3 - rand(3);
- goto L_brew_dempo;
-
-L_useskull:
- delitem "Skull", 1;
- set @dempo_color, @dempo_color - 9 - rand(9);
- goto L_brew_dempo;
-
-L_useear:
- delitem "UndeadEar", 1;
- set @dempo_color, @dempo_color - 15 - rand(13);
- goto L_brew_dempo;
-
-L_usepearl:
- delitem "Pearl", 1;
- //ending it is a little dangerous as well,
- // stay calm, when it smashes your fine tuned well done potion.
- set @finish_dempo, 1;
- callsub L_check_explosion;
- // ok now you really did it. Here is your potion:
- getitem "GrimaceOfDementia",1;
-
- mes "[Caul]";
- mes "\"The potion is now ready. It seems as if it worked fine.\"";
- next;
- mes "\"Ok here is a flask of that potion. I'll care for the rest.\"";
- mes "\"I mean it is a very dangerous fluid.\"";
- next;
- mes "\"See you later, alligator!\"";
- close;
-
-L_ask_quit:
- mes "[Caul]";
- mes "\"The potion is not ready. You can't just leave now!\"";
- menu
- "Please throw away that stupid potion, I'm in a hurry!", L_Close,
- "Oh you are right, let me finish it.", L_brew_dempo;
-
-L_check_explosion:
- // set to range [-50 50];
- set @prob, @dempo_color - 50;
-
- set @prob, ((@prob * @prob) / 80) + 4;
- if (@finish_dempo == 0)
- goto L_check_exp_nof;
-
- // square again, so you must be in the middle to get it work there;
- // and multiply with 3 so there is definitly no chance to get it directly after starting
- set @prob, (@prob * @prob) * 2;
- goto L_check_exp_nof;
-
-L_check_exp_nof:
- // in about 95% of the cases anything is fine, so return.
- if (rand(1000) > @prob) goto L_Return;
- // in some cases it is not:
- // kabooom!
- close2;
- heal -(Hp/2), 0;
- misceffect 5;
- misceffect 16;
- heal -Hp, 0;
- end;
-
-L_calc_dempo_color:
- // @dempo_color_S$ is set in here:
-
- //really dark black 0-11
- if (@dempo_color < 12)
- set @dempo_color_S$, "really dark black";
-
- //dark black 12-23
- if ((@dempo_color > 11) && (@dempo_color < 24))
- set @dempo_color_S$, "dark black";
-
- //black 24-34
- if ((@dempo_color > 23) && (@dempo_color < 35))
- set @dempo_color_S$, "black";
-
- //dark grey with little dark spots 35-41
- if ((@dempo_color > 34) && (@dempo_color < 42))
- set @dempo_color_S$, "dark grey with little dark spots";
-
- //dark grey 42-47
- if ((@dempo_color > 41) && (@dempo_color < 48))
- set @dempo_color_S$, "dark grey";
-
- //calm grey 48-52
- if ((@dempo_color > 47) && (@dempo_color < 53))
- set @dempo_color_S$, "calm grey";
-
- //light grey 53-58
- if ((@dempo_color > 52) && (@dempo_color < 59))
- set @dempo_color_S$, "light grey";
-
- //light grey with little light spots 59-65
- if ((@dempo_color > 58) && (@dempo_color < 66))
- set @dempo_color_S$, "light grey with little light spots";
-
- //white 66-76
- if ((@dempo_color > 65) && (@dempo_color < 77))
- set @dempo_color_S$, "white";
-
- //shining white 77-88
- if ((@dempo_color > 76) && (@dempo_color < 89))
- set @dempo_color_S$, "shining white";
-
- //bright shining white 77-100
- if (@dempo_color > 88)
- set @dempo_color_S$, "bright shining white";
-
- return;
-
-L_NohMask:
- mes "[Caul]";
- mes "\"I'm sorry, but I didn't. I'm staying in town. Try asking one of the miners.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-
-L_Return:
- return;
-
-S_Update_Var:
- set QUEST_Forestbow_state,
- (QUEST_Forestbow_state & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/018-2/mapflags.txt b/world/map/npc/018-2/mapflags.txt
deleted file mode 100644
index 146c0378..00000000
--- a/world/map/npc/018-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-018-2|mapflag|resave|018-2,88,32
diff --git a/world/map/npc/018-2/miners.txt b/world/map/npc/018-2/miners.txt
deleted file mode 100644
index 29192eec..00000000
--- a/world/map/npc/018-2/miners.txt
+++ /dev/null
@@ -1,176 +0,0 @@
-// This NPC makes gem powders out of gemstones
-// Authors: Ali-G, enchilado, Jenalya
-
-018-2,85,23,0|script|Malek|109
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- set @MIN_GEM_AMOUNT, 7;
-
- if (@inspector == 10) goto L_NohMask;
-
- mes "[Malek]";
- mes "\"Hi, can I help you at all?\"";
- menu
- "I'm looking for someone able to make gem powder.", L_GemPowder,
- "I was just having a look, have a nice day.", L_Close;
-
-L_NohMask:
- mes "[Malek]";
- mes "\"Hi, can I help you at all?\"";
- menu
- "I'm looking for someone able to make gem powder.", L_GemPowder,
- "I was just having a look, have a nice day.", L_Close,
- "The inspector sent me here to investigate.", L_Investigation;
-
-L_Investigation:
- set @inspector, 11;
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
- mes "\"Yeah, we did hear a commotion. We thought we heard someone go down to the basement, but we checked the whole place over and didn't see anything out of the ordinary.\"";
- goto L_Close;
-
-L_GemPowder:
- mes "[Malek]";
- mes "\"My father taught me how to make that sort of powder. Put the gem on a firm surface, hold your pickaxe tight and whack that gem hard. It'll be crushed into powder pretty soon if you keep at it.\"";
- mes "\"Do you want me to make any for you?\"";
- menu
- "Yes, I really need some.", L_GemPowderStart,
- "Actually, I don't want anything. Have a nice day.", L_Close;
-
-L_GemPowderStart:
- mes "[Malek]";
- mes "\"Well, I can do that. Bring me a gem and I'll make you some powder - hope you don't mind if I keep a little as payment!\"";
- menu
- "I've got some gems.", L_Check_Gems,
- "I'll be back with a gem soon.", L_Close,
- "Actually, I prefer my gems whole. Thanks anyway.", L_Close;
-
-L_Check_Gems:
- mes "[Malek]";
- mes "\"Which gem do you want me to powder for you?\"";
- next;
- setarray @menuitems$, "", "", "", "", "", "", "";
- set @c, 0;
- goto L_Check_Diamond;
-
-L_Check_Diamond:
- if (countitem("Diamond") < 1)
- goto L_Check_Ruby;
- set @menuitems$[@c], "A diamond.";
- set @menuid[@c], 0;
- set @c, @c + 1;
- goto L_Check_Ruby;
-
-L_Check_Ruby:
- if (countitem("Ruby") < 1)
- goto L_Check_Emerald;
- set @menuitems$[@c], "A ruby.";
- set @menuid[@c], 1;
- set @c, @c + 1;
- goto L_Check_Emerald;
-
-L_Check_Emerald:
- if (countitem("Emerald") < 1)
- goto L_Check_Sapphire;
- set @menuitems$[@c], "An emerald.";
- set @menuid[@c], 2;
- set @c, @c + 1;
- goto L_Check_Sapphire;
-
-L_Check_Sapphire:
- if (countitem("Sapphire") < 1)
- goto L_Check_Topaz;
- set @menuitems$[@c], "A sapphire.";
- set @menuid[@c], 3;
- set @c, @c + 1;
- goto L_Check_Topaz;
-
-L_Check_Topaz:
- if (countitem("Topaz") < 1)
- goto L_Check_Amethyst;
- set @menuitems$[@c], "A topaz.";
- set @menuid[@c], 4;
- set @c, @c + 1;
- goto L_Check_Amethyst;
-
-L_Check_Amethyst:
- if (countitem("Amethyst") < 1)
- goto L_Choose_Gem;
- set @menuitems$[@c], "An amethyst.";
- set @menuid[@c], 5;
- set @c, @c + 1;
- goto L_Choose_Gem;
-
-L_Choose_Gem:
- set @menuitems$[@c], "None right now, thanks.";
- set @menuid[@c], 6;
- set @c, @c + 1;
- menu
- @menuitems$[0], L_MenuItems,
- @menuitems$[1], L_MenuItems,
- @menuitems$[2], L_MenuItems,
- @menuitems$[3], L_MenuItems,
- @menuitems$[4], L_MenuItems,
- @menuitems$[5], L_MenuItems,
- @menuitems$[6], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
- if (@menu >= @c)
- goto L_Close;
- if (@menuid[@menu] == 0)
- set @gem$, "Diamond";
- if (@menuid[@menu] == 1)
- set @gem$, "Ruby";
- if (@menuid[@menu] == 2)
- set @gem$, "Emerald";
- if (@menuid[@menu] == 3)
- set @gem$, "Sapphire";
- if (@menuid[@menu] == 4)
- set @gem$, "Topaz";
- if (@menuid[@menu] == 5)
- set @gem$, "Amethyst";
- if (@menuid[@menu] == 6)
- goto L_Close;
-
- getinventorylist;
- if (countitem(@gem$) < 1)
- goto L_no_gem;
- if (@inventorylist_count == 100
- && countitem(@gem$) > 1)
- goto L_TooMany;
- delitem @gem$, 1;
- if (@gem$ == "Diamond")
- getitem "DiamondPowder", @MIN_GEM_AMOUNT + rand(6);
- if (@gem$ == "Ruby")
- getitem "RubyPowder", @MIN_GEM_AMOUNT + rand(6);
- if (@gem$ == "Emerald")
- getitem "EmeraldPowder", @MIN_GEM_AMOUNT + rand(6);
- if (@gem$ == "Sapphire")
- getitem "SapphirePowder", @MIN_GEM_AMOUNT + rand(6);
- if (@gem$ == "Topaz")
- getitem "TopazPowder", @MIN_GEM_AMOUNT + rand(6);
- if (@gem$ == "Amethyst")
- getitem "AmethystPowder", @MIN_GEM_AMOUNT + rand(6);
-
- mes "[Malek]";
- mes "\"Here's your powder. Hope it's fine enough for you.\"";
- mes "\"Do you need me to make any more?\"";
- menu
- "Yes please.", L_Check_Gems,
- "No thank you, this is enough.", L_Close;
-
-L_TooMany:
- mes "[Malek]";
- mes "\"Doesn't look like you've got room for this powder. Come back when you do.\"";
- goto L_Close;
-
-L_no_gem:
- mes "[Malek]";
- mes "\"You don't have that gem.\"";
- goto L_Close;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/018-2/receptionist.txt b/world/map/npc/018-2/receptionist.txt
deleted file mode 100644
index efac07d9..00000000
--- a/world/map/npc/018-2/receptionist.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-
-018-2,50,24,0|script|Receptionist#mine|108
-{
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
-
- mes "[Receptionist]";
- mes "\"Welcome to the mining camp!";
- mes "Do you need anything?\"";
- next;
- goto L_Menu;
-
-L_Menu:
- if (@inspector == 10)
- menu
- "Why was a mine setup here?", L_Mine,
- "Can I go into the mine?", L_Enter,
- "Did the company build this building?", L_Building,
- "Did you hear a commotion here the other night?", L_NohMask,
- "Thank you, no.", L_Close;
- menu
- "Why was a mine setup here?", L_Mine,
- "Can I go into the mine?", L_Enter,
- "Did the company build this building?", L_Building,
- "Thank you, no.", L_Close;
-
-L_Mine:
- mes "[Receptionist]";
- mes "\"Minerals have been easy to find in this area historically. The mine entrance we're using collapsed from the mountain side when the volcano errupted. Plenty of minerals were exposed then.\"";
- next;
- goto L_Question_End;
-
-L_Enter:
- mes "[Receptionist]";
- mes "\"If you think you can handle all the monsters that have appeared there.\"";
- next;
- goto L_Question_End;
-
-L_Building:
- mes "[Receptionist]";
- mes "\"No, the company bought this building. It's been abandoned for a while. The villagers think it's haunted, but we haven't seen anything, except for the basement. None of us have been able to stay there for very long.\"";
- next;
- menu
- "Why not?", L_Next,
- "Not my problem", L_Question_End;
-
-L_Next:
- mes "[Receptionist]";
- mes "\"I haven't been down there myself, and the ones who have haven't been able to describe why at all.\"";
- next;
- goto L_Question_End;
-
-L_NohMask:
- mes "[Receptionist]";
- mes "\"I stay in town, and so couldn't have heard anything over here. One of the miners might be able to help you.\"";
- next;
- goto L_Question_End;
-
-L_Question_End:
- mes "[Receptionist]";
- mes "\"Do you need anything else?\"";
- next;
- goto L_Menu;
-
-L_Close:
- set @inspector, 0;
- close;
-}
diff --git a/world/map/npc/018-3/_import.txt b/world/map/npc/018-3/_import.txt
deleted file mode 100644
index 1845c3d1..00000000
--- a/world/map/npc/018-3/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 018-3: Northern Mines
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 018-3
-npc: npc/018-3/_mobs.txt
-npc: npc/018-3/_nodes.txt
-npc: npc/018-3/_warps.txt
-npc: npc/018-3/bookcase.txt
-npc: npc/018-3/evil-obelisk.txt
-npc: npc/018-3/mapflags.txt
-npc: npc/018-3/sword.txt
diff --git a/world/map/npc/018-3/_mobs.txt b/world/map/npc/018-3/_mobs.txt
deleted file mode 100644
index 57c48654..00000000
--- a/world/map/npc/018-3/_mobs.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Northern Mines mobs
-
-018-3,48,29,57,19|monster|Bat|1017,10,100000ms,30000ms
-018-3,35,144,31,48|monster|EvilMushroom|1013,10,120000ms,30000ms
-018-3,35,65,28,22|monster|Spider|1012,20,100000ms,50000ms
-018-3,28,157,3,2|monster|PinkFlower|1014,1,60000ms,30000ms
-018-3,99,111,17,41|monster|YellowSlime|1007,10,90000ms,30000ms
-018-3,134,140,12,8|monster|Maggot|1002,3,80000ms,40000ms
-018-3,82,149,73,26|monster|Spider|1012,8,300000ms,120000ms
-018-3,102,172,131,13|monster|BlackScorpion|1009,20,60000ms,10000ms
-018-3,174,37,10,31|monster|YellowSlime|1007,5,180000ms,120000ms
-018-3,148,148,13,24|monster|Bat|1017,3,180000ms,40000ms
-018-3,136,87,21,7|monster|YellowSlime|1007,6,80000ms,40000ms
-018-3,81,77,27,21|monster|RedSlime|1008,15,80000ms,40000ms
-018-3,111,80,5,6|monster|BlackScorpion|1009,10,80000ms,40000ms
-018-3,175,122,5,40|monster|Snake|1010,15,40000ms,20000ms
-018-3,172,94,17,17|monster|RedSlime|1008,10,60000ms,30000ms
-018-3,59,95,11,8|monster|Spider|1012,15,60000ms,30000ms
-018-3,77,92,23,7|monster|BlackScorpion|1009,15,60000ms,30000ms
-018-3,94,55,16,8|monster|Snake|1010,5,60000ms,30000ms
-018-3,133,39,12,17|monster|Spider|1012,10,60000ms,30000ms
-018-3,111,33,30,16|monster|Snake|1010,15,60000ms,30000ms
-018-3,68,101,5,4|monster|CaveSnake|1021,4,60000ms,30000ms
-018-3,153,96,18,17|monster|CaveMaggot|1056,4,100000ms,30000ms
-018-3,99,99,17,17|monster|CaveMaggot|1056,4,100000ms,30000ms
diff --git a/world/map/npc/018-3/_nodes.txt b/world/map/npc/018-3/_nodes.txt
deleted file mode 100644
index 833941e7..00000000
--- a/world/map/npc/018-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Northern Mines nodes
-
-// (no nodes)
diff --git a/world/map/npc/018-3/_warps.txt b/world/map/npc/018-3/_warps.txt
deleted file mode 100644
index 14fd8d06..00000000
--- a/world/map/npc/018-3/_warps.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Northern Mines warps
-
-018-3,100,133|warp|0,-1,018-1,79,60
-018-3,44,39|warp|-1,-1,018-1,112,62
-018-3,49,100|warp|-1,-1,018-1,128,57
-018-3,123,167|warp|-1,-1,018-1,90,43
-018-3,70,106|warp|-1,-1,018-1,69,55
-018-3,50,88|warp|-1,-1,013-3,69,142
-018-3,145,163|warp|-1,-1,018-1,153,47
-018-3,64,104|warp|-1,-1,018-1,158,35
-018-3,29,167|warp|-1,-1,018-1,162,45
-018-3,97,69|warp|-1,-1,013-3,178,43
-018-3,27,54|warp|-1,-1,013-3,169,44
-018-3,134,63|warp|-1,-1,013-3,152,29
-018-3,177,56|warp|-1,-1,018-2,114,20
-018-3,172,21|warp|-1,-1,013-3,123,103
-018-3,177,21|warp|-1,-1,013-3,147,103
-018-3,27,91|warp|-1,-1,013-3,158,67
-018-3,90,50|warp|-1,-1,013-3,67,50
-018-3,71,122|warp|-1,-1,013-3,111,41
-018-3,174,85|warp|-1,-1,013-3,62,99
-018-3,102,69|warp|-1,-1,013-3,68,96
-018-3,179,181|warp|-1,-1,009-3,157,31
-018-3,107,146|warp|-1,-1,018-1,78,33
diff --git a/world/map/npc/018-3/bookcase.txt b/world/map/npc/018-3/bookcase.txt
deleted file mode 100644
index 8c5d587f..00000000
--- a/world/map/npc/018-3/bookcase.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-
-018-3,75,123,0|script|#DemonMineBookcase1|400
-{
- set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
-
- if (@state == 0) goto L_Search;
-
- mes "You see nothing different about the bookcase.";
- mes "Do you want to search it again anyways?";
- next;
- menu
- "Yes.", L_Search,
- "No.", L_Close;
-
-L_Search:
- mes "After searching the bookcase, you were able to find a few passages that you can read.";
- next;
- mes "One of the describes an ancient barrier that guards a great treasure.";
- mes "";
- mes "To get through it, you need to consume the soul of a great pumpkin ghost.";
- next;
- mes "Another passage describes a ritual needed to open a certain cursed chest.";
- mes "";
- mes "It looks like a lot of items will be needed.";
- next;
- mes "The slime of a maggot.";
- mes "A mushroom, big or small.";
- mes "The petal of a pink flower.";
- next;
- mes "A pearl from the sea.";
- mes "A spike; the harder, the better.";
- mes "Some raw wood. One log should do.";
- next;
- mes "An antenna. Preferably pink.";
- mes "The tongues of four different snakes.";
- mes "A key to a treasure chest.";
- next;
- mes "A pile of ash.";
- mes "Four different herbs.";
- mes "A bug, or part of one.";
- next;
- mes "A lamp for the dark.";
- mes "Rock and metal, as one.";
- mes "Three different deaths dealt by three different scorpions.";
- next;
- mes "The womb that gives birth to butterflies.";
- mes "The gentle caress of a creature without blemish.";
- mes "A single piece of darkness.";
- next;
- mes "And a bottle's worth of water.";
- mes "";
- mes "You begin to wonder if you read that list right.";
- next;
- if (@state != 0)
- goto L_Close;
- set @state, 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Close:
- set @state, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (@state << NIBBLE_2_SHIFT);
- return;
-}
diff --git a/world/map/npc/018-3/evil-obelisk.txt b/world/map/npc/018-3/evil-obelisk.txt
deleted file mode 100644
index 4ecc00b3..00000000
--- a/world/map/npc/018-3/evil-obelisk.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-
-018-3,67,28,0|script|Evil Obelisk|185
-{
- set @map$, "018-3";
- set @x0, 56;
- set @y0, 22;
- set @x1, 77;
- set @y1, 37;
- callfunc "EvilObelisk";
-//clearing vars
- set @map$, "";
- set @x0, 0;
- set @y0, 0;
- set @x1, 0;
- set @y1, 0;
- close;
-}
diff --git a/world/map/npc/018-3/mapflags.txt b/world/map/npc/018-3/mapflags.txt
deleted file mode 100644
index 6495e15c..00000000
--- a/world/map/npc/018-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-018-3|mapflag|resave|018-2,88,32
diff --git a/world/map/npc/018-3/sword.txt b/world/map/npc/018-3/sword.txt
deleted file mode 100644
index 83e9c6f2..00000000
--- a/world/map/npc/018-3/sword.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-018-3,71,127,0|script|#DemonSword#_M|400
-{
- if (getskilllv(SKILL_MAGIC))
- goto L_message;
- close;
-
-L_message:
- mes "[Sword in Rock]";
- mes "\"Ouch... my head...\"";
- close;
-}
diff --git a/world/map/npc/019-1/_import.txt b/world/map/npc/019-1/_import.txt
deleted file mode 100644
index 9eeea2c7..00000000
--- a/world/map/npc/019-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 019-1: snow Field
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 019-1
-npc: npc/019-1/_mobs.txt
-npc: npc/019-1/_nodes.txt
-npc: npc/019-1/_warps.txt
-npc: npc/019-1/mapflags.txt
-npc: npc/019-1/santa_helper.txt
-npc: npc/019-1/snowman.txt
diff --git a/world/map/npc/019-1/_mobs.txt b/world/map/npc/019-1/_mobs.txt
deleted file mode 100644
index 28f76d9a..00000000
--- a/world/map/npc/019-1/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Field mobs
-
-019-1,0,0,0,0|monster|Fluffy|1020,50,100000ms,30000ms
-019-1,0,0,0,0|monster|Reinboo|1094,4,100000ms,30000ms
-019-1,0,0,0,0|monster|WhiteBell|1095,5,100000ms,30000ms
-019-1,0,0,0,0|monster|Santaboo|1112,4,100000ms,30000ms
diff --git a/world/map/npc/019-1/_nodes.txt b/world/map/npc/019-1/_nodes.txt
deleted file mode 100644
index 091beb4e..00000000
--- a/world/map/npc/019-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Field nodes
-
-// (no nodes)
diff --git a/world/map/npc/019-1/_warps.txt b/world/map/npc/019-1/_warps.txt
deleted file mode 100644
index acbfd282..00000000
--- a/world/map/npc/019-1/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Field warps
-
-019-1,70,21|warp|2,-1,020-1,70,127
-019-1,96,40|warp|-1,-1,019-3,98,30
-019-1,38,75|warp|-1,-1,019-3,39,101
-019-1,21,70|warp|-1,0,033-1,118,69
diff --git a/world/map/npc/019-1/mapflags.txt b/world/map/npc/019-1/mapflags.txt
deleted file mode 100644
index 888c4354..00000000
--- a/world/map/npc/019-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-019-1|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/019-1/santa_helper.txt b/world/map/npc/019-1/santa_helper.txt
deleted file mode 100644
index 9d8a21b9..00000000
--- a/world/map/npc/019-1/santa_helper.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-// Author: accoring to git history probably Jaxad
-// and extended by wushin to be included in the annual
-// quest made seasonal and adapted to new scripting standards by Jenalya
-
-019-1,74,75,0|script|Santa's Helper|105
-{
- callfunc "XmasStates";
-
- if (($@xmas_time) && (@xmas_sh_done)) goto L_Done;
- if ($@xmas_time) goto L_Quest;
-
- mes "[Santa's Helper]";
- mes "\"Ah, isn't it peaceful here? Around Christmas time we always have problems with some slimy monsters.";
- mes "They steal the presents boxes. I think they feel attracted by the spiritual power of the Christmas presents.\"";
- next;
- mes "He smiles happily.";
- mes "[Santa's Helper]";
- mes "\"But at this time of the year everything's calm and relaxing.\"";
- goto L_Close;
-
-L_Quest:
- mes "[Santa's Helper]";
- mes "\"Hello my young friend.";
- mes "Would you like to help me?\"";
- next;
- mes "[Santa's Helper]";
- mes "\"Those monsters stole Santa's presents.";
- mes "If you help me, I'll give you something very nice\"";
- next;
- goto L_Menu;
-
-L_Menu:
- menu
- "I have some present boxes", L_Yes,
- "Hmm, see you later", L_No,
- "What you need exactly?", L_Help;
-
-L_Yes:
- mes "[Santa's Helper]";
- mes "\"Hmm, let me check what you have.\"";
- next;
- if (countitem("PurplePresentBox") < $@xmas_sh_purple_amount)
- goto L_NoItem;
- if (countitem("BluePresentBox") < $@xmas_sh_blue_amount)
- goto L_NoItem;
- if (countitem("GreenPresentBox") < $@xmas_sh_green_amount)
- goto L_NoItem;
- getinventorylist;
- set @SantasHelper_Reward$, $@SantasHelper_Annual_Reward$[ rand(getarraysize($@SantasHelper_Annual_Reward$)) ];
- if ((@inventorylist_count > 99) || (checkweight(@SantasHelper_Reward$, 1) == 0))
- goto L_TooMany;
- mes "[Santa's Helper]";
- mes "\"Great! Here is something for you\"";
- delitem "PurplePresentBox", $@xmas_sh_purple_amount;
- delitem "BluePresentBox", $@xmas_sh_blue_amount;
- delitem "GreenPresentBox", $@xmas_sh_green_amount;
- getitem @SantasHelper_Reward$, 1;
- set @SantasHelper_Reward$, "";
- set XMASTIME, XMASTIME | $@xmas_sh_bit;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNice";
- goto L_Close;
-
-L_Help:
- mes "[Santa's Helper]";
- mes "\"I need:";
- mes $@xmas_sh_purple_amount + " Purple Present Boxes";
- mes $@xmas_sh_blue_amount + " Blue Present Boxes";
- mes $@xmas_sh_green_amount + " Green Present Boxes\"";
- next;
- goto L_Menu;
-
-L_No:
- mes "[Santa's Helper]";
- mes "\"Enjoy your holidays and I wish you a happy Christmas!\"";
- goto L_Close;
-
-L_NoItem:
- mes "[Santa's Helper]";
- mes "\"You dont seem to have enough presents.\"";
- goto L_Close;
-
-L_Done:
- mes "[Santa's Helper]";
- mes "\"All the children got their Christmas presents.";
- mes "Thank you for your help.\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Santa's Helper]";
- mes "\"It doesn't look like you have room for this. Come back later.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/019-1/snowman.txt b/world/map/npc/019-1/snowman.txt
deleted file mode 100644
index 98b749df..00000000
--- a/world/map/npc/019-1/snowman.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-// Author: accoring to git history probably Jaxad
-// quest made seasonal and adapted to new scripting standards by Jenalya
-
-019-1,77,44,0|script|Snowman|129
-{
- if (FLAGS & FLAG_SNOWMAN) goto L_Done;
- if (gettime(6) == 12 || gettime(6) == 1 || gettime(6) == 2) goto L_Quest;
-
- mes "A beautiful snowman. It looks almost alive.";
- mes "Maybe the magic of Christmas time will breath life into it?";
- goto L_Close;
-
-L_Quest:
- set @candy_amount, 15;
- set @chocolate_amount, 10;
- set @cactus_amount, 5;
-
- mes "[Snowman]";
- mes "\"Hello there.";
- mes "Would you like a Christmas hat?\"";
- next;
- goto L_Menu;
-
-L_Menu:
- menu
- "Yes", L_Sure,
- "No", L_Next,
- "What do you need?", L_Need;
-
-L_Next:
- mes "[Snowman]";
- mes "\"Well, thats too bad, but make sure to have the holiday spirit!\"";
- goto L_Close;
-
-L_Sure:
- mes "[Snowman]";
- mes "\"Hmm, let me see what you have.\"";
- next;
- if(countitem("Candy") < @candy_amount)
- goto L_NoItem;
- if(countitem("ChocolateBar") < @chocolate_amount)
- goto L_NoItem;
- if(countitem("CactusPotion") < @cactus_amount)
- goto L_NoItem;
- getinventorylist;
- if (@inventorylist_count > 99)
- goto L_TooMany;
- delitem "Candy", @candy_amount;
- delitem "ChocolateBar", @chocolate_amount;
- delitem "CactusPotion", @cactus_amount;
- mes "[Snowman]";
- mes "\"Here you go, enjoy your new hat!\"";
- getitem "SantaHat", 1;
- set FLAGS, FLAGS | FLAG_SNOWMAN;
- goto L_Close;
-
-L_Need:
- mes "[Snowman]";
- mes "\"For this special hat, I need a pint of magic and a little help.";
- mes "Just kidding. I would like to get some food:";
- mes @candy_amount + " pieces of Candy";
- mes @chocolate_amount + " Chocolate Bars";
- mes @cactus_amount + " Cactus Potions\"";
- next;
- goto L_Menu;
-
-L_NoItem:
- mes "[Snowman]";
- mes "\"Well, I am interested in some food and you don't have enought to get a hat.\"";
- goto L_Close;
-
-L_Done:
- mes "[Snowman]";
- mes "\"Thank you for your help!\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Snowman]";
- mes "\"It doesn't look like you have room for this. Come back later.\"";
- goto L_Close;
-
-L_Close:
- set @candy_amount, 0;
- set @chocolate_amount, 0;
- set @cactus_amount, 0;
- close;
-}
diff --git a/world/map/npc/019-3/_import.txt b/world/map/npc/019-3/_import.txt
deleted file mode 100644
index d7547724..00000000
--- a/world/map/npc/019-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 019-3: Snow Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 019-3
-npc: npc/019-3/_mobs.txt
-npc: npc/019-3/_nodes.txt
-npc: npc/019-3/_warps.txt
-npc: npc/019-3/mapflags.txt
diff --git a/world/map/npc/019-3/_mobs.txt b/world/map/npc/019-3/_mobs.txt
deleted file mode 100644
index 3ba50e42..00000000
--- a/world/map/npc/019-3/_mobs.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Cave mobs
-
-019-3,0,4,0,0|monster|Moggun|1061,10,100000ms,30000ms
-019-3,0,4,0,0|monster|Bat|1017,50,100000ms,30000ms
diff --git a/world/map/npc/019-3/_nodes.txt b/world/map/npc/019-3/_nodes.txt
deleted file mode 100644
index 97eefd57..00000000
--- a/world/map/npc/019-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/019-3/_warps.txt b/world/map/npc/019-3/_warps.txt
deleted file mode 100644
index c38eae56..00000000
--- a/world/map/npc/019-3/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Cave warps
-
-019-3,40,102|warp|-1,-1,019-1,37,74
-019-3,98,29|warp|-1,-1,019-1,96,39
-019-3,80,103|warp|-1,-1,030-3,54,70
diff --git a/world/map/npc/019-3/mapflags.txt b/world/map/npc/019-3/mapflags.txt
deleted file mode 100644
index 665b004c..00000000
--- a/world/map/npc/019-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-019-3|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/019-4/_import.txt b/world/map/npc/019-4/_import.txt
deleted file mode 100644
index f9b94579..00000000
--- a/world/map/npc/019-4/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 019-4: Snow Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 019-4
-npc: npc/019-4/_mobs.txt
-npc: npc/019-4/_nodes.txt
-npc: npc/019-4/_warps.txt
-npc: npc/019-4/mapflags.txt
diff --git a/world/map/npc/019-4/_mobs.txt b/world/map/npc/019-4/_mobs.txt
deleted file mode 100644
index 6a23a017..00000000
--- a/world/map/npc/019-4/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Cave mobs
-
-019-4,0,0,0,0|monster|Moggun|1061,12,45000ms,30000ms
-019-4,47,67,15,9|monster|WhiteSlime|1093,5,45000ms,45000ms
-019-4,0,0,0,0|monster|Bat|1017,15,45000ms,25000ms
-019-4,0,0,0,0|monster|BlueSlime|1091,7,45000ms,30000ms
diff --git a/world/map/npc/019-4/_nodes.txt b/world/map/npc/019-4/_nodes.txt
deleted file mode 100644
index 97eefd57..00000000
--- a/world/map/npc/019-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/019-4/_warps.txt b/world/map/npc/019-4/_warps.txt
deleted file mode 100644
index a6d12941..00000000
--- a/world/map/npc/019-4/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Cave warps
-
-019-4,74,28|warp|-1,-1,047-1,154,93
-019-4,25,124|warp|0,-1,046-1,62,27
diff --git a/world/map/npc/019-4/mapflags.txt b/world/map/npc/019-4/mapflags.txt
deleted file mode 100644
index 8b5e272c..00000000
--- a/world/map/npc/019-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-019-4|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/020-1/KrickKrackKrock.txt b/world/map/npc/020-1/KrickKrackKrock.txt
deleted file mode 100644
index 64dc6785..00000000
--- a/world/map/npc/020-1/KrickKrackKrock.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-//author: Lien
-//reviewed by Pjotr Orial and Jenalya
-
-//To enable: sed 's_^// __' -i npc/020-1/KrickKrackKrock.txt
-
-// 020-1,82,82,0|script|Criker|192
-// {
-// L_Main:
-// //Var
-
-// set @NPC_NAME$, "[Criker]";
-// set @BET, 50;
-// //lots of array ;(
-// setarray @KRICK$, "Krick", "Krack", "Krock";
-// setarray @ITEM_RAND, 613, 537, 631, 775, 703, 640, 641, 4006, 700;
-// setarray @ITEM_HEALTH, 684, 685, 686, 687;
-
-// //ends of var
-
-// mes @NPC_NAME$;
-// mes "\"Hello " + strcharinfo(0) + ", do you want to play Krick-Krack-Krock?\"";
-// L_Menu:
-// menu
-// "Let's start!", L_Start,
-// "What's this?", L_info,
-// "Well, not for the moment.", -;
-// close;
-// L_Start:
-// mes @NPC_NAME$;
-// mes "\"Well, how many do you want to bet?\"";
-// input @BET;
-// if(@BET < 50 ) goto L_poor;
-// if(@BET > 2000) goto L_Too_rich;
-// if(Zeny < @BET) goto L_No_Money;
-// set Zeny, Zeny - @BET;
-
-
-
-// set @NPC_KRICK, rand(2);
-// mes "\"Choose Krick, Krack or Krock.\"";
-// menu
-// @KRICK$[0], -,
-// @KRICK$[1], -,
-// @KRICK$[2], -;
-
-// //menu = min 1 & not 0 so I change it
-// set @menu, @menu - 1;
-
-// mes @NPC_NAME$;
-// mes "\" "+ @KRICK$[@NPC_KRICK] +"!\"";
-// if( @menu == @NPC_KRICK ) goto L_Work;
-// mes @NPC_NAME$;
-// mes "\"Too bad! You were not lucky!\"";
-// close;
-// L_Work:
-// mes @NPC_NAME$;
-// mes "\"Wow amazing... What kind of present do you want?\"";
-// menu
-// "Money!", L_Money,
-// "An item!", L_Item,
-// "Some healing potions would be cool!", L_Health_item;
-// close;
-
-// L_Money:
-// mes @NPC_NAME$;
-// mes "\"Here is your money.\"";
-// set Zeny, Zeny + (@BET*2);
-// close;
-// L_Item:
-// //item
-// getinventorylist;
-// if (@inventorylist_count == 100) goto L_Full_Inv;
-
-// if( @BET > 50) getitem @ITEM_RAND[rand(1)], 1;
-// if( @BET > 200) getitem @ITEM_RAND[1 + rand(1)], 1;
-// if( @BET > 500) getitem @ITEM_RAND[2 + rand(1)], 1;
-// if( @BET > 1000) getitem @ITEM_RAND[3 + rand(1)], 1;
-// if( @BET > 1200) getitem @ITEM_RAND[4 + rand(1)], 1;
-// if( @BET > 1500) getitem @ITEM_RAND[5 + rand(1)], 1;
-// if( @BET == 2000) getitem @ITEM_RAND[6 + rand(1)], 1;
-// mes @NPC_NAME$;
-// mes "\"Here it is !\"";
-// close;
-
-// L_Health_item:
-// // health item
-// getinventorylist;
-// if (@inventorylist_count == 100) goto L_Full_Inv;
-
-// if( @BET > 50) getitem @ITEM_HEALTH[rand(1)], 1;
-// if( @BET > 200) getitem @ITEM_HEALTH[ 1 +rand(1)], 1 + rand(1);
-// if( @BET > 500) getitem @ITEM_HEALTH[2 + rand(1)], 1 + rand(3);
-// if( @BET > 1000) getitem @ITEM_HEALTH[3], 2 + rand(1);
-// if( @BET > 1500) getitem @ITEM_HEALTH[3], 3 + rand(2);
-// if( @BET == 2000) getitem @ITEM_HEALTH[3], 5 + rand(10);
-// mes @NPC_NAME$;
-// mes "\"Here it is !\"";
-// close;
-
-// L_Full_Inv:
-// mes @NPC_NAME$;
-// mes "\"What are you doing? You have so much stuff with you, you can't carry what you won. Ha, well, then I will keep it!\"";
-// close;
-
-// L_poor:
-// mes @NPC_NAME$;
-// mes "\"Erm... if you want to play you HAVE to bet, and you can't bet "+ @BET +" gold pieces. You need at least 50gp.\"";
-// close;
-// L_Too_rich:
-// mes @NPC_NAME$;
-// mes "\"Mh... I have to bet too. How will I get a present which is "+ @BET +"? No, that's too much.\"";
-// close;
-// L_No_Money:
-// mes @NPC_NAME$;
-// mes "\"Oh? You don't have "+ @BET +" gold pieces.\"";
-// close;
-// L_info:
-// mes @NPC_NAME$;
-// mes "\"Well, if you want to play Krick Krack Krock with me, you need to bet some money. We will both say a word (Krack, Krick or Krock). If we say the same, you can win double your money or an item worth what you bet. \"";
-// next;
-// mes "\"So, do you want to play? \"";
-// goto L_Menu;
-// }
-
diff --git a/world/map/npc/020-1/_import.txt b/world/map/npc/020-1/_import.txt
deleted file mode 100644
index dec7f1d5..00000000
--- a/world/map/npc/020-1/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 020-1: Nivalis
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 020-1
-npc: npc/020-1/KrickKrackKrock.txt
-npc: npc/020-1/_mobs.txt
-npc: npc/020-1/_nodes.txt
-npc: npc/020-1/_warps.txt
-npc: npc/020-1/mapflags.txt
-npc: npc/020-1/rockscissor.txt
-npc: npc/020-1/soul-menhir.txt
-npc: npc/020-1/traveler.txt
-npc: npc/020-1/well.txt
diff --git a/world/map/npc/020-1/_mobs.txt b/world/map/npc/020-1/_mobs.txt
deleted file mode 100644
index 7890d424..00000000
--- a/world/map/npc/020-1/_mobs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis mobs
-
-020-1,0,0,0,0|monster|WhiteBell|1095,3,100000ms,30000ms
diff --git a/world/map/npc/020-1/_nodes.txt b/world/map/npc/020-1/_nodes.txt
deleted file mode 100644
index 07b204f3..00000000
--- a/world/map/npc/020-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis nodes
-
-// (no nodes)
diff --git a/world/map/npc/020-1/_warps.txt b/world/map/npc/020-1/_warps.txt
deleted file mode 100644
index 87ba723d..00000000
--- a/world/map/npc/020-1/_warps.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis warps
-
-020-1,76,38|warp|1,-1,020-3,31,26
-020-1,47,48|warp|-1,-1,020-2,25,35
-020-1,66,52|warp|-1,-1,020-2,72,70
-020-1,64,82|warp|-1,-1,020-2,111,32
-020-1,86,46|warp|-1,-1,020-2,32,73
-020-1,57,91|warp|-1,-1,020-2,65,23
-020-1,70,128|warp|2,-1,019-1,70,22
-020-1,107,55|warp|-1,-1,031-1,38,55
-020-1,59,45|warp|-1,-1,020-2,127,68
-020-1,33,93|warp|-1,-1,030-2,88,50
diff --git a/world/map/npc/020-1/mapflags.txt b/world/map/npc/020-1/mapflags.txt
deleted file mode 100644
index dbaedb2e..00000000
--- a/world/map/npc/020-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-020-1|mapflag|town
-020-1|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/020-1/rockscissor.txt b/world/map/npc/020-1/rockscissor.txt
deleted file mode 100644
index 9023b6d6..00000000
--- a/world/map/npc/020-1/rockscissor.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-//author: Lien
-//reviewed by Pjotr Orial and Jenalya
-//######################################
-//#== NPC [Player] #
-//# anyone want to do a funny bet #
-//# ------------------------ #
-//# Rock-Paper-Scissors can be playing #
-//# I hope that'll make fun #
-//# ------------------------ #
-//######################################
-
-//To enable: sed 's_^// __' -i npc/020-1/rockscissor.txt
-
-// 020-1,74,78,0|script|Gobmel|189
-// {
-// //var
-// set @NPC_name$, "[Gobmel]";
-// set @NPC_point, 0;
-// set @PC_point, 0;
-// set @gamblerun, 0;
-// setarray @CHOOSE_PC$, "Scissors", "Paper", "Rock";
-// setarray @CHOSE_ID, 0, 1, 2;
-// //0:* scissors; 1: Paper; 2: Rock;
-// // 0 cut 1 and 1 cover 3 and break 0 ...
-// //var ends
-
-// mes @NPC_name$;
-// mes "\"Hello " + strcharinfo(0) + "! Do you want to do a little party of Rock-Paper-Scissors and bet some gold?\"";
-// menu
-// "Yes, I want.", L_RPS,
-// "Well, maybe later.", -;
-// close;
-
-// L_RPS:
-
-// mes @NPC_name$;
-// mes "\"How much money do you want to bet?\"";
-// input @MONEY_BET;
-// if(Zeny < @MONEY_BET) goto L_poor;
-// set Zeny, Zeny - @MONEY_BET;
-
-// L_Start:
-// if(@gamblerun == 3) goto L_finish;
-// //what chose the NPC ?
-
-// set @CHOOSE_NPCID, rand(2);
-
-// mes @NPC_name$;
-// mes "[ " + @gamblerun + "/3 ]";
-// mes "\"1... 2... 3...\"";
-// mes "";
-// mes"[chose what sign you do]";
-// mes "";
-// menu
-// @CHOOSE_PC$[0], -,
-// @CHOOSE_PC$[1], -,
-// @CHOOSE_PC$[2], -;
-
-// set @CHOSEN, @menu -1;
-// mes "Gobmal: " + @CHOOSE_PC$[@CHOOSE_NPCID];
-// mes strcharinfo(0)+" " + strcharinfo(0)+ ": " +@CHOOSE_PC$[@CHOSEN];
-// mes "";
-// if(@CHOSEN == @CHOOSE_NPCID) goto L_Start;
-// if(@CHOSEN == 0 && @CHOOSE_NPCID == 2) goto L_Lost;
-// if(@CHOSEN == 1 && @CHOOSE_NPCID == 0) goto L_Lost;
-// if(@CHOSEN == 2 && @CHOOSE_NPCID == 1) goto L_Lost;
-// L_Win:
-// set @PC_point, @PC_point + 1;
-// set @gamblerun, @gamblerun + 1;
-// mes "Oh no! I have lost.";
-// mes "";
-// next;
-// goto L_Start;
-
-// L_poor:
-// mes @NPC_name$;
-// mes "\"Go away from me...\"";
-// close;
-
-// L_Lost:
-// set @NPC_point, @NPC_point + 1;
-// set @gamblerun, @gamblerun + 1;
-// mes "I have won!";
-// mes "";
-// next;
-// goto L_Start;
-
-// L_finish:
-// if(@PC_point > @NPC_point ) goto L_Won;
-// mes @NPC_name$;
-// mes "\"Nice! I have won, give me your gp!\"";
-// close;
-// L_Won:
-// mes @NPC_name$;
-// mes "\"Here is my money.\"";
-// set Zeny, Zeny + @MONEY_BET*2;
-// close;
-// }
-
diff --git a/world/map/npc/020-1/soul-menhir.txt b/world/map/npc/020-1/soul-menhir.txt
deleted file mode 100644
index c8f7740a..00000000
--- a/world/map/npc/020-1/soul-menhir.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-020-1,63,89,0|script|Soul Menhir#nivalis|346
-{
- set @map$, "020-1";
- setarray @Xs, 62, 63, 64, 62, 64, 62, 64;
- setarray @Ys, 88, 88, 88, 89, 89, 90, 90;
- set @x, 0;
- set @y, 0;
- callfunc "SoulMenhir";
- set @map$, "";
- cleararray @Xs[0], 0, 7;
- cleararray @Ys[0], 0, 7;
- set @x, 0;
- set @y, 0;
- close;
-}
diff --git a/world/map/npc/020-1/traveler.txt b/world/map/npc/020-1/traveler.txt
deleted file mode 100644
index 421ed0e7..00000000
--- a/world/map/npc/020-1/traveler.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-020-1,57,123,0|script|Knox the Traveler|103
-{
- set @npcname$, "Knox";
- set @NpcTravelBit, $@nivalis_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/020-1/well.txt b/world/map/npc/020-1/well.txt
deleted file mode 100644
index ec42c397..00000000
--- a/world/map/npc/020-1/well.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-//############################################
-//# NPC Well & Miler
-//# Authors: Lien, PjotrOrial
-//# Review:
-//#
-//# There is someone in the well. This can be found out by throwing some stuff
-//# in there.
-//#
-//# When the npc in the well is detected they can be rescued by asking Miler
-//# for help.
-//#
-//# The experience reward given by Miler is 111 * BaseLevel
-//#
-//# used variables: QUEST_Nivalis_state Nibble4
-//############################################
-
-020-1,99,83,0|script|#Well|400
-{
- if(QL_WELL == 2) goto L_Finished;
-
- mes "...";
- menu
- "Throw something in the well.", L_Throw,
- "Leave it alone.", L_Close;
-
-L_Throw:
- mes "What do you want to throw?";
-
- setarray @response_list$, "Yuck! Who threw that on me?", "Ouch! Who's hurting me?", "White powder!? What's going on up there?", "It's raining in Nivalis?!";
- setarray @item_list$, "MaggotSlime", "RawLog", "PileOfAsh", "BottleOfWater";
- menu
- "Maggot slime", L_CheckItem,
- "A raw log", L_CheckItem,
- "Pile of ash", L_CheckItem,
- "Bottle of water", L_CheckItem,
- "Leave it alone", L_Close;
-
-L_CheckItem:
- set @index, @menu - 1;
- set @response$, @response_list$[@index];
- set @item$, @item_list$[@index];
-
- mes @item$;
-
- if(countitem(@item$) == 0)
- goto L_MissingItem;
- delitem @item$, 1;
-
- if(@item$ == "BottleOfWater")
- getitem "EmptyBottle", 1;
-
- mes "[Mysterious voice inside the well]";
- mes "\"" + @response$ + "\"";
- next;
- menu
- "Who are you?", L_Who,
- "How did you get down there?", L_How,
- "Do you need help?", L_Help;
-
-L_Who:
- set @response$, "I'll talk about who I am after leaving the well. ";
- goto L_GetHelp;
-
-L_How:
- set @response$, "Well, someone pushed me into the well, I'm not sure who. ";
- goto L_GetHelp;
-
-L_Help:
- set @response$, "I certainly can't get out on my own. ";
- goto L_GetHelp;
-
-L_GetHelp:
- mes "[Mysterious voice inside the well]";
- mes "\"" + @response$ + "So if you can get some help for me... please do so!\"";
- set QL_WELL, 1;
-
- cleararray @response_list$, "", 4;
- cleararray @item_list$, "", 4;
- set @index, 0;
- set @response$, "";
-
- goto L_Close;
-
-L_MissingItem:
- mes "You can't throw something you don't have.";
- goto L_Close;
-
-L_Finished:
- mes "This is a well.";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-020-2,100,28,0|script|Miler|100
-{
- mes "[Miler]";
- mes "\"Hello!\"";
-
- if(QL_WELL != 1) goto L_Close;
- menu
- "Hello.", L_Close,
- "Hello, Can you help me?", L_Help;
-
-L_Help:
- mes "[Miler]";
- mes "\"What's the problem?\"";
- menu "Someone fell into the well.", L_Next;
-
-L_Next:
- mes "[Miler]";
- mes "\"Ho! I'll help him!\"";
- getexp (BaseLevel * 111), 0;
- set QL_WELL, 2;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/020-2/_import.txt b/world/map/npc/020-2/_import.txt
deleted file mode 100644
index e8d75c4c..00000000
--- a/world/map/npc/020-2/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 020-2: Nivalis Indoor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 020-2
-npc: npc/020-2/_mobs.txt
-npc: npc/020-2/_nodes.txt
-npc: npc/020-2/_warps.txt
-npc: npc/020-2/baktar.txt
-npc: npc/020-2/banker.txt
-npc: npc/020-2/furquest.txt
-npc: npc/020-2/mapflags.txt
-npc: npc/020-2/shops.txt
diff --git a/world/map/npc/020-2/_mobs.txt b/world/map/npc/020-2/_mobs.txt
deleted file mode 100644
index 70eb4f73..00000000
--- a/world/map/npc/020-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis Indoor mobs
-
diff --git a/world/map/npc/020-2/_nodes.txt b/world/map/npc/020-2/_nodes.txt
deleted file mode 100644
index 29018595..00000000
--- a/world/map/npc/020-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis Indoor nodes
-
-// (no nodes)
diff --git a/world/map/npc/020-2/_warps.txt b/world/map/npc/020-2/_warps.txt
deleted file mode 100644
index c128533a..00000000
--- a/world/map/npc/020-2/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis Indoor warps
-
-020-2,25,36|warp|-1,-1,020-1,47,49
-020-2,64,23|warp|-1,-1,020-1,56,91
-020-2,111,33|warp|-1,-1,020-1,64,83
-020-2,32,74|warp|-1,-1,020-1,86,47
-020-2,72,71|warp|-1,-1,020-1,66,53
-020-2,127,69|warp|-1,-1,020-1,59,46
diff --git a/world/map/npc/020-2/baktar.txt b/world/map/npc/020-2/baktar.txt
deleted file mode 100644
index 9d1f658b..00000000
--- a/world/map/npc/020-2/baktar.txt
+++ /dev/null
@@ -1,249 +0,0 @@
-//#=========================
-//#== NPC Baktar
-//# Authors: Lien, PjotrOrial
-//# Review: BigCrunch, Mistakes, Jenalya
-//# This NPC has one stage:
-//#
-//# you need to bring 7 different items, but only one of each kind.
-//#
-//# variable used:
-//# @QUEST_Nivalis_state: NIBBLE0, NIBBLE1, NIBBLE2, NIBBLE3:
-//# BYTE0 ( == NIBBLE0 | NIBBLE1) stores in each bit information if that item was already brought.
-//# bits:
-//# bit 0 if you have met the npc already
-//# bit 1 Desert Hat
-//# bit 2 Desert Shirt
-//# bit 3 Serf Hat
-//# bit 4 tongue_Item
-//# bit 5 eggs_Item
-//# bit 6 skin_Item
-//# bit 7 bugleg
-//#=========================
-020-2,70,61,0|script|Baktar|191
-{
- set @npcname$, "[Baktar]";
-
- set @BIT_KNOWHIM, 0;
-
- set @BIT_DESERTHAT,1;
- set @MONEY_DESERTHAT, 1500;
- set @XP_DESERTHAT, 500;
-
- set @BIT_DESERTSHIRT,2;
- set @MONEY_DESERTSHIRT, 1500;
- set @XP_DESERTSHIRT, 600;
-
- set @BIT_SERFHAT,3;
- set @MONEY_SERFHAT, 800;
- set @XP_SERFHAT, 350;
-
- set @BIT_MS_TONGUE,4;
- set @MONEY_MS_TONGUE, 800;
- set @XP_MS_TONGUE, 350;
-
- set @BIT_MS_EGG,5;
- set @MONEY_MS_EGG, 800;
- set @XP_MS_EGG, 350;
-
- set @BIT_SNAKESKIN,6;
- set @MONEY_SNAKESKIN, 800;
- set @XP_SNAKESKIN, 350;
-
- set @BIT_BUGLEG,7;
- set @MONEY_BUGLEG, 20;
- set @XP_BUGLEG, 130;
-
- set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
- if ((@run == 3) && (QL_KYLIAN == 13))
- goto L_Deliver;
- goto L_Start;
-
-L_Deliver:
- menu
- "I have a delivery for you", L_Delivery;
-
-L_Delivery:
- mes "[Baktar]";
- mes "\"Ahh my delivery from Tulimshar, how nice it is to get some comforts from back home.\"";
- set QL_KYLIAN, 14;
- goto L_Close;
-
-L_Start:
-
- if(QL_BAKTAR & (1<<@BIT_KNOWHIM)) goto L_KnowAlready;
- mes @npcname$;
- mes "\"Hello, did you come from Tulimshar? Because you have a nice tan. \"";
- menu
- "Yes, I'm from Tulimshar", L_exotic,
- "Well, I just like sunbathing", L_Close,
- "Good bye", L_Close;
-
-L_KnowAlready:
- mes @npcname$;
- mes "\"I love Tulimshar's stuff. I'm collecting souvenirs from Tulimshar to help remind me of all the great times I had there. If you give me an interesting item from the area, I'll give you a nice reward. So, you have a new item?\"";
- goto L_startitem;
-
-L_exotic:
- mes @npcname$;
- mes "\"I said that because I love Tulimshar's stuff...I'm collecting souvenirs from Tulimshar to help remind me of all the great times I had there. If you give me an interesting item maybe I can give you a nice reward. But I don't need a lot, I just need one of each item.\"";
- menu
- "I have some items on me maybe you'll like them ", L_startitem,
- "Don't touch my stuff!", L_Close,
- "I'll get them. Bye.", L_Close;
-
-L_startitem:
- setarray @exotic_item$, "", "", "", "", "", "", "";
- set @c, 0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_KNOWHIM);
- if (countitem("DesertHat") < 1 || QL_BAKTAR & (1<<@BIT_DESERTHAT) ) goto L_DesertShirt;
- set @exotic_item$[@c], "a Desert Hat ?";
- set @menuid[@c], 0;
- set @c, @c + 1;
- goto L_DesertShirt;
-
-L_DesertShirt:
- if (countitem("DesertShirt") < 1 || QL_BAKTAR & (1<<@BIT_DESERTSHIRT) ) goto L_SerfHat;
- set @exotic_item$[@c], "a Desert Shirt ?";
- set @menuid[@c], 1;
- set @c, @c + 1;
- goto L_SerfHat;
-
-L_SerfHat:
- if (countitem("SerfHat") < 1 || QL_BAKTAR & (1<<@BIT_SERFHAT) ) goto L_tongue;
- set @exotic_item$[@c], "a Serf Hat ?";
- set @menuid[@c], 2;
- set @c, @c + 1;
- goto L_tongue;
-
-L_tongue:
- if (countitem("MountainSnakeTongue") < 1 || QL_BAKTAR & (1<<@BIT_MS_TONGUE)) goto L_egg;
- set @exotic_item$[@c], "a Mountain Snake Tongue ?";
- set @menuid[@c], 3;
- set @c, @c + 1;
- goto L_egg;
-
-L_egg:
- if (countitem("MountainSnakeEgg") < 1 || QL_BAKTAR & (1<<@BIT_MS_EGG)) goto L_Skin;
- set @exotic_item$[@c], "a Mountain Snake Egg?";
- set @menuid[@c], 4;
- set @c, @c + 1;
- goto L_Skin;
-
-L_Skin:
- if (countitem("SnakeSkin") < 1 || QL_BAKTAR & (1<<@BIT_SNAKESKIN)) goto L_bugleg;
- set @exotic_item$[@c], "a Snake Skin?";
- set @menuid[@c], 5;
- set @c, @c + 1;
- goto L_bugleg;
-
-L_bugleg:
- if (countitem("BugLeg") < 1 || QL_BAKTAR & (1<<@BIT_BUGLEG)) goto L_NeverMind;
- set @exotic_item$[@c], "a Bug Leg?";
- set @menuid[@c], 6;
- set @c, @c + 1;
- goto L_NeverMind;
-
-L_NeverMind:
- set @exotic_item$[@c], "Nevermind";
- set @menuid[@c], 6;
-//menu for the item
- menu
- @exotic_item$[0], L_MenuItems,
- @exotic_item$[1], L_MenuItems,
- @exotic_item$[2], L_MenuItems,
- @exotic_item$[3], L_MenuItems,
- @exotic_item$[4], L_MenuItems,
- @exotic_item$[5], L_MenuItems,
- @exotic_item$[6], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu -1;
-
- if (@menuid[@menu] == 0) goto L_DesertHat_Item;
- if (@menuid[@menu] == 1) goto L_DesertShirt_Item;
- if (@menuid[@menu] == 2) goto L_SerfHat_Item;
- if (@menuid[@menu] == 3) goto L_tongue_Item;
- if (@menuid[@menu] == 4) goto L_egg_Item;
- if (@menuid[@menu] == 5) goto L_skin_Item;
- if (@menuid[@menu] == 6) goto L_BugLegItem;
-//if Never mind
- mes @npcname$;
- mes "\"Ok, goodbye then.\"";
- close;
-
-L_DesertHat_Item:
- if(QL_BAKTAR & (1<<@BIT_DESERTHAT)) goto L_havealready;
- if (countitem("DesertHat") < 1) goto L_Noitem;
- delitem "DesertHat", 1;
- set Zeny, Zeny + @MONEY_DESERTHAT;
- getexp @XP_DESERTHAT,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_DESERTHAT);
- close;
-
-L_DesertShirt_Item:
- if(QL_BAKTAR & (1<<@BIT_DESERTSHIRT)) goto L_havealready;
- if (countitem("DesertShirt") < 1) goto L_Noitem;
- delitem "DesertShirt", 1;
- set Zeny, Zeny + @MONEY_DESERTSHIRT;
- getexp @XP_DESERTSHIRT,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_DESERTSHIRT);
- close;
-
-L_SerfHat_Item:
- if(QL_BAKTAR & (1<<@BIT_SERFHAT)) goto L_havealready;
- if (countitem("SerfHat") < 1) goto L_Noitem;
- delitem "SerfHat", 1;
- set Zeny, Zeny + @MONEY_SERFHAT;
- getexp @XP_SERFHAT,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_SERFHAT);
- close;
-
-L_tongue_Item:
- if(QL_BAKTAR & (1<<@BIT_MS_TONGUE)) goto L_havealready;
- if (countitem("MountainSnakeTongue") < 1) goto L_Noitem;
- delitem "MountainSnakeTongue", 1;
- set Zeny, Zeny + @MONEY_MS_TONGUE;
- getexp @XP_MS_TONGUE,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_MS_TONGUE);
- close;
-
-L_egg_Item:
- if(QL_BAKTAR & (1<<@BIT_MS_EGG)) goto L_havealready;
- if (countitem("MountainSnakeEgg") < 1) goto L_Noitem;
- delitem "MountainSnakeEgg", 1;
- set Zeny, Zeny + @MONEY_MS_EGG;
- getexp @XP_MS_EGG,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_MS_EGG);
- close;
-
-L_skin_Item:
- if(QL_BAKTAR & (1<<@BIT_SNAKESKIN)) goto L_havealready;
- if (countitem("SnakeSkin") < 1) goto L_Noitem;
- delitem "SnakeSkin", 1;
- set Zeny, Zeny + @MONEY_SNAKESKIN;
- getexp @XP_SNAKESKIN,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_SNAKESKIN);
- close;
-
-L_BugLegItem:
- if(QL_BAKTAR & (1<<@BIT_BUGLEG)) goto L_havealready;
- if (countitem("BugLeg") < 1) goto L_Noitem;
- delitem "BugLeg", 1;
- set Zeny, Zeny + @MONEY_BUGLEG;
- getexp @XP_BUGLEG,0;
- set QL_BAKTAR, QL_BAKTAR | (1<<@BIT_BUGLEG);
- close;
-
-L_Noitem:
- mes @npcname$;
- mes "\"Well, if you happen to get items from Tulimshar, see me first before you sell anything.\"";
- close;
-
-L_havealready:
- mes @npcname$;
- mes "\"I already collected what you can offer me.\"";
- close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/020-2/banker.txt b/world/map/npc/020-2/banker.txt
deleted file mode 100644
index 8b0c8e59..00000000
--- a/world/map/npc/020-2/banker.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-020-2,122,63,0|script|Ben|193
-{
- set @npcname$, "Ben";
- callfunc "Banker";
- close;
-}
-
-020-2,127,63,0|script|Maria|190
-{
- mes "[Maria]";
- mes "\"Hello!";
- mes "\"Isn't it great?\"";
- next;
- mes "\"Nivalis has increased trade with merchants from Thermin in the west and the barbarian tribe who live in the mountains northwest of here.\"";
- next;
- mes "\"That's why this office was built.\"";
- close;
-}
diff --git a/world/map/npc/020-2/furquest.txt b/world/map/npc/020-2/furquest.txt
deleted file mode 100644
index dc184aef..00000000
--- a/world/map/npc/020-2/furquest.txt
+++ /dev/null
@@ -1,655 +0,0 @@
-//#################################################################################
-// Script by Shaili and QOAL
-//#################################################################################
-
-020-2,24,26,0|script|Agostine Debug|137
-{
- mes "[Agostine Debug]";
- mes "What do you want to do?";
- menu
- "Show Quest State", L_ShowState,
- "Set Quest State", L_SetState,
- "Reset", L_Reset,
- "Nothing.", L_Close;
-
-L_ShowState:
- set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
- mes "Current State is " + @wg_state;
- goto L_Close;
-
-L_SetState:
- mes "What state do you want?";
- input @wg_state;
- callfunc "setWGState";
- mes "Set to " + @wg_state;
- goto L_Close;
-
-L_Reset:
- set @wg_state, 0;
- callfunc "setWGState";
- mes "Reset!";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Agostine Debug";
- end;
-}
-020-2,27,26,0|script|Agostine|137
-{
- set @CUTFUR_EXP, 10;
- set @FINEDRESS_COTTON_CLOTHS, 20;
- set @FINEDRESS_GP, 20000;
- set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
-
-
- if (@wg_state == 1) goto L_State_0_3;
- if (@wg_state == 2) goto L_State_1;
- if (@wg_state == 3) goto L_State_2;
- if (@wg_state == 4) goto L_State_4;
- if (@wg_state == 5) goto L_State_4_success;
- if (@wg_state == 6) goto L_State_6;
- if (@wg_state == 7) goto L_State_11;
- if (@wg_state == 8) goto L_State_12;
- if (@wg_state >= 9 && @wg_state < 11) goto L_State_13;
- if (@wg_state == 11) goto L_State_14;
- if (@wg_state == 12) goto L_State_14_AA;
- if (@wg_state == 13) goto L_State_15;
- if (@wg_state > 13 && @wg_state < 16) goto L_State_15_Repeat;
- if (@wg_state == 16) goto L_State_16;
- if (@wg_state > 16 && @wg_state < 20) goto L_State_16_Repeat;
- if (@wg_state == 20) goto L_State_17;
- if (@wg_state == 21) goto L_State_17_AskItems;
- if (@wg_state == 22) goto L_State_17_PBD;
- if (@wg_state >= 23) goto L_State_18;
-
- mes "\"This goes up, this goes left...\"";
- next;
- mes "\"Mmmm...?\"";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Oh, a customer! Let me introduce myself! My name is Agostine!";
- mes "Some people say that I am the best tailor in the world,";
- mes "but I think I am the best one in the universe!";
- mes "So, What can I do for you, my friend?\"";
- next;
- menu
- "I want something new for my wardrobe!", L_State_0_1,
- "Oh, nothing, thanks!", L_Close;
-
-// Quest #0 - Beginning - Needed: Iron Potion
-
-L_State_0_1:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Well.. you know... working so hard makes me so tired!";
- mes "Can you bring me something tasty to drink, my friend?\"";
- next;
- menu
- "Sure, what kind of drink you like?", L_State_0_2,
- "I'm not your waiter!", L_Close;
-
-L_State_0_2:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Here we do not have a bar. Let me taste different beverages.";
- mes "I want something new to drink.\"";
- next;
- menu
- "I'll bring you different drinks to try!", L_State_Accept,
- "Maybe a bar will open soon, wait for it.", L_Close;
-
-L_State_Accept:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Thanks so much.\"";
- set @wg_state, 1;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_0_3:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Well, what have you brought me?\"";
- next;
- menu
- "A Cactus Drink.", L_State_0_4,
- "A Cactus Potion.", L_State_0_5,
- "Some milk.", L_State_0_6,
- "A pint of beer.", L_State_0_7,
- "An Iron potion.", L_State_0_9,
- "A Concentration Potion.", L_State_0_8,
- "Nothing, at the moment.", L_Close;
-
-L_State_0_4:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, a Cactus Drink?\"";
- if (countitem("CactusDrink") < 1) goto L_State_neg;
- delitem "CactusDrink", 1;
- goto L_State_bad;
-
-L_State_0_5:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, a Cactus Potion?\"";
- if (countitem("CactusPotion") < 1) goto L_State_neg;
- delitem "CactusPotion", 1;
- goto L_State_bad;
-
-L_State_0_6:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, some milk for me?\"";
- if (countitem("Milk") < 1) goto L_State_neg;
- delitem "Milk", 1;
- goto L_State_bad;
-
-L_State_0_7:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, a beer?\"";
- if (countitem("Beer") < 1) goto L_State_neg;
- delitem "Beer", 1;
- goto L_State_bad;
-
-L_State_0_8:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, a Concentration Potion?\"";
- if (countitem("ConcentrationPotion") < 1) goto L_State_neg;
- delitem "ConcentrationPotion", 1;
- goto L_State_bad;
-
-L_State_0_9:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, an Iron Potion?\"";
- if (countitem("IronPotion") < 1) goto L_State_neg;
- delitem "IronPotion", 1;
- next;
- mes "Agostine looks pleased as he drinks the potion.";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Oh! This is damn good! I feel a new man, my friend!\"";
- next;
- set Zeny, Zeny + 500;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"This is a little reward for your help. Take 500 GP, my friend!\"";
- set @wg_state, 2;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_neg:
- next;
- mes "\"Seems that you lied. You don't have the drink you told me.\"";
- goto L_Close;
-
-L_State_bad:
- next;
- mes "\"Well, I don't like it so much. Bring me something else.\"";
- goto L_Close;
-
-// First Quest: edited version of Forest Bow Quest - Needed: about 30 White Furs and 15.000 GP
-
-L_State_1:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Mmmm... Let me see... This year light colours are fashionable!";
- mes "Would you like a pair of snow-white Winter Gloves?\"";
- next;
- menu
- "No, thanks. I love dark clothes...", L_Close,
- "You really can do this for me?", L_State_2;
-
-L_State_2:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Well, Winter Gloves are so fashionable for their lovable fur!";
- mes "Only the best furs can be used for these gloves!";
- mes "But, as you see, I am a tailor, not a hunter! So, why don't you bring me the best fluffy's fur you can find?\"";
- set @wg_state, 3;
- callfunc "setWGState";
- next;
- menu
- "You are crazy! I won't kill any animal for this!", L_Close,
- "Sure, I will be back soon!", L_State_3;
-
-L_State_3:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Remember, I want the best of fur!\"";
- set @wg_state, 4;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_4:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Oh, my friend! Have you brought me some good furs?\"";
- if (countitem("WhiteFur") < 1) goto L_Close;
- next;
- menu
- "Here, take a look!", L_State_4_try,
- "Yes, but I need it for something else.", L_Close;
-
-L_State_4_try:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Let me see, my friend! It needs to be perfect for my gloves!\"";
- mes "Agostine examines the patch of fur.";
- next;
- if (countitem("WhiteFur") < 1) goto L_No_Fur;
- delitem "WhiteFur", 1;
- set @Temp1,rand(30);
- if (@Temp1 == 0) goto L_State_4_success;
- mes "Agostine throws away the white fur.";
- getexp @CUTFUR_EXP, 0;
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"It was awfully cut! You should pay more attention when you kill fluffies!\"";
- if (countitem("WhiteFur") < 1) goto L_Close;
- next;
- menu
- "Here I have another one!", L_State_4_try,
- "Sorry, I will be careful...", L_Close;
-
-L_State_4_success:
- mes "Agostine breaks into a smile";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"It's perfect! Perfect! Good job, my friend! I will prepare your gloves right now!\"";
- next;
- set @wg_state, 5;
- callfunc "setWGState";
- goto L_State_5;
-
-L_State_5:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Ehm, my friend, my work is not free. I need 15,000 GP for the work.\"";
- next;
- menu
- "You are not a tailor, you are a thief!!", L_Close,
- "I think it's a reasonable price...", L_State_5_pay;
-
-L_State_5_pay:
- if (Zeny < 15000) goto L_State_5_nocash;
- getinventorylist;
- if (@inventorylist_count == 100) goto L_TooMany;
- set Zeny, Zeny - 15000;
- getitem "WinterGloves", 1;
- set @wg_state, 6;
- callfunc "setWGState";
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Here they are. You will have the most fashionable hands in the world!\"";
- goto L_Close;
-
-L_State_5_nocash:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Seems like you are out of cash. Come back when you have the money.\"";
- goto L_Close;
-
-L_State_6:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Oh, I remember you! Your gloves are sooo fashionable, my friend!";
- mes "Well, I have a good news for you. In this issue of 'TMW Fashion'";
- mes "I saw a pretty accessory, a pair of Furry Boots, my friend.";
- mes "I can make your own pair, if you want!\"";
- next;
- menu
- "It's a great idea!", L_State_10,
- "I'm glamourous enough, thanks", L_Close;
-
-// Start of Second Quest: Furry Boots - Needed: About 30 White Furs, 1 pair of Boots and 15.000 GP
-L_State_10:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Perfect! For satisfying your request I need another perfect White Fur";
- mes "and a pair of Boots, like those you can find in the mines.";
- mes "They will make you lovely, my friend!\"";
- set @wg_state, 7;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_11:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"So, my friend, have you brought me the right Fur?\"";
- if (countitem("WhiteFur") < 1) goto L_Close;
- next;
- menu
- "Sure, I'm a fluffy hunter!", L_State_11_try,
- "Not yet, sorry.", L_Close;
-
-L_State_11_try:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"I'd rather see the patch of fur, first.\"";
- next;
- mes "Agostine examines the patch of fur.";
- next;
- if (countitem("WhiteFur") < 1) goto L_No_Fur;
- delitem "WhiteFur", 1;
- set @Temp2,rand(30);
- if (@Temp2 == 0) goto L_State_11_success;
- mes "Agostine rips the white fur.";
- getexp @CUTFUR_EXP, 0;
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"That fur was terrible. I won't work with it!\"";
- if (countitem("WhiteFur") < 1) goto L_Close;
- next;
- menu
- "Well, maybe this is better!", L_State_11_try,
- "I will hunt other fluffies...", L_Close;
-
-L_State_11_success:
- mes "Agostine breaks into a smile";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"This one is good enough, my friend. Good job.\"";
- set @wg_state, 8;
- callfunc "setWGState";
- goto L_State_12;
-
-L_State_12:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"I need also a pair of Boots for the work.";
- mes "And my payment, obviously. 15,000 GP is right.\"";
- next;
- menu
- "Sure, here it all is.", L_State_12_pay,
- "I missed something, I will be back soon!", L_Close;
-
-L_State_12_pay:
- if (Zeny < 15000) goto L_State_12_missing;
- if (countitem("Boots") < 1) goto L_State_12_missing;
- // No inventory check needed, as boots are removed, opening a slot
- set Zeny, Zeny - 15000;
- delitem "Boots", 1;
- getitem "FurBoots", 1;
- set @wg_state, 9;
- callfunc "setWGState";
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Enjoy your new boots, my friend!\"";
- goto L_Close;
-
-L_State_12_missing:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Seems you have forgotten something. Check your inventory";
- mes "and your pockets!\"";
- goto L_Close;
-
-L_State_13:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"You are so glamourous, my dear friend!";
- mes "I have done a very good job on your clothes!\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"You don't have anywhere to put them. Come back when you do.\"";
- goto L_Close;
-
-L_No_Fur:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"You don't have any white fur! Stop talking nonsense.\"";
- goto L_Close;
-
-L_State_14:
- if (BaseLevel < 60)
- goto L_State_13;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"You are so glamourous, my dear friend!";
- mes "I have done a very good job on your clothes... But...\"";
- next;
-
- menu
- "But?", L_Next;
-
-L_Next:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"There is a new fashion I've been dying to try out!";
- mes "But I don't have all the knowledge in the world about seaming this wonderful fashion.\"";
- next;
-
- menu
- "Ah, that's too bad...", L_Close,
- "I know another tailor who might know!", L_Next1;
-
-L_Next1:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"What tailor may that be?";
- mes "I haven't been out of Nivalis for quite some time since I have been busy with clothes for the people of the town.";
- mes "If you can tell me the name of this great tailor, maybe we can work something out, like a collaboration!\"";
- next;
-
- menu
- "Well... There is a tailor in Dimond's Cove who makes pretty good clothing. Her name is Lora Tay.", L_Next2;
-
-L_Next2:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"I had almost forgotten about Lora Tay.";
- mes "She has tried to put me out of business a few times long ago.";
- mes "But I am willing to collaborate with her to make this fine fashion come alive.";
- mes "Will you go ask her if she is willing to help sew and seam this fashion I will create?\"";
-
- menu
- "Sure thing! Be back soon.", L_State_14_Accept,
- "It will never happen. I won't waste my time.", L_Close;
-
-L_State_14_Accept:
- set @wg_state, 12;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_14_AA:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Please my friend, go talk to Lora Tay about our possible collaboration!\"";
- goto L_Close;
-
-L_State_15:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Hi there fashionable friend, have you talked to Lora Tay about my request?\"";
- next;
- menu
- "Yes, but she would like to know more information about it and I'm kind of curious myself.", L_Next3,
- "I haven't yet, sorry.", L_Close;
-
-L_Next3:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Well I had a dream of a woman in a beautiful dress I would like to recreate from my dream...";
- mes "But the thing is I have never sewn a dress this fabulous in my life!";
- mes "This is why I wanted an experienced tailor to help me with it.\"";
- next;
-
- menu
- "You must be thinking of fashion a lot if it's in your dreams! I shall bring this information to Lora Tay.", L_Next4,
- "You're obsessed, I cant help you.", L_Close;
-
-L_Next4:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Please take these materials with you to show Lora Tay the kind of vision I have!";
- mes "These are the finest materials in my whole house and have been saving them for something special such as this.\"";
- next;
-
- message strcharinfo(0), "Agostine gives you bundles of luxurious cloth that you carefully put in your backpack.";
- mes "Agostine gives you bundles of luxurious cloth that you carefully put in your backpack.";
- next;
-
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Hurry back my friend!\"";
-
- set @wg_state, 14;
- callfunc "setWGState";
-
- goto L_Close;
-
-L_State_15_Repeat:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Please take these materials with you to show Lora Tay the kind of vision I have!";
- mes "Hurry back my friend!\"";
- goto L_Close;
-
-L_State_16:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Hello there! Did you tell Lora Tay about the type of fashion I was hoping to create?\"";
- next;
-
- menu
- "Yes, she is also working on threading to sew the materials together.", L_Next5,
- "Why would I do that for?", L_Close;
-
-L_Next5:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Wow she did not only accept but she is willing to sew these materials for me?";
- mes "This is amazing... I was quite worried I would ruin these fine cloths sewing them myself.\"";
- next;
-
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Is there anything I can do in the meanwhile?\"";
- next;
- menu
- "Actually she wanted the design drawings to know what it should look like.", L_Next6;
-
-L_Next6:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Of course! How could I forget, I drew the designs right after the dream I had.";
- mes "Please take these to Lora Tay and ask her to try and make it as close as she can.\"";
- next;
-
- menu
- "Sure thing be back soon!", L_Next7,
- "... I'll take a nap first.", L_Close;
-
-L_Next7:
- set @wg_state, 17;
- callfunc "setWGState";
-
- message strcharinfo(0), "Agostine gives you a folio containing his designs, that you put in a hidden compartment in your backpack.";
- mes "Agostine gives you a folio containing his designs, that you put in a hidden compartment in your backpack.";
-
- goto L_Close;
-
-L_State_16_Repeat:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Please my friend, bring my designs to Lora Tay.\"";
- goto L_Close;
-
-L_State_17:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Wow is that the dress?";
- mes "It looks fabulous...\"";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"But I do notice it is missing something from my design.\"";
- next;
-
- menu
- "Lora Tay mentioned the bottom has to be edged with cotton cloths but she cannot do the design you wanted.", L_Next8;
-
-L_Next8:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"That's fine. I will finish it with the cloth but it seems I don't have anymore around...\"";
- next;
-
- goto L_State_17_AskItems;
-
-L_State_17_AskItems:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"I will need about " + @FINEDRESS_COTTON_CLOTHS + " cotton cloths to finish this master piece. Do you think you can get some for me?\"";
- next;
-
- menu
- "Sure thing, I will go get them!", L_Next9,
- "Here you are!", L_State_17_GiveItems;
-
-L_Next9:
- set @wg_state, 21;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_17_NoItems:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"My friend, sorry to disappoint you, but you are lacking some cloth.";
- mes "I need exactly " + @FINEDRESS_COTTON_CLOTHS + " cotton cloths to finish this master piece.\"";
- goto L_Close;
-
-L_State_17_GiveItems:
- if (countitem ("CottonCloth") < @FINEDRESS_COTTON_CLOTHS)
- goto L_State_17_NoItems;
- delitem "CottonCloth", @FINEDRESS_COTTON_CLOTHS;
- set @wg_state, 22;
- callfunc "setWGState";
-
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Great now just a little cloth here........\"";
- next;
- mes "............................";
- next;
- mes "...................";
- next;
- mes "..............";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"It's finished!";
- mes "The finest dress in my design is finally finished!\"";
- next;
- mes "[Agostine, The Legendary Tailor]";
- mes "\"I don't know how I can repay you for all your hard work...\"";
- next;
-
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Hmmm I know something that will be good for you and for myself!\"";
- next;
-
- menu
- "What is it?", L_Next10;
-
-L_Next10:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"How about I let you buy the dress off me?";
- mes "This will allow you to have a fine dress and allow me to show the world what I'm capable of.";
- mes "I would charge " + @FINEDRESS_GP +" GP, which I think is a magnificent price for something this fine.\"";
- next;
-
- goto L_State_17_BuyDress;
-
-L_State_17_PBD:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Did you consider buying the dress off me?";
- mes "I would charge " + @FINEDRESS_GP +" GP, which I think is a magnificent price for something this fine.\"";
- next;
-
- goto L_State_17_BuyDress;
-
-L_State_17_BuyDress:
- menu
- "Wow that sounds great I'll take it!", L_Next11,
- "I'll think about it...", L_Close;
-
-L_Next11:
- if (Zeny < @FINEDRESS_GP)
- goto L_State_17_NoMoney;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_State_17_InvFull;
-
- set Zeny, Zeny - @FINEDRESS_GP;
- getitem "FineDress", 1;
- set @wg_state, 23;
- callfunc "setWGState";
- goto L_Close;
-
-L_State_17_NoMoney:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"Check your pockets my friend,";
- mes "and come back when you have the money.\"";
- goto L_Close;
-
-L_State_17_InvFull:
- mes "[Agostine, The Legendary Tailor]";
- mes "\"My friend, you don't have room to carry my master piece. Come back when you do.\"";
- goto L_Close;
-
-L_State_18:
- // Same dialog as on state 13, but we could add something about the dress
- mes "[Agostine, The Legendary Tailor]";
- mes "\"You are so glamourous, my dear friend!";
- mes "I have done a very good job on your clothes!\"";
- goto L_Close;
-
-L_Close:
- set @wg_state, 0;
- close;
-}
-function|script|setWGState
-{
- set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT));
- return;
-}
diff --git a/world/map/npc/020-2/mapflags.txt b/world/map/npc/020-2/mapflags.txt
deleted file mode 100644
index 3c7d918f..00000000
--- a/world/map/npc/020-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-020-2|mapflag|town
-020-2|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/020-2/shops.txt b/world/map/npc/020-2/shops.txt
deleted file mode 100644
index 847adac0..00000000
--- a/world/map/npc/020-2/shops.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-// Snow town shops
-
-// About the Area NPC
-020-2,75,28,0|script|Taylor|137
-{
- mes "[Taylor]";
- mes "\"While it can be dangerous up here in Kaizei, I take comfort that Nivalis is not surrounded by the Yeti like Thermin is. What a weird town.\"";
- next;
- mes "\"Around Christmas time, this place gets crazy, but most of the time Nivalis serves as a hub for adventurers and tourists that come to Kaizei.\"";
- next;
- mes "\"There caves around here can prove to be dangerous, be careful around here and bring friends if you should go into them..otherwise, it might spell your end.\"";
- next;
- mes "\"Well, pleasant journeys and I hope I haven't been too much of a bother. Good chatting with you.\"";
- close;
-}
-// Weapons shop
-020-2,25,65,0|shop|Bracco|135,IronArrow:*1,ShortBow:*4,Dagger:*1,LeatherShield:*1
-// Potions shop
-020-2,75,24,0|shop|Mede|103,CactusDrink:*1,CactusPotion:*1,IronPotion:*1,ConcentrationPotion:*1,SmallManaElixir:*6,MediumManaElixir:*6,LargeManaElixir:*6
-
-// INN
-020-2,111,23,0|script|Kane|120
-{
- set @npcname$, "Kane the Inn Keeper";
- set @cost, 100;
-
- mes "[" + @npcname$ + "]";
- mes "\"Welcome stranger!\"";
- mes "\"What? You've already seen an INN like mine?\"";
- mes "\"That's impossible!\"";
- next;
- callfunc "Inn";
- close;
-}
diff --git a/world/map/npc/020-3/_import.txt b/world/map/npc/020-3/_import.txt
deleted file mode 100644
index b1624874..00000000
--- a/world/map/npc/020-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 020-3: Ice cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 020-3
-npc: npc/020-3/_mobs.txt
-npc: npc/020-3/_nodes.txt
-npc: npc/020-3/_warps.txt
-npc: npc/020-3/mapflags.txt
diff --git a/world/map/npc/020-3/_mobs.txt b/world/map/npc/020-3/_mobs.txt
deleted file mode 100644
index 2e7ed4a0..00000000
--- a/world/map/npc/020-3/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Ice cave mobs
-
-020-3,40,36,29,4|monster|Bat|1017,1,100000ms,30000ms
-020-3,40,49,34,7|monster|Pinkie|1018,1,100000ms,30000ms
-020-3,0,0,0,0|monster|Bat|1017,20,0ms,0ms
-020-3,0,0,0,0|monster|Pinkie|1018,10,0ms,0ms
diff --git a/world/map/npc/020-3/_nodes.txt b/world/map/npc/020-3/_nodes.txt
deleted file mode 100644
index 361b2f86..00000000
--- a/world/map/npc/020-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Ice cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/020-3/_warps.txt b/world/map/npc/020-3/_warps.txt
deleted file mode 100644
index c4d75231..00000000
--- a/world/map/npc/020-3/_warps.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Ice cave warps
-
-020-3,31,25|warp|-1,-1,020-1,76,37
-020-3,25,22|warp|-1,-1,020-3,97,101
-020-3,97,99|warp|-1,-1,020-3,25,24
-020-3,28,57|warp|-1,-1,020-3,33,99
-020-3,49,33|warp|-1,-1,020-3,110,56
-020-3,33,98|warp|-1,-1,020-3,28,56
-020-3,110,57|warp|-1,-1,020-3,49,34
diff --git a/world/map/npc/020-3/mapflags.txt b/world/map/npc/020-3/mapflags.txt
deleted file mode 100644
index 0f84b04c..00000000
--- a/world/map/npc/020-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-020-3|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/021-3/_import.txt b/world/map/npc/021-3/_import.txt
deleted file mode 100644
index 33b9119e..00000000
--- a/world/map/npc/021-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 021-3: Central Tulimshar Sewers
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 021-3
-npc: npc/021-3/_mobs.txt
-npc: npc/021-3/_nodes.txt
-npc: npc/021-3/_warps.txt
-npc: npc/021-3/mapflags.txt
diff --git a/world/map/npc/021-3/_mobs.txt b/world/map/npc/021-3/_mobs.txt
deleted file mode 100644
index 75449889..00000000
--- a/world/map/npc/021-3/_mobs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Central Tulimshar Sewers mobs
-
-021-3,120,38,11,8|monster|CaveMaggot|1056,5,100000ms,30000ms
-021-3,103,58,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms
-021-3,80,98,34,31|monster|CaveMaggot|1056,5,100000ms,30000ms
-021-3,129,82,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms
-021-3,140,38,16,8|monster|AngryFireGoblin|1108,3,100000ms,30000ms
-021-3,79,98,33,31|monster|BlackScorpion|1009,4,100000ms,1800000ms
-021-3,52,53,2,17|monster|GreenSlime|1005,4,40000ms,50000ms
-021-3,93,31,28,22|monster|SeaSlime|1033,6,100000ms,30000ms
-021-3,121,128,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms
-021-3,47,139,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms
diff --git a/world/map/npc/021-3/_nodes.txt b/world/map/npc/021-3/_nodes.txt
deleted file mode 100644
index f55e37ec..00000000
--- a/world/map/npc/021-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Central Tulimshar Sewers nodes
-
-// (no nodes)
diff --git a/world/map/npc/021-3/_warps.txt b/world/map/npc/021-3/_warps.txt
deleted file mode 100644
index 77bcaa3d..00000000
--- a/world/map/npc/021-3/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Central Tulimshar Sewers warps
-
-021-3,143,127|warp|-1,-1,001-1,117,109
-021-3,57,99|warp|-1,-1,001-1,60,84
-021-3,29,62|warp|-1,-1,001-1,28,45
-021-3,44,143|warp|-1,-1,004-3,80,23
diff --git a/world/map/npc/021-3/mapflags.txt b/world/map/npc/021-3/mapflags.txt
deleted file mode 100644
index d7155503..00000000
--- a/world/map/npc/021-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-021-3|mapflag|resave|001-1,60,105
diff --git a/world/map/npc/023-1/_import.txt b/world/map/npc/023-1/_import.txt
deleted file mode 100644
index 68a75aa5..00000000
--- a/world/map/npc/023-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 023-1: Tulimshar Lighthouse Beach
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 023-1
-npc: npc/023-1/_mobs.txt
-npc: npc/023-1/_nodes.txt
-npc: npc/023-1/_warps.txt
-npc: npc/023-1/mapflags.txt
diff --git a/world/map/npc/023-1/_mobs.txt b/world/map/npc/023-1/_mobs.txt
deleted file mode 100644
index 61f7a828..00000000
--- a/world/map/npc/023-1/_mobs.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Lighthouse Beach mobs
-
-023-1,70,41,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-1,84,33,11,7|monster|Swashbuckler|1120,1,100000ms,30000ms
-023-1,58,28,6,6|monster|Grenadier|1121,1,100000ms,30000ms
-023-1,80,99,11,7|monster|Swashbuckler|1120,1,100000ms,30000ms
-023-1,86,117,19,2|monster|Grenadier|1121,1,100000ms,30000ms
-023-1,55,126,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-1,47,86,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-1,102,67,11,7|monster|Swashbuckler|1120,1,100000ms,30000ms
-023-1,105,90,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-1,62,60,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-1,93,49,13,11|monster|Grenadier|1121,1,100000ms,30000ms
-023-1,64,95,1,46|monster|AngrySeaSlime|1109,3,150000ms,100000ms
-023-1,45,54,5,38|monster|AngrySeaSlime|1109,3,150000ms,100000ms
diff --git a/world/map/npc/023-1/_nodes.txt b/world/map/npc/023-1/_nodes.txt
deleted file mode 100644
index d629af24..00000000
--- a/world/map/npc/023-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Lighthouse Beach nodes
-
-// (no nodes)
diff --git a/world/map/npc/023-1/_warps.txt b/world/map/npc/023-1/_warps.txt
deleted file mode 100644
index b9ede113..00000000
--- a/world/map/npc/023-1/_warps.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Lighthouse Beach warps
-
-023-1,65,146|warp|0,-1,042-1,65,24
-023-1,75,134|warp|-1,-1,023-3,75,132
-023-1,71,117|warp|-1,-1,023-3,71,114
-023-1,83,114|warp|-1,-1,023-3,83,112
-023-1,107,120|warp|-1,-1,023-3,106,118
-023-1,105,114|warp|-1,-1,023-3,106,115
-023-1,70,95|warp|-1,-1,023-3,70,93
-023-1,48,80|warp|-1,-1,023-3,48,78
-023-1,61,36|warp|-1,-1,023-3,61,39
-023-1,36,34|warp|-1,-1,023-2,31,38
-023-1,37,23|warp|-1,-1,023-2,31,33
-023-1,66,101|warp|-1,2,023-1,61,100
-023-1,62,101|warp|-1,2,023-1,67,100
diff --git a/world/map/npc/023-1/mapflags.txt b/world/map/npc/023-1/mapflags.txt
deleted file mode 100644
index 9bf0492b..00000000
--- a/world/map/npc/023-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-023-1|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/023-2/_import.txt b/world/map/npc/023-2/_import.txt
deleted file mode 100644
index 1979df0b..00000000
--- a/world/map/npc/023-2/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 023-2: Lighthouse
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 023-2
-npc: npc/023-2/_mobs.txt
-npc: npc/023-2/_nodes.txt
-npc: npc/023-2/_warps.txt
-npc: npc/023-2/mapflags.txt
diff --git a/world/map/npc/023-2/_mobs.txt b/world/map/npc/023-2/_mobs.txt
deleted file mode 100644
index 438ad3e2..00000000
--- a/world/map/npc/023-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Lighthouse mobs
-
diff --git a/world/map/npc/023-2/_nodes.txt b/world/map/npc/023-2/_nodes.txt
deleted file mode 100644
index fd72112d..00000000
--- a/world/map/npc/023-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Lighthouse nodes
-
-// (no nodes)
diff --git a/world/map/npc/023-2/_warps.txt b/world/map/npc/023-2/_warps.txt
deleted file mode 100644
index f61b4052..00000000
--- a/world/map/npc/023-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Lighthouse warps
-
-023-2,31,40|warp|-1,-1,023-1,36,35
-023-2,31,31|warp|-1,-1,023-1,36,23
diff --git a/world/map/npc/023-2/mapflags.txt b/world/map/npc/023-2/mapflags.txt
deleted file mode 100644
index f8c85041..00000000
--- a/world/map/npc/023-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-023-2|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/023-3/_import.txt b/world/map/npc/023-3/_import.txt
deleted file mode 100644
index 4fad90ae..00000000
--- a/world/map/npc/023-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 023-3: Tulimshar Beach Caves
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 023-3
-npc: npc/023-3/_mobs.txt
-npc: npc/023-3/_nodes.txt
-npc: npc/023-3/_warps.txt
-npc: npc/023-3/mapflags.txt
diff --git a/world/map/npc/023-3/_mobs.txt b/world/map/npc/023-3/_mobs.txt
deleted file mode 100644
index 406ae2ba..00000000
--- a/world/map/npc/023-3/_mobs.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Beach Caves mobs
-
-023-3,91,77,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-3,127,85,7,7|monster|Swashbuckler|1120,1,100000ms,30000ms
-023-3,98,28,7,7|monster|Swashbuckler|1120,1,100000ms,30000ms
-023-3,120,45,7,7|monster|Thug|1119,1,100000ms,30000ms
-023-3,51,107,12,5|monster|Swashbuckler|1120,1,100000ms,30000ms
-023-3,69,52,66,8|monster|Thug|1119,1,100000ms,30000ms
diff --git a/world/map/npc/023-3/_nodes.txt b/world/map/npc/023-3/_nodes.txt
deleted file mode 100644
index 2481bf66..00000000
--- a/world/map/npc/023-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Beach Caves nodes
-
-// (no nodes)
diff --git a/world/map/npc/023-3/_warps.txt b/world/map/npc/023-3/_warps.txt
deleted file mode 100644
index bb7af5ad..00000000
--- a/world/map/npc/023-3/_warps.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Beach Caves warps
-
-023-3,75,134|warp|-1,-1,023-1,75,136
-023-3,71,117|warp|-1,-1,023-1,71,119
-023-3,83,114|warp|-1,-1,023-1,83,116
-023-3,106,120|warp|-1,-1,023-1,107,122
-023-3,106,112|warp|-1,-1,023-1,105,112
-023-3,70,95|warp|-1,-1,023-1,70,97
-023-3,48,80|warp|-1,-1,023-1,48,82
-023-3,61,36|warp|-1,-1,023-1,61,34
diff --git a/world/map/npc/023-3/mapflags.txt b/world/map/npc/023-3/mapflags.txt
deleted file mode 100644
index 596d0788..00000000
--- a/world/map/npc/023-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-023-3|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/025-1/_import.txt b/world/map/npc/025-1/_import.txt
deleted file mode 100644
index d5e71948..00000000
--- a/world/map/npc/025-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 025-1: Woodland Swamp
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 025-1
-npc: npc/025-1/_mobs.txt
-npc: npc/025-1/_nodes.txt
-npc: npc/025-1/_warps.txt
-npc: npc/025-1/barrier.txt
-npc: npc/025-1/mapflags.txt
-npc: npc/025-1/reset.txt
diff --git a/world/map/npc/025-1/_mobs.txt b/world/map/npc/025-1/_mobs.txt
deleted file mode 100644
index 64c4e62a..00000000
--- a/world/map/npc/025-1/_mobs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Swamp mobs
-
-025-1,100,60,56,79|monster|CloverPatch|1037,3,30000ms,10000ms
-025-1,56,96,13,5|monster|CloverPatch|1037,1,1200000ms,10000ms
-025-1,56,35,77,33|monster|AlizarinPlant|1032,2,240000ms,12000ms
-025-1,38,84,37,31|monster|Silkworm|1035,18,40000ms,300ms
-025-1,96,47,63,55|monster|LogHead|1025,14,18000ms,3000ms
-025-1,0,0,0,0|monster|PinkFlower|1014,34,20000ms,5000ms
-025-1,41,86,35,26|monster|GrassSnake|1034,3,100000ms,50000ms
-025-1,78,46,23,28|monster|GrassSnake|1034,3,100000ms,50000ms
-025-1,73,84,38,16|monster|GrassSnake|1034,3,100000ms,50000ms
-025-1,53,33,59,17|monster|GrassSnake|1034,4,100000ms,50000ms
diff --git a/world/map/npc/025-1/_nodes.txt b/world/map/npc/025-1/_nodes.txt
deleted file mode 100644
index 805bf118..00000000
--- a/world/map/npc/025-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Swamp nodes
-
-// (no nodes)
diff --git a/world/map/npc/025-1/_warps.txt b/world/map/npc/025-1/_warps.txt
deleted file mode 100644
index dbbb3bdc..00000000
--- a/world/map/npc/025-1/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Swamp warps
-
-025-1,19,66|warp|-1,-1,026-1,128,66
-025-1,90,19|warp|2,-1,015-1,59,100
-025-1,130,58|warp|-1,1,016-1,21,53
diff --git a/world/map/npc/025-1/barrier.txt b/world/map/npc/025-1/barrier.txt
deleted file mode 100644
index 0b434ee4..00000000
--- a/world/map/npc/025-1/barrier.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-025-1,42,79,0|script|#JuliaBarrier|45,1,1
-{
- if (Rossy_Quest > 14 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_Warp;
- if (Rossy_Quest <= 13) goto L_Block;
- if (Rossy_Quest == 14) message strcharinfo(0), "You hear distant screams of fear.";
- goto L_Warp;
-
-L_Warp:
- warp "025-3", 112, 97;
- end;
-
-L_Block:
- message strcharinfo(0), "You are too frightened by what you can hear coming out of the cave that you can't enter.";
- end;
-}
diff --git a/world/map/npc/025-1/mapflags.txt b/world/map/npc/025-1/mapflags.txt
deleted file mode 100644
index 8e3a046f..00000000
--- a/world/map/npc/025-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-025-1|mapflag|resave|016-1,94,30
-025-1|mapflag|outside
diff --git a/world/map/npc/025-1/reset.txt b/world/map/npc/025-1/reset.txt
deleted file mode 100644
index 36e422b6..00000000
--- a/world/map/npc/025-1/reset.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-//To enable: sed 's_^// __' -i npc/025-1/reset.txt
-
-// 025-1,47,84,0|script|reset|145
-// {
-// mes "Do you want to reset Rossy Quest?";
-// menu
-// "Reset every variable of the quest.", -,
-// "Set Rossy_Quest.", L_Set,
-// "Pass cave quest.", L_Pass2
-// "Pass all caves except boss cave.", L_Pass,
-// "Do not reset.", L_No;
-// set Rossy_Quest, 0;
-// set cavefights, 0;
-// set FLAGS, FLAGS & ~FLAG_ROSSI_COMPLETED;
-
-// L_No:
-// close;
-
-// L_Set:
-// mes "value";
-// input @name$;
-// set Rossy_Quest, @name$;
-// close;
-
-// L_Pass:
-// set Rossy_Quest, 15;
-// set cavefights, (cavefights | BATTLE_CAVE1);
-// set cavefights, (cavefights | BATTLE_CAVE2);
-// set cavefights, (cavefights | BATTLE_CAVE3);
-// set cavefights, (cavefights | BATTLE_CAVE4);
-// set cavefights, (cavefights | BATTLE_CAVE5);
-// set cavefights, (cavefights | BATTLE_CAVE6);
-// set cavefights, (cavefights | BATTLE_CAVE7);
-// set cavefights, (cavefights | BATTLE_CAVE8);
-// set cavefights, (cavefights | BATTLE_CAVE9);
-// close;
-
-// L_Pass2:
-// set Rossy_Quest, 16;
-// set cavefights, (cavefights | BATTLE_CAVE1);
-// set cavefights, (cavefights | BATTLE_CAVE2);
-// set cavefights, (cavefights | BATTLE_CAVE3);
-// set cavefights, (cavefights | BATTLE_CAVE4);
-// set cavefights, (cavefights | BATTLE_CAVE5);
-// set cavefights, (cavefights | BATTLE_CAVE6);
-// set cavefights, (cavefights | BATTLE_CAVE7);
-// set cavefights, (cavefights | BATTLE_CAVE8);
-// set cavefights, (cavefights | BATTLE_CAVE9);
-// close;
-// }
diff --git a/world/map/npc/025-3/_import.txt b/world/map/npc/025-3/_import.txt
deleted file mode 100644
index 83e14f2c..00000000
--- a/world/map/npc/025-3/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 025-3: Rossy Main Hall
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 025-3
-npc: npc/025-3/_mobs.txt
-npc: npc/025-3/_nodes.txt
-npc: npc/025-3/_warps.txt
-npc: npc/025-3/barriers.txt
-npc: npc/025-3/mapflags.txt
diff --git a/world/map/npc/025-3/_mobs.txt b/world/map/npc/025-3/_mobs.txt
deleted file mode 100644
index 70e432d9..00000000
--- a/world/map/npc/025-3/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rossy Main Hall mobs
-
-025-3,0,0,0,0|monster|CaveMaggot|1056,100,0ms,100ms
-025-3,0,0,0,0|monster|Archant|1060,20,0ms,100ms
-025-3,0,0,0,0|monster|AngryScorpion|1057,25,0ms,100ms
-025-3,69,153,13,1|monster|Skeleton|1043,1,0ms,30000ms
diff --git a/world/map/npc/025-3/_nodes.txt b/world/map/npc/025-3/_nodes.txt
deleted file mode 100644
index 28957b28..00000000
--- a/world/map/npc/025-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rossy Main Hall nodes
-
-// (no nodes)
diff --git a/world/map/npc/025-3/_warps.txt b/world/map/npc/025-3/_warps.txt
deleted file mode 100644
index 1d7970f7..00000000
--- a/world/map/npc/025-3/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rossy Main Hall warps
-
-025-3,112,98|warp|1,-1,025-1,42,81
-025-3,105,86|warp|-1,-1,025-4,28,36
diff --git a/world/map/npc/025-3/barriers.txt b/world/map/npc/025-3/barriers.txt
deleted file mode 100644
index e4a794f7..00000000
--- a/world/map/npc/025-3/barriers.txt
+++ /dev/null
@@ -1,1295 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-// -----------------------------------Warp to Cave 1 ---------------------------------------
-
-025-3,78,127,0|script|#WarpBattleCave1|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 26, 63, 60, 97) >= 1 || $@battlecave1 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE1)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave1, 1;
- warp "025-4", 41, 95;
- set $@cave1fighter$, strcharinfo(0);
- set $@cave1fighterdeaths, PC_DIE_COUNTER;
- set $@cave1start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 1 Configuration.
- setarray $@cave1_monsters_IDS[1], 1087, 1084;
- setarray $@cave1_monsters_QTY[1], 3, 3;
- set $@cave1_waves, 1;
- set $@cave1_time, 180;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave1fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave1 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave1fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 26, 63, 60, 97) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave1fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE1)
- goto L_Win;
- if (gettimetick(2) - $@cave1start >= $@cave1_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave1start) < 60)
- set $@cave1start, $@cave1start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave1_timer, $@cave1_timer + 5;
- if ($@cave1_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave1, 0;
- set $@cave1_kills, 0;
- set $@cave1start, 0;
- set $@cave1_timer, 0;
- set $@cave1fighter$, "";
- set $@cave1fighterdeaths$, 0;
- set $@battlecave1, 0;
- cleararray $@cave1_monsters_IDS[0], 0, 2;
- cleararray $@cave1_monsters_QTY[0], 0, 2;
- set $@cave1_waves, 0;
- set $@cave1_time, 0;
- killmonster "025-4", "#StartCaveFight1::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 78, 129;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 78, 129;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 78, 129;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave1fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 78, 129;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-
-}
-
-// ---------------------------- Warp to Cave 2 ----------------------------
-
-025-3,53,107,0|script|#WarpBattleCave2|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 97, 62, 126, 96) >= 1 || $@battlecave2 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE2)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave2, 1;
- warp "025-4", 110, 94;
- set $@cave2fighter$, strcharinfo(0);
- set $@cave2fighterdeaths, PC_DIE_COUNTER;
- set $@cave2start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 2 Configuration.
- setarray $@cave2_monsters_IDS[1], 1083, 1084;
- setarray $@cave2_monsters_QTY[1], 3, 4;
- set $@cave2_waves, 1;
- set $@cave2_time, 210;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave2fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave2 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave2fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 97, 62, 126, 96) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave2fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE2)
- goto L_Win;
- if (gettimetick(2) - $@cave2start >= $@cave2_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave2start) < 60)
- set $@cave2start, $@cave2start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave2_timer, $@cave2_timer + 5;
- if ($@cave2_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave2, 0;
- set $@cave2_kills, 0;
- set $@cave2start, 0;
- set $@cave2_timer, 0;
- set $@cave2fighter$, "";
- set $@cave2fighterdeaths$, 0;
- set $@battlecave2, 0;
- cleararray $@cave2_monsters_IDS[0], 0, 2;
- cleararray $@cave2_monsters_QTY[0], 0, 2;
- set $@cave2_waves, 0;
- set $@cave2_time, 0;
- killmonster "025-4", "#StartCaveFight2::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 53, 109;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 53, 109;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 53, 109;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave2fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 53, 109;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// --------------------------------- Warp to Cave 3 ----------------------------------------
-
-025-3,71,83,0|script|#WarpBattleCave3|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 150, 84, 177, 117) >= 1 || $@battlecave3 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE3)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave3, 1;
- warp "025-4", 168, 115;
- set $@cave3fighter$, strcharinfo(0);
- set $@cave3fighterdeaths, PC_DIE_COUNTER;
- set $@cave3start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 3 Configuration.
- setarray $@cave3_monsters_IDS[1], 1088, 1083;
- setarray $@cave3_monsters_QTY[1], 4, 4;
- set $@cave3_waves, 1;
- set $@cave3_time, 240;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave3fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave3 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave3fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 150, 84, 177, 117) < 1)
- goto OnNoRid;
- if (cavefights & BATTLE_CAVE3)
- goto L_Win;
- if (PC_DIE_COUNTER > $@cave3fighterdeaths)
- goto L_CleaningDead;
- if (gettimetick(2) - $@cave3start >= $@cave3_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave3start) < 60)
- set $@cave3start, $@cave3start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave3_timer, $@cave3_timer + 5;
- if ($@cave3_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave3, 0;
- set $@cave3_kills, 0;
- set $@cave3start, 0;
- set $@cave3_timer, 0;
- set $@cave3fighter$, "";
- set $@cave3fighterdeaths$, 0;
- set $@battlecave3, 0;
- cleararray $@cave3_monsters_IDS[0], 0, 2;
- cleararray $@cave3_monsters_QTY[0], 0, 2;
- set $@cave3_waves, 0;
- set $@cave3_time, 0;
- killmonster "025-4", "#StartCaveFight3::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 71, 85;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 71, 85;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 71, 85;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave3fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 71, 85;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// --------------------------- Warp to Cave 4 --------------------------------------
-
-025-3,80,83,0|script|#WarpBattleCave4|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 28, 124, 57, 156) >= 1 || $@battlecave4 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE4)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave4, 1;
- warp "025-4", 32, 154;
- set $@cave4fighter$, strcharinfo(0);
- set $@cave4fighterdeaths, PC_DIE_COUNTER;
- set $@cave4start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 4 Configuration.
- setarray $@cave4_monsters_IDS[1], 1087, 1083, 1084;
- setarray $@cave4_monsters_QTY[1], 2, 2, 4;
- set $@cave4_waves, 2;
- set $@cave4_time, 360;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave4fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave4 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave4fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 28, 124, 57, 156) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave4fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE4)
- goto L_Win;
- if (gettimetick(2) - $@cave4start >= $@cave4_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave4start) < 60)
- set $@cave4start, $@cave4start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave4_timer, $@cave4_timer + 5;
- if ($@cave4_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave4, 0;
- set $@cave4_kills, 0;
- set $@cave4start, 0;
- set $@cave4_timer, 0;
- set $@cave4fighter$, "";
- set $@cave4fighterdeaths$, 0;
- set $@battlecave4, 0;
- cleararray $@cave4_monsters_IDS[0], 0, 3;
- cleararray $@cave4_monsters_QTY[0], 0, 3;
- set $@cave4_waves, 0;
- set $@cave4_time, 0;
- killmonster "025-4", "#StartCaveFight4::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 80, 85;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 80, 85;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 80, 85;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave4fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 80, 85;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// --------------------------- Warp to Cave 5 ----------------------------------------
-
-025-3,71,30,0|script|#WarpBattleCave5|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 91, 131, 124, 160) >= 1 || $@battlecave5 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE5)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave5, 1;
- warp "025-4", 100, 158;
- set $@cave5fighter$, strcharinfo(0);
- set $@cave5fighterdeaths, PC_DIE_COUNTER;
- set $@cave5start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 5 Configuration.
- setarray $@cave5_monsters_IDS[1], 1088, 1083, 1084;
- setarray $@cave5_monsters_QTY[1], 3, 3, 3;
- set $@cave5_waves, 2;
- set $@cave5_time, 390;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave5fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave5 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave5fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 91, 131, 124, 160) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave5fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE5)
- goto L_Win;
- if (gettimetick(2) - $@cave5start >= $@cave5_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave5start) < 60)
- set $@cave5start, $@cave5start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave5_timer, $@cave5_timer + 5;
- if ($@cave5_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave5, 0;
- set $@cave5_kills, 0;
- set $@cave5start, 0;
- set $@cave5_timer, 0;
- set $@cave5fighter$, "";
- set $@cave5fighterdeaths$, 0;
- set $@battlecave5, 0;
- cleararray $@cave5_monsters_IDS[0], 0, 3;
- cleararray $@cave5_monsters_QTY[0], 0, 3;
- set $@cave5_waves, 0;
- set $@cave5_time, 0;
- killmonster "025-4", "#StartCaveFight5::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 71, 32;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 71, 32;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 71, 32;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave5fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 71, 32;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// -------------------------------- Warp to Cave 6 -----------------------------------------
-
-025-3,128,35,0|script|#WarpBattleCave6|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 153, 143, 178, 174) >= 1 || $@battlecave6 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE6)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave6, 1;
- warp "025-4", 159, 172;
- set $@cave6fighter$, strcharinfo(0);
- set $@cave6fighterdeaths, PC_DIE_COUNTER;
- set $@cave6start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 6 Configuration.
- setarray $@cave6_monsters_IDS[1], 1087, 1088, 1083;
- setarray $@cave6_monsters_QTY[1], 3, 4, 4;
- set $@cave6_waves, 2;
- set $@cave6_time, 450;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave6fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave6 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave6fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 153, 143, 178, 174) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave6fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE6)
- goto L_Win;
- if (gettimetick(2) - $@cave6start >= $@cave6_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave6start) < 60)
- set $@cave6start, $@cave6start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave6_timer, $@cave6_timer + 5;
- if ($@cave6_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave6, 0;
- set $@cave6_kills, 0;
- set $@cave6start, 0;
- set $@cave6_timer, 0;
- set $@cave6fighter$, "";
- set $@cave6fighterdeaths$, 0;
- set $@battlecave6, 0;
- cleararray $@cave6_monsters_IDS[0], 0, 3;
- cleararray $@cave6_monsters_QTY[0], 0, 3;
- set $@cave6_waves, 0;
- set $@cave6_time, 0;
- killmonster "025-4", "#StartCaveFight6::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 128, 37;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 128, 37;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 128, 37;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave6fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 128, 37;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// ---------------------------- Warp to Cave 7 ------------------------------------------
-
-025-3,70,57,0|script|#WarpBattleCave7|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 27, 185, 61, 219) >= 1 || $@battlecave7 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE7)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave7, 1;
- warp "025-4", 42, 217;
- set $@cave7fighter$, strcharinfo(0);
- set $@cave7fighterdeaths, PC_DIE_COUNTER;
- set $@cave7start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 7 Configuration.
- setarray $@cave7_monsters_IDS[1], 1087, 1088, 1083, 1084;
- setarray $@cave7_monsters_QTY[1], 2, 2, 2, 2;
- set $@cave7_waves, 3;
- set $@cave7_time, 540;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave7fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave7 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave7fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 27, 185, 61, 219) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave7fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE7)
- goto L_Win;
- if (gettimetick(2) - $@cave7start >= $@cave7_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave7start) < 60)
- set $@cave7start, $@cave7start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave7_timer, $@cave7_timer + 5;
- if ($@cave7_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave7, 0;
- set $@cave7_kills, 0;
- set $@cave7start, 0;
- set $@cave7_timer, 0;
- set $@cave7fighter$, "";
- set $@cave7fighterdeaths$, 0;
- set $@battlecave7, 0;
- cleararray $@cave7_monsters_IDS[0], 0, 4;
- cleararray $@cave7_monsters_QTY[0], 0, 4;
- set $@cave7_waves, 0;
- set $@cave7_time, 0;
- killmonster "025-4", "#StartCaveFight7::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 70, 59;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 70, 59;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 70, 59;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave7fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 70, 59;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// -----------------------------------------------Warp to Cave 8-------------------------------------------------------------
-
-025-3,138,92,0|script|#WarpBattleCave8|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 90, 193, 119, 216) >= 1 || $@battlecave8 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE8)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave8, 1;
- warp "025-4", 105, 214;
- set $@cave8fighter$, strcharinfo(0);
- set $@cave8fighterdeaths, PC_DIE_COUNTER;
- set $@cave8start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 8 Configuration.
- setarray $@cave8_monsters_IDS[1], 1087, 1088, 1083, 1084;
- setarray $@cave8_monsters_QTY[1], 2, 2, 3, 3;
- set $@cave8_waves, 3;
- set $@cave8_time, 570;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave8fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave8 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave8fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 90, 193, 119, 216) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave8fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE8)
- goto L_Win;
- if (gettimetick(2) - $@cave8start >= $@cave8_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave8start) < 60)
- set $@cave8start, $@cave8start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave8_timer, $@cave8_timer + 5;
- if ($@cave8_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave8, 0;
- set $@cave8_kills, 0;
- set $@cave8start, 0;
- set $@cave8_timer, 0;
- set $@cave8fighter$, "";
- set $@cave8fighterdeaths$, 0;
- set $@battlecave8, 0;
- cleararray $@cave8_monsters_IDS[0], 0, 4;
- cleararray $@cave8_monsters_QTY[0], 0, 4;
- set $@cave8_waves, 0;
- set $@cave8_time, 0;
- killmonster "025-4", "#StartCaveFight8::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 138, 94;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 138, 94;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 138, 94;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave8fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 138, 94;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// ------------------------------ Warp to Cave 9 ----------------------------------------
-
-025-3,138,160,0|script|#WarpBattleCave9|45,1,1
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- goto L_AlreadyHelped;
- if (getareausers("025-4", 144, 192, 173, 226) >= 1 || $@battlecave9 > 0)
- goto L_SomeoneInside;
- if (cavefights & BATTLE_CAVE9)
- goto L_AlreadyDone;
- if (Rossy_Quest < 15)
- goto L_Block;
- goto L_StartFight;
-
-L_StartFight:
- set $@battlecave9, 1;
- warp "025-4", 157, 222;
- set $@cave9fighter$, strcharinfo(0);
- set $@cave9fighterdeaths, PC_DIE_COUNTER;
- set $@cave9start, gettimetick(2);
- message strcharinfo(0), "As you enter, you feel an evil force filling up the cave.";
- // Cave 9 Configuration.
- setarray $@cave9_monsters_IDS[1], 1087, 1088, 1083, 1084;
- setarray $@cave9_monsters_QTY[1], 3, 3, 3, 3;
- set $@cave9_waves, 3;
- set $@cave9_time, 630;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave9fighter$ + " is already inside. The cave seems to be blocked.";
- end;
-
-L_AlreadyDone:
- message strcharinfo(0), "I already eliminated this source of energy.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than dead monster corpses in this cave.";
- end;
-
-L_Block:
- message strcharinfo(0), "Maybe I should learn a bit more about this place before I go inside.";
- end;
-
-OnTimer5000:
- if ($@battlecave9 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave9fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 144, 192, 173, 226) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave9fighterdeaths)
- goto L_CleaningDead;
- if (cavefights & BATTLE_CAVE9)
- goto L_Win;
- if (gettimetick(2) - $@cave9start >= $@cave9_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave9start) < 60)
- set $@cave9start, $@cave9start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave9_timer, $@cave9_timer + 5;
- if ($@cave9_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave9, 0;
- set $@cave9_kills, 0;
- set $@cave9start, 0;
- set $@cave9_timer, 0;
- set $@cave9fighter$, "";
- set $@cave9fighterdeaths$, 0;
- set $@battlecave9, 0;
- cleararray $@cave9_monsters_IDS[0], 0, 4;
- cleararray $@cave9_monsters_QTY[0], 0, 4;
- set $@cave9_waves, 0;
- set $@cave9_time, 0;
- killmonster "025-4", "#StartCaveFight9::OnMonsterDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-3", 138, 158;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run away!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 138, 158;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 138, 158;
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave9fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 138, 158;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
-
-// ----------------------------- Warp to Boss Cave -------------------------------
-
-025-3,77,170,0|script|#WarpBossCave|45,1,1
-{
- if (Rossy_Quest > 16 || FLAGS & FLAG_ROSSI_COMPLETED)
- end;
- if (Rossy_Quest == 16)
- goto L_AlreadyHelped;
- set @barrier_force, -9;
- if (cavefights & BATTLE_CAVE1)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE2)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE3)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE4)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE5)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE6)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE7)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE8)
- set @barrier_force, @barrier_force + 1;
- if (cavefights & BATTLE_CAVE9)
- set @barrier_force, @barrier_force + 1;
- if (@barrier_force != 0)
- goto L_Hurt;
- if (getareausers("025-4", 142, 24, 172, 48) >= 1 || $@battlecave10 > 0)
- goto L_SomeoneInside;
- if (@barrier_force == 0)
- goto L_StartFight;
- end;
-
-L_Hurt:
- message strcharinfo(0), "As you try to enter, you bump into a magic barrier. Its force pushes you back, hurting you badly.";
- heal (MaxHp * (@barrier_force / 10)), 0;
- warp "025-3", 77, 164;
- end;
-
-L_StartFight:
- message strcharinfo(0), "You go through the magic barrier without problems... you can hear screams that seem to be very close.";
- set $@battlecave10, 1;
- warp "025-4", 157, 44;
- set $@cave10fighter$, strcharinfo(0);
- set $@cave10fighterdeaths, PC_DIE_COUNTER;
- set $@cave10start, gettimetick(2);
- // Cave 10 Configuration.
- setarray $@cave10_monsters_IDS[1], 1087, 1088, 1083, 1084;
- setarray $@cave10_monsters_QTY[1], 3, 3, 3, 3;
- set $@cave10_boss_ID, 1086;
- set $@cave10_waves, 4;
- set $@cave10_time, 1080;
- startnpctimer;
- end;
-
-L_SomeoneInside:
- message strcharinfo(0), $@cave10fighter$ + " is already inside.";
- end;
-
-L_AlreadyHelped:
- message strcharinfo(0), "There is nothing more than corpses in this cave. You close your eyes and go straight to the place where Julia is hidden.";
- warp "025-4", 93, 33;
- end;
-
-OnTimer5000:
- if ($@battlecave10 == 0)
- goto L_AlreadyClean;
- if (attachrid(getcharid(3,$@cave10fighter$))==0)
- goto OnNoRid;
- if (getareausers("025-4", 142, 24, 172, 48) < 1)
- goto OnNoRid;
- if (PC_DIE_COUNTER > $@cave10fighterdeaths)
- goto L_CleaningDead;
- if (Rossy_Quest == 16)
- goto L_Win;
- if (gettimetick(2) - $@cave10start >= $@cave10_time)
- goto L_Cleaning;
- setnpctimer 0;
- end;
-
-L_Win:
- message strcharinfo(0), "It is getting harder to breathe inside this cave... You feel like you are almost passing out.";
- if ((gettimetick(2) - $@cave10start) < 60)
- set $@cave10start, $@cave10start + 60;
- if (Hp - (MaxHp*5)/100 <= 0)
- goto L_BadAir;
- heal ((MaxHp/100) * -5), 0;
- set $@cave10_timer, $@cave10_timer + 5;
- if ($@cave10_timer >= 60)
- goto L_BadAir;
- setnpctimer 0;
- end;
-
-S_Cleaning:
- set $@wave_cave10, 0;
- set $@cave10_kills, 0;
- set $@cave10start, 0;
- set $@cave10_timer, 0;
- set $@cave10fighter$, "";
- set $@cave10fighterdeaths$, 0;
- set $@battlecave10, 0;
- cleararray $@cave10_monsters_IDS[0], 0, 4;
- cleararray $@cave10_monsters_QTY[0], 0, 4;
- set $@cave10_boss_ID, 0;
- set $@cave10_waves, 0;
- set $@cave10_time, 0;
- killmonster "025-4", "#StartBossCaveFight::OnMonsterDeath";
- killmonster "025-4", "#StartBossCaveFight::OnBossDeath";
- stopnpctimer;
- setnpctimer 0;
- return;
-
-L_BadAir:
- warp "025-4", 93, 33;
- message strcharinfo(0), "You can't stand the foul air inside the cave and run as fast as you can to save Julia!";
- callsub S_Cleaning;
- end;
-
-L_Cleaning:
- warp "025-3", 77, 168;
- message strcharinfo(0), "You took too much time to eliminate this source of energy... If you stay one more second in this cave you won't be able to breathe....";
- callsub S_Cleaning;
- end;
-
-L_CleaningDead:
- warp "025-3", 77, 168;
- if ($@wave_cave10 < 5)
- message strcharinfo(0), "You were not strong enough to eliminate this power source.";
- if ($@wave_cave10 == 5)
- message strcharinfo(0), "This horrible monster is probably too powerful for you right now.";
- callsub S_Cleaning;
- end;
-
-OnNoRid:
- callsub S_Cleaning;
- end;
-
-OnGetout:
- if (attachrid(getcharid(3,$@cave10fighter$)) == 0)
- goto OnNoRid;
- warp "025-3", 77, 168;
- callsub S_Cleaning;
- end;
-
-OnWin:
- if (attachrid(getcharid(3,$@cave10fighter$)) == 0)
- goto OnNoRid;
- warp "025-4", 93, 33;
- callsub S_Cleaning;
- end;
-
-L_AlreadyClean:
- stopnpctimer;
- setnpctimer 0;
- end;
-}
diff --git a/world/map/npc/025-3/mapflags.txt b/world/map/npc/025-3/mapflags.txt
deleted file mode 100644
index 58e68ca5..00000000
--- a/world/map/npc/025-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-025-3|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/025-4/_import.txt b/world/map/npc/025-4/_import.txt
deleted file mode 100644
index 9f7c59cf..00000000
--- a/world/map/npc/025-4/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 025-4: Rossy Battle Caves
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 025-4
-npc: npc/025-4/_mobs.txt
-npc: npc/025-4/_nodes.txt
-npc: npc/025-4/_warps.txt
-npc: npc/025-4/battlecaves.txt
-npc: npc/025-4/clauquer.txt
-npc: npc/025-4/julia.txt
-npc: npc/025-4/mapflags.txt
diff --git a/world/map/npc/025-4/_mobs.txt b/world/map/npc/025-4/_mobs.txt
deleted file mode 100644
index d8664774..00000000
--- a/world/map/npc/025-4/_mobs.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rossy Battle Caves mobs
-
-025-4,29,31,20,14|monster|CaveMaggot|1056,3,0ms,100ms
-025-4,94,24,20,21|monster|CaveMaggot|1056,5,0ms,100ms
diff --git a/world/map/npc/025-4/_nodes.txt b/world/map/npc/025-4/_nodes.txt
deleted file mode 100644
index bd29621b..00000000
--- a/world/map/npc/025-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rossy Battle Caves nodes
-
-// (no nodes)
diff --git a/world/map/npc/025-4/_warps.txt b/world/map/npc/025-4/_warps.txt
deleted file mode 100644
index aa7123c0..00000000
--- a/world/map/npc/025-4/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rossy Battle Caves warps
-
-025-4,28,37|warp|-1,-1,025-3,105,87
diff --git a/world/map/npc/025-4/battlecaves.txt b/world/map/npc/025-4/battlecaves.txt
deleted file mode 100644
index ffab9a05..00000000
--- a/world/map/npc/025-4/battlecaves.txt
+++ /dev/null
@@ -1,1018 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-// --------------------------------- Cave 1 -----------------------------------
-
-025-4,41,85,0|script|#StartCaveFight1|324
-{
- if ($@battlecave1 == 2 && $@cave1fighter$ == strcharinfo(0))
- end;
- if ($@battlecave1 == 2 && $@cave1fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave1 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave1, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave1_loop, $@cave1_loop + 1;
- areamonster "025-4",26,63,60,97,"",$@cave1_monsters_IDS[$@cave1_loop],$@cave1_monsters_QTY[$@cave1_loop],"#StartCaveFight1::OnMonsterDeath";
- if ($@cave1_loop <= getarraysize($@cave1_monsters_IDS))
- goto L_Summon;
- set $@cave1_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave1::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave1, $@wave_cave1 + 1;
- set $@cave1_kills, 0;
- if (attachrid(getcharid(3,$@cave1fighter$)) == 0) goto L_Abort;
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave1 == 1)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave1 < $@cave1_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE1);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave1_kills, $@cave1_kills + 1;
- if ($@cave1_kills >= $@cave1_monsters_QTY[1] + $@cave1_monsters_QTY[2] + $@cave1_monsters_QTY[3] + $@cave1_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 1 Checker ----------------------------
-
-025-4,41,97,0|script|#CheckCaveFight1|45,1,1
-{
- if (cavefights & BATTLE_CAVE1 || $@battlecave1 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave1::OnGetout";
- end;
-}
-
-// --------------------------------- Cave 2 ---------------------------------------
-
-
-025-4,115,77,0|script|#StartCaveFight2|324
-{
- if ($@battlecave2 == 2 && $@cave2fighter$ == strcharinfo(0))
- end;
- if ($@battlecave2 == 2 && $@cave2fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave2 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave2, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave2_loop, $@cave2_loop + 1;
- areamonster "025-4",97, 62, 126, 96,"",$@cave2_monsters_IDS[$@cave2_loop],$@cave2_monsters_QTY[$@cave2_loop],"#StartCaveFight2::OnMonsterDeath";
- if ($@cave2_loop <= getarraysize($@cave2_monsters_IDS))
- goto L_Summon;
- set $@cave2_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave2::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave2, $@wave_cave2 + 1;
- set $@cave2_kills, 0;
- if (attachrid(getcharid(3,$@cave2fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave2 == 1)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave2 < $@cave2_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE2);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave2_kills, $@cave2_kills + 1;
- if ($@cave2_kills >= $@cave2_monsters_QTY[1] + $@cave2_monsters_QTY[2] + $@cave2_monsters_QTY[3] + $@cave2_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-}
-
-// --------------------- Cave 2 Checker ----------------------------
-
-025-4,110,96,0|script|#CheckCaveFight2|45,1,1
-{
- if (cavefights & BATTLE_CAVE2 || $@battlecave2 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave2::OnGetout";
- end;
-}
-
-// ------------------------------------ Cave 3 --------------------------------------
-025-4,164,103,0|script|#StartCaveFight3|324
-{
- if ($@battlecave3 == 2 && $@cave3fighter$ == strcharinfo(0))
- end;
- if ($@battlecave3 == 2 && $@cave3fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave3 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave3, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave3_loop, $@cave3_loop + 1;
- areamonster "025-4",150, 84, 177, 117,"",$@cave3_monsters_IDS[$@cave3_loop],$@cave3_monsters_QTY[$@cave3_loop],"#StartCaveFight3::OnMonsterDeath";
- if ($@cave3_loop <= getarraysize($@cave3_monsters_IDS))
- goto L_Summon;
- set $@cave3_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave3::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave3, $@wave_cave3 + 1;
- set $@cave3_kills, 0;
- if (attachrid(getcharid(3,$@cave3fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave3 == 1)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave3 < $@cave3_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE3);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave3_kills, $@cave3_kills + 1;
- if ($@cave3_kills >= $@cave3_monsters_QTY[1] + $@cave3_monsters_QTY[2] + $@cave3_monsters_QTY[3] + $@cave3_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 3 Checker ----------------------------
-
-025-4,168,117,0|script|#CheckCaveFight3|45,1,1
-{
- if (cavefights & BATTLE_CAVE3 || $@battlecave3 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave3::OnGetout";
- end;
-}
-
-// --------------------------- Cave 4 --------------------------------
-025-4,39,143,0|script|#StartCaveFight4|324
-{
- if ($@battlecave4 == 2 && $@cave4fighter$ == strcharinfo(0))
- end;
- if ($@battlecave4 == 2 && $@cave4fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave4 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave4, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave4_loop, $@cave4_loop + 1;
- areamonster "025-4",28, 124, 57, 156,"",$@cave4_monsters_IDS[$@cave4_loop],$@cave4_monsters_QTY[$@cave4_loop],"#StartCaveFight4::OnMonsterDeath";
- if ($@cave4_loop <= getarraysize($@cave4_monsters_IDS))
- goto L_Summon;
- set $@cave4_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave4::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave4, $@wave_cave4 + 1;
- set $@cave4_kills, 0;
- if (attachrid(getcharid(3,$@cave4fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave4 == 1)
- message strcharinfo(0), "Oh no, more monsters?!";
- if ($@wave_cave4 == 2)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave4 < $@cave4_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE4);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave4_kills, $@cave4_kills + 1;
- if ($@cave4_kills >= $@cave4_monsters_QTY[1] + $@cave4_monsters_QTY[2] + $@cave4_monsters_QTY[3] + $@cave4_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 4 Checker ----------------------------
-
-025-4,32,156,0|script|#CheckCaveFight4|45,1,1
-{
- if (cavefights & BATTLE_CAVE4 || $@battlecave4 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave4::OnGetout";
- end;
-}
-
-// ---------------------------- Cave 5 ------------------------------
-
-025-4,109,143,0|script|#StartCaveFight5|324
-{
- if ($@battlecave5 == 2 && $@cave5fighter$ == strcharinfo(0))
- end;
- if ($@battlecave5 == 2 && $@cave5fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave5 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave5, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave5_loop, $@cave5_loop + 1;
- areamonster "025-4",91, 131, 124, 160,"",$@cave5_monsters_IDS[$@cave5_loop],$@cave5_monsters_QTY[$@cave5_loop],"#StartCaveFight5::OnMonsterDeath";
- if ($@cave5_loop <= getarraysize($@cave5_monsters_IDS))
- goto L_Summon;
- set $@cave5_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave5::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave5, $@wave_cave5 + 1;
- set $@cave5_kills, 0;
- if (attachrid(getcharid(3,$@cave5fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave5 == 1)
- message strcharinfo(0), "Oh no, more monsters?!";
- if ($@wave_cave5 == 2)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave5 < $@cave5_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE5);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave5_kills, $@cave5_kills + 1;
- if ($@cave5_kills >= $@cave5_monsters_QTY[1] + $@cave5_monsters_QTY[2] + $@cave5_monsters_QTY[3] + $@cave5_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 5 Checker ----------------------------
-
-025-4,100,160,0|script|#CheckCaveFight5|45,1,1
-{
- if (cavefights & BATTLE_CAVE5 || $@battlecave5 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave5::OnGetout";
- end;
-}
-
-// -------------------------------- Cave 6 -----------------------------------------
-
-025-4,162,162,0|script|#StartCaveFight6|324
-{
- if ($@battlecave6 == 2 && $@cave6fighter$ == strcharinfo(0))
- end;
- if ($@battlecave6 == 2 && $@cave6fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave6 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave6, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave6_loop, $@cave6_loop + 1;
- areamonster "025-4",153, 143, 178, 174,"",$@cave6_monsters_IDS[$@cave6_loop],$@cave6_monsters_QTY[$@cave6_loop],"#StartCaveFight6::OnMonsterDeath";
- if ($@cave6_loop <= getarraysize($@cave6_monsters_IDS))
- goto L_Summon;
- set $@cave6_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave6::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave6, $@wave_cave6 + 1;
- set $@cave6_kills, 0;
- if (attachrid(getcharid(3,$@cave6fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave6 == 1)
- message strcharinfo(0), "Oh no, more monsters?!";
- if ($@wave_cave6 == 2)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave6 < $@cave6_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE6);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave6_kills, $@cave6_kills + 1;
- if ($@cave6_kills >= $@cave6_monsters_QTY[1] + $@cave6_monsters_QTY[2] + $@cave6_monsters_QTY[3] + $@cave6_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 6 Checker ----------------------------
-
-025-4,159,174,0|script|#CheckCaveFight6|45,1,1
-{
- if (cavefights & BATTLE_CAVE6 || $@battlecave6 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave6::OnGetout";
- end;
-}
-
-// -------------------------------- Cave 7 -----------------------------------
-
-025-4,44,202,0|script|#StartCaveFight7|324
-{
- if ($@battlecave7 == 2 && $@cave7fighter$ == strcharinfo(0))
- end;
- if ($@battlecave7 == 2 && $@cave7fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave7 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave7, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave7_loop, $@cave7_loop + 1;
- areamonster "025-4",27, 185, 61, 219,"",$@cave7_monsters_IDS[$@cave7_loop],$@cave7_monsters_QTY[$@cave7_loop],"#StartCaveFight7::OnMonsterDeath";
- if ($@cave7_loop <= getarraysize($@cave7_monsters_IDS))
- goto L_Summon;
- set $@cave7_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave7::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave7, $@wave_cave7 + 1;
- set $@cave7_kills, 0;
- if (attachrid(getcharid(3,$@cave7fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave7 == 1)
- message strcharinfo(0), "Oh no, more monsters?!";
- if ($@wave_cave7 == 2)
- message strcharinfo(0), "I can't give up now!";
- if ($@wave_cave7 == 3)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave7 < $@cave7_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE7);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave7_kills, $@cave7_kills + 1;
- if ($@cave7_kills >= $@cave7_monsters_QTY[1] + $@cave7_monsters_QTY[2] + $@cave7_monsters_QTY[3] + $@cave7_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 7 Checker ----------------------------
-
-025-4,42,219,0|script|#CheckCaveFight7|45,1,1
-{
- if (cavefights & BATTLE_CAVE7 || $@battlecave7 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave7::OnGetout";
- end;
-}
-
-// --------------------------- Cave 8 -------------------------------
-
-025-4,105,210,0|script|#StartCaveFight8|324
-{
- if ($@battlecave8 == 2 && $@cave8fighter$ == strcharinfo(0))
- end;
- if ($@battlecave8 == 2 && $@cave8fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave8 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave8, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave8_loop, $@cave8_loop + 1;
- areamonster "025-4",90, 193, 119, 216,"",$@cave8_monsters_IDS[$@cave8_loop],$@cave8_monsters_QTY[$@cave8_loop],"#StartCaveFight8::OnMonsterDeath";
- if ($@cave8_loop <= getarraysize($@cave8_monsters_IDS))
- goto L_Summon;
- set $@cave8_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave8::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave8, $@wave_cave8 + 1;
- set $@cave8_kills, 0;
- if (attachrid(getcharid(3,$@cave8fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave8 == 1)
- message strcharinfo(0), "Oh no, more monsters?!";
- if ($@wave_cave8 == 2)
- message strcharinfo(0), "I can't give up now!";
- if ($@wave_cave8 == 3)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave8 < $@cave8_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE8);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave8_kills, $@cave8_kills + 1;
- if ($@cave8_kills >= $@cave8_monsters_QTY[1] + $@cave8_monsters_QTY[2] + $@cave8_monsters_QTY[3] + $@cave8_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 8 Checker ----------------------------
-
-025-4,105,216,0|script|#CheckCaveFight8|45,1,1
-{
- if (cavefights & BATTLE_CAVE8 || $@battlecave8 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave8::OnGetout";
- end;
-}
-
-// --------------------------- Cave 9 -------------------------------
-
-025-4,157,220,0|script|#StartCaveFight9|324
-{
- if ($@battlecave9 == 2 && $@cave9fighter$ == strcharinfo(0))
- end;
- if ($@battlecave9 == 2 && $@cave9fighter$ != strcharinfo(0))
- goto L_Cheat;
- if (Rossy_Quest < 15)
- goto L_Cheat;
- if ($@battlecave9 == 1)
- goto L_Start;
- goto L_Cheat;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave9, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave9_loop, $@cave9_loop + 1;
- areamonster "025-4",144, 192, 173, 226,"",$@cave9_monsters_IDS[$@cave9_loop],$@cave9_monsters_QTY[$@cave9_loop],"#StartCaveFight9::OnMonsterDeath";
- if ($@cave9_loop <= getarraysize($@cave9_monsters_IDS))
- goto L_Summon;
- set $@cave9_loop, 0;
- end;
-
-L_Abort:
- donpcevent "#WarpBattleCave9::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave9, $@wave_cave9 + 1;
- set $@cave9_kills, 0;
- if (attachrid(getcharid(3,$@cave9fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave9 == 1)
- message strcharinfo(0), "Oh no, more monsters?!";
- if ($@wave_cave9 == 2)
- message strcharinfo(0), "I can't give up now!";
- if ($@wave_cave9 == 3)
- message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation... Maybe it is not healthy to stay in this cave.";
-
- if ($@wave_cave9 < $@cave9_waves)
- goto L_Summon;
- set cavefights, (cavefights | BATTLE_CAVE9);
- set BOSS_POINTS, BOSS_POINTS + 10;
- message strcharinfo(0), "You gain 10 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnMonsterDeath:
- set $@cave9_kills, $@cave9_kills + 1;
- if ($@cave9_kills >= $@cave9_monsters_QTY[1] + $@cave9_monsters_QTY[2] + $@cave9_monsters_QTY[3] + $@cave9_monsters_QTY[4])
- goto L_Done;
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Cave 9 Checker ----------------------------
-
-025-4,157,226,0|script|#CheckCaveFight9|45,1,1
-{
- if (cavefights & BATTLE_CAVE9 || $@battlecave9 == 1)
- goto L_Done;
- message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
- end;
-
-L_Done:
- donpcevent "#WarpBattleCave9::OnGetout";
- end;
-}
-
-// --------------------- Boss Cave ----------------------------
-
-025-4,157,30,0|script|#StartBossCaveFight|325
-{
- if ($@battlecave10 == 2 && $@cave10fighter$ == strcharinfo(0))
- end;
- if (Rossy_Quest >= 16)
- end;
- if ($@battlecave10 == 1 && cavefights & BATTLE_CAVE1 && cavefights & BATTLE_CAVE2 && cavefights & BATTLE_CAVE3 && cavefights & BATTLE_CAVE4 && cavefights & BATTLE_CAVE5 && cavefights & BATTLE_CAVE6 && cavefights & BATTLE_CAVE7 && cavefights & BATTLE_CAVE8 && cavefights & BATTLE_CAVE9 && Rossy_Quest == 15)
- goto L_Start;
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Start:
- menu
- "Place a root at the center of the energy source.", L_PlaceCenter,
- "I am not prepared yet!", L_Close;
-
-L_PlaceCenter:
- if ((countitem("Root")<1))
- goto L_no_root;
- close2;
- delitem "Root", 1;
- message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";
- set $@battlecave10, 2;
- goto L_Summon;
-
-L_Summon:
- set $@cave10_loop, $@cave10_loop + 1;
- areamonster "025-4",142, 24, 172, 48,"",$@cave10_monsters_IDS[$@cave10_loop],$@cave10_monsters_QTY[$@cave10_loop],"#StartBossCaveFight::OnMonsterDeath";
- if ($@cave10_loop <= getarraysize($@cave10_monsters_IDS))
- goto L_Summon;
- set $@cave10_loop, 0;
- end;
-
-L_SummonBoss:
- if (attachrid(getcharid(3,$@cave10fighter$)) == 0) goto L_Abort;
- areamonster "025-4",142, 24, 172, 48,"",$@cave10_boss_ID,1,"#StartBossCaveFight::OnBossDeath";
- stopnpctimer;
- end;
-
-L_Abort:
- donpcevent "#WarpBossCave::OnNoRid";
- end;
-
-L_Done:
- set $@wave_cave10, $@wave_cave10 + 1;
- set $@cave10_kills, 0;
- if (attachrid(getcharid(3,$@cave10fighter$)) == 0) goto L_Abort;
-
-// Here you can define the messages to be shown for the players on the beginning of each wave.
-// Remember to adjust the number of conditionals according to the number of waves.
-
- if ($@wave_cave10 == 1)
- message strcharinfo(0), "I can't give up now!";
- if ($@wave_cave10 == 2)
- message strcharinfo(0), "I feel I'm getting close to the end...";
- if ($@wave_cave10 == 3)
- message strcharinfo(0), "What? This is harder than I imagined!";
- if ($@wave_cave10 == 4)
- message strcharinfo(0), "Finally! It seems I have defeated all of them!";
-
- if ($@wave_cave10 < $@cave10_waves)
- goto L_Summon;
- set $@wave_cave10, 5;
- set @boss, 0;
- initnpctimer;
- end;
-
-OnTimer4000:
- if (attachrid(getcharid(3,$@cave10fighter$)) == 0) goto L_Abort;
- set @boss, @boss + 1;
- if (@boss == 1)
- message strcharinfo(0), "You feel something strange... Looks like something terrible is about to show up in this cave.";
- if (@boss == 2)
- goto L_SummonBoss;
- setnpctimer 0;
- end;
-
-OnMonsterDeath:
- set $@cave10_kills, $@cave10_kills + 1;
- if ($@cave10_kills >= $@cave10_monsters_QTY[1] + $@cave10_monsters_QTY[2] + $@cave10_monsters_QTY[3] + $@cave10_monsters_QTY[4])
- goto L_Done;
- end;
-
-OnBossDeath:
- if (attachrid(getcharid(3,$@cave10fighter$)) == 0) goto L_Abort;
- message strcharinfo(0), "What a harsh battle... You should hurry and save Julia!";
- set Rossy_Quest, 16;
- getexp 100000, 0;
- set BOSS_POINTS, BOSS_POINTS + 50;
- message strcharinfo(0), "You gain 50 Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-L_Close:
- close;
-
-L_no_root:
- mes "I don't have any roots in my inventory!";
- close;
-
-}
-
-// --------------------- Boss Cave Checker ----------------------------
-
-025-4,157,48,0|script|#CheckCaveFightBoss|45,1,1
-{
- if (Rossy_Quest >= 17)
- goto L_Done;
- if (Rossy_Quest == 16)
- goto L_Julia;
- if (Rossy_Quest < 16 && $@battlecave10 == 1)
- goto L_Out;
- if (Rossy_Quest < 16 && $@battlecave10 == 2)
- goto L_Julia;
- end;
-
-L_Julia:
- message strcharinfo(0), "I shouldn't leave yet. Julia is still in danger.";
- end;
-
-L_Done:
- warp "025-3", 77, 168;
- end;
-
-L_Out:
- donpcevent "#WarpBossCave::OnGetout";
- end;
-}
-
-// --------------------- Julia Cave Checker Outside ----------------------------
-
-025-4,157,24,0|script|#CheckJuliaCaveOutside|45,1,1
-{
- if (Rossy_Quest > 15)
- goto L_Done;
- message strcharinfo(0), "As you try to walk through, you bump into a strong magical barrier.";
- heal ((MaxHp/100) * -10), 0;
- end;
-
-L_Done:
- donpcevent "#WarpBossCave::OnWin";
- end;
-}
-
-// --------------------- Julia Cave Checker Inside ----------------------------
-
-025-4,93,35,0|script|#CheckJuliaCaveInside|45,1,1
-{
- if (Rossy_Quest >= 17)
- goto L_Done;
- if (Rossy_Quest == 16)
- goto L_Save;
- if (Rossy_Quest <= 15)
- goto L_Cheat;
- end;
-
-L_Cheat:
- message strcharinfo(0), "You shouldn't be here, you cheater.";
- heal -Hp, 0;
- end;
-
-L_Done:
- message strcharinfo(0), "As you go back to the cave you close your eyes, terrified of the bloody battle you just fought in this place, and feel your way back to the entrance of the cave.";
- warp "025-3", 77, 168;
- end;
-
-L_Save:
- message strcharinfo(0), "You can't leave Julia here, all alone!";
- end;
-}
-
diff --git a/world/map/npc/025-4/clauquer.txt b/world/map/npc/025-4/clauquer.txt
deleted file mode 100644
index b29a60de..00000000
--- a/world/map/npc/025-4/clauquer.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-025-4,30,30,0|script|Clauquer|169
-{
- if (Rossy_Quest >= 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_Rescued;
- if (Rossy_Quest == 15) goto L_Hmmm;
- if (Rossy_Quest == 14) goto L_Help;
- if (Rossy_Quest <= 13) goto L_Huh;
- goto L_Help;
-
-L_Help:
- mes "[Clauquer]";
- mes "\"Hello stranger, are you lost?\"";
- next;
- mes "\"Don't answer, I know you are looking for someone... A little girl, is that right?\"";
- next;
- menu
- "I must admit you're right, but how come you...", L_LittleGirl,
- "I'm not lost and I don't need help, bye.", L_No;
-
-L_LittleGirl:
- mes "[Clauquer]";
- mes "\"How do I know you're looking for her? Well, because I am a very good observer. I know you were helping her family. Besides, I saw the little girl. I also heard her. She screamed, and probably still screams like hell. Moreover, I don't think you would enter these caves just for fun!\"";
- next;
- menu
- "Of course not.", L_Next;
-
-L_Next:
- mes "[Clauquer]";
- mes "\"I can see that you really want to save the little girl. She is trapped in a place inside one of these caves, protected by a magic barrier created by a fey spirit. To save her, you have to annulate the energy sources of this barrier. They are located in 10 different spots, each one in a different cave.\"";
- next;
- menu
- "But how can I annulate this barrier?", L_ButBarrier;
-
-L_ButBarrier:
- mes "\"It is simple, you just have to place a root on the exact center of the energy source. Once you do this, its entire power will transmute into some terrible earth monsters. If you defeat them, this source of energy will be close to nothing and the barrier will be weaker.\"";
- next;
- mes "\"If my observations are correct, the girl is trapped in a cave protected by a barrier fed by 9 different power sources. And inside this cave, there is another barrier, fed by a single, but very strong, power source. The girl is inside that cave, protected by that strong barrier.\"";
- next;
- mes "\"Be prepared before you enter one of those caves, because once you put the root in the power source, you won't be able to get out. Also, remember that you can't stay in those caves for a long time, because of the foul air.\"";
- next;
- mes "\"Now I should tell you more about how that little girl got into that cave and warn you about what you are going to face there...\"";
- next;
- menu
- "Please go on.", L_Advice;
-
-L_Advice:
- mes "[Clauquer]";
- mes "\"I advise you to be mentally prepared for this rescue operation. A fey nature spirit kidnapped the little girl and is planning to replace her with a changeling.\"";
- next;
- mes "\"The old tales of Hurnscald say this spirit always exchanges his offspring with beautiful and smart human children, to use them as servants. And his offspring usually forget about their own origin, growing up in a human family. But they are usually 'people' with really bad tempers, the kind of people who do terrible things in this world...\"";
- next;
- mes "However, the girl you are looking for is mentally too strong, and the spirit is having problems creating a changeling identical to her. So it locked her in one of those terrible caves, trying to scare the poor girl and make his task easier.\"";
- next;
- mes "\"Oh, and if you really plan to rescue the girl, I advise you to use potions for every single battle. I'm thinking of Concentration and Iron Potions. You might want to take some food with you too. I would personally take some water, I'm always thirsty. Don't be afraid to bring too much with you, these battles take time to end.\"";
- next;
- mes "\"I think you're now ready to explore these caves and fight.\"";
- if (Rossy_Quest == 14) set Rossy_Quest, 15;
- close;
-
-L_Hmmm:
- set @cleaned_caves, 0;
- if (cavefights & BATTLE_CAVE1)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE2)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE3)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE4)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE5)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE6)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE7)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE8)
- set @cleaned_caves, @cleaned_caves + 1;
- if (cavefights & BATTLE_CAVE9)
- set @cleaned_caves, @cleaned_caves + 1;
- mes "[Clauquer]";
- mes "\"You already know everything about these caves. You don't need me anymore to find the little girl.\"";
- next;
- menu
- "But please, I really need your help!", L_NeedYourHelp,
- "Oh, so many caves! Do you know how many are still left?", L_Feedback,
- "You're right, I don't need your help!", L_No;
-
-L_NeedYourHelp:
- mes "\"Ok, if you insist... But I can only repeat what I already said.\"";
- goto L_Advice;
-
-L_Feedback:
- if (@cleaned_caves > 0
- && @cleaned_caves < 9)
- mes "\"You are doing good... If I am right, you already eliminated " + @cleaned_caves + " of the 9 energy sources of the barrier that protects the cave in which Julia is hidden.\"";
- if (@cleaned_caves == 9)
- mes "\"I am amazed... You eliminated all the 9 energy sources. Now is the difficult part. To save Julia, you need to eliminate the last and most powerful barrier. Good Luck!\"";
- if (@cleaned_caves <= 0)
- mes "\"Well... You didn't eliminate any of the barriers, so that means there are still 9 caves and the tenth one, the strongest...\"";
- close;
-
-L_Huh:
- mes "[Clauquer]";
- mes "\"Why are you here? Get out.\"";
- close;
-
-L_No:
- close;
-
-L_Rescued:
- mes "[Clauquer]";
- mes "\"I'm very impressed!";
- mes "Now this fey nature spirit will never kidnap a poor child again.\"";
- close;
-}
diff --git a/world/map/npc/025-4/julia.txt b/world/map/npc/025-4/julia.txt
deleted file mode 100644
index 929b3b14..00000000
--- a/world/map/npc/025-4/julia.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-// Authors: alastrim, Ali-g, Dark Mage
-
-025-4,89,21,0|script|Julia|114
-{
- set @Reward_EXP, 5000;
-
- if (Rossy_Quest > 16 || FLAGS & FLAG_ROSSI_COMPLETED) goto L_End;
- if (Rossy_Quest == 16) goto L_Done;
- if (Rossy_Quest <= 15) goto L_Hmmm;
- goto L_Done;
-
-L_Done:
- mes "[Julia]";
- mes "\"I heard some battle noises a few minutes ago. Are you here to save me?\"";
- next;
- menu
- "Of course I'm here to save you, Rossy sent me here!", L_Next;
-
-L_Next:
- mes "\"Rossy? My twin sister? I knew she was going to look for me. Thank you so much, here is a present for you.\"";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- getitem "BlackBoots", 1;
- getexp @Reward_EXP, 0;
- set Rossy_Quest, 17;
- mes "\"I'm out of here now, lets get out of this horrible cave.\"";
- close;
-
-L_End:
- mes "[Julia]";
- mes "\"Lets get out of this horrible cave.\"";
- close;
-
-L_Hmmm:
- mes "[Julia]";
- mes "\"Don't hurt me!\"";
- close;
-
-L_TooMany:
- mes "[Julia]";
- mes "\"Oh, you don't have room for it. Come back when your backpack isn't full.\"";
- next;
- mes "\"I'll wait here until I can give your present to you!\"";
- close;
-}
diff --git a/world/map/npc/025-4/mapflags.txt b/world/map/npc/025-4/mapflags.txt
deleted file mode 100644
index ba5835ac..00000000
--- a/world/map/npc/025-4/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-025-4|mapflag|nosave|025-1,33,50
-025-4|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/026-1/_import.txt b/world/map/npc/026-1/_import.txt
deleted file mode 100644
index 46291c40..00000000
--- a/world/map/npc/026-1/_import.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// Map 026-1: Asphodel Moor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 026-1
-npc: npc/026-1/_mobs.txt
-npc: npc/026-1/_nodes.txt
-npc: npc/026-1/_warps.txt
-npc: npc/026-1/evil_guard.txt
-npc: npc/026-1/headless_man.txt
-npc: npc/026-1/husband.txt
-npc: npc/026-1/mapflags.txt
-npc: npc/026-1/sign.txt
-npc: npc/026-1/soul-menhir.txt
-npc: npc/026-1/traveler.txt
diff --git a/world/map/npc/026-1/_mobs.txt b/world/map/npc/026-1/_mobs.txt
deleted file mode 100644
index ba3eef8d..00000000
--- a/world/map/npc/026-1/_mobs.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Asphodel Moor mobs
-
-026-1,0,0,0,0|monster|Wisp|1040,34,120000ms,40000ms
-026-1,0,0,0,0|monster|Spectre|1042,34,120000ms,40000ms
-026-1,0,0,0,0|monster|Poltergeist|1047,34,120000ms,40000ms
-026-1,0,0,0,0|monster|Silkworm|1035,10,300000ms,60000ms
-026-1,0,0,0,0|monster|LogHead|1025,8,300000ms,40000ms
-026-1,49,31,56,14|monster|DrunkenSkeleton|1077,4,100000ms,30000ms
-026-1,50,31,52,11|monster|TipsySkeleton|1078,4,100000ms,30000ms
-026-1,56,77,66,30|monster|DrunkenSkeleton|1077,4,100000ms,30000ms
-026-1,57,77,59,23|monster|TipsySkeleton|1078,4,100000ms,30000ms
-026-1,110,59,31,74|monster|DrunkenSkeleton|1077,4,100000ms,30000ms
-026-1,110,59,28,71|monster|TipsySkeleton|1078,4,100000ms,30000ms
-026-1,110,59,31,74|monster|DrunkenLadySkeleton|1079,4,100000ms,30000ms
-026-1,57,79,69,32|monster|DrunkenLadySkeleton|1079,4,100000ms,30000ms
-026-1,48,31,54,12|monster|DrunkenLadySkeleton|1079,4,100000ms,30000ms
diff --git a/world/map/npc/026-1/_nodes.txt b/world/map/npc/026-1/_nodes.txt
deleted file mode 100644
index 5ff1107c..00000000
--- a/world/map/npc/026-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Asphodel Moor nodes
-
-// (no nodes)
diff --git a/world/map/npc/026-1/_warps.txt b/world/map/npc/026-1/_warps.txt
deleted file mode 100644
index a929e9d8..00000000
--- a/world/map/npc/026-1/_warps.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Asphodel Moor warps
-
-026-1,63,16|warp|-1,-1,027-1,63,105
-026-1,129,66|warp|-1,-1,025-1,20,66
-026-1,48,39|warp|-1,-1,026-2,29,33
-026-1,43,24|warp|-1,-1,026-2,31,128
-026-1,25,20|warp|-1,-1,026-2,22,95
diff --git a/world/map/npc/026-1/evil_guard.txt b/world/map/npc/026-1/evil_guard.txt
deleted file mode 100644
index 22288b5c..00000000
--- a/world/map/npc/026-1/evil_guard.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-026-1,50,32,0|script|Blackwin|316
-{
- mes "...";
- next;
- mes "The guard glares at you, silently daring you to try something.";
- next;
- mes "[Evil Guard]";
- mes "\"Heed my warning, young human. My master will suffer no fools here.\"";
- next;
- mes "[Evil Guard]";
- mes "\"He created this as a place of leisure, and we are here to ensure that it remains undisturbed.\"";
- close;
-}
-
-026-1,29,28,0|script|Forwin|316
-{
- mes "[Evil Guard]";
- mes "\"" + strcharinfo(0) + "...\"";
- next;
- mes "[Evil Guard]";
- mes "\"I am your father...\"";
- next;
- mes "There is an awkward pause, and then the guard bursts out laughing.";
- mes "";
- mes "[Evil Guard]";
- mes "\"Just kidding! Can you imagine Golbenez's reaction if we had such puny offspring?\"";
- close;
-}
diff --git a/world/map/npc/026-1/headless_man.txt b/world/map/npc/026-1/headless_man.txt
deleted file mode 100644
index f922406d..00000000
--- a/world/map/npc/026-1/headless_man.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-// author: TheKandiman, input from Jenalya and Pjotr Orial
-// simple quest for headless man in gy inn
-// state 0: first contact
-// state 1: quest accepted
-// state 2: items delivered, return for reward and followup story
-// state 3: quest completed
-
-026-1,34,30,0|script|Thurstan|318
-{
- set @Graveyard_Inn_MASK, NIBBLE_6_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_6_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @Wisp_Powder, 50;
- set @Polt_Powder, 50;
- set @Spec_Powder, 50;
- set @Iron_Pot, 50;
- set @Conc_Pot, 30;
- set @Red_Dye, 50;
- set @Yellow_Dye, 50;
- set @LB_Dye, 50;
-
- set @Glue_Exp, 50000;
-
- if (@state >= 3) goto L_Final;
- if (@state == 2) goto L_Quest_finished;
- if (@state == 1) goto L_Quest_progress;
-
- mes "You see a man, propped up against the foot of the tree.";
- mes "In his hand, he is holding what you assume to be his own head.";
- next;
- mes "You jump back a bit, startled, as the head starts talking to you!";
- mes "It's a little strange watching him talk, but it's better than looking at what's left of his neck.";
- next;
- if (BaseLevel < 85)
- goto L_greet;
- mes "[Headless Man]";
- mes "\"Hello. My name is Thurstan. Could I ask your assistance with something? I seem to be in a spot of difficulty.\"";
- menu
- "I'll listen, just keep that thing from dripping on me.", L_Quest_ask,
- "Ack, a bloody talking head! Gross, no way!", L_Close;
-
-L_greet:
- mes "[Headless Man]";
- mes "\"Greetings! Do you have any duck tape?\"";
- goto L_Close;
-
-L_Quest_ask:
- mes "[Thurstan]";
- mes "\"A little while ago there was a patron visiting the inn...I can't remember his name now. He noticed this predicament I am in and offered to help me. He told me that he was an alchemist and that he had a recipe for an adhesive that would keep my head where it's supposed to be. Unfortunately, he wasn't able to stay long enough to gather all the ingredients for the spell, so he gave me the recipe instead. However, it's rather hard to gather things when I have to carry it around all day.\"";
- next;
- mes "[Thurstan]";
- mes "\"I have a list of items and how many of each are needed. Would you mind gathering them for me?\"";
- menu
- "Lay it on me, Mr. Noggin!", L_Quest_start,
- "Sorry, I'm kinda busy with, you know, living.", L_Quest_no;
-
-L_Quest_start:
- mes "[Thurstan]";
- mes "\"Great! I will need the following things.\"";
- mes "\"" + @Wisp_Powder + " Wisp Powder,\"";
- mes "\"" + @Polt_Powder + " Poltergeist Powder,\"";
- mes "\"" + @Spec_Powder + " Spectre Powder,\"";
- mes "\"" + @Iron_Pot + " Iron Potion,\"";
- mes "\"" + @Conc_Pot + " Concentration Potion,\"";
- mes "\"" + @Red_Dye + " vials of Red Dye,\"";
- mes "\"" + @Yellow_Dye + " vials of Yellow Dye,\"";
- mes "\"and...\"";
- mes "\"" + @LB_Dye + " vials of Light Blue Dye,\"";
- next;
- mes "[Thurstan]";
- mes "\"My friend also said that I should use a metal bowl instead of a wooden one. I don't have one and I think a cauldron from the kitchen would be too big. Perhaps we could use an Infantry Helmet to serve that task.\"";
- next;
- mes "[Thurstan]";
- mes "\"I know it probably doesn't seem like that much to you, but it is a really big deal for me. I will try to find something to compensate you for your efforts.\"";
- set @state, 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Quest_no:
- mes "[Thurstan]";
- mes "\"Very well. Just don't come looking to me when your own head falls off!\"";
- goto L_Close;
-
-L_Quest_progress:
- mes "[Thurstan]";
- mes "Have you managed to find those items yet?\"";
- menu
- "Yes, here you go!", L_Quest_check,
- "What was I supposed to get again?", L_Quest_items,
- "No, I'm still working on it.", L_Close;
-
-L_Quest_check:
- if (countitem("WispPowder") < @Wisp_Powder
- || countitem("PoltergeistPowder") < @Polt_Powder
- || countitem("SpectrePowder") < @Spec_Powder
- || countitem("IronPotion") < @Iron_Pot
- || countitem("ConcentrationPotion") < @Conc_Pot
- || countitem("RedDye") < @Red_Dye
- || countitem("YellowDye") < @Yellow_Dye
- || countitem("LightBlueDye") < @LB_Dye
- || countitem("InfantryHelmet") < 1)
- goto L_Quest_notenough;
-
- delitem "WispPowder", @Wisp_Powder;
- delitem "PoltergeistPowder", @Polt_Powder;
- delitem "SpectrePowder", @Spec_Powder;
- delitem "IronPotion", @Iron_Pot;
- delitem "ConcentrationPotion", @Conc_Pot;
- delitem "RedDye", @Red_Dye;
- delitem "YellowDye", @Yellow_Dye;
- delitem "LightBlueDye", @LB_Dye;
- delitem "InfantryHelmet", 1;
- getexp @Glue_Exp, 0;
- mes "[Thurstan]";
- mes "\"Excellent, excellent!\"";
- mes "";
- mes "Thurstan takes your ingredients and seperates them into little piles according to some complex formula he is reading, seemingly from the tops of his shoes.";
- next;
- mes "[Thurstan]";
- mes "\"Now if I could prevail upon you to mix the ingredients according to the instructions I have here, I would be greatly indebted.\"";
- next;
- mes "You mix the powders together in the Infantry bowl, adding potions and dyes as instructed. Gradually, the concoction starts to get tacky and takes on a hue similar to Thurstan's skin.";
- mes "You can see him starting to get excited beside you...";
- next;
- mes "[Thurstan]";
- mes "\"Oh this is perfect! I'll be back in action in no time!\"";
- next;
- mes "Thurstan covers the base of his neck with a thick coat of the glue using his free hand. He then lifts his head in both hands, places it on the layer of adhesive, and makes some minor adjustments to the position. He mutters an incantation that you can't make out and the wound across his neck seems to fade away.";
- misceffect sfx_magic_transmute;
- next;
- mes "Thurstan is practically jumping for joy now.";
- mes "";
- mes "[Thurstan]";
- mes "\"Thank you so much! That is such a weight on my shoulders! Now that I have some mobility back, let me see what I can do to repay you. Would you mind coming back in a few minutes?\"";
- set @state, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Quest_notenough:
- mes "Thurstan quickly looks through the items you've brought.";
- mes "[Thurstan]";
- mes "\"It seems you are missing a few things. Please come back once you have everything on the list.\"";
- goto L_Close;
-
-L_Quest_items:
- mes "[Thurstan]";
- mes "\"" + @Wisp_Powder + " Wisp Powder,\"";
- mes "\"" + @Polt_Powder + " Poltergeist Powder,\"";
- mes "\"" + @Spec_Powder + " Spectre Powder,\"";
- mes "\"" + @Iron_Pot + " Iron Potion,\"";
- mes "\"" + @Conc_Pot + " Concentration Potion,\"";
- mes "\"" + @Red_Dye + " vials of Red Dye,\"";
- mes "\"" + @Yellow_Dye + " vials of Yellow Dye,\"";
- mes "\"" + @LB_Dye + " vials of Light Blue Dye,\"";
- mes "\"We'll also need 1 Infantry Helmet to use as a bowl for mixing everything together.\"";
- goto L_Close;
-
-L_Quest_finished:
- mes "[Thurstan]";
- mes "\"Thank you for all your help.\"";
- next;
- mes "[Thurstan]";
- mes "\"It worked well and the bond seemed to be holding for a while. Then I started feeling a strange tingling in my neck. I suppose that was the adhesive starting to dissolve. I was leaned over my trunk digging around for something appropriate to give you..Aaaand once again my head left it's proper place.\"";
- next;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- mes "[Thurstan]";
- mes "\"Please take this for your efforts. I got it in payment of some work I did protecting the pinkie population from a terrible scourge some time ago.\"";
- getitem "PinkieHelmet", 1;
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Full_Inv:
- mes "[Thurstan]";
- mes "\"I'd like to give you something for your efforts, but you're carrying too much stuff.\"";
- goto L_Close;
-
-L_Final:
- mes "[Thurstan]";
- mes "\"I guess I will need to find another way to re-attach my cranium. If you come across any good alchemists who might be able to help, please let me know.\"";
- goto L_Close;
-
-L_Close:
-
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @Wisp_Powder, 0;
- set @Polt_Powder, 0;
- set @Spec_Powder, 0;
- set @Iron_Pot, 0;
- set @Conc_Pot, 0;
- set @Red_Dye, 0;
- set @Yellow_Dye, 0;
- set @LB_Dye, 0;
- set @Glue_Exp, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-
-}
diff --git a/world/map/npc/026-1/husband.txt b/world/map/npc/026-1/husband.txt
deleted file mode 100644
index 6dac42a3..00000000
--- a/world/map/npc/026-1/husband.txt
+++ /dev/null
@@ -1,355 +0,0 @@
-// author: Jenalya
-// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
-// state 0: if BaseLevel >= 85, he asks for something to cool the drinks (ice cubes)
-// state 1: can be asked about the ring. needs @ICE_CUBE_AMOUNT ice cubes, then asks for bones and skulls.
-// state 2: wants @BONE_AMOUNT and @SKULL_AMOUNT bones and skulls
-// state 3: can be asked about the ring. needs @woman > 5 to be asked about savaric, tells, if crying child quest is completed
-// state 4: if @golbanez < 5, can be told about the memories, then asks the player to bring @RUBY_AMOUNT rubies to reid
-// state 5: waiting
-// state 6: is set in reid, gives as reward a special bowler hat
-// state 7: done
-
-026-1,40,41,0|script|Hamond|319
-{
- set @Graveyard_Inn_MASK, NIBBLE_3_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_3_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
- set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
-
- set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
-
- set @Graveyard_Inn_Kid_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_Kid_SHIFT, NIBBLE_2_SHIFT;
-
- set @kidstate, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Kid_MASK) >> @Graveyard_Inn_Kid_SHIFT);
-
- set @Graveyard_Inn_Golbenez_MASK, NIBBLE_4_MASK;
- set @Graveyard_Inn_Golbenez_SHIFT, NIBBLE_4_SHIFT;
-
- set @golbanez, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golbenez_MASK) >> @Graveyard_Inn_Golbenez_SHIFT);
-
- set @minLevel, 85;
- set @ICE_CUBE_AMOUNT, 100;
- set @ICE_CUBE_EXP, 75000;
- set @BONE_AMOUNT, 100;
- set @SKULL_AMOUNT, 75;
- set @BONE_EXP, 100000;
- set @RUBY_AMOUNT, 25; // caution, this value needs to be the same as in the innkeepers script!
-
- if (@state >= 7) goto L_Thanks;
- if (@state == 6) goto L_Apologize;
- if (@state == 5) goto L_Waiting;
- if (@state == 4) goto L_News;
- if (@state == 3) goto L_Brought_Bones;
- if (@state == 2) goto L_Check_Bones;
- if (@state == 1) goto L_Ice_Cube;
-
- mes "[Pale Man]";
- mes "\"Hello, My name is Hamond. I run the inn together with my beautiful wife Reid. If there is anything I can do for you, please let me know.\"";
- if (BaseLevel < @minLevel)
- goto L_Close;
- next;
- menu
- "I'd like to know why all the people in here are dead.",L_Next,
- "Are you feeling well? You look very pale... In fact, deathly pale.",L_Next,
- "Thank you, but I'm fine.", L_Close;
-
-L_Next:
- mes "Hamond seems very confused. Then he notices the grey color of his hands and begins to shake his head in panic.";
- mes "[Hamond]";
- mes "\"WHAT IS THIS?\"";
- next;
- mes "Because of the fast movement of his head, it hinges back in his neck along a cut in his throat.. a deep cut you didn't notice before.";
- next;
- mes "You're trying hard not to run away screaming. Instead, you grab his hair and pull his head back into place.";
- next;
- mes "Hamond blinks a few times, with a puzzled look on his face.";
- mes "[Hamond]";
- mes "\"That was uncomfortable! I guess you are right. I am dead. Weird.\"";
- next;
- mes "\"How can I be dead if I am walking around and talking? This is very strange. \"";
- next;
- mes "\"But nevertheless, I will continue to run the inn and do my best to make all our patrons happy and satisfied - be they alive or dead.\"";
- next;
- menu
- "Can I help with that?", L_Continue;
-
-L_Continue:
- mes "[Hamond]";
- mes "\"Help me? Normally I would never ask you for this, but actually, I do need something to cool the drinks. Maybe you can find something.\"";
-
- set @state, 1;
- callsub S_Update_Mask;
-
- goto L_Close;
-
-L_Ice_Cube:
- mes "[Hamond]";
- mes "\"Hello my friend! Good to see you again. Did you find something to cool the drinks?\"";
- next;
-
- if ((@kidstate == 4)
- && countitem("IceCube") > 0)
- menu
- "Maybe this never melting Ice Cube?", L_Check_Ice,
- "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "I'm still searching.", L_Close;
- if (@kidstate == 4)
- menu
- "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "I'm still searching.", L_Close;
- if (countitem("IceCube") > 0)
- menu
- "Maybe this never melting Ice Cube?", L_Check_Ice,
- "I'm still searching.", L_Close;
- mes "\"You didn't? Too bad.\"";
- goto L_Close;
-
-L_Check_Ice:
- if (countitem("IceCube") < @ICE_CUBE_AMOUNT)
- goto L_Not_Enough_Cubes;
- delitem "IceCube", @ICE_CUBE_AMOUNT;
-
- getexp @ICE_CUBE_EXP, 0;
-
- set @state, 2;
- callsub S_Update_Mask;
-
- mes "[Hamond]";
- mes "\"Yes, wonderful! That's exactly what I need.\"";
- next;
- mes "\"I put all my effort in making the inn a run well for my beloved Reid.\"";
- next;
- mes "\"You know, she had a very hard childhood.\"";
- next;
- mes "\"Her parents were the former owners of the inn. But they had some problems and the inn wasn't running well.\"";
- next;
- mes "\"Also they died very early and Reid was so lonely and sad. She is such a wonderful woman, I'd do anything for her.\"";
- next;
- mes "He mumbles the next sentence as if to himself.";
- next;
- mes "\"And I won't let a wannabe mage take her away from me...\"";
- next;
- menu
- "What do you mean?",L_More;
-
-L_More:
- mes "[Hamond]";
- mes "\"Nevermind, nevermind. I'd like to ask you for another favor, if I might.\"";
- next;
- mes "\"A patron asked for - uhm, bones. He said he needed to replace some of his bones, which were damaged in a scuffle with mortals.\"";
- next;
- mes "\"I know, this is a bit strange - I'm still getting used to being dead. But a patron's wish is a patron's wish!\"";
- next;
- mes "\"Can you bring me a huge amount of bones and skulls? This way I can fulfill that peculiar wish and make another patron very happy!\"";
- goto L_Close;
-
-L_Check_Bones:
- mes "[Hamond]";
- mes "\"Welcome back! Let me see what you have.\"";
- if ((countitem("Bone") < @BONE_AMOUNT)
- || (countitem("Skull") < @SKULL_AMOUNT))
- goto L_Not_Enough_B;
- delitem "Bone", @BONE_AMOUNT;
- delitem "Skull", @SKULL_AMOUNT;
-
- getexp @BONE_EXP, 0;
-
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Brought_Bones;
-
-L_Brought_Bones:
- mes "[Hamond]";
- mes "\"Thanks for your help! Now I'll be able to satisfy another strange request from one of our patrons.\"";
- next;
-
- if ((@kidstate == 4)
- && (@woman > 5))
- menu
- "Would you tell me about this mage named Savaric?", L_Savaric,
- "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "You're welcome.", L_Close;
- if (@kidstate == 4)
- menu
- "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "You're welcome.", L_Close;
- if (@woman > 5)
- menu
- "Would you tell me about this mage named Savaric?", L_Savaric,
- "You're welcome.",L_Welcome;
- goto L_Welcome;
-
-L_Welcome:
- mes "[Hamond]";
- mes "\"Please make yourself at home.\"";
- goto L_Close;
-
-L_Savaric:
- mes "Hamond's face turns into an ugly grimace.";
- mes "[Hamond]";
- mes "\"That cheeky egomaniac - \"";
- next;
-
- if (@kidstate < 7)
- goto L_Problem;
- mes "\"Well, I have been thinking about you. You seem to be a very helpful and wise person. Even my son told me good things about you, making a long speech about how great you are and your ability to comprehend and deal with delicate matters. I wonder how he reached that conclusion... But anyway, I'll tell you about Savaric.\"";
- next;
- goto L_Jealousy;
-
-L_Jealousy:
- mes "[Hamond]";
- mes "\"Savaric calls himself the first apprentice of a great wizard and seems to hold his head very high because of that. Pah, that snooty-nosed little upstart.\"";
- next;
- mes "\"Don't get me wrong, usually I'm a very open minded man, everyone can live their life as ever they like. But I never saw a wizard do anything good. They're in their books and ancient riddles and speaking with demons and whatever else they might come up with.\"";
- next;
- mes "\"But do they care for normal people? I've never seen that. And not only that! This Savaric guy seems to think it is fun to play games with my wife.\"";
- next;
- mes "Hamond seems to nearly burst with anger.";
- next;
- mes "\"I guess, they think I don't see what they are doing! But they are flirting all the time, my poor Reid seems unable to have a straight thought anymore.\"";
- next;
- mes "\"I already thought about throwing him out of the inn - but he is a patron! I can't be rude to a patron.\"";
- next;
- mes "\"Ah, this is annoying.\"";
- set @state, 4;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Problem:
- mes "[Hamond]";
- mes "\"To be honest, I think I'd only be able to talk about such a complicated matter if I am sure I am sharing my feelings with a good, wise and understanding person. No offense, it is just that I barely know you...\"";
- goto L_Close;
-
-L_Ring:
- mes "[Hamond]";
- mes "\"Well.. this is just a cheap ring. It is very popular with the young kids, especially the magic students.\"";
- next;
- mes "\"They say the ring increases 'magic attack' if you add a sapphire gem to it... But, in fact, I think these kids are delusional. Magic, pah.\"";
- next;
- mes "\"Anyway, I remember you could easily find one of these in a lot of small shops in town. I am pretty sure that whoever lost it won't bother coming all the way back to get it.\"";
- set @kidstate, 5;
- callsub S_Update_Mask_Kid;
- goto L_Close;
-
-L_News:
- mes "[Hamond]";
- mes "\"Ah, dear friend. How are you?\"";
- if (@golbanez < 5)
- menu
- "I'm enjoying myself.",L_Close;
- menu
- "I'm enjoying myself.",L_Close,
- "I found out what happened to you and this place.",L_FoundOut;
-
-L_FoundOut:
- mes "[Hamond]";
- mes "\"You did? Amazing! Please tell me.\"";
- next;
- mes "You explain to him how you came here, the results of your research and what Golbenez showed to you.";
- next;
- mes "[Hamond]";
- mes "\"WHAT? This is just crazy! But - you've shown me that you're trustworthy. This must be the truth.\"";
- next;
- mes "\"But still, it is hard to believe - I can't imagine I would ever hurt Reid and that she - that she would cheat on me.\"";
- next;
- mes "\"How did this come about? What did I do wrong? I should have shown her my love more. I should have protected her from the allurements of that sneaky mage. And I - I should have never ever hurt her.\"";
- next;
- mes "Hamond seems about to break down.";
- menu
- "Maybe it was just fate.",L_HamondFate,
- "You got very upset, don't blame yourself",L_HamondFate,
- "You're right. You were very violent. How could you do that if you love her?",L_HamondFate;
-
-L_HamondFate:
- mes "[Hamond]";
- mes "\"I- I need to apologize.\"";
- next;
- mes "\"" + strcharinfo(0) + "! Can you help me once more? Please get " + @RUBY_AMOUNT + " Rubies and bring them to her as a symbol of my love and my remorse.\"";
- set @state, 5;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Waiting:
- mes "[Hamond]";
- mes "\"Did you bring Reid the " + @RUBY_AMOUNT + " Rubies?\"";
- goto L_Close;
-
-L_Apologize:
- mes "[Hamond]";
- mes "\"I thank you! Reid came to me to talk about what happened.\"";
- next;
- mes "\"We talked about all the stuff that happened. It's hard for me, but I accepted her feelings for that mage. I mean - we are dead! And we have to stay in this place together for the rest of eternity! This is just perverted.\"";
- next;
- mes "\"But whatever, we need to get along with each other someway and I won't be the one who makes this difficult.\"";
- next;
- mes "\"And frankly, it gives me a bitter satisfaction that they long for each other but can't touch each other.\"";
- next;
- mes "\"However, you are a great friend and did a lot for me. I want you to have this.\"";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- getitem "BowlerHatBrown", 1;
- set @state, 7;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Thanks:
- mes "[Hamond]";
- mes "\"Good to see you, my friend! The inn is running well and I'm getting used to being dead.\"";
- goto L_Close;
-
-L_Not_Enough_B:
- if (countitem("Bone") < @BONE_AMOUNT)
- mes "\"I need more Bones than you have with you right now.\"";
- if (countitem("Skull") < @SKULL_AMOUNT)
- mes "\"Maybe you should come back with more Skulls than you have now. I don't think it is enough.\"";
- goto L_Close;
-
-L_Not_Enough_Cubes:
- mes "[Hamond]";
- mes "\"Yes, they look good! But I think I need more of them. Maybe " + @ICE_CUBE_AMOUNT + "?\"";
- goto L_Close;
-
-L_Full_Inv:
- mes "[Hamond]";
- mes "\"You have a really full backpack, haven't you? Come back when you have some room in there.\"";
- goto L_Close;
-
-L_Close:
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @Graveyard_Inn_Woman_MASK, 0;
- set @Graveyard_Inn_Woman_SHIFT, 0;
- set @woman, 0;
- set @Graveyard_Inn_Kid_MASK, 0;
- set @Graveyard_Inn_Kid_SHIFT, 0;
- set @Graveyard_Inn_Golbenez_MASK, 0;
- set @Graveyard_Inn_Golbenez_SHIFT, 0;
- set @golbanez, 0;
- set @kidstate, 0;
- set @minLevel, 0;
- set @ICE_CUBE_AMOUNT, 0;
- set @ICE_CUBE_EXP, 0;
- set @BONE_AMOUNT, 0;
- set @SKULL_AMOUNT, 0;
- set @BONE_EXP, 0;
- set @RUBY_AMOUNT, 0;
- close;
-
-S_Update_Mask_Kid:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Kid_MASK))
- | (@kidstate << @Graveyard_Inn_Kid_SHIFT);
- return;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/026-1/mapflags.txt b/world/map/npc/026-1/mapflags.txt
deleted file mode 100644
index 1a059118..00000000
--- a/world/map/npc/026-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-026-1|mapflag|resave|026-1,28,35
-026-1|mapflag|outside
diff --git a/world/map/npc/026-1/sign.txt b/world/map/npc/026-1/sign.txt
deleted file mode 100644
index f0281b4f..00000000
--- a/world/map/npc/026-1/sign.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-
-026-1,64,16,0|script|Sign|400
-{
- mes "Hurnscald's Graveyard is north of here.";
- mes "BEWARE!";
- close;
-}
diff --git a/world/map/npc/026-1/soul-menhir.txt b/world/map/npc/026-1/soul-menhir.txt
deleted file mode 100644
index 9b1b87b4..00000000
--- a/world/map/npc/026-1/soul-menhir.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-026-1,29,34,0|script|Soul Menhir#deadmire|351
-{
- set @map$, "026-1";
- setarray @Xs, 28, 29, 30, 28, 30, 28, 30;
- setarray @Ys, 32, 33, 34, 32, 34, 32, 34;
- set @x, 0;
- set @y, 0;
- callfunc "SoulMenhir";
- set @map$, "";
- cleararray @Xs[0], 0, 7;
- cleararray @Ys[0], 0, 7;
- set @x, 0;
- set @y, 0;
- close;
-}
diff --git a/world/map/npc/026-1/traveler.txt b/world/map/npc/026-1/traveler.txt
deleted file mode 100644
index de743c14..00000000
--- a/world/map/npc/026-1/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-026-1,49,46,0|script|Styx the Traveler|103
-{
- set @npcname$, "Styx";
- set @NpcTravelBit, $@graveyard_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/026-2/_import.txt b/world/map/npc/026-2/_import.txt
deleted file mode 100644
index 7cca6e43..00000000
--- a/world/map/npc/026-2/_import.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Map 026-2: Swamp Indoors
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 026-2
-npc: npc/026-2/_mobs.txt
-npc: npc/026-2/_nodes.txt
-npc: npc/026-2/_warps.txt
-npc: npc/026-2/barman.txt
-npc: npc/026-2/cerhan.txt
-npc: npc/026-2/crying_child.txt
-npc: npc/026-2/diary.txt
-npc: npc/026-2/door.txt
-npc: npc/026-2/eurni.txt
-npc: npc/026-2/golbenez.txt
-npc: npc/026-2/gy_inn_shops.txt
-npc: npc/026-2/innkeeper.txt
-npc: npc/026-2/lover.txt
-npc: npc/026-2/mapflags.txt
-npc: npc/026-2/testnpcs.txt
-npc: npc/026-2/werewolf.txt
diff --git a/world/map/npc/026-2/_mobs.txt b/world/map/npc/026-2/_mobs.txt
deleted file mode 100644
index a467be33..00000000
--- a/world/map/npc/026-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Swamp Indoors mobs
-
diff --git a/world/map/npc/026-2/_nodes.txt b/world/map/npc/026-2/_nodes.txt
deleted file mode 100644
index 2d223fd1..00000000
--- a/world/map/npc/026-2/_nodes.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Swamp Indoors nodes
-
-026-2,0,0,0|script|Node026-2|32767
-{
- end;
-OnInit:
- setarray .m$, "_N-Alchemy", "026-2";
- setarray .x1, "_N-Alchemy", 35;
- setarray .y1, "_N-Alchemy", 117;
- setarray .x2, "_N-Alchemy", 0;
- setarray .y2, "_N-Alchemy", 0;
- setarray .id, "_N-Alchemy", 0;
- donpcevent "_N-Alchemy::OnMaybeStart";
- destroy;
-}
diff --git a/world/map/npc/026-2/_warps.txt b/world/map/npc/026-2/_warps.txt
deleted file mode 100644
index f9dd3e7e..00000000
--- a/world/map/npc/026-2/_warps.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Swamp Indoors warps
-
-026-2,30,35|warp|2,-1,026-1,48,40
-026-2,23,25|warp|0,-1,026-2,66,25
-026-2,66,26|warp|0,-1,026-2,23,27
-026-2,26,55|warp|0,-1,026-2,23,31
-026-2,23,33|warp|0,-1,026-2,26,56
-026-2,22,96|warp|-1,-1,026-1,25,21
-026-2,41,82|warp|0,-1,026-2,83,95
-026-2,84,96|warp|0,-1,026-2,41,83
-026-2,23,58|warp|-1,-1,026-2,81,57
-026-2,82,57|warp|-1,-1,026-2,24,58
-026-2,31,129|warp|-1,-1,026-1,43,25
diff --git a/world/map/npc/026-2/barman.txt b/world/map/npc/026-2/barman.txt
deleted file mode 100644
index 87e28859..00000000
--- a/world/map/npc/026-2/barman.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-026-2,37,24,0|script|Bennet|310
-{
- mes "[Bennet]";
- mes "\"Hi there, stranger! My name is Bennet, the bartender here.\"";
- next;
- mes "[Bennet]";
- mes "\"If you're planning to stick around for a while, please check back with me later. I might have some work for you.\"";
- mes "\"In the meantime, enjoy your stay!\"";
- close;
-}
diff --git a/world/map/npc/026-2/cerhan.txt b/world/map/npc/026-2/cerhan.txt
deleted file mode 100644
index 64cc723f..00000000
--- a/world/map/npc/026-2/cerhan.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// Author: Jenalya
-
-026-2,38,118,0|script|Cerhan|311
-{
- mes "[Cerhan]";
- mes "\"Ah, hello! It's good to see another normal human at this strange place!\"";
- next;
- menu
- "That's true. What are you doing here?",L_Story,
- "Yes, this place is really strange. I'm going to have another look around.",L_Close;
-
-L_Story:
- mes "[Cerhan]";
- mes "\"I came from Thermin, a town in the Kazei area.\"";
- next;
- mes "\"I'm an experienced weapon master and I was thinking about establishing a smithy here. I'll need some more equipment, though.\"";
- next;
- if (countitem("MylarinDust") > 0)
- menu
- "Do you know something about 'Mylarin Dust'?", L_Mylarin,
- "Good luck with that.",L_GoodLuckWith;
- goto L_GoodLuckWith;
-
-L_GoodLuckWith:
- mes "[Cerhan]";
- mes "\"If you're interested in weapons and armor, you may want to come back later.\"";
- if (countitem("SandCutter") > 0)
- menu
- "[Leave]",L_Close,
- "Actually, I exchanged my Mylarin Dust with a bunny girl.", L_SandCutter;
- close;
-
-L_SandCutter:
- mes "[Cerhan]";
- mes "\"What?! Are you mad?! Do you know how many night desert warriors the bunny girl, Ashley, even killed?!\"";
- next;
- mes "[Cerhan]";
- mes "\"Gosh, I fear for those whom wrong her. I hope you did not provoke her while doing this exchange.\"";
- next;
- mes "[Cerhan]";
- mes "\"Ugh... I really should finishing settin up my shop, but... I'm so lazy.\"";
- goto L_Close;
-
-L_Mylarin:
- mes "[Cerhan]";
- mes "\"Mylarin dust?! Where did you get that? That's amazing!\"";
- next;
- mes "\"I can craft you an amazing strong armor with that - uhm, well, first I need to set up my smithy here.\"";
- next;
- mes "\"Please come back, when I'm ready for that. Mylarin dust... amazing.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/026-2/crying_child.txt b/world/map/npc/026-2/crying_child.txt
deleted file mode 100644
index e65dc716..00000000
--- a/world/map/npc/026-2/crying_child.txt
+++ /dev/null
@@ -1,219 +0,0 @@
-// author: alastrim
-// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
-// Jenalya: some changes about variables (setting to zero if only used locally, naming)
-
-026-2,67,86,0|script|Aldred|314
-{
-// Crying Child subquest
-// Variable states:
-// 1 = You agree to help the child to find the ring outside
-// 2 = You found the ring (see 027-1.../monsters.txt)
-// 3 = You gave the ring to the child
-// 4 = You decided to help the child again, by investigating what the ring means to them.
-// 5 = The father/husband told you what he thinks of the ring
-// 6 = The mother/wife told you what he thinks of the ring
-// 7 = The kid decided that the ring has no value to their parents, so you can have it.
-
- set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @minLevel, 85;
-
- if (@state == 7) goto L_return5;
- if (@state == 6) goto L_return4;
- if (@state == 4 || @state == 5) goto L_return3;
- if (@state == 3) goto L_return2;
- if (@state == 2) goto L_return1;
- if (@state == 1) goto L_return;
- if (BaseLevel >= @minLevel) goto L_intro;
- goto L_cry;
-
-L_cry:
- mes "[Crying Child]";
- mes "\"Waaahhhhh!\"";
- goto L_Close;
-
-L_intro:
- mes "[Crying Child]";
- mes "\"Waaah!\"";
- next;
- mes "\"Waaahhhaaa!\"";
- next;
- mes "You bend your knees near the child, trying to gain his confidence and ask why he is crying. But looking closely, you are surprised to see that his skin color is an awful, cadaveric grey...";
- menu
- "Calm down kid, what happened?",L_WhatHappen,
- "Leave the kid alone.",L_Close;
-
-L_WhatHappen:
- mes "[Crying Child]";
- mes "\"Oh, what? Who are you, what are you doing here?\"";
- next;
- menu
- "My name is "+strcharinfo(0)+". I heard you cry and decided to check if you needed any help.",L_MyNameIs;
-
-L_MyNameIs:
- mes "The child looks at you from head to toe and says: aren't you scared of me?\"";
- next;
- menu
- "No... Why would I be scared of you?",L_NotScaredOf;
-
-L_NotScaredOf:
- mes "[Crying Child]";
- mes "\"I am, you know... dead. Like Mom and Dad, and a lot of other people in this inn... But most of them don't like to talk about it.\"";
- menu
- "You are a brave and smart kid... I have nothing to be afraid of.",L_BraveSmart;
-
-L_BraveSmart:
- mes "[Crying Child]";
- mes "\"It's nice to talk to you. I don't have any friends and Mom is always sad and Dad is always angry about something I don't know... and... Did you see the man in the room next to me? The one with horns? Oh, I don't like him! \"";
- next;
- mes "[Crying Child]";
- mes "\"My parents told me not to talk to strangers... But you look nice... I guess I can trust you... I'm Aldred and we live here, my parents and I. This is our inn.\"";
- next;
- mes "[Aldred]";
- mes "\"You asked why I was crying. My problem is... I don't know what to do... My dad will be so angry with me... He used to be very nice, but now... if you do something wrong... he... Waaaaa!\"";
- next;
- menu
- "There, there. Don't cry... What did you do?",L_DontCryWhat;
-
-L_DontCryWhat:
- mes "[Aldred]";
- mes "\"Umm... I was looking at my parents' stuff and I found this funny thing! It looked like a normal ring, but with a round empty space... I thought it would be fun to take it with me and maybe look for a stone or a gem to fit into the empty space. But I... I lost it...\"";
- next;
- mes "\"I don't know what happened. I was in this room and... I heard some very loud noises, people screaming, cracking sounds... and a smell, a terrible smell, like something rotten. And then... I can't remember anything else!\"";
- next;
- mes "\"I think it was something very bad, because, after all that, I woke up the way I am now and I couldn't find the ring in my pocket. Oh, and my parents are acting like they're not themselves. I don't know what happened, maybe it was my fault... I shouldn't have played with that ring... \"";
- next;
- menu
- "Don't worry, I will look around. Maybe I can find it for you...",L_DontWorryFind,
- "Hey, you messed up. Deal with it.",L_Close;
-
-L_DontWorryFind:
- mes "[Aldred]";
- mes "\"Thank you " +strcharinfo(0)+"! Find it for me, pleeeease! Oh, and don't tell my parents that I lost their ring, okay?\"";
- set @state, 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_return:
- mes "[Aldred]";
- mes "\"Please, help me. If you find that ring, I think things will be a little better between me and my parents.\"";
- goto L_Close;
-
-
-L_return1:
- menu
- "Hi Aldred. I found the ring!",L_RingFoundHere;
-
-L_RingFoundHere:
- mes "[Aldred]";
- mes "\"Great! You're the best! Where did you find it?\"";
- next;
- menu
- "It was easy, I found it on one of the monsters outside.",L_RingMonstersOut;
-
-L_RingMonstersOut:
- mes "[Aldred]";
- mes "\"Ohh.. a monster? It must've been a nice monster since it returned it so easily to you!\"";
- next;
- menu
- "Err... kind of...",L_ErrKindOf;
-
-L_ErrKindOf:
- mes "[Aldred]";
- mes "\"Now, I'll put this thing back in its proper place... Thank you!\"";
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_return2:
- mes "[Aldred]";
- mes "\"Hi "+strcharinfo(0)+ "! I was thinking... you were sooo nice helping me find the ring... I think I should give you a gift, but I'm just a dead kid, I have nothing to give you!\"";
- next;
- menu
- "Don't worry, you don't need to give me anything...",L_GiveMeAnything;
-
-L_GiveMeAnything:
- mes "[Aldred]";
- mes "\"Are you sure? That's why you're so great! But hey, I have an idea. What if you talk to my parents about this thing? If it's not important or valuable, I don't think it would be a problem to let you keep it. And I really want to know if they're acting all weird because I lost it. Would you do this for me?\"";
- next;
- menu
- "Sounds interesting... But who are your parents?",L_WhereParents,
- "Bad idea, it will only bring more problems...",L_Close;
-
-L_WhereParents:
- set @state, 4;
- callsub S_Update_Mask;
- mes "[Aldred]";
- mes "\"Okay, great... But please, don't tell them about it. I don't want my parents to know I was playing with their stuff. My father is always carrying a lantern... I guess he's still afraid of the dark. My mother is the innkeeper. She's very beautiful and she's wearing a red dress.\"";
- next;
- mes "\"Don't forget to come back with the ring after you've talked to my parents.\"";
- message strcharinfo(0), "Aldred hands you the ring and you keep it in a small pocket on your backpack.";
- goto L_Close;
-
-L_return3:
- mes "[Aldred]";
- mes "\"I hope this ring doesn't mean a lot to my parents. That way you can keep it as a gift and I won't feel guilty about taking it.\"";
- goto L_Close;
-
-L_return4:
- menu
- "Hi, I talked to your parents.",L_TalkParents;
-
-L_TalkParents:
- mes "[Aldred]";
- mes "\"Really? What did my father say about it?\"";
- menu
- "He said it's just a cheap ring. And it doesn't belong to him.",L_JustCheapRing;
-
-L_JustCheapRing:
- mes "[Aldred]";
- mes "\"And what did my mother say?\"";
- menu
- "She said it was a gift, but she doesn't want it anymore.",L_GiftNoWant;
-
-L_GiftNoWant:
- mes "[Aldred]";
- mes "\"Really? A gift? And why doesn't she want it anymore?\"";
- next;
- menu
- "She said it makes her sad.",L_MakesHerSad;
-
-L_MakesHerSad:
- mes "\"Ohh... really? I don't like it when my mother gets sad... If this ring is making her feel bad, I should keep it away from her. \"";
- next;
- mes "\"Well, I guess you can keep it, but don't show it to my mother again, she's already very sad. But now I'm really curious. Who else would give a gift to my mother? There are so many strange things happening lately...\"";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_full;
- getitem "SimpleRing", 1;
- set @state, 7;
- callsub S_Update_Mask;
- mes "\"I'll tell my parents how great and helpful you are. Maybe they can even let you stay here at the inn for free!\"";
- goto L_Close;
-
-L_return5:
- mes "[Aldred]";
- mes "\"Thank you for all your help.\"";
- goto L_Close;
-
-L_full:
- mes "[Aldred]";
- mes "\"I dont think you can carry this ring... Your backpack is full! Throw something away and come back to get it.\"";
- goto L_Close;
-
-L_Close:
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @minLevel, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/026-2/diary.txt b/world/map/npc/026-2/diary.txt
deleted file mode 100644
index e5d18ad3..00000000
--- a/world/map/npc/026-2/diary.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// Author: Jenalya
-
-026-2,76,85,0|script|#Diary|400
-{
- set @npc_distance, 3;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- set @Graveyard_Inn_MASK, NIBBLE_0_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_0_SHIFT;
-
- set @reid, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- if (@reid >= 6) goto L_Diary;
- set @reid, 0;
- end;
-
-L_Diary:
- mes "You pull out Reid's diary from behind a huge poetry book. Towards the end of the diary, you find some entries which seem to be about Savaric.";
- next;
- mes "'Savaric keeps confusing me - one time he is so flirtatious and smooth, another time he is cold and unfriendly. What is it with this man?'";
- next;
- mes "'I need to stay away from him! It's not right, what I am feeling. It seems Hamond doesn't suspect anything about my feelings - but I know, it's just a matter of time. I need to come to my senses again!'";
- next;
- mes "'Oh, this chaotic situation between Savaric and me is getting serious. I was in his room today and he put his arms around me - I wanted to push him away, but I couldn't move. It was such a sweet feeling. I was torn between my brain saying 'No!' and my body wanting to feel his touch. Then, Aldred showed up and Savaric let me go.'";
- next;
- mes "The next part is blurred - it seems Reid was crying while writing it.";
- mes "'Savaric was talking again about leaving, because he can't find the mana seed. The thought that I would never see him again made me feel like I was falling into a dark abyss! I need to decide what to do. But Hamond - I owe him so much. And what about Aldred?'";
- next;
- mes "'We kissed each other - oh, I'm feeling so bad. I'm an unfaithful slut. But I want it to happen again, so badly.'";
- next;
- mes "'I told Savaric we have to stop with this - he was very understanding. But then he started to hold me again and I couldn't resist. I don't know what to do, at all! His touch on my waist, even through my clothes, made me feel more excited than Hamond's touch ever did.'";
- next;
- mes "'I don't know if Hamond suspects us - he was holding me tight all through the night, whispering declarations of love in my ears. Oh, I feel so bad.'";
- next;
- mes "'Hamond won't be here tomorrow night - he needs to visit our wine supplier to negotiate the prices. Savaric knows this. I'm feeling so excited - I should go with Hamond, but I told him I need to take care of the inn while he's away. Savaric... '";
- next;
- mes "This is the last entry.";
- if (@reid != 6)
- goto L_Close;
-
- set @reid, 7;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Close:
- set @reid, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@reid << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/026-2/door.txt b/world/map/npc/026-2/door.txt
deleted file mode 100644
index 12429a41..00000000
--- a/world/map/npc/026-2/door.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-026-2,77,92,0|script|#DoorIn|45,0,0
-{
- set @Graveyard_Inn_MASK, NIBBLE_0_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_0_SHIFT;
-
- set @reid, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- if (@reid >= 6) goto L_Warp;
- message strcharinfo(0), "The door is locked.";
- end;
-
-L_Warp:
- warp "026-2", 77, 89;
- set @reid, 0;
- end;
-}
-
-// TODO replace this with a plain warp
-026-2,77,90,0|script|#DoorOut-gyinn|45,0,0
-{
- warp "026-2", 77, 93;
- end;
-}
diff --git a/world/map/npc/026-2/eurni.txt b/world/map/npc/026-2/eurni.txt
deleted file mode 100644
index d20b64e8..00000000
--- a/world/map/npc/026-2/eurni.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-026-2,20,124,0|script|Eurni|136
-{
- set @halloween_npc_id, $@halloween_npc_eurni;
- callfunc "TrickOrTreat";
-
- mes "[Eurni the Surgeon]";
- mes "\"Are you tired of who you are?\"";
- next;
- mes "\"Would you be interested in changing your appearance?\"";
- next;
- callfunc "Barber";
- mes "[Eurni the Surgeon]";
- mes "\"Come back any time!\"";
- close;
-}
diff --git a/world/map/npc/026-2/golbenez.txt b/world/map/npc/026-2/golbenez.txt
deleted file mode 100644
index 6cf76de1..00000000
--- a/world/map/npc/026-2/golbenez.txt
+++ /dev/null
@@ -1,625 +0,0 @@
-// author: Jenalya
-// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
-// state 0: just talking, if lovers state is >= 2, go on
-// state 1: ignores you until lovers state is >= 3, player can ask about the inn. needs if woman >= 7, lover >= 3 and husband >= 4 to go on
-// state 2: shows reids memory if the player brings @ROTTENRAGS_AMOUNT rotten rags and an orange cake
-// state 3: shows hamonds memory if the player brings @UNDEADEAR_AMOUNT undead ears and a chocolate cake
-// state 4: shows savarics memory if the player brings @UNDEADEYE_AMOUNT undead eyes and an apple cake
-// state 5: shows all memories again if asked for them. if @lover == 6, player can ask for savarics soul
-// state 6: wants jackOsouls, random chance of 1/50 to success, small amount of exp for fail
-// state 7: done
-
-026-2,60,57,0|script|Golbenez|307
-{
- set @Graveyard_Inn_MASK, NIBBLE_4_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_4_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
- set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
-
- set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
-
- set @Graveyard_Inn_Lover_MASK, NIBBLE_1_MASK;
- set @Graveyard_Inn_Lover_SHIFT, NIBBLE_1_SHIFT;
-
- set @lover, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Lover_MASK) >> @Graveyard_Inn_Lover_SHIFT);
-
- set @Graveyard_Inn_Husband_MASK, NIBBLE_3_MASK;
- set @Graveyard_Inn_Husband_SHIFT, NIBBLE_3_SHIFT;
-
- set @husband, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Husband_MASK) >> @Graveyard_Inn_Husband_SHIFT);
-
- set @ROTTENRAGS_AMOUNT, 50;
- set @ROTTENRAGS_EXP, 100000;
- set @UNDEADEAR_AMOUNT, 15;
- set @UNDEADEAR_EXP, 150000;
- set @UNDEADEYE_AMOUNT, 10;
- set @UNDEADEYE_EXP, 150000;
- set @JACKOSOUL_EXP, 2000;
-
- if (@state >= 7) goto L_Done;
- if (@state == 6) goto L_Soul;
- if (@state == 5) goto L_All;
- if (@state == 4) goto L_Savaric;
- if (@state == 3) goto L_Hamond;
- if (@state == 2) goto L_Reid;
- if (@state == 1) goto L_Back;
-
- mes "[Golbenez]";
- mes "\"How do you like my place of leisure, mortal?\"";
- menu
- "What is this place? Why is it full of dead people?",L_WhatPlace,
- "You look different here. Nice horns.",L_Horns,
- "I'm enjoying myself, thanks for asking.",L_Close;
-
-L_WhatPlace:
- mes "[Golbenez]";
- mes "\"Mortal, this is beyond your comprehension. Do not worry about it and enjoy your time.\"";
-
- if (@lover < 2)
- goto L_Close;
- menu
- "I want to know. Try me.",L_WantKnow;
-
-L_WantKnow:
- mes "Golbenez takes a piercing look at you.";
- mes "[Golbenez]";
- mes "\"Fine.\"";
- next;
- mes "\"This place was a normal inn many, many of your years ago. Chance brought me here and it became one of my favorite playgrounds.\"";
- next;
- mes "Golbenez laughs in a way which really gives you the creeps.";
- next;
- mes "[Golbenez]";
- mes "\"Unfortunately, it got destroyed. I had no choice but to take the memories from the dead and recreate this place.\"";
- menu
- "What do you mean by 'playground?'",L_WantGoOn,
- "Recreate? What do you mean by that?",L_WantGoOn;
-
-L_WantGoOn:
- mes "[Golbenez]";
- mes "\"As I said, you do not understand. You are starting to bore me. Leave.\"";
-
- set @state, 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Back:
- if (@lover >= 3)
- goto L_Memory;
- mes "Golbenez ignores your presence.";
- goto L_Close;
-
-L_Memory:
- mes "[Golbenez]";
- mes "\"Mortal, you are back. Are you going to bore me with other stupid questions?\"";
- menu
- "I want to know what happened in the inn, before it was destroyed.",L_KnowDestroy,
- "Nevermind.",L_Close;
-
-L_KnowDestroy:
- if ((@woman >= 7)
- && (@lover >= 3)
- && (@husband >= 4))
- goto L_Detective;
- mes "[Golbenez]";
- mes "\"I was watching you play detective. I find it amusing. Play it a little longer and I may show you some of the memories from that time.\"";
- goto L_Close;
-
-L_Detective:
- mes "[Golbenez]";
- mes "\"Watching you digging into this dirty little love story of those foolish humans has certainly been amusing so far.\"";
- next;
- mes "\"I can show you all their memories. Would you like that?\"";
- next;
- mes "\"The only thing you would have to do is promise me your soul.\"";
- menu
- "No!",L_WantsSoul,
- "That's too expensive. Make another offer.",L_WantsSoul,
- "My soul?!",L_WantsSoul;
-
-L_WantsSoul:
- mes "Golbenez giggles, a strange and somewhat unnerving sound from such a being.";
- mes "[Golbenez]";
- mes "\"You should have seen your face. Really, mortals can be so funny.\"";
- next;
- mes "\"Very well, I will show you the birdbrained woman's memories if you bring me " + @ROTTENRAGS_AMOUNT + " Rotten Rags. And an Orange Cake.\"";
- set @state, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Reid:
- mes "[Golbenez]";
- mes "\"So, do you have the " + @ROTTENRAGS_AMOUNT + " Rotten Rags I want?\"";
- if (countitem("RottenRags") < @ROTTENRAGS_AMOUNT)
- menu
- "What do you need them for?",L_Why_Stuff,
- "I'm working on that.",L_Close;
- menu
- "Here you go.",L_GiveRags,
- "I'm working on that.",L_Close;
-
-L_GiveRags:
- if (countitem("OrangeCake") < 1)
- goto L_No_Cake;
- if (countitem("RottenRags") < @ROTTENRAGS_AMOUNT)
- goto L_Betray;
- delitem "RottenRags", @ROTTENRAGS_AMOUNT;
- delitem "OrangeCake", 1;
- getexp @ROTTENRAGS_EXP, 0;
-
- mes "[Golbenez]";
- mes "\"Very nice. I will show you the woman's memories of that night. Come closer.\"";
- next;
- mes "\"You hesitate but then take a step towards Golbenez. He grabs your head with his claw-like fingers.\"";
- next;
- callsub S_Reidsmem;
- set @state, 3;
- callsub S_Update_Mask;
- menu
- "Can I see it again?",L_CollectMem,
- "Wow, that was interesting.",L_CollectMem,
- "Why do you collect such personal memories?",L_CollectMem;
-
-L_CollectMem:
- mes "Golbenez throws you an amused look.";
- next;
- mes "[Golbenez]";
- mes "\"I will explain the deal to you. Once you have paid for a memory, you can come and see it again as often as you like. And I collect whatever memory I want to. Mortals are a constant source of amusement for me.\"";
- next;
- mes "\"I have more memories you might want to see. Bring me "+ @UNDEADEAR_AMOUNT + " Undead Ears. And a Chocolate Cake.\"";
- goto L_Close;
-
-L_Hamond:
- mes "[Golbenez]";
- mes "\"Ah, mortal. Do you have the " + @UNDEADEAR_AMOUNT + " Undead Ears I want?\"";
- if (countitem("UndeadEar") < @UNDEADEAR_AMOUNT)
- menu
- "I want to see Reid's memory again.",L_R_Again,
- "What will you do with them?",L_Why_Stuff,
- "Not yet.",L_Close;
- menu
- "I want to see Reid's memory again.",L_R_Again,
- "I have what you want.",L_GiveEar,
- "I'm working on that.",L_Close;
-
-L_GiveEar:
- if (countitem("ChocolateCake") < 1)
- goto L_No_Cake;
- if (countitem("UndeadEar") < @UNDEADEAR_AMOUNT)
- goto L_Betray;
- delitem "UndeadEar", @UNDEADEAR_AMOUNT;
- delitem "ChocolateCake", 1;
- getexp @UNDEADEAR_EXP, 0;
- mes "[Golbenez]";
- mes "\"Good. I will show you the memories of the dumb husband now. Come to me.\"";
- next;
- mes "You step closer to Golbenez and he holds your head again.";
- callsub S_Hamondsmem;
- set @state, 4;
- callsub S_Update_Mask;
- mes "[Golbenez]";
- mes "\"It is really interesting how illogical humans behave.\"";
- next;
- mes "\"And how predictable they are. I can see in your eyes that you want to know how this drama went on.\"";
- next;
- mes "\"Bring me " + @UNDEADEYE_AMOUNT + " Undead Eyes and an Apple Cake.\"";
- goto L_Close;
-
-L_Savaric:
- mes "[Golbenez]";
- mes "\"I hope you are bringing me the " + @UNDEADEYE_AMOUNT + " Undead Eyes I want.\"";
- if (countitem("UndeadEye") < @UNDEADEYE_AMOUNT)
- menu
- "I want to see Reid's memory again.",L_R_Again,
- "I want to see Hamond's memory again.",L_H_Again,
- "I really wonder what you do with the stuff I bring you.",L_Why_Stuff,
- "They're hard to get. I'm still working on that.",L_Close;
- menu
- "I want to see Reid's memory again.",L_R_Again,
- "I want to see Hamond's memory again.",L_H_Again,
- "I got what you want.",L_GiveEye,
- "I'm working on that.",L_Close;
-
-L_GiveEye:
- if (countitem("AppleCake") < 1)
- goto L_No_Cake;
- if (countitem("UndeadEye") < @UNDEADEYE_AMOUNT)
- goto L_Betray;
- delitem "UndeadEye", @UNDEADEYE_AMOUNT;
- delitem "AppleCake", 1;
- getexp @UNDEADEYE_EXP, 0;
- mes "[Golbenez]";
- mes "\"Very good. Now I will show you the pitiful mage's memory.\"";
- next;
- mes "He holds your head and everything goes black again.";
- callsub S_Savaricsmem;
- set @state, 5;
- callsub S_Update_Mask;
- mes "[Golbenez]";
- mes "\"Humans can be so amusing!\"";
- menu
- "YOU CRUEL MONSTER!",L_MonsterIdiots,
- "I agree. What a bunch of idiots.",L_MonsterIdiots;
-
-L_MonsterIdiots:
- mes "Golbenez's mouth twists into something resembling a smile.";
- mes "[Golbenez]";
- mes "\"Oh, thank you.\"";
- goto L_Close;
-
-L_All:
- if (@lover == 6)
- goto L_Negotiate;
- mes "[Golbenez]";
- mes "\"Did you come back to see the memories again?\"";
- menu
- "I want to see Reid's memory again.",L_R_Again,
- "I want to see Hamond's memory again.",L_H_Again,
- "I want to see Savaric's memory again.",L_S_Again,
- "Nevermind.",L_Close;
-
-L_Negotiate:
- mes "Golbenez's eyes are glowing greedily.";
- mes "[Golbenez]";
- mes "\"Did you come back to see the memories again? Or are you going to offer me another deal?\"";
- menu
- "I want Savaric's soul back.",L_WantSoulBack,
- "I want to see Reid's memory again.",L_R_Again,
- "I want to see Hamond's memory again.",L_H_Again,
- "I want to see Savaric's memory again.",L_S_Again,
- "Nevermind.",L_Close;
-
-L_WantSoulBack:
- mes "[Golbenez]";
- mes "\"Savaric's soul, yes. It is a pretty nice soul, you know. From a mage... no, even better... from a lovestruck mage. It is valuable.\"";
- next;
- mes "\"Why do you think it would be easy to get it back? Do you have anything of equal worth to offer?\"";
- next;
- menu
- "What about another cake?",L_Cake,
- "I'm not sure. What do you want?",L_GetSoul,
- "No.",L_Close;
-
-L_GetSoul:
- mes "[Golbenez]";
- mes "\"Bring me a soul of at least equal power to the mage's. I do not care about its origin.\"";
- set @state, 6;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Soul:
- mes "[Golbenez]";
- mes "\"So, did you get a soul for me?\"";
- goto L_Soul_Try;
-
-L_Soul_Try:
- if (countitem("Soul") < 1)
- menu
- "I'll go and get one.",L_Close;
- menu
- "What about this Soul?",L_TryThisSoul,
- "I'll go and try to find a soul.",L_Close;
-
-L_TryThisSoul:
- if (countitem("Soul") < 1)
- goto L_Betray;
- delitem "Soul", 1;
- set @soul, rand(50);
- if (@soul == 0)
- goto L_Soul_Success;
- mes "[Golbenez]";
- mes "\"No, this one is not as powerful as the mage's. Bring me another one of those.\"";
- getexp @JACKOSOUL_EXP, 0;
- goto L_Soul_Try;
-
-L_Soul_Success:
- mes "Golbenez suddenly gets excited.";
- mes "[Golbenez]";
- mes "\"Yes! This one is full of energy.\"";
- set @state, 7;
- callsub S_Update_Mask;
- next;
- mes "\"So be it, mortal. I will release Savaric's soul in exchange for this one.\"";
- goto L_Close;
-
-L_Done:
- mes "[Golbenez]";
- mes "\"I hope you enjoyed your little detective game. I certainly did.\"";
- menu
- "You're cruel.",L_Close,
- "I want to see Reid's memory again.",L_R_Again,
- "I want to see Hamond's memory again.",L_H_Again,
- "I want to see Savaric's memory again.",L_S_Again;
-
-L_Cake:
- mes "Golbenez laughs.";
- mes "[Golbenez]";
- mes "\"This is why I like you. Despite being human, you have a delightful sense of humor.\"";
- goto L_Close;
-
-L_S_Again:
- callsub S_Savaricsmem;
- mes "[Golbenez]";
- mes "\"What a fool he was, even for a human.\"";
- goto L_Close;
-
-L_R_Again:
- callsub S_Reidsmem;
- mes "\"This memory seems to excite you. Interesting.\"";
- goto L_Close;
-
-L_H_Again:
- callsub S_Hamondsmem;
- mes "[Golbenez]";
- mes "\"Humans can be so stupid, have you noticed that?\"";
- goto L_Close;
-
-L_Horns:
- mes "Golbenez bursts out with laughter.";
- next;
- mes "[Golbenez]";
- mes "\"Mortals! They never stop surprising me.\"";
- goto L_Close;
-
-L_Why_Stuff:
- mes "[Golbenez]";
- mes "\"That is not your concern.\"";
- goto L_Close;
-
-L_Betray:
- mes "[Golbenez]";
- mes "\"I am warning you, mortal. Do not try to betray me!\"";
- goto L_Close;
-
-L_No_Cake:
- mes "[Golbenez]";
- mes "\"Fool! You forgot my cake!\"";
- goto L_Close;
-
-L_Close:
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @Graveyard_Inn_Woman_MASK, 0;
- set @Graveyard_Inn_Woman_SHIFT, 0;
- set @woman, 0;
- set @Graveyard_Inn_Lover_MASK, 0;
- set @Graveyard_Inn_Lover_SHIFT, 0;
- set @lover, 0;
- set @Graveyard_Inn_Husband_MASK, 0;
- set @Graveyard_Inn_Husband_SHIFT, 0;
- set @husband, 0;
- set @ROTTENRAGS_AMOUNT, 0;
- set @ROTTENRAGS_EXP, 0;
- set @UNDEADEAR_AMOUNT, 0;
- set @UNDEADEAR_EXP, 0;
- set @UNDEADEYE_AMOUNT, 0;
- set @UNDEADEYE_EXP, 0;
- set @JACKOSOUL_EXP, 0;
- set @soul, 0;
- close;
-
-S_Reidsmem:
- mes "[Golbenez]";
- mes "\"I will send her memories into your brain now. Do not collapse or do something equally foolish.\"";
- next;
- mes "Everything turns black. Then, slowly, you see something. You're standing outside and watching an alive-looking Hamond ride away on a carriage drawn by a mouboo.\"";
- next;
- mes "\"You turn back and enter a nice looking building. It seems to be the inn.";
- next;
- mes "Obviously, you are watching Reid's memories through her eyes. You're getting excited. Or is it Reid who feels excited? You're not sure.";
- next;
- mes "You-Reid walks up the stairs and stops in front of the door you recognize as Savaric's room. You get a twisting feeling, something between desire, guilt and despair.";
- next;
- mes "It seems you're not only seeing Reid's memories, but also feeling them!";
- next;
- mes "Reid turns away from Savaric's door and walks to her rooms quickly. She is shivering. You feel her heart pounding.";
- next;
- mes "She enters the room and pulls a red dress out of a chest and changes into it. As you feel her heart pounding even faster, you recognize the dress as the one her ghost is wearing.";
- next;
- mes "She sits down on the bed holding her head in her hands.";
- next;
- mes "[Reid]";
- mes "\"This is wrong...\"";
- next;
- mes "Then she stands up and returns to Savaric's door. She hesitates again. Suddenly the door opens, Savaric standing there, smiling.";
- next;
- mes "[Savaric]";
- mes "\"I was hoping you would come.\"";
- next;
- mes "He reaches out with his hands and you feel Reid getting dizzy.";
- next;
- mes "You enter his room together. There is only one candle on the table, providing a dim light.";
- next;
- mes "[Reid]";
- mes "\"I- we- Savaric- this is not right- we shouldn't do this.\"";
- next;
- mes "[Savaric]";
- mes "\"But you came. Shh, don't worry. Let me hold you.\"";
- next;
- mes "Savaric puts his arms around Reid and leads her to the bed. You feel a rush of sexual desire.";
- next;
- mes "He starts to caress Reid's face with his lips, as his hands slip the dress from her shoulders.";
- next;
- mes "Reid's feelings are like a firestorm and it's hard for you to concentrate on what is happening.";
- next;
- mes "Savaric touches her body and - you suddenly stand in front of Golbenez again, wobbling around for a moment, before falling to the ground.";
- next;
- mes "[Golbenez]";
- mes "\"I told you not to collapse!\"";
- next;
- mes "\"It seems Reid's feelings were too strong for you to withstand.\"";
- next;
- mes "Golbenez grins.";
- next;
- mes "[Golbenez]";
- mes "\"But I guess you can imagine what followed.\"";
- next;
- return;
-
-S_Hamondsmem:
- mes "The darkness vanishes and you see the back of a mouboo pulling the carriage you're sitting on. Or better to say, Hamond is sitting on.";
- next;
- mes "You feel very, very nervous and worried.";
- next;
- mes "[Hamond]";
- mes "\"I shouldn't leave her alone with that debaucher. But she loves me. She won't give in to such a dandy. I believe in her. I trust her.\"";
- next;
- mes "The carriage reaches a river, but it seems the bridge is damaged. A group of people is standing on the riverside. There is one little boat, taking the people across, one by one.";
- next;
- mes "You feel a great surge of relief growing in Hamond's chest.";
- next;
- mes "He shakes the reins and turns his carriage around. Obviously this is a great excuse for him to return to Reid at once.";
- next;
- mes "When he returns to the inn, the sun is already low on the horizon. He tells the stableboy to take care of the mouboo and carriage, then rushes up the stairs heading to his and Reid's rooms. You can feel his heart pounding.";
- next;
- mes "He rips the door open and the room is empty. A cold feeling grows in his chest. He turns around and sees Reid standing in front of him, wearing her best dress. The red one which makes her look so beautiful - you feel a sharp sting in Hamonds heart.";
- next;
- mes "The dress is crumpled and seems to have been put on in haste. Her hair is in a disarray.";
- next;
- mes "[Reid]";
- mes "\"Hamond! What are you doing here? Why are you already back?\"";
- next;
- mes "You feel a burning rage growing in Hamond.";
- mes "[Hamond]";
- mes "\"You're not happy to see me, are you? Would you prefer me to run this inn for you but ignore your cockish behavior?!\"";
- next;
- mes "The shocked, painful, and obviously guilty look on Reid's face fills Hamond with a strange mixture of pain and gratification.";
- next;
- mes "He grabs her arm, pulls her into the room and slams the door shut behind them. You see a fearful look on Reid's face.";
- next;
- mes "[Reid]";
- mes "\"Hamond! Please, calm down!\"";
- next;
- mes "The feeling of broken trust and disappoinment seems to drive you... Hamond... crazy.";
- next;
- mes "Hamond slaps her across the face.";
- next;
- mes "[Hamond]";
- mes "\"You are MY WIFE! I'll teach you what that means!\"";
- next;
- mes "As Hamond grabs Reid roughly and holds her tight, you can smell her sweat and fear, but under that is the smell of another man! Hamond's vision goes red.";
- next;
- mes "[Hamond]";
- mes "\"You dirty slut! I did everything for you!\"";
- next;
- mes "Reid is struggling wildly to get out of Hamond's hold. She is surprisingly strong and together they fall onto the table.";
- next;
- mes "The next thing you see is a teapot smashing into Hamond's face. He stumbles back.";
- next;
- mes "You see Reid running to the door, where she pauses and throws a look over her shoulder. Then she runs out of the room.";
- next;
- mes "Her face was wet with tears, her lips bloody and her eye was already turning black.";
- next;
- mes "You feel shock and regret.";
- mes "[Hamond]";
- mes "\"What did I do? Reid... How could I ever hurt you?\"";
- next;
- mes "Your sight turns black and with your next blink you're standing in front of Golbenez again.";
- next;
- return;
-
-S_Savaricsmem:
- mes "As you gain your eyesight again, you find yourself bustling back and forth in Savaric's room.";
- next;
- mes "The mixture of feelings you sense is very confusing. Worry, guilt, craving and below all that a deep feeling of luck and satisfaction.";
- next;
- mes "Then you hear steps outside the room. Savaric turns to the door quickly, then Reid breaks into the room.";
- next;
- mes "She looks utterly tattered, her dress ripped and her lips bleeding. She has a black eye and she is sobbing uncontrollably. It takes Savaric less than a second to reach her and put his arms around her carefully.";
- next;
- mes "You feel a deep, cold anger.";
- next;
- mes "[Savaric]";
- mes "\"Reid, my love, what did he do to you? Please come and lay down.\"";
- next;
- mes "Savaric leads Reid to his bed and covers her gently. Then he holds and rocks her until she falls asleep. You notice Savaric is only wearing his underpants.";
- next;
- mes "After Reid's breathing has calmed down and her abused face looks peaceful again, he stands up and his cold burning anger comes back.";
- next;
- mes "[Savaric]";
- mes "\"I won't let him get away with that!\"";
- next;
- mes "Savaric pulls some things out of a chest and puts them on the table. He lights some candles and begins to mix together some powders and fluids. You can feel his concentration, but below that is a great anger keeping clear thoughts at bay.";
- next;
- mes "Savaric seems to be done with his magic ingredients and takes what he mixed together. You feel rising power inside of you. The moment you think you can't stand it anymore, the tension disappears and a purple light fills the room for a moment.";
- next;
- mes "Golbenez is standing in front of you.";
- next;
- mes "[Golbenez]";
- mes "\"Mortal! It was very rude of you to force me to this place with that spell - are you aware of the power you are playing around with?!\"";
- next;
- mes "Fear is rising inside of you, but also excitement accompanied by a feeling of power.";
- next;
- mes "[Savaric]";
- mes "\"I called you to get rid of the person who did this to this adorable woman.\"";
- mes "He points at Reid";
- next;
- mes "[Savaric]";
- mes "\"Tell me your price.\"";
- next;
- mes "Golbenez's behavior changes immediately and he suddenly seems much friendlier.";
- next;
- mes "[Golbenez]";
- mes "\"Ah, you are offering me a deal. That is something completely different. Let me see... I can free her from all pain and anything or anyone causing her trouble.\"";
- next;
- mes "You feel Savaric's heart pounding.";
- mes "[Savaric]";
- mes "\"Yes. That's what I want. I want her to be safe from any harm.\"";
- next;
- mes "Golbenez's face turns into a smile.";
- mes "[Golbenez]";
- mes "\"This requires some effort. It will have a remarkable price. I want your soul in exchange.\"";
- next;
- mes "The feeling of power disappears, giving place to uncertainty.";
- mes "[Savaric]";
- mes "\"My - soul? Can't it be something else?\"";
- next;
- mes "[Golbenez]";
- mes "\"Think about what you get! This woman will never feel any pain again!\"";
- next;
- mes "Savaric's hesitation vanishes.";
- mes "[Savaric]";
- mes "\"So be it. Take my soul and prevent Reid from feeling pain ever again.\"";
- next;
- mes "Golbenez's smile changes to an ugly grin filled with malice. He reaches out to Savaric and seems to pull something out of him. Suddenly, you feel very weak and empty.";
- next;
- mes "In the next moment, you're lying on the ground and see Golbenez raising his arms. You sense an unbelievable magic force - what is he doing?";
- next;
- mes "Undead enter the room and one of them walks to the bed and breaks Reid's neck with a quick movement. A dark and black feeling of despair rises inside of you.";
- next;
- mes "[Savaric]";
- mes "\"NO!! What are you doing?\"";
- next;
- mes "[Golbenez]";
- mes "\"She will never feel pain anymore. Just like everyone else in this inn - besides you, foolish mortal.\"";
- next;
- mes "Golbenez leaves the room and you feel Savaric giving in to his pain. He is lying on the floor and trying to understand what he did.";
- next;
- mes "After a few moments of only feeling his suffering, Savaric finally manages to stand up again. He can't stand to see Reid's dead body anymore and stumbles out of the room.";
- next;
- mes "But what you can see in the rest of the inn isn't able to ease the suffering you're feeling. The undead have slaughtered every person in the inn, leaving only Savaric alive.";
- next;
- mes "Savaric seems stunned by shock. He slowly returns to his room and kneels in front of the bed, taking Reids hand.";
- next;
- mes "[Savaric]";
- mes "\"Reid - I'm so sorry. My haughtiness was greater than my skills.\"";
- next;
- mes "The numb feeling gives way to a new feeling of determination.";
- next;
- mes "Savaric pulls a rope out of the chest beside the bed.";
- mes "[Savaric]";
- mes "\"Now there's only one thing left for me to do.\"";
- next;
- mes "Your vision turns black again and you find yourself standing in front of Golbenez.";
- return;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/026-2/gy_inn_shops.txt b/world/map/npc/026-2/gy_inn_shops.txt
deleted file mode 100644
index 3663d15f..00000000
--- a/world/map/npc/026-2/gy_inn_shops.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-// chef: function,
-// barmaid: function,
-// shopkeeper: multiples and function,
-// magic undead shop: function,
-// chief barman: function,
-// receptionist: function,
-// banker: function
-
-026-2,30,56,0|shop|Chef#graveyard|300,ZombieNachos:*1,LadyFingers:*1,JellAhh:*1,Snapple:*1
-026-2,38,30,0|shop|Estrilda|301,BeetleJuice:*1,GutBuster:*1,BloodWine:*1
-
-026-2,40,24,0|script|Edwin|309
-{
- set @npcname$, "Edwin";
-
- mes "[" + @npcname$ + "]";
- mes "\"This place is always busy.\"";
- next;
- mes "\"Be careful about bumping into the patrons, they might not take it kindly if you spill their drink.\"";
- close;
-}
-
-// Inn
-026-2,75,23,0|script|Barbara Grey|320
-{
- set @npcname$, "Barbara Grey";
- set @cost, 1000;
-
- mes "[" + @npcname$ + "]";
- mes "\"Don't be shy, darling.";
- mes "\"Come on in and have a nice long... long slumber...";
- next;
- callfunc "Inn";
- close;
-}
-
-026-2,31,119,0|shop|Leofwin|304,CactusDrink:*1,CactusPotion:*1,BugLeg:*1,SmallMushroom:*1,IronPotion:*1,ConcentrationPotion:*1,HardSpike:*1,DarkCrystal:*1,Root:*1,WispPowder:*1,SpectrePowder:*1,PoltergeistPowder:*1
-
-026-2,22,120,0|shop|Umfrey|302,BoneArrows:*1,ShockSweet:*1
-// Bank and Storage
-026-2,25,120,0|script|J.P. Morbid|321
-{
- set @npcname$, "J.P. Morbid";
- callfunc "Banker";
- close;
-}
diff --git a/world/map/npc/026-2/innkeeper.txt b/world/map/npc/026-2/innkeeper.txt
deleted file mode 100644
index b0ff338c..00000000
--- a/world/map/npc/026-2/innkeeper.txt
+++ /dev/null
@@ -1,472 +0,0 @@
-// author: Jenalya
-// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
-// state 0: first talk
-// state 1: if BaseLevel >= 85 player can ask about the inn and dead
-// state 2: reid knows now she's dead, can be asked about the ring
-// state 3: can be asked about ring, player offered help to find out what happened, she wants something to represent her sadness (frozen yeti tears)
-// state 4: can be asked about ring, can be asked about her life
-// state 5: if crying child quest is completed she tells about savaric, and her rooms on the first floor can be entered now to read her diary
-// state 6: tells the player to read her diary
-// state 7: set in diary, if player has seen all memories (@golbanez < 5), can tell her about it
-// state 8: can bring rubies or diamonds, if hamond and savaric told so, set their state
-// state 9: can bring rubies or diamonds, if hamond and savaric told so, set their state
-// state 10: she spoke with hamond and savaric, gives reward mylarin dust (needed for a crafting quest in thermin)
-// state 11: done, can ask about mylarin dust again
-
-026-2,35,84,0|script|Reid's Ghost|315
-{
- set @Graveyard_Inn_MASK, NIBBLE_0_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_0_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @Graveyard_Inn_Lover_MASK, NIBBLE_1_MASK;
- set @Graveyard_Inn_Lover_SHIFT, NIBBLE_1_SHIFT;
-
- set @lover, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Lover_MASK) >> @Graveyard_Inn_Lover_SHIFT);
-
- set @Graveyard_Inn_Kid_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_Kid_SHIFT, NIBBLE_2_SHIFT;
-
- set @kidstate, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Kid_MASK) >> @Graveyard_Inn_Kid_SHIFT);
-
- set @Graveyard_Inn_Husband_MASK, NIBBLE_3_MASK;
- set @Graveyard_Inn_Husband_SHIFT, NIBBLE_3_SHIFT;
-
- set @husband, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Husband_MASK) >> @Graveyard_Inn_Husband_SHIFT);
-
- set @Graveyard_Inn_Golbanez_MASK, NIBBLE_4_MASK;
- set @Graveyard_Inn_Golbanez_SHIFT, NIBBLE_4_SHIFT;
-
- set @golbanez, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golbanez_MASK) >> @Graveyard_Inn_Golbanez_SHIFT);
-
- set @minLevel, 85;
- set @YETI_TEAR_AMOUNT, 15;
- set @YETI_TEAR_EXP, 100000;
- set @DIAMOND_AMOUNT, 20; // caution, this value needs to be the same as in the lovers script!
- set @RUBY_AMOUNT, 25; // caution, this value needs to be the same as in the husbands script!
-
- if (@state >= 11) goto L_Happy;
- if (@state == 10) goto L_Thanks;
- if ((@state == 8) || (@state == 9)) goto L_Sorry;
- if (@state == 7) goto L_Savaric;
- if (@state == 6) goto L_Read_Diary;
- if (@state == 5) goto L_Check_Kid;
- if (@state == 4) goto L_Ask_Life;
- if (@state == 3) goto L_Bring_Tears;
- if (@state == 2) goto L_Offer_Help2;
- if (@state == 1) goto L_After_Welcome;
-
- mes "You see a dead woman lying on the floor and something that appears to be her ghost floating above her dead body.";
- next;
- mes "[Ghost]";
- mes "\"He- I - What - Oh -\"";
- mes "The womans ghost seems to be confused.";
- next;
- mes "[Ghost]";
- mes "Oh, I'm sorry. Welcome to Reid's Inn. My name is Reid, I am the innkeeper of this wonderful place of leisure. Please enjoy your visit here!";
- next;
-
- set @state, 1;
- callsub S_Update_Mask;
-
- goto L_Ask_Dead;
-
-L_After_Welcome:
- mes "[Reid's Ghost]";
- mes "\"Please enjoy yourself!\"";
- if (BaseLevel < @minLevel)
- goto L_Close;
- goto L_Ask_Dead;
-
-L_Ask_Dead:
- if (BaseLevel < 85)
- goto L_Close;
-
- menu
- "What happened to you?", L_Next,
- "Thank you, I'll surely enjoy my visit.", L_Close;
-
-L_Next:
- mes "[Reid's Ghost]";
- mes "\"What happened to me? What do you mean?\"";
- menu
- "Ahm, you don't look very well - actually, you look dead.",L_Next1,
- "You don't seem to be in the best condition.",L_Next1,
- "You are dead!",L_Next1;
-
-L_Next1:
- mes "Reid looks down at her body and turns even more pale, if this is possible.";
- next;
- mes "[Reid's Ghost]";
- mes "\"OH?\"";
- next;
- menu
- "I'm sorry. I didn't know you weren't aware of that.",L_Next2,
- "Yes - do you understand my question now?",L_Next2,
- "Shall I help you to find out what happened to you?", L_Offer_Help1;
-
-L_Next2:
- mes "[Reid's Ghost]";
- mes "\"I'm dead? But why? And why am I still here?\"";
- next;
- mes "She stares into space and doesn't seem to notice you anymore.";
- set @state, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Offer_Help2:
- mes "Reid's Ghost is still staring into space.";
-
- if (@kidstate == 5)
- menu
- "Shall I help you to find out what happened to you?", L_Offer_Help1,
- "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "I don't want to bother you.", L_Close;
- goto L_Skip1;
-
-L_Skip1:
- menu
- "Shall I help you to find out what happened to you?", L_Offer_Help1,
- "I don't want to bother you.", L_Close;
-
-L_Offer_Help1:
- mes "\"I.. I don't know you. Why should you help me?\"";
- next;
- mes "\"Bring me proof that you are serious. My life seems to have ended in a terrible and sad way, I can see it very clearly. If you want to help me, please bring me something that represents this immeasurable sadness I am feeling!\"";
-
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Bring_Tears:
- mes "[Reid's Ghost]";
- mes "\"Did you find something that can represent my sadness?\"";
- next;
-
- if ((@kidstate == 5)
- && countitem("FrozenYetiTear") > 0)
- menu
- "I found this frozen tear to represent your sadness.", L_Check_Tears,
- "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "I'm still searching.", L_Close;
- if (@kidstate == 5)
- menu
- "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "I'm still searching.", L_Close;
- if (countitem("FrozenYetiTear") > 0)
- menu
- "I found this frozen tear to represent your sadness.", L_Check_Tears,
- "I'm still searching.", L_Close;
- mes "\"You didn't? It seems you're not serious with your offer to help me.\"";
- goto L_Close;
-
-L_Check_Tears:
- if (countitem("FrozenYetiTear") < @YETI_TEAR_AMOUNT)
- goto L_Not_Enough_Tears;
- delitem "FrozenYetiTear", @YETI_TEAR_AMOUNT;
-
- getexp @YETI_TEAR_EXP, 0;
-
- set @state, 4;
- callsub S_Update_Mask;
-
- mes "[Reid's Ghost]";
- mes "\"These tears.. how they shimmer in the candle light. Yes, it seems you are serious about your offer. I think maybe you have the sensibility to help me find out the real meaning behind this terrible feeling.\"";
- next;
- goto L_Ask_Life;
-
-L_Ask_Life:
- mes "[Reid's Ghost]";
- mes "\"But how do you plan to help me?\"";
- next;
-
- if (@kidstate == 5)
- menu
- "Please tell me about your life. Maybe this will give us a clue about what happened.",L_Skip2,
- "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
- "I need to think about that.", L_Close;
- goto L_Skip2;
-
-L_Skip2:
- menu
- "Please tell me about your life. Maybe this will give us a clue about what happened.",L_Next4,
- "I need to think about that.", L_Close;
-
-L_Next4:
- mes "[Reid's Ghost]";
- mes "\"About my life? Well, ok.\"";
- next;
- mes "\"I'm the owner of this inn. I inherited it from my parents, who ran it while I was a child.\"";
- next;
- mes "\"My father - he was a very joyful man. But one day, when I was just ten years old, he had an accident while carrying a barrel of beer.\"";
- next;
- mes "\"The barrel smashed his legs and he wasn't able to walk anymore. He got very despondent about that and started to drink.\"";
- next;
- mes "\"My mother and I didn't know how to cheer him up, and he wouldn't listen to us. My mother tried her best to keep the inn running and I tried my best to help her, even though I was still a child.\"";
- next;
- mes "\"But a few years later, my mother lost her will to go on and the inn slowly went down the drain. Everything was dirty and we had less and less patrons.\"";
- next;
- mes "\"I don't blame my mother. She loved my father so much, she couldn't stand to see what was happening to him. When he died because of his drinking, she totally lost her will to live and just lay in bed and followed him.\"";
- next;
- mes "Reid seems to be tortured by her memories.";
- next;
- mes "\"That was a very hard time.\"";
- menu
- "Yes, yes, but what about your life shortly before you died?",L_Next5,
- "I can imagine. I'm very sorry for you",L_Next5;
-
-L_Next5:
- mes "She doesn't seem to pay much attention to what you say.";
- next;
- mes "\"But Hamond, my friend since I was a child, helped me in those bad times. We built up the inn again and we - we married.\"";
- next;
- mes "\"He was so kind and my only light in those dark times. And our little son Aldred gave me back my joy in life.\"";
- next;
- mes "\"Everything was peaceful and I thought I had found my place. But one day -\"";
- next;
-
- set @state, 5;
- callsub S_Update_Mask;
- goto L_Check_Kid;
-
-L_Check_Kid:
- if (@kidstate == 5)
- menu
- "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring;
-
- if (@kidstate < 7)
- goto L_Problem;
-
- mes "\"What I'm going to tell you is very personal, but your acts have shown me that you're a person I can trust. You kindly asked me about that ring you have found... and also, even my son, who is always so reserved with strangers, came to me and spent a long time telling me a lot of nice things about you. So I will tell you about my sad love.\"";
- next;
-
- mes "[Reid's Ghost]";
- mes "\"It began as a completely normal day. We were taking care of our overnight guests and preparing the inn for the evening rush.\"";
- next;
- mes "\"But that day, a very special patron checked in. His name was Savaric, and he was a student of magic. He came from far away to check some rumors about a legendary mana seed.\"";
- next;
- mes "Reid's Ghost has a completely enchanted look on her face.";
- next;
- mes "\"He really made me feel alive - when he was near, I was feeling like I never felt before. I started to search for reasons to be near him - I told myself that I liked him just because he was interesting, coming from so far away and being a mage.\"";
- next;
- mes "\"But I was lying to myself.\"";
- next;
- mes "\"I - oh, it is really hard to talk about this. Maybe - yes, I could let you read my diary. I'll give you the key to our rooms.\"";
- next;
- mes "She pulls a key out of her pocket as transparent as herself. As you try to grab it, your fingers just go through it.";
- next;
- mes "[Reid's Ghost]";
- mes "\"I keep forgetting! Please take the key out of my pocket.\"";
- mes "She is pointing at her dead body with a sad look on her face. You take the key.";
- next;
- mes "[Reid's Ghost]";
- mes "\"This is the key to our personal room, it is located at the very end of the corridor upstairs. You will find my diary in the bookshelf, hidden behind a book with poems. Hamond doesn't like poems.\"";
- next;
- mes "\"Please go and read it.\"";
-
- set @state, 6;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Read_Diary:
- mes "[Reid's Ghost]";
- mes "\"Please go into my room and read the diary. You will find my diary in the bookshelf, hidden behind a book with poems.\"";
- goto L_Close;
-
-L_Savaric:
- mes "[Reid's Ghost]";
- mes "\"Now you know about my recent past and... and my twisted feelings.\"";
- next;
- menu
- "Yes, I feel very sorry for you.",L_Next6,
- "Savaric seems to be a really hot guy, making you so compliant.",L_Tease;
-
-L_Next6:
- mes "[Reid's Ghost]";
- mes "\"Oh, thank you.\"";
- if (@golbanez < 5)
- menu
- "But I still didn't find out what happened. I'll return when I have news.",L_Close;
- menu
- "But I still didn't find out what happened. I'll return when I have news.",L_Close,
- "I found out what happened to you and this place. I'll tell you.",L_Next7;
-
-L_Next7:
- mes "You explain to her about Golbenez, Savaric and the memories you have seen.";
- next;
- mes "[Reid's Ghost]";
- mes "\"Oh, I always knew we weren't doing the right thing! But how could we have known it would end like this?\"";
- next;
- mes "\"I would never have expected Hamond to beat me - and Savaric... I trusted him with my life... And he carelessly wasted it. Mine and everyone else in the inn.\"";
- next;
- mes "\"I'm feeling hurt. And confused. Both Hamond and Savaric turned out not to be the persons I believed them to be.\"";
- set @state, 8;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Sorry:
- mes "[Reid's Ghost]";
- mes "\"Welcome back.\"";
- if ((@lover == 4)
- && (countitem("Diamond") >= @DIAMOND_AMOUNT)
- && (countitem("Ruby") >= @RUBY_AMOUNT)
- && (@husband == 5))
- menu
- "Savaric asked me to give you something.",L_Diamond,
- "Hamond sent me to bring you this.",L_Ruby,
- "Nevermind.",L_Close;
- if (@lover == 4 && (countitem("Diamond") >= @DIAMOND_AMOUNT))
- menu
- "Savaric asked me to give you something.",L_Diamond,
- "Nevermind.",L_Close;
- if (@husband == 5 && (countitem("Ruby") >= @RUBY_AMOUNT))
- menu
- "Hamond sent me to bring you this.",L_Ruby,
- "Nevermind.",L_Close;
- goto L_Close;
-
-L_Diamond:
- if (countitem("Diamond") < @DIAMOND_AMOUNT)
- goto L_Kidding;
- delitem "Diamond", @DIAMOND_AMOUNT;
- mes "You explain how Savaric feels and what the diamonds mean.";
- next;
- mes "[Reid's Ghost]";
- mes "\"Oh Savaric. I just can't be angry at him. Thanks for your help. I'll go to talk with him.\"";
- set @lover, 5;
- callsub S_Update_Mask_Lover;
- set @state, @state + 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Ruby:
- if (countitem("Ruby") < @RUBY_AMOUNT)
- goto L_Kidding;
- delitem "Ruby", @RUBY_AMOUNT;
- mes "You tell her about Hamonds feelings.";
- next;
- mes "[Reid's Ghost]";
- mes "\"I need to talk to him. Thanks for bringing me this.\"";
- set @husband, 6;
- callsub S_Update_Mask_Husband;
- set @state, @state + 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Kidding:
- mes "[Reid's Ghost]";
- mes "\"Are you kidding? You don't have the items you are talking about. This is not funny.\"";
- goto L_Tease;
-
-L_Tease:
- mes "[Reid's Ghost]";
- mes "\"Don't be mean! I never felt like that before.\"";
- goto L_Close;
-
-L_Thanks:
- mes "[Reid's Ghost]";
- mes "\"I'm so glad, now I know what happened and spoke to both Savaric and Hamond. Thank you so much. Please take this.\"";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- getitem "MylarinDust", 1;
- set @state, 11;
- callsub S_Update_Mask;
- next;
- goto L_Mylarin;
-
-L_Mylarin:
- mes "[Reid's Ghost]";
- mes "\"This is called mylarin dust. My mother gave it to me when my father had his accident. She said it is very valuable.\"";
- next;
- mes "\"I'm not sure what it is used for, but I remember her saying something about some special crafting tradition which uses it to make really strong armor.\"";
- next;
- mes "\"Maybe you should try to find someone who can use it.\"";
- goto L_Close;
-
-L_Happy:
- mes "[Reid's Ghost]";
- mes "\"Thank you for all you've done.\"";
- menu
- "Can you tell me again about the powder you gave me?",L_Mylarin,
- "I'm glad I could help.",L_Close;
-
-L_Not_Enough_Tears:
- mes "[Reid's Ghost]";
- set @tears, countitem("FrozenYetiTear");
- if (@tears == 1)
- mes "\"This is beautiful! But one of them isn't enough to represent my sadness.\"";
- if (@tears > 1)
- mes "\"This is beautiful! But " + @tears + " of them aren't enough to represent my sadness.\"";
- goto L_Close;
-
-L_Problem:
- mes "[Reid's Ghost]";
- mes "\"What I have to tell is very personal. I'm not sure if I want to tell you. I know you helped me already and showed me you are a sensitive, but I barely know you. I am sorry, but I have to think a little bit more. Maybe later, when I know you better, I can tell you more about it. \"";
- goto L_Close;
-
-L_Ring:
- mes "[Reid's Ghost]";
- mes "\"Oh, this - I - it's mine. It was a present from a very precious person.\"";
- next;
- mes "She reaches out to take the ring, but it just go through her fingers. She looks sad.";
- next;
- mes "\"Ah, I forgot again. It pains me not being able to wear it. Please, take it with you, I don't want it anymore. It hurts too much.\"";
- set @kidstate, 6;
- callsub S_Update_Mask_Kid;
- goto L_Close;
-
-L_Full_Inv:
- mes "[Reid's Ghost]";
- mes "\"Dear, you're carrying so much stuff, you can't take my present. Come back later to take it.\"";
- goto L_Close;
-
-L_Close:
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @Graveyard_Inn_Lover_MASK, 0;
- set @Graveyard_Inn_Lover_SHIFT, 0;
- set @lover, 0;
- set @Graveyard_Inn_Kid_MASK, 0;
- set @Graveyard_Inn_Kid_SHIFT, 0;
- set @kidstate, 0;
- set @Graveyard_Inn_Husband_MASK, 0;
- set @Graveyard_Inn_Husband_SHIFT, 0;
- set @husband, 0;
- set @Graveyard_Inn_Golbanez_MASK, 0;
- set @Graveyard_Inn_Golbanez_SHIFT, 0;
- set @golbanez, 0;
- set @minLevel, 0;
- set @YETI_TEAR_AMOUNT, 0;
- set @YETI_TEAR_EXP, 0;
- set @DIAMOND_AMOUNT, 0;
- set @RUBY_AMOUNT, 0;
- set @tears, 0;
- close;
-
-S_Update_Mask_Kid:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Kid_MASK))
- | (@kidstate << @Graveyard_Inn_Kid_SHIFT);
- return;
-
-S_Update_Mask_Husband:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Husband_MASK))
- | (@husband << @Graveyard_Inn_Husband_SHIFT);
- return;
-
-S_Update_Mask_Lover:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Lover_MASK))
- | (@lover << @Graveyard_Inn_Lover_SHIFT);
- return;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/026-2/lover.txt b/world/map/npc/026-2/lover.txt
deleted file mode 100644
index f7d84ed5..00000000
--- a/world/map/npc/026-2/lover.txt
+++ /dev/null
@@ -1,318 +0,0 @@
-// author: Jenalya
-// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
-// state 0: if BaseLevel >= 85, tells he want dark crystals
-// state 1: needs @CRYSTAL_AMOUNT dark crystals to go on, tells the player to search the inn for source of magic (Golbenez)
-// state 2: if the player has talked to Golbenez, he tells you to negotiate with him to find out what happened
-// state 3: when player has seen all memories (@golbanez < 5), telling Savaric what happened. he asks the player to bring reid @DIAMOND_AMOUNT diamonds
-// state 4: waiting for reid
-// state 5: is set in reid, he thanks for help and asks to negotiate with golbanez for his soul
-// state 6: waiting for youl, if @golbanez >= 7 got it, giving sorcerer robe
-// state 7: done
-
-026-2,80,31,0|script|Savaric|317
-{
- set @Graveyard_Inn_MASK, NIBBLE_1_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_1_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
- set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
-
- set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
-
- set @Graveyard_Inn_Golbenez_MASK, NIBBLE_4_MASK;
- set @Graveyard_Inn_Golbenez_SHIFT, NIBBLE_4_SHIFT;
-
- set @golbanez, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golbenez_MASK) >> @Graveyard_Inn_Golbenez_SHIFT);
-
- set @minLevel, 85;
- set @CRYSTAL_AMOUNT, 500;
- set @CRYSTAL_EXP, 200000;
- set @CRYSTAL_EXTRA_EXP, 100;
- set @CRYSTAL_MAX, 2000;
- set @DIAMOND_AMOUNT, 20; // caution, this value needs to be the same as in the innkeepers script!
-
- if (@state >= 7) goto L_Have_Soul;
- if (@state == 6) goto L_Want_Soul;
- if (@state == 5) goto L_Apologize;
- if (@state == 4) goto L_Waiting;
- if (@state == 3) goto L_Golb;
- if (@state == 2) goto L_News;
- if (@state == 1) goto L_Crystals;
-
- mes "You see a dead man hanging. This place is creepy!";
- next;
- if (BaseLevel < @minLevel) goto L_Close;
- mes "Suddenly the man opens his eyes and looks at you.";
- next;
- mes "[Hanged Man]";
- mes "\"Oh, hello. Nice to see you - I seem to be dead, but I don't know why and why I'm still consciousness. This is very interesting.\"";
- menu
- "INTERESTING? Are you crazy?",L_Next;
-
-L_Next:
- mes "[Hanged Man]";
- mes "\"Well, as you mention it, it is quite annoying and uncomfortable. Would you mind helping me down to the floor?\"";
- next;
- mes "You take a step towards him, but some invisible force holds you back.";
- next;
- mes "[Hanged Man]";
- mes "\"Oh, someone is holding you back with magic! I sense a really dark and mighty power. What has happened!?\"";
- next;
- mes "\"Can I ask you for a favor? Can you bring me lots of Dark Crystals? You might need to ask a dark mage for it. I want to try to break the barrier.\"";
- next;
- mes "\"I'll need... well, at least " + @CRYSTAL_AMOUNT + ". But if you have more, I can use extras!\"";
- set @state, 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Crystals:
- mes "[Hanged Man]";
- mes "\"Ah, you're back! Did you get the Dark Crystals?\"";
-
- if (countitem("DarkCrystal") == 0)
- menu
- "Not yet.", L_Close;
-
- if (countitem("DarkCrystal") < @CRYSTAL_AMOUNT)
- goto L_Not_Enough_Crystals;
-
- delitem "DarkCrystal", @CRYSTAL_AMOUNT;
- getexp @CRYSTAL_EXP, 0;
- next;
- mes "\"Oh, I can feel them! Please lay them down on the floor.\"";
- next;
- mes "You lay "+ @CRYSTAL_AMOUNT + " dark crystals down on the floor and step back, nervously expecting the coming.";
- next;
- if (countitem("DarkCrystal") == 0) goto L_Skip;
- mes "[Hanged Man]";
- mes "\"You have more of them, haven't you? It will work better if you give them to me too.\"";
- menu
- "Ok, here you go.",L_Next1,
- "I prefer to keep them.",L_Skip;
-
-L_Next1:
- set @crystal, countitem("DarkCrystal");
- if (@crystal > @CRYSTAL_MAX)
- set @crystal, @CRYSTAL_MAX;
- delitem "DarkCrystal", @crystal;
- getexp @crystal*@CRYSTAL_EXTRA_EXP, 0;
- goto L_Skip;
-
-L_Skip:
- mes "[Hanged Man]";
- mes "\"Well, let's start now.\"";
- next;
- mes "The hanged man seems very concentrated now, which looks absurd with him hanging there.";
- next;
- mes "The dark crystals start to glow and buzz. You take another step back.";
- next;
- mes "The buzzing gets louder and louder, so you can't hear a word the hanged man is saying now.";
- next;
- set Hp, 5;
- mes "The crystals explode and hit you!";
- next;
- mes "You fall down on the floor and blink frantically to regain your eyesight.";
- next;
- mes "[Hanged Man]";
- mes "\"Hello? You're ok? I'm sorry, something went wrong. It seems, not only is there a magical barrier, but also my manaflow is blocked. I don't know if this is because I'm dead or part of the barrier spell.\"";
- next;
- mes "\"I never was dead before, so I can't be sure. But I was able to access my magic - it just got out of control at the critical moment.\"";
- next;
- mes "\"This is fascinating!\"";
- menu
- "Ok, you are crazy!",L_Next2,
- "Yes, it is very fascinating to be blown up!",L_Next2,
- "I NEARLY DIED! AND YOU THINK THIS IS FASCINATING?!",L_Next2;
-
-L_Next2:
- mes "[Hanged Man]";
- mes "\"I sometimes forget the fact that not everybody is fascinated by the riddles of magic. Please forgive me.\"";
- next;
- mes "\"And I even didn't introduce myself! I am very sorry for my rude behavior!\"";
- next;
- mes "\"My name is Savaric, first apprentice of the Great Demon Summoner Ymbert.\"";
- next;
- mes "\"If you can forgive me my behaviour, may I ask you for another favor? Can you please search for someone or something in this inn that could be the source of this dark magic?\"";
- set @state, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_News:
- mes "[Savaric]";
- mes "\"Welcome back. Did you find a possible source for the dark magic?\"";
- if ((@woman < 6)
- && (@golbanez == 0))
- menu
- "Not yet, I'm still searching.",L_Close;
- if ((@woman < 6)
- && (@golbanez > 0))
- menu
- "Yes, let me tell you.",L_Golbenez,
- "I don't think so.",L_Close;
- if ((@woman >= 6)
- && (@golbanez == 0))
- menu
- "Can you tell me about your relationship to Reid?",L_Reid,
- "Not yet, I'm still searching.",L_Close;
- if ((@woman >= 6)
- && (@golbanez >= 0))
- menu
- "Can you tell me about your relationship to Reid?",L_Reid,
- "Yes, let me tell you.",L_Golbenez,
- "I don't think so.",L_Close;
- goto L_Golbenez;
-
-L_Golbenez:
- mes "You explain how you came to the inn and what Golbenez said to you.";
- next;
- mes "[Savaric]";
- mes "\"This... this is very disturbing news. Playground he said? Mh.. \"";
- next;
- mes "\"Savaric seems to be completely absorbed in his thoughts.\"";
- menu
- "Hello? Are you still there?",L_Next3,
- "Excuse me, I don't want to interrupt you, but can you explain to me what's going on? I'm confused.",L_Next3,
- "Hey! I'm talking with you!",L_Next3;
-
-L_Next3:
- mes "Savaric winces.";
- next;
- mes "\"Oh, right - I was just thinking. It makes me feel uncomfortable to hear about Golbenez being involved in this.\"";
- next;
- mes "\"I told you I'm the apprentice of a demon summoner, remember? Well, this includes learning about the astral beings in this world.\"";
- next;
- mes "\"And Golbenez - he is a very powerful being, a Demi-God, with a very questionable sense of humor. He was worshipped by a group of cultists some hundred years ago - uhm, some hundred years ago from my lifetime, I mean.\"";
- next;
- mes "\"But most of his adherents died when he thought it would be funny to test their loyality by sending them on a journey over the sea to a paradise island he promised them - of course, there was no such island.\"";
- next;
- mes "\"Maybe now you understand what I mean about a questionable sense of humor.\"";
- next;
- mes "\"But on the other hand, he can grant great power to those who are capable of dealing with him and who offer him enough for his service. Trying to do that would be a risky undertaking in any case.\"";
- next;
- mes "\"He told you this inn was one of his favorite playgrounds - so it seems he was playing one of his evil games with the people in this inn. And now, he resurrected our memories to this parody of life!\"";
- next;
- mes "\"" + strcharinfo(0) + "! I need your help again! Please return to Golbenez and try to get out of him what was happening here. But be careful when negotiating.. he will demand a service in return.\"";
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Golb:
- mes "[Savaric]";
- mes "\"Good to see you back my friend. What did you find out?\"";
- if (@golbanez < 5)
- menu
- "I'm still working on doing all the stuff Golbenez wants me to do.",L_Close;
- menu
- "Now I know what happened. I'll tell you.",L_Next4,
- "I'm sorry to tell you, but this was all your fault.",L_Next4;
-
-L_Next4:
- mes "You tell Savaric about what Golbenez showed to you.";
- next;
- mes "[Savaric]";
- mes "\"I.. I can't believe.. My master told me, I need to be careful because of my temper - but I never thought it would lead me to make such a terrible mistake. Oh, Reid - and all the people in the inn! What have I done?!\"";
- next;
- mes "He seems pained by his guilt.";
- next;
- mes "[Savaric]";
- mes "\"" + strcharinfo(0) + ", please, can you go to Reid and tell her about what I've done? And then ask her if she will ever be able to forgive me?\"";
- next;
- mes "\"But wait. It is not enough just to ask for forgiveness. Please, can you bring her " + @DIAMOND_AMOUNT + " Diamonds? They symbolize my pure feelings for her.\"";
- set @state, 4;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Waiting:
- mes "[Savaric]";
- mes "\"Have you already brought the Diamonds to Reid?\"";
- goto L_Close;
-
-L_Apologize:
- mes "[Savaric]";
- mes "\"Oh thank you! I thank you so much! Reid came here to talk to me.\"";
- next;
- mes "\"She forgave me! I'm so happy!\"";
- next;
- mes "\"You did so much for me, can I ask you for one last favor?\"";
- next;
- mes "\"Golbenez took my soul and I want it back. You were very clever with how you negotiated with him so far. Could you get my soul back for me?\"";
- set @state, 6;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Want_Soul:
- if (@golbanez >= 7)
- goto L_Soul;
- mes "[Savaric]";
- mes "\"Welcome back! Are you still working on getting my soul back?\"";
- menu
- "I'm doing my best.",L_NextEnd,
- "Yes, but it isn't easy.",L_NextEnd;
-
-L_NextEnd:
- mes "[Savaric]";
- mes "\"Thank you so much! I'm counting on you!\"";
- goto L_Close;
-
-L_Soul:
- mes "[Savaric]";
- mes "\"My soul came back! Oh thank you!\"";
- next;
- mes "\"Please take this as a symbol of my gratitude.\"";
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- getitem "SorcererRed", 1;
- set @state, 7;
- callsub S_Update_Mask;
- mes "\"This is what mages and their apprentices wore when I lived. It is white because I wasn't a master yet.\"";
- next;
- mes "\"But I guess the old traditions have changed since then.\"";
- goto L_Close;
-
-L_Have_Soul:
- mes "[Savaric]";
- mes "\"I'll be in your debt forever. Thank you so much.\"";
- goto L_Close;
-
-L_Reid:
- mes "[Savaric]";
- mes "\"Relationship? Well, she is the innkeeper of this inn and I'm a patron. There is nothing more to say about this.\"";
- goto L_Close;
-
-L_Not_Enough_Crystals:
- mes "It seems you managed to get some, but not enough. Can you bring me more?";
- goto L_Close;
-
-L_Full_Inv:
- mes "[Savaric]";
- mes "\"Oh, you can't carry anything more. Come back when you can take it.\"";
- goto L_Close;
-
-L_Close:
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @Graveyard_Inn_Woman_MASK, 0;
- set @Graveyard_Inn_Woman_SHIFT, 0;
- set @woman, 0;
- set @Graveyard_Inn_Golbenez_MASK, 0;
- set @Graveyard_Inn_Golbenez_SHIFT, 0;
- set @golbanez, 0;
- set @minLevel, 0;
- set @CRYSTAL_AMOUNT, 0;
- set @CRYSTAL_EXP, 0;
- set @CRYSTAL_EXTRA_EXP, 0;
- set @CRYSTAL_MAX, 0;
- set @DIAMOND_AMOUNT, 0;
- set @crystal, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/026-2/mapflags.txt b/world/map/npc/026-2/mapflags.txt
deleted file mode 100644
index ced669aa..00000000
--- a/world/map/npc/026-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-026-2|mapflag|resave|026-1,28,35
-026-2|mapflag|town
diff --git a/world/map/npc/026-2/testnpcs.txt b/world/map/npc/026-2/testnpcs.txt
deleted file mode 100644
index 8bac0ab0..00000000
--- a/world/map/npc/026-2/testnpcs.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-//several NPCs in the Reid's Inn
-
-026-2,64,32,0|script|Lovers|303
-{
- mes "You see a man and a woman holding each other very tight.";
- next;
- mes "They are kissing and whispering things to each other you can't hear.";
- next;
- mes "Now the woman giggles. They don't notice you.";
- next;
- mes "Maybe it's better not to bother them.";
- close;
-}
-
-026-2,34,59,0|script|Archibald|306
-{
-//the broken grammar is intentional
- mes "[Archibald]";
- mes "\"Me need to prepare the food. Me helping the chef cook.\"";
- next;
- mes "\"Person doesn't disturb me when me is making the food\"";
- close;
-}
-
-026-2,41,30,0|script|Darnel|308
-{
- set @drunker, rand(4);
- if (@drunker == 0) goto L_0;
- if (@drunker == 1) goto L_1;
- if (@drunker == 2) goto L_2;
- if (@drunker == 3) goto L_3;
- end;
-L_0:
- mes "[Darnel]";
- mes "\"zzzZZZzzz...\"";
- goto L_Close;
-L_1:
- mes "[Darnel]";
- mes "\"Ish that a Zzombee?...\"";
- goto L_Close;
-L_2:
- mes "[Darnel]";
- mes "\"Auuu... Hiccup... Don't byte mee... \"";
- goto L_Close;
-L_3:
- mes "[Darnel]";
- mes "\"Moar Bearr...Pleash!\"";
- goto L_Close;
-
-L_Close:
- set @drunker, 0;
- close;
-}
-
-026-2,33,29,0|script|Nigel|312
-{
- mes "[Nigel]";
- mes "\"Ohh... My head is killing me! I have to stop "
- + "drinking too much or I will lose my job... But "
- + "being a waiter... oh I can't resist a drink or two!\"";
- close;
-}
-
diff --git a/world/map/npc/026-2/werewolf.txt b/world/map/npc/026-2/werewolf.txt
deleted file mode 100644
index 79701dbb..00000000
--- a/world/map/npc/026-2/werewolf.txt
+++ /dev/null
@@ -1,179 +0,0 @@
-// author: Jenalya
-
-026-2,30,23,0|script|Wolfgang|305
-{
- set @Graveyard_Inn_MASK, NIBBLE_5_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_5_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- set @ANIMALBONES_AMOUNT, 30;
- set @ANIMALBONES_EXP, 40000;
- set @money, 1000;
- set @minLevel, 80;
-
- if (@state > 1) goto L_Happy;
- if (@state == 1) goto L_Bones;
-
- mes "[Wolfgang]";
- mes "\"What a nice place here, isn't it?\"";
- next;
- mes "\"Just the stuff they call 'food' in here is awful, bah.\"";
- if (BaseLevel < @minLevel)
- goto L_Close;
- next;
- mes "\"I like bones from big animals, the best would be with some raw flesh on it. But just the bones are fine too.\"";
- next;
- mes "\"Can you bring me " + @ANIMALBONES_AMOUNT + " of them?\"";
- set @state, 1;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Bones:
- mes "[Wolfgang]";
- mes "\"Do you have " + @ANIMALBONES_AMOUNT + " bones of an animal for me?\"";
- next;
- if ((countitem("Bone") > 0)
- && (countitem("AnimalBones") >= @ANIMALBONES_AMOUNT))
- menu
- "Yes, here they are.",L_Bring,
- "What about this normal bone?",L_Human,
- "Not yet.",L_Close;
- if (countitem("Bone") > 0)
- menu
- "What about this normal bone?",L_Human,
- "Not yet.",L_Close;
- if (countitem("AnimalBones") >= @ANIMALBONES_AMOUNT)
- menu
- "Yes, here they are.",L_Bring,
- "Not yet.",L_Close;
- menu
- "Not yet.",L_Close;
-
-L_Bring:
- if (countitem("AnimalBones") < @ANIMALBONES_AMOUNT)
- goto L_Not_Enough;
- delitem "AnimalBones", @ANIMALBONES_AMOUNT;
- getexp @ANIMALBONES_EXP, 0;
- mes "[Wolfgang]";
- mes "\"Ah! Wonderful! Thank you.\"";
- set @state, 2;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Human:
- mes "[Wolfgang]";
- mes "\"What?! That's a humans bone! I don't eat humans. That brings only trouble.\"";
- next;
- mes "\"Besides, from that I heard, they taste bad.\"";
- goto L_Close;
-
-L_Not_Enough:
- mes "[Wolfgang]";
- mes "\"Are you trying to kid me? I can count.\"";
- goto L_Close;
-
-L_Happy:
- mes "You see the werewolf happily crunching the bones you brought him.";
- mes "[Wolfgang]";
- mes "\"Delicious. Thanks again.\"";
- next;
- mes "\"By the way... would you be interested in a little round of blackjack?\"";
- mes "He pulls a deck of cards out of his pocket.";
- next;
- mes "[Wolfgang]";
- mes "\"You will need " + @money + " GP.\"";
- menu
- "Sure, why not?",L_Game,
- "No, thanks.",L_Close;
-
-//The game mechanics is copied from casino.txt
-L_Game:
- if (Zeny < @money)
- goto L_No_Money;
- mes "[Wolfgang]";
- mes "\"Very nice. Let's start.\"";
- mes "He shuffles the cards.";
- next;
- set Zeny, Zeny - @money;
- set @croupier, rand(0, 4);
- set @croupier, @croupier + 17;
- set @player, rand(4, 21);
- mes "\"You got " + @player + " with your cards.";
- if (@player == 21)
- goto L_End;
- mes "Do you want another card?\"";
- next;
- menu
- "Yes.", L_Another,
- "No.", L_End;
-
-L_Another:
- set @tempace, rand(2, 11);
- if (@tempace == 11)
- goto L_Ace;
- set @player, @player + @tempace;
- if (@player > 21)
- goto L_Lost;
- if (@player == 21)
- goto L_End;
- mes "\"You got " + @player + " with your cards.";
- mes "Do you want another card?\"";
- next;
- menu
- "Yes", L_Another,
- "No", L_End;
-
-L_End:
- if (@player <= @croupier)
- goto L_Lost;
- mes "\"You won! Hrm, here is your money.\"";
- set Zeny, Zeny + (3 * @money);
- goto L_Close;
-
-L_No_Money:
- mes "\"You need at least " + @money + " GP.\"";
- goto L_Close;
-
-L_Lost:
- mes "[Wolfgang]";
- mes "\"Fine! I won!";
- mes "You got " + @player + " with your cards.";
- mes "I had " + @croupier + ".\"";
- goto L_Close;
-
-L_Ace:
- set @player, @player + 11;
- if (@player > 21)
- set @player, @player - 10;
- if (@player > 21)
- goto L_Lost;
- if (@player == 21)
- goto L_End;
- mes "You got " + @player + " with your cards.";
- mes "Do you want another card?";
- next;
- menu
- "Yes", L_Another,
- "No", L_End;
-
-L_Close:
- set @Graveyard_Inn_MASK, 0;
- set @Graveyard_Inn_SHIFT, 0;
- set @state, 0;
- set @ANIMALBONES_AMOUNT, 0;
- set @ANIMALBONES_EXP, 0;
- set @money, 0;
- set @minLevel, 0;
-
- set @croupier, 0;
- set @player, 0;
- set @tempace, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn,
- (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
- | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/027-1/_import.txt b/world/map/npc/027-1/_import.txt
deleted file mode 100644
index 7a50aaf6..00000000
--- a/world/map/npc/027-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 027-1: Graveyard
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-1
-npc: npc/027-1/_mobs.txt
-npc: npc/027-1/_nodes.txt
-npc: npc/027-1/_warps.txt
-npc: npc/027-1/crypt.txt
-npc: npc/027-1/graves.txt
-npc: npc/027-1/mapflags.txt
diff --git a/world/map/npc/027-1/_mobs.txt b/world/map/npc/027-1/_mobs.txt
deleted file mode 100644
index 4b422ea6..00000000
--- a/world/map/npc/027-1/_mobs.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Graveyard mobs
-
-027-1,81,91,95,27|monster|Poltergeist|1047,4,900000ms,60000ms
-027-1,81,91,97,25|monster|Spectre|1042,4,900000ms,60000ms
-027-1,81,91,99,23|monster|Wisp|1040,4,900000ms,60000ms
-027-1,37,64,32,20|monster|Skeleton|1043,2,60000ms,8000ms
-027-1,37,64,32,20|monster|LadySkeleton|1044,2,60000ms,8000ms
-027-1,71,41,31,22|monster|Skeleton|1043,1,175000ms,20000ms
-027-1,71,41,31,22|monster|LadySkeleton|1044,1,175000ms,20000ms
-027-1,37,41,33,22|monster|Skeleton|1043,4,180000ms,20000ms
-027-1,37,41,33,22|monster|LadySkeleton|1044,4,180000ms,20000ms
-027-1,105,40,32,21|monster|Skeleton|1043,2,35000ms,20000ms
-027-1,105,40,32,21|monster|LadySkeleton|1044,3,33000ms,25000ms
-027-1,70,64,31,20|monster|Skeleton|1043,1,60000ms,8000ms
-027-1,70,64,31,21|monster|LadySkeleton|1044,1,60000ms,8000ms
-027-1,104,64,31,20|monster|Skeleton|1043,2,60000ms,8000ms
-027-1,104,64,31,21|monster|LadySkeleton|1044,2,60000ms,8000ms
-027-1,70,40,100,20|monster|VampireBat|1066,15,100000ms,30000ms
diff --git a/world/map/npc/027-1/_nodes.txt b/world/map/npc/027-1/_nodes.txt
deleted file mode 100644
index 46a78ab8..00000000
--- a/world/map/npc/027-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Graveyard nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-1/_warps.txt b/world/map/npc/027-1/_warps.txt
deleted file mode 100644
index 9922f47f..00000000
--- a/world/map/npc/027-1/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Graveyard warps
-
-027-1,88,84|warp|-1,-1,027-2,46,33
-027-1,63,106|warp|-1,-1,026-1,63,17
diff --git a/world/map/npc/027-1/crypt.txt b/world/map/npc/027-1/crypt.txt
deleted file mode 100644
index 2a67ff24..00000000
--- a/world/map/npc/027-1/crypt.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-027-1,28,67,0|script|#CryptEntrance|45,0,0
-{
- if (BaseLevel < 60)
- goto L_Weak;
- warp "027-2", 36, 110;
- end;
-
-L_Weak:
- message strcharinfo(0), "Come back when you're a bit more experienced.";
- end;
-}
diff --git a/world/map/npc/027-1/graves.txt b/world/map/npc/027-1/graves.txt
deleted file mode 100644
index d10c3309..00000000
--- a/world/map/npc/027-1/graves.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-// Easter egg graves
-
-027-1,89,62,0|script|Grave#1|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ FotherJ ~";
- mes "The mad sprite making genius who made all the creepy undead monster graphics.";
- close;
-}
-
-027-1,118,54,0|script|Grave#2|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Yosuhara ~";
- mes "Contributed some of the tombstones.";
- close;
-}
-
-027-1,111,62,0|script|Grave#3|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Feline Monstrosity ~";
- mes "Made the background music you are hearing.";
- close;
-}
-
-027-1,112,76,0|script|Grave#4|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Superkoop ~";
- mes "Mapped the swamp to the south.";
- close;
-}
-
-027-1,120,76,0|script|Grave#5|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Aroleon ~";
- mes "Mapped the swamp to the southeast.";
- close;
-}
-
-027-1,100,68,0|script|Grave#6|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ John P ~";
- mes "Wrote the graveyard backstory and the dialog for the caretaker quest.";
- close;
-}
-
-027-1,94,70,0|script|Grave#7|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Spit23 ~";
- mes "Made those freakin awesome cemetery gates.";
- close;
-}
-
-027-1,106,60,0|script|Grave#8|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Black Don ~";
- mes "Contributed those cool gargoyle statues.";
- close;
-}
-
-027-1,92,54,0|script|Grave#9|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Jaxad0127 ~";
- mes "Did all the scripting work for the graveyard. Made Caretaker's house.";
- close;
-}
-
-027-1,122,64,0|script|Grave#10|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Ces Vargavind ~";
- mes "Scripted caretaker's daughter.";
- close;
-}
-
-027-1,102,62,0|script|Grave#11|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Crush ~";
- mes "Organizer of the whole graveyard project, graveyard fence graphics, mapping of the graveyard itself.";
- close;
-}
-
-027-1,104,76,0|script|Grave#12|400
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "~ Freeyorp ~";
- mes "Planned out monster stats and placements.";
- close;
-}
diff --git a/world/map/npc/027-1/mapflags.txt b/world/map/npc/027-1/mapflags.txt
deleted file mode 100644
index 790b44a9..00000000
--- a/world/map/npc/027-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-027-1|mapflag|resave|026-1,28,35
-027-1|mapflag|outside
diff --git a/world/map/npc/027-2/_import.txt b/world/map/npc/027-2/_import.txt
deleted file mode 100644
index b6bb21d8..00000000
--- a/world/map/npc/027-2/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 027-2: Graveyard Indoor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-2
-npc: npc/027-2/_mobs.txt
-npc: npc/027-2/_nodes.txt
-npc: npc/027-2/_warps.txt
-npc: npc/027-2/alacrius.txt
-npc: npc/027-2/caretaker.txt
-npc: npc/027-2/mapflags.txt
-npc: npc/027-2/thurston.txt
diff --git a/world/map/npc/027-2/_mobs.txt b/world/map/npc/027-2/_mobs.txt
deleted file mode 100644
index b0a3cb57..00000000
--- a/world/map/npc/027-2/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Graveyard Indoor mobs
-
-027-2,25,99,9,19|monster|TipsySkeleton|1078,1,100000ms,30000ms
-027-2,35,88,28,39|monster|VampireBat|1066,15,100000ms,30000ms
-027-2,25,99,9,19|monster|DrunkenSkeleton|1077,1,100000ms,30000ms
-027-2,25,99,9,19|monster|TipsySkeleton|1078,1,100000ms,30000ms
diff --git a/world/map/npc/027-2/_nodes.txt b/world/map/npc/027-2/_nodes.txt
deleted file mode 100644
index cbf43fea..00000000
--- a/world/map/npc/027-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Graveyard Indoor nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-2/_warps.txt b/world/map/npc/027-2/_warps.txt
deleted file mode 100644
index 47aaef8b..00000000
--- a/world/map/npc/027-2/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Graveyard Indoor warps
-
-027-2,36,111|warp|4,-1,027-1,28,68
-027-2,36,78|warp|4,-1,027-3,25,68
-027-2,46,34|warp|-1,-1,027-1,88,85
diff --git a/world/map/npc/027-2/alacrius.txt b/world/map/npc/027-2/alacrius.txt
deleted file mode 100644
index b994b18a..00000000
--- a/world/map/npc/027-2/alacrius.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-// Author: wushin
-//Starts Crypt Quest
-
-027-2,45,105,0|script|Alacrius|313
-{
- mes "[Alacrius]";
- mes "\"Hello, I'm Alacrius. \"";
- next;
- mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \"";
- next;
- mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \"";
- // Doomsday related
- if (BOSS_POINTS >= 300) goto L_Quest;
- close;
-
-L_Quest:
- // Rand() is probably not the best way to do that.
- if (!#CRYPT_PASSWORD)
- set #CRYPT_PASSWORD, rand(4095);
- next;
- mes "##1--------- The Alacrius Riddle";
- mes "";
- mes "A spell used in the right place and order,";
- mes "will break Keshlam's magical border,";
- mes "but be very aware of a warder.";
- next;
- mes "Also know, my oh so dear friends,";
- mes "the clues differ for whoever attends.";
- mes "If one will fail or succeed depends,";
- mes "on how close attention one spends!";
- next;
- mes "##9 Explore the Crypt and find the clues to solve Alacrius' Riddle.";
- mes "##9 All clues, hints and riddles you need to solve this one,";
- mes "##9 are inside this crypt. If a clue, hint, or riddle, doesn't make";
- mes "##9 immediate sense, together, they shall lend you their full meaning.";
- //mes "##9 And if you're in despair, find the Lord words, they will guide your way.";
- close;
-}
-
-// Some more hints
-027-2,30,78,0|script|#AlacriusClue1|400
-{
- if (!#CRYPT_PASSWORD)
- goto L_Empty;
- mes "For those whom search to the answers of Alacrius' Riddles.";
- next;
- mes "Made with stone, near Krukan's room,";
- mes "lies a forgotten chamber tomb,";
- mes "for those who fell victim to his doom.";
- mes "";
- mes "Candles will part the left from the right";
- mes "and the stone sarcophagi hold clues to the rite.";
- mes "But only the ones that are still sealed tight,";
- mes "will tell you which candles you have to light.";
- mes "";
- mes "And watch out for the five heroes,";
- mes "For the lord's words of wisdom,";
- mes "They carefully guard.";
- close;
-
-L_Empty:
- mes "The book pages are blank!";
- close;
-}
-
-027-2,41,78,0|script|#AlacriusClue2|400
-{
- if (!#CRYPT_PASSWORD)
- goto L_Empty;
- mes "For those whom search to the answers of Alacrius' Riddles.";
- next;
- mes "Not far from Razha's hall,";
- mes "statues of stone adorn the wall,";
- mes "to honor the heroes who caused him to fall.";
- mes "";
- mes "Only the ones in unfractured light,";
- mes "might hold a clue to the unholy rite,";
- mes "and tell you which candles you have to light,";
- mes "while others will tell you just lies outright.";
- close;
-
-L_Empty:
- mes "The book pages are blank!";
- close;
-}
-
-
-027-3,59,22,0|script|#AlacriusClue3|400
-{
- if (!#CRYPT_PASSWORD)
- goto L_Empty;
- mes "For those whom search to the answers of Alacrius' Riddles.";
- next;
- mes "For those who don't get astray,";
- mes "Five sealed gates block the way,";
- mes "to Terogan's vault of foul play.";
- mes "";
- mes "A cite on their left or right";
- mes "holds the key to the abysmal rite,";
- mes "that opens the path to an unspeakable site.";
- mes "Do you know which candles to light?";
- close;
-
-L_Empty:
- mes "The book pages are blank!";
- close;
-}
-
-027-4,108,87,0|script|#AlacriusClue4|400
-{
- if (!#CRYPT_PASSWORD)
- goto L_Empty;
- mes "For those whom search to the answers of Alacrius' Riddles.";
- next;
- mes "I have nothing to say,";
- mes "But this room has no key.";
- mes "";
- mes "Brute force will not get you in,";
- mes "And you don't have to, to the riddle solve.";
- mes "";
- mes "But three books shall give you answers,";
- mes "Can you find all of them?";
- close;
-
-L_Empty:
- mes "The book pages are blank!";
- close;
-}
-
diff --git a/world/map/npc/027-2/caretaker.txt b/world/map/npc/027-2/caretaker.txt
deleted file mode 100644
index 11e16b7b..00000000
--- a/world/map/npc/027-2/caretaker.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-// Cemetary Caretaker
-// TODO: add dialog/code for giving more letters
-// Airlia supports receiving an infinate number of letters
-
-027-2,44,25,0|script|Caretaker|159
-{
- set @halloween_npc_id, $@halloween_npc_caretaker;
- callfunc "TrickOrTreat";
-
- if (QUEST_Graveyard_Caretaker == 1) goto L_Return_Dialog;
- if (QUEST_Graveyard_Caretaker == 2) goto L_Has_Letter;
- if (QUEST_Graveyard_Caretaker == 3) goto L_Delivered_Letter;
- if (QUEST_Graveyard_Caretaker == 4) goto L_Give_New_Letter;
- if (QUEST_Graveyard_Caretaker == 5) goto L_Has_Letter;
-
- mes "[Caretaker]";
- mes "\"...another adventurer comes to slay the already dead.\"";
- next;
- menu
- "And what are you?", L_Who,
- "That's right, so move and let me kill that demon behind you.", L_Close;
-
-L_Who:
- mes "[Caretaker]";
- mes "\"I was once the caretaker of these cemetery grounds, but look at what they have become.";
- mes "Now, I care only for my wife. I watch over her... make sure that nobody ever does her harm.\"";
- next;
- menu
- "You guard her corpse day and night?", L_WatchCorpse;
-
-L_WatchCorpse:
- mes "[Caretaker]";
- mes "\"I am bound to this wretched place by the very same spell that was cast to keep the undead from leaving. Until the day that this cemetery is free from its curse, I shall remain within these gates.\"";
- set QUEST_Graveyard_Caretaker, 1;
- close;
-
-L_Return_Dialog:
- mes "[Caretaker]";
- mes "\"I am somewhat fortunate that adventurers like yourself frequent this place... despite your intentions.";
- mes "Perhaps you can do me a favor?\"";
- next;
- menu
- "What's the favor?", L_Favor,
- "I'm sure I can, for a price.", L_Favor,
- "Sorry, I am busy.", L_Close;
-
-L_Favor:
- mes "[Caretaker]";
- mes "\"I have not seen my daughter since I was cursed to stay in this cemetery, twenty-five years ago.";
- mes "We communicate through letters, now. Would you please take this to her?";
- mes "I am sure she will compensate you for your trouble.\"";
- next;
- menu
- "I will take it to her.", L_Receive,
- "I will help you. Where can I find your daughter?", L_Receive,
- "Sorry, but I am too busy.", L_Close;
-
-L_Receive:
- set QUEST_Graveyard_Caretaker, 2;
- mes "You receive the letter and put it in a special place so it doesn't get lost in your inventory.";
- next;
- if (@menu != 2)
- close;
- goto L_Location;
-
-L_Location:
- mes "[Caretaker]";
- mes "\"Her name is Airlia. She works at the town hall in Hurnscald. Thank you for your help.\"";
- close;
-
-L_Has_Letter:
- mes "[Caretaker]";
- mes "\"Have you found my daughter?\"";
- next;
- menu
- "Not yet.", L_Close,
- "I'll get there when I get there.", L_Close,
- "Where did you say I could find her?", L_Location;
-
-L_Delivered_Letter:
- mes "[Caretaker]";
- mes "\"Have you found my daughter?\"";
- next;
- menu
- "Yes.", L_Next;
-
-L_Next:
- mes "[Caretaker]";
- mes "\"Thank you for delivering my letter.\"";
- set QUEST_Graveyard_Caretaker, 4;
- close;
-
-L_Give_New_Letter:
- mes "[Caretaker]";
- mes "\"I have another letter, if you want to deliver it.\"";
- next;
- menu
- "Sure.", L_Give_New_Letter_Real,
- "I'm too busy right now.", L_Close;
-
-L_Give_New_Letter_Real:
- set QUEST_Graveyard_Caretaker, 5;
- mes "You receive the letter and put it in a special place so it doesn't get lost in your inventory.";
- next;
- mes "[Caretaker]";
- mes "\"Thank you.\"";
- close;
-
-L_Close:
- close;
-}
-027-2,48,22,0|script|Joan|409
-{
- mes "[Joan]";
- mes "...";
- close;
-}
diff --git a/world/map/npc/027-2/mapflags.txt b/world/map/npc/027-2/mapflags.txt
deleted file mode 100644
index 6f419bf4..00000000
--- a/world/map/npc/027-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-027-2|mapflag|resave|026-1,28,35
-026-2|mapflag|town
diff --git a/world/map/npc/027-2/thurston.txt b/world/map/npc/027-2/thurston.txt
deleted file mode 100644
index a1865797..00000000
--- a/world/map/npc/027-2/thurston.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// Vampire Bat Wings Daily
-
-027-2,23,105,0|script|Thurston|302
-{
- set @dq_level, 60;
- set @dq_cost, 45;
- set @dq_count, 20;
- set @dq_name$, "VampireBatWing";
- set @dq_friendly_name$, "Vampire Bat Wing";
- set @dq_money, 4000;
- set @dq_exp, 1000;
-
- callfunc "DailyQuest";
-
- set @dq_level, 0;
- set @dq_cost, 0;
- set @dq_count, 0;
- set @dq_name$, "";
- set @dq_friendly_name$, "";
- set @dq_money, 0;
- set @dq_exp, 0;
- close;
-}
diff --git a/world/map/npc/027-3/_import.txt b/world/map/npc/027-3/_import.txt
deleted file mode 100644
index 78754482..00000000
--- a/world/map/npc/027-3/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 027-3: Crypt Basement
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-3
-npc: npc/027-3/_mobs.txt
-npc: npc/027-3/_nodes.txt
-npc: npc/027-3/_warps.txt
-npc: npc/027-3/casket_traps.txt
-npc: npc/027-3/general_krukan_door.txt
-npc: npc/027-3/mapflags.txt
-npc: npc/027-3/monsters.txt
diff --git a/world/map/npc/027-3/_mobs.txt b/world/map/npc/027-3/_mobs.txt
deleted file mode 100644
index a1926191..00000000
--- a/world/map/npc/027-3/_mobs.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Basement mobs
-
-027-3,34,63,29,69|monster|Skeleton|1043,6,60000ms,8000ms
-027-3,97,43,59,30|monster|Skeleton|1043,6,60000ms,8000ms
-027-3,34,63,29,69|monster|LadySkeleton|1044,4,60000ms,8000ms
-027-3,113,78,28,26|monster|LadySkeleton|1044,4,60000ms,8000ms
-027-3,113,78,27,27|monster|Skeleton|1043,4,60000ms,8000ms
-027-3,81,87,29,22|monster|VampireBat|1066,15,100000ms,30000ms
-027-3,74,45,106,33|monster|PoisonSkull|1024,1,60000ms,20000ms
-027-3,98,84,60,14|monster|FireSkull|1023,2,60000ms,20000ms
diff --git a/world/map/npc/027-3/_nodes.txt b/world/map/npc/027-3/_nodes.txt
deleted file mode 100644
index ab655dd1..00000000
--- a/world/map/npc/027-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Basement nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-3/_warps.txt b/world/map/npc/027-3/_warps.txt
deleted file mode 100644
index 3b589a77..00000000
--- a/world/map/npc/027-3/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Basement warps
-
-027-3,26,67|warp|2,-1,027-2,36,77
-027-3,127,99|warp|1,-1,027-4,125,18
diff --git a/world/map/npc/027-3/casket_traps.txt b/world/map/npc/027-3/casket_traps.txt
deleted file mode 100644
index 6b00f2d3..00000000
--- a/world/map/npc/027-3/casket_traps.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-027-3,32,96,0|script|#casket1|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,38,86,0|script|#casket2|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,46,76,0|script|#casket3|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,38,57,0|script|#casket4|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,22,44,0|script|#casket5|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,48,43,0|script|#casket6|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,86,30,0|script|#casket7|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-3,108,45,0|script|#casket8|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
diff --git a/world/map/npc/027-3/general_krukan_door.txt b/world/map/npc/027-3/general_krukan_door.txt
deleted file mode 100644
index 9ac26203..00000000
--- a/world/map/npc/027-3/general_krukan_door.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Mini-Boss
-// General Krukun
-
-027-3,82,88,0|script|#GeneralDoor1|45,1,0
-{
- if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT1 != 0) )
- goto L_NoKeys;
-
- delitem "CryptKey", 10;
- warp "027-6",39,60;
- goto L_Close;
-
-L_NoKeys:
- message strcharinfo(0), "This door is locked.";
- end;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/027-3/mapflags.txt b/world/map/npc/027-3/mapflags.txt
deleted file mode 100644
index d0b162e7..00000000
--- a/world/map/npc/027-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-027-3|mapflag|resave|027-2,28,94
diff --git a/world/map/npc/027-3/monsters.txt b/world/map/npc/027-3/monsters.txt
deleted file mode 100644
index 2e552eb2..00000000
--- a/world/map/npc/027-3/monsters.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-// 027-3 Graveyard zombies and fallens
-// they need to be in an extra file because of the crying child quest
-
-027-3,21,76,51,100|monster|Zombie|1036,2,300000ms,120000ms,specialMob027-3::On1036
-027-3,21,30,51,63|monster|Zombie|1036,2,200000ms,10000ms,specialMob027-3::On1036
-027-3,67,29,129,64|monster|Zombie|1036,3,140000ms,30000ms,specialMob027-3::On1036
-027-3,101,65,128,93|monster|Fallen|1045,3,120000ms,30000ms,specialMob027-3::On1045
-
-027-3,0,0,0|script|specialMob027-3|32767
-{
- end;
-
-On1036:
- set @mobID, 1036;
- callsub S_MOBCOUNT_ZOMBIES;
- callfunc "MobPoints";
- end;
-
-On1045:
- set @mobID, 1045;
- callsub S_MOBCOUNT_FALLENS;
- callfunc "MobPoints";
- end;
-
-S_MOBCOUNT_ZOMBIES:
-
- set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- if (@state != 1)
- goto L_Return;
- set @ring, @ring + 1;
- if (@ring < 10)
- goto L_Return;
- if (rand(8) != 0)
- goto L_Return;
- message strcharinfo(0), "You found a ring hidden in the zombie's rotten rags. Maybe this is what Aldred was looking for...";
- set @state, 2;
- callsub S_Update_Mask;
- return;
-
-S_MOBCOUNT_FALLENS:
-
- set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- if (@state != 1)
- goto L_Return;
- set @ring, @ring + 1;
- if (@ring < 10)
- goto L_Return;
- if (rand(8) != 0)
- goto L_Return;
- message strcharinfo(0), "You found a ring inside the fallen's broken helmet. Maybe this is what Aldred was looking for...";
- set @state, 2;
- callsub S_Update_Mask;
- return;
-
-L_Return:
- return;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn, (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK)) | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/027-4/_import.txt b/world/map/npc/027-4/_import.txt
deleted file mode 100644
index 7bcfbc68..00000000
--- a/world/map/npc/027-4/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 027-4: Crypt Sub-Basement One
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-4
-npc: npc/027-4/_mobs.txt
-npc: npc/027-4/_nodes.txt
-npc: npc/027-4/_warps.txt
-npc: npc/027-4/casket_traps.txt
-npc: npc/027-4/general_razha_door.txt
-npc: npc/027-4/mapflags.txt
-npc: npc/027-4/monsters.txt
diff --git a/world/map/npc/027-4/_mobs.txt b/world/map/npc/027-4/_mobs.txt
deleted file mode 100644
index dde5781e..00000000
--- a/world/map/npc/027-4/_mobs.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement One mobs
-
-027-4,39,84,38,22|monster|Skeleton|1043,2,60000ms,8000ms
-027-4,27,57,15,22|monster|LadySkeleton|1044,2,60000ms,8000ms
-027-4,108,77,39,14|monster|Skeleton|1043,2,60000ms,8000ms
-027-4,61,37,38,30|monster|LadySkeleton|1044,2,60000ms,8000ms
-027-4,101,36,38,30|monster|LadySkeleton|1044,2,60000ms,8000ms
diff --git a/world/map/npc/027-4/_nodes.txt b/world/map/npc/027-4/_nodes.txt
deleted file mode 100644
index ee3b5dcf..00000000
--- a/world/map/npc/027-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement One nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-4/_warps.txt b/world/map/npc/027-4/_warps.txt
deleted file mode 100644
index cb900d7b..00000000
--- a/world/map/npc/027-4/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement One warps
-
-027-4,125,17|warp|3,-1,027-3,125,98
-027-4,22,98|warp|2,-1,027-5,124,18
diff --git a/world/map/npc/027-4/casket_traps.txt b/world/map/npc/027-4/casket_traps.txt
deleted file mode 100644
index 1aec16ab..00000000
--- a/world/map/npc/027-4/casket_traps.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-027-4,60,23,0|script|#casket9|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,43,23,0|script|#casket10|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,42,47,0|script|#casket11|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,90,47,0|script|#casket12|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,101,48,0|script|#casket13|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,115,17,0|script|#casket14|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,99,76,0|script|#casket15|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-4,22,23,0|script|#casket16|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
diff --git a/world/map/npc/027-4/general_razha_door.txt b/world/map/npc/027-4/general_razha_door.txt
deleted file mode 100644
index c7adf137..00000000
--- a/world/map/npc/027-4/general_razha_door.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Mini-Boss
-// General Razha
-
-027-4,73,76,0|script|#GeneralDoor2|45,1,0
-{
- if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT2 != 0) )
- goto L_NoKeys;
-
- delitem "CryptKey", 10;
- warp "027-7",39,60;
- goto L_Close;
-
-L_NoKeys:
- message strcharinfo(0), "This door is locked.";
- end;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/027-4/mapflags.txt b/world/map/npc/027-4/mapflags.txt
deleted file mode 100644
index 6a0e6dba..00000000
--- a/world/map/npc/027-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-027-4|mapflag|resave|027-2,28,94
diff --git a/world/map/npc/027-4/monsters.txt b/world/map/npc/027-4/monsters.txt
deleted file mode 100644
index ef810372..00000000
--- a/world/map/npc/027-4/monsters.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-// 027-4 Graveyard zombies and fallens
-// they need to be in an extra file because of the crying child quest
-
-027-4,39,84,38,22|monster|Fallen|1045,3,60000ms,8000ms,specialMob027-4::On1045
-027-4,27,57,15,22|monster|Zombie|1036,2,60000ms,8000ms,specialMob027-4::On1036
-027-4,108,77,39,14|monster|Fallen|1045,3,60000ms,8000ms,specialMob027-4::On1045
-027-4,61,37,38,30|monster|Zombie|1036,2,60000ms,8000ms,specialMob027-4::On1036
-027-4,101,36,38,30|monster|Zombie|1036,2,60000ms,8000ms,specialMob027-4::On1036
-
-027-4,0,0,0|script|specialMob027-4|32767
-{
- end;
-
-On1036:
- set @mobID, 1036;
- callsub S_MOBCOUNT_ZOMBIES;
- callfunc "MobPoints";
- end;
-
-On1045:
- set @mobID, 1045;
- callsub S_MOBCOUNT_FALLENS;
- callfunc "MobPoints";
- end;
-
-S_MOBCOUNT_ZOMBIES:
-
- set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- if (@state != 1)
- goto L_Return;
- set @ring, @ring + 1;
- if (@ring < 10)
- goto L_Return;
- if (rand(8) != 0)
- goto L_Return;
- message strcharinfo(0), "You found a ring hidden in the zombie's rotten rags. Maybe this is what Aldred was looking for...";
- set @state, 2;
- callsub S_Update_Mask;
- return;
-
-S_MOBCOUNT_FALLENS:
-
- set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
- set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
-
- set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
-
- if (@state != 1)
- goto L_Return;
- set @ring, @ring + 1;
- if (@ring < 10)
- goto L_Return;
- if (rand(8) != 0)
- goto L_Return;
- message strcharinfo(0), "You found a ring inside the fallen's broken helmet. Maybe this is what Aldred was looking for...";
- set @state, 2;
- callsub S_Update_Mask;
- return;
-
-L_Return:
- return;
-
-S_Update_Mask:
- set QUEST_Graveyard_Inn, (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK)) | (@state << @Graveyard_Inn_SHIFT);
- return;
-}
diff --git a/world/map/npc/027-5/_import.txt b/world/map/npc/027-5/_import.txt
deleted file mode 100644
index a0d686c6..00000000
--- a/world/map/npc/027-5/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 027-5: Crypt Sub-Basement Two
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-5
-npc: npc/027-5/_mobs.txt
-npc: npc/027-5/_nodes.txt
-npc: npc/027-5/_warps.txt
-npc: npc/027-5/casket_traps.txt
-npc: npc/027-5/general_terogan_door.txt
-npc: npc/027-5/mapflags.txt
diff --git a/world/map/npc/027-5/_mobs.txt b/world/map/npc/027-5/_mobs.txt
deleted file mode 100644
index 750163ad..00000000
--- a/world/map/npc/027-5/_mobs.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two mobs
-
-027-5,69,42,97,41|monster|Wight|1124,6,60000ms,8000ms
-027-5,69,56,97,69|monster|VampireBat|1066,30,100000ms,30000ms
-027-5,69,42,98,40|monster|Skeleton|1043,8,60000ms,8000ms
-027-5,69,41,98,39|monster|LadySkeleton|1044,8,60000ms,8000ms
-027-5,68,42,97,40|monster|RedBone|1074,6,60000ms,8000ms
-027-5,70,80,98,34|monster|Skeleton|1043,8,60000ms,8000ms
-027-5,69,80,99,36|monster|LadySkeleton|1044,8,60000ms,8000ms
diff --git a/world/map/npc/027-5/_nodes.txt b/world/map/npc/027-5/_nodes.txt
deleted file mode 100644
index 4e14e522..00000000
--- a/world/map/npc/027-5/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-5/_warps.txt b/world/map/npc/027-5/_warps.txt
deleted file mode 100644
index 95289446..00000000
--- a/world/map/npc/027-5/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two warps
-
-027-5,125,17|warp|3,-1,027-4,21,97
diff --git a/world/map/npc/027-5/casket_traps.txt b/world/map/npc/027-5/casket_traps.txt
deleted file mode 100644
index 965f91cb..00000000
--- a/world/map/npc/027-5/casket_traps.txt
+++ /dev/null
@@ -1,80 +0,0 @@
-027-5,60,34,0|script|#casket17|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,34,50,0|script|#casket18|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,49,76,0|script|#casket19|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,60,89,0|script|#casket20|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,90,90,0|script|#casket21|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,92,76,0|script|#casket22|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,117,61,0|script|#casket23|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-5,94,48,0|script|#casket24|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
diff --git a/world/map/npc/027-5/general_terogan_door.txt b/world/map/npc/027-5/general_terogan_door.txt
deleted file mode 100644
index 93f4d8c1..00000000
--- a/world/map/npc/027-5/general_terogan_door.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Mini-Boss
-// General Terogan
-
-027-5,70,25,0|script|#GeneralDoor3|45,1,0
-{
- if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT3 != 0) )
- goto L_NoKeys;
-
- delitem "CryptKey", 10;
- warp "027-8",39,60;
- goto L_Close;
-
-L_NoKeys:
- message strcharinfo(0), "This door is locked.";
- end;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/027-5/mapflags.txt b/world/map/npc/027-5/mapflags.txt
deleted file mode 100644
index afe7748a..00000000
--- a/world/map/npc/027-5/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-027-5|mapflag|resave|027-2,28,94
diff --git a/world/map/npc/027-6/_import.txt b/world/map/npc/027-6/_import.txt
deleted file mode 100644
index 48dbcf11..00000000
--- a/world/map/npc/027-6/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 027-6: Crypt Sub-Basement Two
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-6
-npc: npc/027-6/_mobs.txt
-npc: npc/027-6/_nodes.txt
-npc: npc/027-6/_warps.txt
-npc: npc/027-6/casket_traps.txt
-npc: npc/027-6/general_krukan.txt
-npc: npc/027-6/general_krukan_exitdoor.txt
-npc: npc/027-6/mapflags.txt
diff --git a/world/map/npc/027-6/_mobs.txt b/world/map/npc/027-6/_mobs.txt
deleted file mode 100644
index a6d6a471..00000000
--- a/world/map/npc/027-6/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two mobs
-
diff --git a/world/map/npc/027-6/_nodes.txt b/world/map/npc/027-6/_nodes.txt
deleted file mode 100644
index 4e14e522..00000000
--- a/world/map/npc/027-6/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-6/_warps.txt b/world/map/npc/027-6/_warps.txt
deleted file mode 100644
index fc9e6717..00000000
--- a/world/map/npc/027-6/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two warps
-
diff --git a/world/map/npc/027-6/casket_traps.txt b/world/map/npc/027-6/casket_traps.txt
deleted file mode 100644
index 551f9d6b..00000000
--- a/world/map/npc/027-6/casket_traps.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-027-6,32,39,0|script|#casket25|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-6,27,48,0|script|#casket26|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-6,52,50,0|script|#casket27|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-6,45,48,0|script|#casket28|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-6,47,30,0|script|#casket29|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-6,33,31,0|script|#casket30|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
-027-6,52,40,0|script|#casket31|127,1,1
-{
- end;
-
-OnTouch:
- heal ((MaxHp/100) * -10), 0;
- specialeffect 301;
- specialeffect 302;
- end;
-}
diff --git a/world/map/npc/027-6/general_krukan.txt b/world/map/npc/027-6/general_krukan.txt
deleted file mode 100644
index 1c2ff95f..00000000
--- a/world/map/npc/027-6/general_krukan.txt
+++ /dev/null
@@ -1,231 +0,0 @@
-// author: Jenalya, wushin
-// Based off Cindy Fight
-// General Krukan Fight
-
-027-6,39,25,0|script|General Krukan|400
-{
- if ($@CRYPT_FIGHT1 != 0)
- end;
-
- set @KRUKAN_SOUL_REQ, 1;
- set @KRUKAN_SKULL_REQ, 5;
- set @KRUKAN_DARK_CRYSTAL_REQ, 5;
- set @KRUKAN_BONE_REQ, 5;
- set @minlevel, 60;
-
- mes "[Tome]";
- mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
- next;
- goto L_TomeMain;
-
-L_TomeMain:
- mes "What do you want to do?";
- menu
- "Read reagent List.", L_SummonReagents,
- "Perform Ritual.", L_Ritual,
- "Nothing.", L_Close;
-
-L_SummonReagents:
- mes "Says we need " + @KRUKAN_SOUL_REQ + " Soul, " + @KRUKAN_SKULL_REQ + " Skulls, " + @KRUKAN_DARK_CRYSTAL_REQ + " Dark Crystals, and " + @KRUKAN_BONE_REQ + " Bones to perform the ritual.";
- next;
- goto L_TomeMain;
-
-L_MissingReagents:
- mes "It appears we are missing something, lets check the reagent list again.";
- next;
- goto L_SummonReagents;
-
-L_Ritual:
- if (BaseLevel < @minlevel)
- goto L_ToWeak;
- if ( (countitem("Soul") < @KRUKAN_SOUL_REQ)
- || (countitem("Skull") < @KRUKAN_SKULL_REQ)
- || (countitem("DarkCrystal") < @KRUKAN_DARK_CRYSTAL_REQ)
- || (countitem("Bone") < @KRUKAN_BONE_REQ) )
- goto L_MissingReagents;
- delitem "Soul", @KRUKAN_SOUL_REQ;
- delitem "Skull", @KRUKAN_SKULL_REQ;
- delitem "DarkCrystal", @KRUKAN_DARK_CRYSTAL_REQ;
- delitem "Bone", @KRUKAN_BONE_REQ;
- mes "As you perform the ritual you can feel the energy amass.";
- next;
- mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
- if ($@CRYPT_FIGHT1 != 0)
- goto L_Close;
-
- // initialize fight
- set $@CRYPT_FIGHT1, 1;
- set $@CRYPT_FIGHT1_WAVE, 0;
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, 2;
- set $@CRYPT_FIGHT1_PLAYER_COUNT, getmapusers("027-6");
- areamonster "027-6", 0, 0, 79, 84, "", 1043, 1, "General Krukan::OnPetDeath";
- areamonster "027-6", 0, 0, 79, 84, "", 1044, 1, "General Krukan::OnPetDeath";
-
- initnpctimer;
- goto L_Announce;
-
-L_ToWeak:
- mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
- goto L_Close;
-
-L_Close:
- set @bonus, 0;
- set @minlevel, 0;
- set @KRUKAN_SOUL_REQ, 0;
- set @KRUKAN_SKULL_REQ, 0;
- set @KRUKAN_DARK_CRYSTAL_REQ, 0;
- set @KRUKAN_BONE_REQ, 0;
- close;
-
-// Fight logic attached to npc
-OnTimer5000:
- setnpctimer 0;
- if ($@CRYPT_FIGHT1 != 0)
- goto L_CryptLogic;
- goto L_Return_1;
-
-L_Return_1:
- set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
- areatimer 0, "027-6", 0, 0, 79, 84, 10, "General Krukan::OnTick";
- end;
-
-L_CryptLogic:
- set $@CRYPT_FIGHT1_ROUND_PEN, $@CRYPT_FIGHT1_PLAYER_COUNT;
- if ($@CRYPT_FIGHT1_ROUND_PEN > 60)
- set $@CRYPT_FIGHT1_ROUND_PEN, 60;
- if ($@CRYPT_FIGHT1_PLAYER_COUNT <= 0)
- goto L_CleanUpLosers;
- set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
- if (mobcount("027-6", "General Krukan::OnPetDeath") < 0)
- goto L_NextWave;
- if ($@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT1_ROUND_PEN >= 120)
- goto L_NextWave;
- goto L_Return_1;
-
-L_NextWave:
- set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT1_WAVE, $@CRYPT_FIGHT1_WAVE + 1;
- if ( ($@CRYPT_FIGHT1_WAVE > 10) && ($@CRYPT_FIGHT1_SUMMONS_COUNT == 0) )
- goto L_CleanUp;
- if ( ($@CRYPT_FIGHT1_WAVE > 10) && ($@CRYPT_FIGHT1_WAVE < 22) )
- goto L_Return_1;
- if ($@CRYPT_FIGHT1_WAVE > 22)
- goto L_SummonNuke;
- if ($@CRYPT_FIGHT1_WAVE < 5)
- goto L_WeakSummons;
- if ( ($@CRYPT_FIGHT1_WAVE < 10) && ($@CRYPT_FIGHT1_WAVE >= 5) )
- goto L_StrongSummons;
- if ($@CRYPT_FIGHT1_WAVE == 10)
- goto L_BossSummons;
- goto L_SummonNuke;
-
-L_SummonNuke:
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + $@CRYPT_FIGHT1_WAVE*2 + $@CRYPT_FIGHT1_PLAYER_COUNT*4;
- areamonster "027-6", 0, 0, 79, 84, "", 1043, $@CRYPT_FIGHT1_WAVE*2 + $@CRYPT_FIGHT1_PLAYER_COUNT*4, "General Krukan::OnPetDeath";
- goto L_Announce;
-
-L_WeakSummons:
- set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
-
- areamonster "027-6", 0, 0, 79, 84, "", 1043, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
- areamonster "027-6", 0, 0, 79, 84, "", 1044, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
- goto L_Announce;
-
-L_StrongSummons:
- set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
-
- areamonster "027-6", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
- areamonster "027-6", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
- goto L_Announce;
-
-L_BossSummons:
- set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
- areamonster "027-6", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
- areamonster "027-6", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
- areamonster "027-6", 0, 0, 79, 84, "", 1127, 1, "General Krukan::OnPetDeath";
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + 1;
- goto L_Announce;
-
-L_Announce:
- set $@msg$, $@CRYPT_FIGHT1_MESSAGES$[$@CRYPT_FIGHT1_WAVE];
- if ($@msg$ == "")
- goto L_Return_1;
- mapannounce "027-6", $@msg$, 0;
- mapannounce "027-3", $@msg$, 0;
- set $@msg$, "";
- goto L_Return_1;
-
-// Called on each player once every 5 seconds
-OnTick:
- if (isdead()) end;
- set $@CRYPT_FIGHT1_PLAYER_COUNT, $@CRYPT_FIGHT1_PLAYER_COUNT + 1;
- end;
-
-OnPetDeath:
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT - 1;
- end;
-
-L_CleanUpLosers:
- set $@CRYPT_FIGHT1, 0;
- set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
- set $@CRYPT_FIGHT1_WAVE, 0;
- set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, 0;
- set $@CRYPT_FIGHT1_ROUND_PEN, 0;
- set $@CRYPT_FIGHT1_SUMMONS_NUMBER, 0;
- killmonster "027-6", "General Krukan::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_CleanUp:
- areatimer 0, "027-6", 0, 0, 79, 84, 10, "General Krukan::OnReward";
- set $@CRYPT_FIGHT1, 0;
- set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
- set $@CRYPT_FIGHT1_WAVE, 0;
- set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT1_SUMMONS_COUNT, 0;
- set $@CRYPT_FIGHT1_ROUND_PEN, 0;
- set $@CRYPT_FIGHT1_SUMMONS_NUMBER, 0;
- killmonster "027-6", "General Krukan::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnReward:
- if (isdead()) end;
- set @bonus, (BaseLevel/4);
- set DailyQuestBonus, DailyQuestBonus + @bonus;
- message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
- set BOSS_POINTS, BOSS_POINTS + 25;
- message strcharinfo(0), "You gain 25 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_End;
-
-L_End:
- set @bonus, 0;
- set @minlevel, 0;
- set @KRUKAN_SOUL_REQ, 0;
- set @KRUKAN_SKULL_REQ, 0;
- set @KRUKAN_DARK_CRYSTAL_REQ, 0;
- set @KRUKAN_BONE_REQ, 0;
- end;
-
-OnInit:
- setarray $@CRYPT_FIGHT1_MESSAGES$,
- "General Krukan : Haha, Thank you mortal. You have released me from my prison. To show my gratitude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
- "General Krukan : Ha, Looks like you're tougher than I thought.",
- "General Krukan : and here I thought I wasn't going to enjoy this.",
- "General Krukan : More of them are coming!",
- "General Krukan : Minions! Kill them already!",
- "General Krukan : *facepalm* I knew I should have hired better help.",
- "General Krukan : Well at least you will make a good addition to my army.",
- "General Krukan : To the Abyss with you already!",
- "General Krukan : How about you try a different approach and kill them already!",
- "General Krukan : Minions! Last chance or it's back to being part of an ossuary for you!",
- "General Krukan : Looks like if you want something done right you have to do it yourself.",
- "General Krukan : Charge!";
- end;
-}
diff --git a/world/map/npc/027-6/general_krukan_exitdoor.txt b/world/map/npc/027-6/general_krukan_exitdoor.txt
deleted file mode 100644
index c522657c..00000000
--- a/world/map/npc/027-6/general_krukan_exitdoor.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// Mini-Boss
-// General Krukan exit
-
-027-6,38,61,0|script|#GeneralExit1|45,6,0
-{
- if ($@CRYPT_FIGHT1 == 1)
- goto L_Block;
- warp "027-3",82,89;
- end;
-
-L_Block:
- message strcharinfo(0), "A force field seems to be blocking you from exiting.";
- end;
-}
diff --git a/world/map/npc/027-6/mapflags.txt b/world/map/npc/027-6/mapflags.txt
deleted file mode 100644
index 1defed7b..00000000
--- a/world/map/npc/027-6/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-027-6|mapflag|nosave|027-3,82,90
-027-6|mapflag|resave|027-3,82,90
diff --git a/world/map/npc/027-7/_import.txt b/world/map/npc/027-7/_import.txt
deleted file mode 100644
index e4baf4aa..00000000
--- a/world/map/npc/027-7/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 027-7: Crypt Sub-Basement Two
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-7
-npc: npc/027-7/_mobs.txt
-npc: npc/027-7/_nodes.txt
-npc: npc/027-7/_warps.txt
-npc: npc/027-7/general_razha.txt
-npc: npc/027-7/general_razha_exitdoor.txt
-npc: npc/027-7/mapflags.txt
diff --git a/world/map/npc/027-7/_mobs.txt b/world/map/npc/027-7/_mobs.txt
deleted file mode 100644
index a6d6a471..00000000
--- a/world/map/npc/027-7/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two mobs
-
diff --git a/world/map/npc/027-7/_nodes.txt b/world/map/npc/027-7/_nodes.txt
deleted file mode 100644
index 4e14e522..00000000
--- a/world/map/npc/027-7/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-7/_warps.txt b/world/map/npc/027-7/_warps.txt
deleted file mode 100644
index fc9e6717..00000000
--- a/world/map/npc/027-7/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two warps
-
diff --git a/world/map/npc/027-7/general_razha.txt b/world/map/npc/027-7/general_razha.txt
deleted file mode 100644
index f331d95c..00000000
--- a/world/map/npc/027-7/general_razha.txt
+++ /dev/null
@@ -1,235 +0,0 @@
-// author: Jenalya, wushin
-// Based off Cindy Fight
-// General Razha Fight
-
-027-7,39,25,0|script|General Razha|400
-{
- if ($@CRYPT_FIGHT2 != 0)
- end;
-
- set @RAZHA_SOUL_REQ, 3;
- set @RAZHA_DISEASED_HEARTS_REQ, 5;
- set @RAZHA_UNDEAD_EYE_REQ, 3;
- set @RAZHA_UNDEAD_EAR_REQ, 2;
- set @minlevel, 70;
-
- mes "[Tome]";
- mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
- next;
- goto L_TomeMain;
-
-L_TomeMain:
- mes "What do you want to do?";
- menu
- "Read reagent List.", L_SummonReagents,
- "Perform Ritual.", L_Ritual,
- "Nothing.", L_Close;
-
-L_SummonReagents:
- mes "Says we need " + @RAZHA_SOUL_REQ + " Souls, " + @RAZHA_DISEASED_HEARTS_REQ + " Diseased Hearts, " + @RAZHA_UNDEAD_EYE_REQ + " Undead Eyes, and " + @RAZHA_UNDEAD_EAR_REQ + " Undead Ears to perform the ritual.";
- next;
- goto L_TomeMain;
-
-L_MissingReagents:
- mes "It appears we are missing something, lets check the reagent list again.";
- next;
- goto L_SummonReagents;
-
-L_Ritual:
- if (BaseLevel < @minlevel)
- goto L_ToWeak;
- if ( (countitem("Soul") < @RAZHA_SOUL_REQ)
- || (countitem("DiseasedHeart") < @RAZHA_DISEASED_HEARTS_REQ)
- || (countitem("UndeadEye") < @RAZHA_UNDEAD_EYE_REQ)
- || (countitem("UndeadEar") < @RAZHA_UNDEAD_EAR_REQ) )
- goto L_MissingReagents;
- delitem "Soul", @RAZHA_SOUL_REQ;
- delitem "DiseasedHeart", @RAZHA_DISEASED_HEARTS_REQ;
- delitem "UndeadEye", @RAZHA_UNDEAD_EYE_REQ;
- delitem "UndeadEar", @RAZHA_UNDEAD_EAR_REQ;
- mes "As you perform the ritual you can feel the energy amass.";
- next;
- mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
- if ($@CRYPT_FIGHT2 != 0)
- goto L_Close;
-
- // initialize fight
- set $@CRYPT_FIGHT2, 1;
- set $@CRYPT_FIGHT2_WAVE, 0;
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, 2;
- set $@CRYPT_FIGHT2_PLAYER_COUNT, getmapusers("027-7");
- areamonster "027-7", 0, 0, 79, 84, "", 1036, 1, "General Razha::OnPetDeath";
- areamonster "027-7", 0, 0, 79, 84, "", 1124, 1, "General Razha::OnPetDeath";
-
- initnpctimer;
- goto L_Announce;
-
-L_ToWeak:
- mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
- goto L_Close;
-
-L_Close:
- set @bonus, 0;
- set @minlevel, 0;
- set @RAZHA_SOUL_REQ, 0;
- set @RAZHA_DISEASED_HEARTS_REQ, 0;
- set @RAZHA_UNDEAD_EYE_REQ, 0;
- set @RAZHA_UNDEAD_EAR_REQ, 0;
- close;
-
-// Fight logic attached to npc
-OnTimer5000:
- setnpctimer 0;
- if ($@CRYPT_FIGHT2 != 0)
- goto L_CryptLogic;
- goto L_Return_1;
-
-L_Return_1:
- set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
- areatimer 0, "027-7", 0, 0, 79, 84, 10, "General Razha::OnTick";
- end;
-
-L_CryptLogic:
- set $@CRYPT_FIGHT2_ROUND_PEN, $@CRYPT_FIGHT2_PLAYER_COUNT;
- if ($@CRYPT_FIGHT2_ROUND_PEN > 60)
- set $@CRYPT_FIGHT2_ROUND_PEN, 60;
- if ($@CRYPT_FIGHT2_PLAYER_COUNT <= 0)
- goto L_CleanUpLosers;
- set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
- if (mobcount("027-7", "General Razha::OnPetDeath") < 0)
- goto L_NextWave;
- if ($@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT2_ROUND_PEN >= 120)
- goto L_NextWave;
- goto L_Return_1;
-
-L_NextWave:
- set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT2_WAVE, $@CRYPT_FIGHT2_WAVE + 1;
- if ( ($@CRYPT_FIGHT2_WAVE > 10) && ($@CRYPT_FIGHT2_SUMMONS_COUNT == 0) )
- goto L_CleanUp;
- if ( ($@CRYPT_FIGHT2_WAVE > 10) && ($@CRYPT_FIGHT2_WAVE < 22) )
- goto L_Return_1;
- if ($@CRYPT_FIGHT2_WAVE > 22)
- goto L_SummonNuke;
- if ($@CRYPT_FIGHT2_WAVE < 5)
- goto L_WeakSummons;
- if ( ($@CRYPT_FIGHT2_WAVE < 10) && ($@CRYPT_FIGHT2_WAVE >= 5) )
- goto L_StrongSummons;
- if ($@CRYPT_FIGHT2_WAVE == 10)
- goto L_BossSummons;
- goto L_SummonNuke;
-
-L_SummonNuke:
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + $@CRYPT_FIGHT2_WAVE*2 + $@CRYPT_FIGHT2_PLAYER_COUNT*4;
- areamonster "027-7", 0, 0, 79, 84, "", 1036, $@CRYPT_FIGHT2_WAVE*2 + $@CRYPT_FIGHT2_PLAYER_COUNT*4, "General Razha::OnPetDeath";
- goto L_Announce;
-
-L_WeakSummons:
- set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
-
- areamonster "027-7", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
- areamonster "027-7", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
- goto L_Announce;
-
-L_StrongSummons:
- set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
-
- areamonster "027-7", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
- areamonster "027-7", 0, 0, 79, 84, "", 1124, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
- goto L_Announce;
-
-L_BossSummons:
- set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
- areamonster "027-7", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
- areamonster "027-7", 0, 0, 79, 84, "", 1124, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
- areamonster "027-7", 0, 0, 79, 84, "", 1128, 1, "General Razha::OnPetDeath";
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + 1;
- goto L_Announce;
-
-L_Announce:
- set $@msg$, $@CRYPT_FIGHT2_MESSAGES$[$@CRYPT_FIGHT2_WAVE];
- if ($@msg$ == "")
- goto L_Return_1;
- mapannounce "027-7", $@msg$, 0;
- mapannounce "027-4", $@msg$, 0;
- set $@msg$, "";
- goto L_Return_1;
-
-// Called on each player once every 5 seconds
-OnTick:
- if (isdead()) end;
- set $@CRYPT_FIGHT2_PLAYER_COUNT, $@CRYPT_FIGHT2_PLAYER_COUNT + 1;
- end;
-
-OnPetDeath:
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT - 1;
- end;
-
-L_CleanUpLosers:
- mapannounce "027-7", "General Razha : Oh where did you all go, I was beginning to have fun here.", 0;
- mapannounce "027-4", "The battle is lost.", 0;
- set $@CRYPT_FIGHT2, 0;
- set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
- set $@CRYPT_FIGHT2_WAVE, 0;
- set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, 0;
- set $@CRYPT_FIGHT2_ROUND_PEN, 0;
- set $@CRYPT_FIGHT2_SUMMONS_NUMBER, 0;
- killmonster "027-7", "General Razha::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_CleanUp:
- mapannounce "027-7", "General Razha : How in all hells could that happen? I am lost forever.", 0;
- mapannounce "027-4", "General Razha is defeated.", 0;
- areatimer 0, "027-7", 0, 0, 79, 84, 10, "General Razha::OnReward";
- set $@CRYPT_FIGHT2, 0;
- set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
- set $@CRYPT_FIGHT2_WAVE, 0;
- set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT2_SUMMONS_COUNT, 0;
- set $@CRYPT_FIGHT2_ROUND_PEN, 0;
- set $@CRYPT_FIGHT2_SUMMONS_NUMBER, 0;
- killmonster "027-7", "General Razha::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnReward:
- if (isdead()) end;
- set @bonus, (BaseLevel/2);
- set DailyQuestBonus, DailyQuestBonus + @bonus;
- message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
- set BOSS_POINTS, BOSS_POINTS + 50;
- message strcharinfo(0), "You gain 50 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_End;
-
-L_End:
- set @bonus, 0;
- set @minlevel, 0;
- set @RAZHA_SOUL_REQ, 0;
- set @RAZHA_DISEASED_HEARTS_REQ, 0;
- set @RAZHA_UNDEAD_EYE_REQ, 0;
- set @RAZHA_UNDEAD_EAR_REQ, 0;
- end;
-
-OnInit:
- setarray $@CRYPT_FIGHT2_MESSAGES$,
- "General Razha : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
- "General Razha : Ha, Looks like your tougher then I thought.",
- "General Razha : and here I thought I wasn't going to enjoy this.",
- "General Razha : More of them are coming!",
- "General Razha : Minions! Kill them already!",
- "General Razha : *facepalm* I knew I should have hired better help.",
- "General Razha : Well at least you will make a good addition to my army.",
- "General Razha : To the Abyss with you already!",
- "General Razha : How about you try a different approach and kill them already!",
- "General Razha : Minions! Last chance or it's back to being part of an ossuary for you!",
- "General Razha : Looks like if you want something done right you have to do it yourself.",
- "General Razha : Charge!.";
- end;
-}
diff --git a/world/map/npc/027-7/general_razha_exitdoor.txt b/world/map/npc/027-7/general_razha_exitdoor.txt
deleted file mode 100644
index 0b15fa96..00000000
--- a/world/map/npc/027-7/general_razha_exitdoor.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// Mini-Boss
-// General Razha
-
-027-7,36,61,0|script|#GeneralExit2|45,6,0
-{
- if ($@CRYPT_FIGHT2 != 0)
- goto L_Block;
- warp "027-4",73,77;
- end;
-
-L_Block:
- message strcharinfo(0), "A force field seems to be blocking you from exiting.";
- end;
-}
diff --git a/world/map/npc/027-7/mapflags.txt b/world/map/npc/027-7/mapflags.txt
deleted file mode 100644
index d592dbdc..00000000
--- a/world/map/npc/027-7/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-027-7|mapflag|nosave|027-4,73,78
-027-7|mapflag|resave|027-4,73,78
diff --git a/world/map/npc/027-8/_import.txt b/world/map/npc/027-8/_import.txt
deleted file mode 100644
index dc9e06da..00000000
--- a/world/map/npc/027-8/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 027-8: Crypt Sub-Basement Two
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 027-8
-npc: npc/027-8/_mobs.txt
-npc: npc/027-8/_nodes.txt
-npc: npc/027-8/_warps.txt
-npc: npc/027-8/general_terogan.txt
-npc: npc/027-8/general_terogan_exitdoor.txt
-npc: npc/027-8/mapflags.txt
diff --git a/world/map/npc/027-8/_mobs.txt b/world/map/npc/027-8/_mobs.txt
deleted file mode 100644
index a6d6a471..00000000
--- a/world/map/npc/027-8/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two mobs
-
diff --git a/world/map/npc/027-8/_nodes.txt b/world/map/npc/027-8/_nodes.txt
deleted file mode 100644
index 4e14e522..00000000
--- a/world/map/npc/027-8/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two nodes
-
-// (no nodes)
diff --git a/world/map/npc/027-8/_warps.txt b/world/map/npc/027-8/_warps.txt
deleted file mode 100644
index fc9e6717..00000000
--- a/world/map/npc/027-8/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Crypt Sub-Basement Two warps
-
diff --git a/world/map/npc/027-8/general_terogan.txt b/world/map/npc/027-8/general_terogan.txt
deleted file mode 100644
index 522b1eaa..00000000
--- a/world/map/npc/027-8/general_terogan.txt
+++ /dev/null
@@ -1,323 +0,0 @@
-// author: Jenalya, wushin
-// Based off Cindy Fight
-// General Terogan Fight
-
-027-8,39,24,0|script|General Terogan#Main|400
-{
- if ($@CRYPT_FIGHT3 != 0)
- end;
-
- set @TEROGAN_SOUL_REQ, 5;
- set @TEROGAN_ROTTEN_RAGS_REQ, 5;
- set @TEROGAN_UNDEAD_EYE_REQ, 3;
- set @TEROGAN_UNDEAD_EAR_REQ, 2;
- set @minlevel, 80;
-
- mes "[Tome]";
- mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
- next;
- goto L_TomeMain;
-
-L_TomeMain:
- mes "What do you want to do?";
- menu
- "Read reagent List.", L_SummonReagents,
- "Assign myself left.", L_SummonLeft,
- "Assign myself right.", L_SummonRight,
- "Perform Ritual.", L_RitualMenu,
- "Nothing.", L_Close;
-
-L_SummonReagents:
- mes "Says we need " + @TEROGAN_SOUL_REQ + " Souls, " + @TEROGAN_ROTTEN_RAGS_REQ + " Rotten Rags, " + @TEROGAN_UNDEAD_EYE_REQ + " Undead Eyes, and " + @TEROGAN_UNDEAD_EAR_REQ + " Undead Ears to perform the ritual. You will also need help, as the summon states both rooms need at least 1 occupant during the ritual.";
- next;
- goto L_TomeMain;
-
-L_MissingReagents:
- mes "It appears we are missing something, lets check the reagent list again.";
- next;
- goto L_SummonReagents;
-
-L_SummonLeft:
- warp "027-8", 27, 43;
- goto L_Close;
-
-L_SummonRight:
- warp "027-8", 51, 43;
- goto L_Close;
-
-L_RitualMenu:
- mes "Which side do you want to be on?";
- menu
- "Left.", L_RitualLeft,
- "Right.", L_RitualRight;
-
-L_RitualLeft:
- if (BaseLevel < @minlevel)
- goto L_ToWeak;
- if ( (countitem("Soul") < @TEROGAN_SOUL_REQ)
- || (countitem("RottenRags") < @TEROGAN_ROTTEN_RAGS_REQ)
- || (countitem("UndeadEye") < @TEROGAN_UNDEAD_EYE_REQ)
- || (countitem("UndeadEar") < @TEROGAN_UNDEAD_EAR_REQ) )
- goto L_MissingReagents;
- if (getareausers("027-8", 43, 39, 58, 60) == 0)
- goto L_NeedOther;
- delitem "Soul", @TEROGAN_SOUL_REQ;
- delitem "RottenRags", @TEROGAN_ROTTEN_RAGS_REQ;
- delitem "UndeadEye", @TEROGAN_UNDEAD_EYE_REQ;
- delitem "UndeadEar", @TEROGAN_UNDEAD_EAR_REQ;
- mes "As you perform the ritual you can feel the energy amass.";
- next;
- mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
- if ($@CRYPT_FIGHT3 != 0)
- goto L_Close;
-
- // initialize fight
- set $@CRYPT_FIGHT3, 1;
- set $@CRYPT_FIGHT3_WAVE, 0;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, 2;
- set $@CRYPT_FIGHT3_PLAYER_COUNT, getmapusers("027-8");
- areamonster "027-8", 43, 39, 58, 60, "", 1124, 1, "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 20, 39, 35, 60, "", 1075, 1, "General Terogan#Main::OnPetDeath";
-
- initnpctimer;
- warp "027-8", 27, 43;
- goto L_Announce;
-
-L_RitualRight:
- if (BaseLevel < @minlevel)
- goto L_ToWeak;
- if ( (countitem("Soul") < @TEROGAN_SOUL_REQ)
- || (countitem("RottenRags") < @TEROGAN_ROTTEN_RAGS_REQ)
- || (countitem("UndeadEye") < @TEROGAN_UNDEAD_EYE_REQ)
- || (countitem("UndeadEar") < @TEROGAN_UNDEAD_EAR_REQ) )
- goto L_MissingReagents;
- if (getareausers("027-8", 20, 39, 35, 60) == 0)
- goto L_NeedOther;
- delitem "Soul", @TEROGAN_SOUL_REQ;
- delitem "RottenRags", @TEROGAN_ROTTEN_RAGS_REQ;
- delitem "UndeadEye", @TEROGAN_UNDEAD_EYE_REQ;
- delitem "UndeadEar", @TEROGAN_UNDEAD_EAR_REQ;
- mes "As you perform the ritual you can feel the energy amass.";
- next;
- mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
- warp "027-8", 51, 43;
- if ($@CRYPT_FIGHT3 != 0)
- goto L_Close;
-
- // initialize fight
- set $@CRYPT_FIGHT3, 1;
- set $@CRYPT_FIGHT3_WAVE, 0;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, 2;
- set $@CRYPT_FIGHT3_PLAYER_COUNT, getmapusers("027-8");
- areamonster "027-8", 43, 39, 58, 60, "", 1124, 1, "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 20, 39, 35, 60, "", 1075, 1, "General Terogan#Main::OnPetDeath";
-
- initnpctimer;
- goto L_Announce;
-
-L_NeedOther:
- mes "You need at least one other person in the the other chamber to start.";
- goto L_TomeMain;
-
-L_ToWeak:
- mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
- goto L_Close;
-
-L_Close:
- set @bonus, 0;
- set @minlevel, 0;
- set @TEROGAN_SOUL_REQ, 0;
- set @TEROGAN_ROTTEN_RAGS_REQ, 0;
- set @TEROGAN_UNDEAD_EYE_REQ, 0;
- set @TEROGAN_UNDEAD_EAR_REQ, 0;
- close;
-
-// Fight logic attached to npc
-OnTimer5000:
- setnpctimer 0;
- if ($@CRYPT_FIGHT3 != 0)
- goto L_CryptLogic;
- goto L_Return_1;
-
-L_Return_1:
- set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
- areatimer 0, "027-8", 0, 0, 79, 84, 10, "General Terogan#Main::OnTick";
- end;
-
-L_CryptLogic:
- set $@CRYPT_FIGHT3_ROUND_PEN, $@CRYPT_FIGHT3_PLAYER_COUNT;
- if ($@CRYPT_FIGHT3_ROUND_PEN > 60)
- set $@CRYPT_FIGHT3_ROUND_PEN, 60;
- if ($@CRYPT_FIGHT3_PLAYER_COUNT <= 0) goto L_CleanUpLosers;
- if (getareausers("027-8", 20, 39, 35, 60, 1) < 1) goto L_Failure;
- if (getareausers("027-8", 43, 39, 58, 60, 1) < 1) goto L_Failure;
- set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
- if (mobcount("027-8", "General Terogan#Main::OnPetDeath") < 0)
- goto L_NextWave;
- if ($@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT3_ROUND_PEN >= 120)
- goto L_NextWave;
- goto L_Return_1;
-
-L_NextWave:
- set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT3_WAVE, $@CRYPT_FIGHT3_WAVE + 1;
- if ( ($@CRYPT_FIGHT3_WAVE > 10) && ($@CRYPT_FIGHT3_SUMMONS_COUNT == 0) )
- goto L_CleanUp;
- if ( ($@CRYPT_FIGHT3_WAVE > 10) && ($@CRYPT_FIGHT3_WAVE < 22) )
- goto L_Return_1;
- if ($@CRYPT_FIGHT3_WAVE > 22)
- goto L_SummonNuke;
- if ($@CRYPT_FIGHT3_WAVE < 5)
- goto L_WeakSummons;
- if ( ($@CRYPT_FIGHT3_WAVE < 10) && ($@CRYPT_FIGHT3_WAVE >= 5) )
- goto L_StrongSummons;
- if ($@CRYPT_FIGHT3_WAVE == 10)
- goto L_BossSummons;
- goto L_SummonNuke;
-
-L_SummonNuke:
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + $@CRYPT_FIGHT3_WAVE*2 + $@CRYPT_FIGHT3_PLAYER_COUNT*4;
- areamonster "027-8", 0, 0, 79, 84, "", 1124, $@CRYPT_FIGHT3_WAVE*2 + $@CRYPT_FIGHT3_PLAYER_COUNT*4, "General Terogan#Main::OnPetDeath";
- goto L_Announce;
-
-L_WeakSummons:
- set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2);
-
- areamonster "027-8", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 20, 39, 35, 60, "", 1074, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
- goto L_Announce;
-
-L_StrongSummons:
- set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + (2 * ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2));
-
- areamonster "027-8", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 20, 39, 35, 60, "", 1075, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
- goto L_Announce;
-
-L_BossSummons:
- set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + (2 * ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2)) + 2;
- areamonster "027-8", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 20, 39, 35, 60, "", 1075, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 43, 39, 58, 60, "", 1129, 1, "General Terogan#Main::OnPetDeath";
- areamonster "027-8", 20, 39, 35, 60, "", 1129, 1, "General Terogan#Main::OnPetDeath";
- goto L_Announce;
-
-L_Announce:
- set $@msg$, $@CRYPT_FIGHT3_MESSAGES$[$@CRYPT_FIGHT3_WAVE];
- if ($@msg$ == "")
- goto L_Return_1;
- mapannounce "027-8", $@msg$, 0;
- mapannounce "027-5", $@msg$, 0;
- set $@msg$, "";
- goto L_Return_1;
-
-// Called on each player once every 5 seconds
-OnTick:
- if (isdead())
- end;
- set $@CRYPT_FIGHT3_PLAYER_COUNT, $@CRYPT_FIGHT3_PLAYER_COUNT + 1;
- end;
-
-OnPetDeath:
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT - 1;
- end;
-
-L_Failure:
- if ($@CRYPT_FAIL_ANNOUNCED) goto L_NextWave;
- set $@CRYPT_FAIL_ANNOUNCED, 1;
- mapannounce "027-8", "Looks like your neighbour team to is finished off, this is your death sentence!", 0;
- set $@CRYPT_FIGHT3_WAVE, 23;
- goto L_NextWave;
-
-L_CleanUpLosers:
- mapannounce "027-8", "General Terogan : You just proved you cannot even coordinate a simple task. Come back when you are prepared", 0;
- set $@CRYPT_FIGHT3, 0;
- set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
- set $@CRYPT_FIGHT3_WAVE, 0;
- set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, 0;
- set $@CRYPT_FIGHT3_ROUND_PEN, 0;
- set $@CRYPT_FIGHT3_SUMMONS_NUMBER, 0;
- set $@CRYPT_FAIL_ANNOUNCED, 0;
- killmonster "027-8", "General Terogan#Main::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_CleanUp:
- mapannounce "027-8", "General Terogan : You might have won this battle, but you will never defeat me!", 0;
- areatimer 0, "027-8", 0, 0, 79, 84, 10, "General Terogan#Main::OnReward";
- set $@CRYPT_FIGHT3, 0;
- set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
- set $@CRYPT_FIGHT3_WAVE, 0;
- set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
- set $@CRYPT_FIGHT3_SUMMONS_COUNT, 0;
- set $@CRYPT_FIGHT3_ROUND_PEN, 0;
- set $@CRYPT_FIGHT3_SUMMONS_NUMBER, 0;
- set $@CRYPT_FAIL_ANNOUNCED, 0;
- killmonster "027-8", "General Terogan#Main::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnReward:
- if (isdead())
- end;
- set @bonus, (BaseLevel/2);
- set DailyQuestBonus, DailyQuestBonus + @bonus;
- message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
- set BOSS_POINTS, BOSS_POINTS + 75;
- message strcharinfo(0), "You gain 75 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_End;
-
-L_End:
- set @bonus, 0;
- set @minlevel, 0;
- set @TEROGAN_SOUL_REQ, 0;
- set @TEROGAN_ROTTEN_RAGS_REQ, 0;
- set @TEROGAN_UNDEAD_EYE_REQ, 0;
- set @TEROGAN_UNDEAD_EAR_REQ, 0;
- end;
-
-OnInit:
- setarray $@CRYPT_FIGHT3_MESSAGES$,
- "General Terogan : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
- "General Terogan : Ha, Looks like your tougher then I thought.",
- "General Terogan : and here I thought I wasn't going to enjoy this.",
- "General Terogan : More of them are coming!",
- "General Terogan : Minions! Kill them already!",
- "General Terogan : *facepalm* I knew I should have hired better help.",
- "General Terogan : Well at least you will make a good addition to my army.",
- "General Terogan : To the Abyss with you already!",
- "General Terogan : How about you try a different approach and kill them already!",
- "General Terogan : Minions! Last chance or it's back to being part of an ossuary for you!",
- "General Terogan : Looks like if you want something done right you have to do it yourself.",
- "General Terogan : Charge!.";
- end;
-}
-
-027-8,27,41,0|script|General Terogan#Exit1|400
-{
- if ($@CRYPT_FIGHT3 != 0)
- message strcharinfo(0), "You are way too busy to check this book right now";
- if ($@CRYPT_FIGHT3 != 0)
- end;
- mes "[General Terogan]";
- mes "\"Let's get you out of here " + strcharinfo(0) + "\"";
- warp "027-8", 38, 29;
- end;
-}
-027-8,51,41,0|script|General Terogan#Exit2|400
-{
- if ($@CRYPT_FIGHT3 != 0)
- message strcharinfo(0), "You are way too busy to check this book right now";
- if ($@CRYPT_FIGHT3 != 0)
- end;
- mes "[General Terogan]";
- mes "\"Let's get you out of here " + strcharinfo(0) + "\"";
- warp "027-8", 38, 29;
- end;
-}
diff --git a/world/map/npc/027-8/general_terogan_exitdoor.txt b/world/map/npc/027-8/general_terogan_exitdoor.txt
deleted file mode 100644
index 41392b0a..00000000
--- a/world/map/npc/027-8/general_terogan_exitdoor.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// Mini-Boss
-// General Krukun
-
-027-8,38,61,0|script|#GeneralExit3|45,3,0
-{
- if ($@CRYPT_FIGHT3 != 0)
- goto L_Block;
- warp "027-5",70,26;
- end;
-
-L_Block:
- message strcharinfo(0), "A force field seems to be blocking you from exiting.";
- end;
-}
diff --git a/world/map/npc/027-8/mapflags.txt b/world/map/npc/027-8/mapflags.txt
deleted file mode 100644
index e1aa73b1..00000000
--- a/world/map/npc/027-8/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-027-8|mapflag|nosave|027-5,70,27
-027-8|mapflag|resave|027-5,70,27
diff --git a/world/map/npc/028-1/_import.txt b/world/map/npc/028-1/_import.txt
deleted file mode 100644
index b7221baf..00000000
--- a/world/map/npc/028-1/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 028-1: GM Island
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 028-1
-npc: npc/028-1/_mobs.txt
-npc: npc/028-1/_nodes.txt
-npc: npc/028-1/_warps.txt
-npc: npc/028-1/mapflags.txt
-npc: npc/028-1/portal.txt
diff --git a/world/map/npc/028-1/_mobs.txt b/world/map/npc/028-1/_mobs.txt
deleted file mode 100644
index e5e3e7e5..00000000
--- a/world/map/npc/028-1/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Island mobs
-
diff --git a/world/map/npc/028-1/_nodes.txt b/world/map/npc/028-1/_nodes.txt
deleted file mode 100644
index c4fb65dc..00000000
--- a/world/map/npc/028-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Island nodes
-
-// (no nodes)
diff --git a/world/map/npc/028-1/_warps.txt b/world/map/npc/028-1/_warps.txt
deleted file mode 100644
index c395464d..00000000
--- a/world/map/npc/028-1/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Island warps
-
-028-1,120,125|warp|-1,-1,028-3,33,77
diff --git a/world/map/npc/028-1/mapflags.txt b/world/map/npc/028-1/mapflags.txt
deleted file mode 100644
index f1de8f33..00000000
--- a/world/map/npc/028-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-028-1|mapflag|nosave|009-1,53,40
diff --git a/world/map/npc/028-1/portal.txt b/world/map/npc/028-1/portal.txt
deleted file mode 100644
index 15b783ff..00000000
--- a/world/map/npc/028-1/portal.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-//Leave GM Island
-028-1,98,37,0|script|Exit|400,0,0
-{
- mes "[Exit]";
- mes "Would you like to leave this place?";
- menu
- "Yes.", L_Leave,
- "No.", L_Close;
-
-L_Leave:
- warp getsavepoint(0), getsavepoint(1), getsavepoint(2);
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/028-3/_import.txt b/world/map/npc/028-3/_import.txt
deleted file mode 100644
index 8f0036c0..00000000
--- a/world/map/npc/028-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 028-3: GM Island Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 028-3
-npc: npc/028-3/_mobs.txt
-npc: npc/028-3/_nodes.txt
-npc: npc/028-3/_warps.txt
-npc: npc/028-3/mapflags.txt
diff --git a/world/map/npc/028-3/_mobs.txt b/world/map/npc/028-3/_mobs.txt
deleted file mode 100644
index c3c38c44..00000000
--- a/world/map/npc/028-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Island Cave mobs
-
diff --git a/world/map/npc/028-3/_nodes.txt b/world/map/npc/028-3/_nodes.txt
deleted file mode 100644
index 25112bd6..00000000
--- a/world/map/npc/028-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Island Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/028-3/_warps.txt b/world/map/npc/028-3/_warps.txt
deleted file mode 100644
index 40f8dc9d..00000000
--- a/world/map/npc/028-3/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// GM Island Cave warps
-
-028-3,33,78|warp|-1,-1,028-1,120,126
diff --git a/world/map/npc/028-3/mapflags.txt b/world/map/npc/028-3/mapflags.txt
deleted file mode 100644
index 4fe56202..00000000
--- a/world/map/npc/028-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-028-3|mapflag|nosave|009-1,53,40
diff --git a/world/map/npc/029-1/_import.txt b/world/map/npc/029-1/_import.txt
deleted file mode 100644
index b9e64749..00000000
--- a/world/map/npc/029-1/_import.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// Map 029-1: Candor Island
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 029-1
-npc: npc/029-1/_mobs.txt
-npc: npc/029-1/_nodes.txt
-npc: npc/029-1/_warps.txt
-npc: npc/029-1/aahna.txt
-npc: npc/029-1/barrier.txt
-npc: npc/029-1/dock.txt
-npc: npc/029-1/ferry_master.txt
-npc: npc/029-1/hasan.txt
-npc: npc/029-1/hideandseek.txt
-npc: npc/029-1/kaan.txt
-npc: npc/029-1/liana.txt
-npc: npc/029-1/mapflags.txt
-npc: npc/029-1/monster_guide.txt
-npc: npc/029-1/rewards_master.txt
-npc: npc/029-1/soul-menhir.txt
-npc: npc/029-1/traveler.txt
-npc: npc/029-1/tutorial.txt
-npc: npc/029-1/valon.txt
-npc: npc/029-1/vincent.txt
-npc: npc/029-1/zegas.txt
diff --git a/world/map/npc/029-1/_mobs.txt b/world/map/npc/029-1/_mobs.txt
deleted file mode 100644
index 4fb1734b..00000000
--- a/world/map/npc/029-1/_mobs.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Island mobs
-
-029-1,46,48,4,1|monster|CloverPatch|1037,1,10000ms,120000ms
-029-1,73,93,14,13|monster|Maggot|1002,8,100000ms,30000ms
-029-1,90,35,15,11|monster|TameScorpion|1046,16,100000ms,30000ms
-029-1,93,100,21,18|monster|TameScorpion|1046,8,100000ms,30000ms
-029-1,43,43,31,23|monster|Scorpion|1003,2,100000ms,30000ms
-029-1,76,42,52,25|monster|ManaBug|1131,3,30ms,0ms
diff --git a/world/map/npc/029-1/_nodes.txt b/world/map/npc/029-1/_nodes.txt
deleted file mode 100644
index cde06d82..00000000
--- a/world/map/npc/029-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Island nodes
-
-// (no nodes)
diff --git a/world/map/npc/029-1/_warps.txt b/world/map/npc/029-1/_warps.txt
deleted file mode 100644
index 96524526..00000000
--- a/world/map/npc/029-1/_warps.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Island warps
-
-029-1,40,88|warp|-1,-1,029-2,29,61
-029-1,44,83|warp|-1,-1,029-2,22,92
-029-1,52,84|warp|-1,-1,029-2,103,61
-029-1,58,79|warp|-1,-1,029-2,94,30
-029-1,49,77|warp|-1,-1,029-2,24,123
diff --git a/world/map/npc/029-1/aahna.txt b/world/map/npc/029-1/aahna.txt
deleted file mode 100644
index 453774a9..00000000
--- a/world/map/npc/029-1/aahna.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// Aahna
-// Author: Wushin
-// Npc
-029-1,71,52,0|script|Aahna|404
-{
- set @npc_distance, 3;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "[Aahna]";
- mes "\"Hello, What a lovely day for a stroll.\"";
- close;
-}
diff --git a/world/map/npc/029-1/barrier.txt b/world/map/npc/029-1/barrier.txt
deleted file mode 100644
index 7414f78b..00000000
--- a/world/map/npc/029-1/barrier.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-029-1,69,61,0|script|#CandorBarrier|45,0,0
-{
- if ($@FIGHT_CAVE_STATUS == 1) goto L_Block;
- if (BaseLevel < 40) goto L_Block;
- warp "029-3", 49, 53;
- end;
-
-L_Block:
- message strcharinfo(0), "Some force seems to be blocking you from entering.";
- end;
-}
-
-029-1,69,61,0|script|#CandorAnnouncer|32767
-{
- end;
-OnTalk:
- if (BaseLevel >= 40) announce "Parua : " + $@candor_npctalk$, 3; // do not show these to newbies
- end;
-
-OnCommandTalk:
- areatimer 0, "029-1", 61, 61, 69, 73, 0, "#CandorAnnouncer::OnTalk";
- end;
-}
diff --git a/world/map/npc/029-1/dock.txt b/world/map/npc/029-1/dock.txt
deleted file mode 100644
index f7e38c2d..00000000
--- a/world/map/npc/029-1/dock.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-// The ferry dock
-
-029-1,46,111,0|script|Candor Dock|400,1,0
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardCandorFerry";
- end;
-}
-
-029-1,51,118,0|script|Candor Koga|395,8,7
-{
- set @npc_distance, 8;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardCandorFerry";
- end;
-
-OnTouch:
- addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard";
- end;
-
-OnBoard:
- callfunc "BoardCandorFerry";
- end;
-}
-
-029-1,55,110,0|script|#CandorDock|32767
-{
- end;
-OnCommandArrive:
- disablenpc "Candor Dock";
- enablenpc "Candor Koga";
- areatimer 0, "029-1", 39, 111, 53, 113, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock
- end;
-
-OnAreaWarp:
- callfunc "BoardCandorFerry";
- end;
-
-OnCommandWarp:
- disablenpc "Candor Koga";
- enablenpc "Candor Dock";
- end;
-}
diff --git a/world/map/npc/029-1/ferry_master.txt b/world/map/npc/029-1/ferry_master.txt
deleted file mode 100644
index 4586a3f8..00000000
--- a/world/map/npc/029-1/ferry_master.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-
-029-1,45,107,0|script|Ferry Master#candor|138
-{
- mes "[Ferry Master]";
- mes "\"Hello! Do you need something?\"";
- goto L_Main;
-
-L_Main:
- menu
- "How do I use the ferry?", L_Explain,
- "Nothing I guess", L_Close;
-
-L_Explain:
- mes "[Ferry Master]";
- callfunc "FerryHelp";
- goto L_Main;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-1/hasan.txt b/world/map/npc/029-1/hasan.txt
deleted file mode 100644
index 724db18c..00000000
--- a/world/map/npc/029-1/hasan.txt
+++ /dev/null
@@ -1,207 +0,0 @@
-// This file is part of the Tutorial
-// Authors: Jenalya, alastrim
-// Hasan should be threatening someone else you come to help
-// Going to throw someone in the water
-// npctalk 2 NPCs Hasan talks about giving someone a short trip to Docks
-// They respond by asking play for help
-// Hasan tells them to but out of it.
-
-029-1,35,33,0|script|Scared Man|160
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (QL_BEGIN >= 13)
- goto L_TutDone;
- message strcharinfo(0), "He looks too afraid to say anything.";
- goto L_End;
-
-L_TutDone:
- message strcharinfo(0), "Thanks. Hasan has been much nicer to me now";
- goto L_End;
-
-L_End:
- end;
-}
-029-1,33,33,0|script|Hasan|189,3,3
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- goto L_Main;
-
-L_Main:
- if ((getcharid(3) == $@ScorpionFighter) || ($@ScorpionFighter && $@ScorpionFighter != getcharid(3)))
- goto L_Afraid;
- if (QL_BEGIN == 14)
- goto L_TutDone;
- if (QL_BEGIN == 13)
- goto L_Thank;
- if (QL_BEGIN == 12)
- goto L_Trick;
- if ((QL_BEGIN == 9) || (QL_BEGIN == 10) || (QL_BEGIN == 11))
- goto L_FightAgain;
-
- mes "You over hear some people nearby.";
- mes "[Unfriendly Guy]";
- mes "\"I told you if you didn't get the money, I'd give you swimming lessons, Haha!\"";
- mes "[Scared Man]";
- mes "\"But the only person I need protection from is you.\"";
- mes "[Unfriendly Guy]";
- mes "\"Thats why the price is so high.\"";
- mes "\"Because I'm the toughest person in all of Candor\"";
- mes "[Scared Man]";
- mes "\"No, your just a mean bully. Wait till I tell the guards about this!\"";
- mes "[Unfriendly Guy]";
- mes "\"You do that and the next swimming lesson will be sleeping with the fishes.\"";
- mes "[Scared Man]";
- mes "\"No, please don't. *sob*\"";
- mes "Sounds like this person is in trouble.\"";
- set QL_BEGIN, 9;
- mes "[Unfriendly Guy]";
- mes "\"What are you looking at?\"";
- menu
- "What ever you call maggot slime scrapped off a boat after a walk through the sewers.", L_Fight,
- "Who me? I saw nothing, just passing by.", L_Close;
-
-L_FightAgain:
- mes "[Hasan]";
- mes "\"Have you come back for a thrashing?\"";
- menu
- "No.", L_Close,
- "Yes.", L_Fight;
-
-L_Fight:
- mes "[Hasan]";
- mes "\"Do you really think you can beat me?\"";
- mes "He pulls out a nasty looking dagger and stabs it in your direction.";
- set Hp, 1;
- mes "That hurt! You begin to think searching for a different solution might be healthier.";
- mes "Maybe Kaan can help?";
- goto L_Close;
-
-L_Trick:
- mes "[Hasan]";
- mes "\"Have you come back for another thrashing?\"";
- menu
- "No.",L_Close,
- "Yes, yours! (Scratch your head.)",L_ScratchHead;
-
-L_ScratchHead:
- if ($@ScorpionFighter)
- goto L_Wait;
- set $@ScorpionTimer, 0;
- set $@ScorpionFighter, getcharid(3);
- set $@ScorpDeath, PC_DIE_COUNTER;
- donpcevent "#ScorpionTrigger::OnCommandHasanSpawn";
- specialeffect 22;
- mes "While you're scratching your head, a scorpion appears.";
- close;
-
-L_Thank:
- mes "[Hasan]";
- mes "\"You - you saved me!";
- mes "I was mean to people, but you still saved me!\"";
- mes "\"Hey, you're a really cool person.";
- mes "I mean, the way you finished that ghastly scorpion!";
- mes "Amazing!\"";
- mes "\"Let me tell you something, I will no longer bully people.";
- mes "And you can have my Sharp Knife.\"";
- getitem "SharpKnife", 1;
- set QL_BEGIN, 14;
- mes "\"You want to go to Hurnscald, right? Shall I tell you how to get there?\"";
- menu
- "Sure, thanks.",L_HasanThanks,
- "I'll try to find the way myself.",L_Explore;
-
-L_HasanThanks:
- mes "[Hasan]";
- mes "\"Ok, when you leave here go back to the city. Wait on the south end of";
- mes "the city for the ferry to arrive at the docks. It will take you to Hurnscald.\"";
- goto L_Close;
-
-L_Explore:
- mes "[Hasan]";
- mes "\"Alright. Take care!\"";
- goto L_Close;
-
-L_TutDone:
- mes "[Hasan]";
- mes "\"You didn't see anything. I tell you what I'll be nicer if you don't tell anyone?\"";
- menu
- "As long as you learned your lesson.", L_TutCont;
-
-L_TutCont:
- mes "\"I have, I promise not to bully people anymore. It's not fun being scared.\"";
- goto L_Close;
-
-L_Wait:
- mes "There is a scorpion near Hasan already. I think Kaan is helping someone else... Maybe I should try the plan later.";
- goto L_Close;
-
-L_Afraid:
- message strcharinfo(0), "Hasan: \"" + strcharinfo(0) + "! Please help me!\"";
- end;
-
-L_Close:
- close;
-
-OnTouch:
- if (QL_BEGIN >= 13)
- end;
- goto L_Main;
-}
-029-1,0,0,0|script|#ScorpionTrigger|32767
-{
- end;
-
-OnCommandHasanSpawn:
- goto L_Summon;
-
-L_Summon:
- monster "029-1",33,33,"",1046,1, "#ScorpionTrigger::OnScorpionDeath";
- initnpctimer;
- end;
-
-L_SummonAgain:
- message strcharinfo(0), "Kaan is mad at you for your interference! He summons a rock above your head, then summons another scorpion near Hasan!";
- heal -Hp, 0;
- goto L_Summon;
-
-OnTimer5000:
- if (attachrid($@ScorpionFighter) == 0)
- goto L_Clean;
- set $@ScorpionTimer, $@ScorpionTimer + 5;
- if ($@ScorpionTimer >= 300)
- goto L_TimeOut;
- if (PC_DIE_COUNTER > $@ScorpDeath)
- goto L_MessageDeath;
- setnpctimer 0;
- end;
-
-OnScorpionDeath:
- if (getcharid(3) != $@ScorpionFighter)
- goto L_SummonAgain;
- if (QL_BEGIN != 12)
- goto L_Clean;
- set QL_BEGIN, 13;
- message strcharinfo(0), "You saved Hasan.";
- set @mobID, 1003;
- callfunc "MobPoints";
- goto L_Clean;
-
-L_TimeOut:
- message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strength!";
- goto L_Clean;
-
-L_MessageDeath:
- message strcharinfo(0), "Ouch... I should be more careful when fighting these monsters.";
- goto L_Clean;
-
-L_Clean:
- killmonster "029-1", "#ScorpionTrigger::OnScorpionDeath";
- set $@ScorpionFighter, 0;
- set $@ScorpionTimer, 0;
- set $@ScorpDeath, 0;
- stopnpctimer;
- end;
-}
diff --git a/world/map/npc/029-1/hideandseek.txt b/world/map/npc/029-1/hideandseek.txt
deleted file mode 100644
index e0ed487f..00000000
--- a/world/map/npc/029-1/hideandseek.txt
+++ /dev/null
@@ -1,386 +0,0 @@
-// Children playing Hide and Seek
-// QL_HIDENSEEK
-// BYTE 0
-// Bit 0: started quest at Ayasha
-// Bit 1 - 5: found one of the kids each
-// Bit 6: talked to Ayasha after finding all kids
-// Bit 7: unused
-// Author: Jenalya
-
--|script|#hideandseekNTconfig|32767
-{
- end;
-
-OnInit:
- set $@hideandseekNT_started, (1 << 0);
- set $@hideandseekNT_found1, (1 << 1);
- set $@hideandseekNT_found2, (1 << 2);
- set $@hideandseekNT_found3, (1 << 3);
- set $@hideandseekNT_found4, (1 << 4);
- set $@hideandseekNT_found5, (1 << 5);
- set $@hideandseekNT_ended, (1 << 6);
- end;
-}
-function|script|CountHideNSeek
-{
- set @hidden_kid_cnt, 0;
- if (QL_HIDENSEEK & $@hideandseekNT_found1)
- set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QL_HIDENSEEK & $@hideandseekNT_found2)
- set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QL_HIDENSEEK & $@hideandseekNT_found3)
- set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QL_HIDENSEEK & $@hideandseekNT_found4)
- set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QL_HIDENSEEK & $@hideandseekNT_found5)
- set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- return;
-}
-029-1,64,90,0|script|AyashaDebug|258
-{
- mes "[Ayasha Debug]";
- menu
- "Show", L_Show,
- "Reset", L_Reset,
- "Close.", L_Close;
-
-L_Show:
- mes "State: " + QL_HIDENSEEK;
- if (QL_HIDENSEEK & $@hideandseekNT_started)
- mes "Start set";
- if (QL_HIDENSEEK & $@hideandseekNT_found1)
- mes "Found 1 set";
- if (QL_HIDENSEEK & $@hideandseekNT_found2)
- mes "Found 2 set";
- if (QL_HIDENSEEK & $@hideandseekNT_found3)
- mes "Found 3 set";
- if (QL_HIDENSEEK & $@hideandseekNT_found4)
- mes "Found 4 set";
- if (QL_HIDENSEEK & $@hideandseekNT_found5)
- mes "Found 5 set";
- if (QL_HIDENSEEK & $@hideandseekNT_ended)
- mes "Complete set";
- goto L_Close;
-
-L_Reset:
- set QL_HIDENSEEK, 0;
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "AyashaDebug";
- end;
-}
-029-1,62,90,0|script|Ayasha|258
-{
- set @child_number, 0;
- callfunc "XmasList";
-
- set @EXP, 75;
-
- if (QL_HIDENSEEK > 63) goto L_Done;
- if (QL_HIDENSEEK == 63) goto L_Reward;
- if (QL_HIDENSEEK > 0) goto L_Doing;
-
- mes "You see a girl who is holding her hands in front of her face.";
- mes "[Ayasha]";
- mes "\"98... 99... 100!\"";
- mes "She takes away her hands and looks up.";
- menu
- "Hello, what are you doing?",L_Next,
- "(Leave)",L_Close;
-
-L_Next:
- mes "[Ayasha]";
- mes "\"I'm playing hide and seek with my friends!";
- mes "Do you want to play with us?\"";
- menu
- "Sure, sounds like fun.",L_Next1,
- "I'm busy with more important things!",L_Close;
-
-L_Next1:
- mes "[Ayasha]";
- mes "\"Great! You can take my turn with searching. You need to find all five of my friends.";
- mes "They're hiding somewhere on the island, you will have to explore to find them. They could be hiding anywhere.\"";
-
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_started;
- goto L_Close;
-
-L_Doing:
- callfunc "CountHideNSeek";
- mes "[Ayasha]";
- mes "\"You still need to find some of my friends. You have found " + @hidden_kid_cnt + " out of 5 of my friends.\"";
- mes "\"Remember, they're hiding somewhere on the island, you will have to explore to find them. They could be hiding anywhere.\"";
- goto L_Close;
-
-L_Reward:
- mes "[Ayasha]";
- mes "\"Oh, you found them all! Good job! Now it's my turn with searching again. Go and hide!\"";
- getexp @EXP, 0;
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_ended;
- menu
- "I think I need to do other things now.",L_Next2;
-
-L_Next2:
- mes "[Ayasha]";
- mes "\"Oh, ok.";
- mes "Have you already seen Hurnscald? It's a very exciting place! I love the entertainer. She can make so many funny faces.\"";
- goto L_Close;
-
-L_Done:
- mes "[Ayasha]";
- mes "\"Hello! It was fun to play with you.";
- mes "When you go to the Hurnscald, you can say hello to Mikhail. He's very nice! But very shy.\"";
- goto L_Close;
-
-L_Close:
- set @EXP, 0;
- close;
-}
-
-029-1,50,105,0|script|Latif|262
-{
- set @child_number, 1;
- callfunc "XmasList";
- set @EXP, 15;
-
- if (QL_HIDENSEEK > 63) goto L_Done;
- if ((QL_HIDENSEEK > 0) && !(QL_HIDENSEEK & $@hideandseekNT_found1)) goto L_Find;
- if (QL_HIDENSEEK > 0) goto L_Doing;
-
- mes "You see a kid hiding behind a box.";
- menu
- "What are you doing there?",L_Next,
- "(Leave)",L_Close;
-
-L_Next:
- mes "[Latif]";
- mes "\"Hiding. We're playing hide and seek. Don't say that is boring. It's fun.\"";
- menu
- "I agree, it's fun.",L_Agree,
- "Hide and seek? Lame.",L_Next1;
-
-L_Next1:
- mes "[Latif]";
- mes "\"My friend Vincent thinks so too. He doesn't join us playing.";
- mes "Do you know what he does instead? He builds action figures out of Bug Legs! That is lame.\"";
- goto L_Close;
-
-L_Agree:
- mes "[Latif]";
- mes "\"Yeah, right? My friend Vincent doesn't thinks so. He doesn't join us playing.";
- mes "Do you know what he does instead? He builds action figures out of Bug Legs! That is lame.\"";
- goto L_Close;
-
-L_Find:
- mes "[Latif]";
- mes "\"Hey! Ah, you found me. Well done. But my hiding place wasn't that difficult this time.\"";
- getexp @EXP, 0;
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found1;
- mes "\"Here, do you want a candy?\"";
- getitem "Candy", 1;
- goto L_Close;
-
-L_Doing:
- callfunc "CountHideNSeek";
- mes "[Latif]";
- mes "\"You didn't find all of us yet? Seems like the other ones found a better place to hide.\"";
- mes "\"" + @hidden_kid_cnt + " out of 5 have been found.\"";
- goto L_Close;
-
-L_Done:
- mes "[Latif]";
- mes "\"The northeastern most building of town is a workshop. My father works there and wants me to do that too when I'm grown up. But I don't want do that! I want to go on an adventure! Just like you.\"";
- goto L_Close;
-
-L_Close:
- set @EXP, 0;
- close;
-}
-
-029-1,48,67,0|script|Charda|260
-{
- set @child_number, 2;
- callfunc "XmasList";
- set @EXP, 15;
-
- if (QL_HIDENSEEK > 63) goto L_Done;
- if ((QL_HIDENSEEK > 0) && !(QL_HIDENSEEK & $@hideandseekNT_found2)) goto L_Find;
- if (QL_HIDENSEEK > 0) goto L_Doing;
-
- mes "[Charda]";
- mes "\"Hello. Psht, be careful. I'm playing hide and seek with Ayasha. You'll draw attention to my hiding place.\"";
- mes "\"They will never find me here.\"";
- goto L_Close;
-
-L_Find:
- mes "[Charda]";
- mes "\"Oh! Got me! You're good at this.\"";
- getexp @EXP, 0;
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found2;
- mes "She takes something out of her pocket.";
- mes "\"I'm hungry now. Do you want chocolate too?\"";
- getitem "ChocolateBar", 1;
- mes "\"My mom doesn't want me to eat so much chocolate, but I got it from the trader at the Hurnscald Market. He sells many different things";
- mes "when we goto vacation in Hurnscald. I convinced him to teach me how to trade. It's fun.\"";
- goto L_Close;
-
-L_Doing:
- callfunc "CountHideNSeek";
- mes "[Charda]";
- mes "\"Did you find the others yet?\"";
- mes "\"Hrmm, no looks like only " + @hidden_kid_cnt + " out of 5 have been found.\"";
- goto L_Close;
-
-L_Done:
- mes "[Charda]";
- mes "\"Hey! We're still playing hide and seek. What are you going to do? Will you go to Hurnscald with the ferry? The mother of my friends Rossy and Julia come from there. They are on a vacation there at the moment.\"";
- mes "\"Rossy told me that it's a very beautiful place. Lots of trees and flowers and grass, everything's green.\"";
- mes "She sighs.";
- mes "[Charda]";
- mes "\"Sounds wonderful.\"";
- goto L_Close;
-
-L_Close:
- set @EXP, 0;
- close;
-}
-
-029-1,100,36,0|script|Faris|259
-{
- set @child_number, 3;
- callfunc "XmasList";
- set @EXP, 25;
-
- if (QL_HIDENSEEK > 63) goto L_Done;
- if ((QL_HIDENSEEK > 0) && !(QL_HIDENSEEK & $@hideandseekNT_found3)) goto L_Find;
- if (QL_HIDENSEEK > 0) goto L_Doing;
-
- mes "[Faris]";
- mes "\"Oh, hi there. What are you doing here on the beach?\"";
- menu
- "I'm just having a look around.",L_Next,
- "It's nice place here, isn't it?",L_Next;
-
-L_Next:
- mes "[Faris]";
- mes "\"Hey, you're cool. I'm hiding here from Ayasha, we're playing hide and seek. This is the best hiding place ever.\"";
- goto L_Close;
-
-L_Find:
- mes "[Faris]";
- mes "\"You found me! Well done. You look a bit thirsty, here.\"";
- getexp @EXP, 0;
- getitem "CactusDrink", 1;
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found3;
- mes "\"It's really cool you're playing with us. I'm sure you have a lot of other things to do.";
- mes "You're an adventurer, right? I want to become an adventurer too when I'm grown up. I'll talk to Aidan then.\"";
- mes "\"Aidan is outside Sorfina's place and you can register there for monster points. That's something the Wizard's Council made up. They reward you for slaying monsters. It's so cool.\"";
- goto L_Close;
-
-L_Doing:
- callfunc "CountHideNSeek";
- mes "[Faris]";
- mes "\"Are you still searching for the others? Nobody else is here.\"";
- mes "\"It seems you found " + @hidden_kid_cnt + " out of 5 of my friends.\"";
- goto L_Close;
-
-L_Done:
- mes "[Faris]";
- mes "\"I'll go to Hurnscald's Inn and ask Bernard for some soup when we're done with playing. His soup is delicious!\"";
- goto L_Close;
-
-L_Close:
- set @EXP, 0;
- close;
-}
-
-029-1,28,52,0|script|Rasin|263
-{
- set @child_number, 4;
- callfunc "XmasList";
-
- set @EXP, 15;
-
- if (QL_HIDENSEEK > 63) goto L_Done;
- if ((QL_HIDENSEEK > 0) && !(QL_HIDENSEEK & $@hideandseekNT_found4)) goto L_Find;
- if (QL_HIDENSEEK > 0) goto L_Doing;
-
- mes "[Rasin]";
- mes "\"The harbor is to the south from here. There you can take a ferry to other places.";
- mes "And now go away, I'm playing hide and seek and Ayasha shouldn't see me here. You'll draw her attention when you talk to me.\"";
- goto L_Close;
-
-L_Find:
- mes "[Rasin]";
- mes "\"Ah, you found me. I need to find a better place to hide next time.\"";
- getexp @EXP, 0;
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found4;
- goto L_Close;
-
-L_Doing:
- callfunc "CountHideNSeek";
- mes "[Rasin]";
- mes "\"Hehe, I'm curious when you'll have found all of us.\"";
- mes "\"There are " + @hidden_kid_cnt + " out of 5 found.\"";
- goto L_Close;
-
-L_Done:
- mes "[Rasin]";
- mes "\"Thanks for playing with us! It was fun!";
- mes "Will you leave Candor to go on an adventure in other places of the world?\"";
- goto L_Close;
-
-L_Close:
- set @EXP, 0;
- close;
-}
-
-029-1,79,99,0|script|Ghada|265
-{
- set @child_number, 5;
- callfunc "XmasList";
-
- set @EXP, 15;
-
- if (QL_HIDENSEEK > 63) goto L_Done;
- if ((QL_HIDENSEEK > 0) && !(QL_HIDENSEEK & $@hideandseekNT_found5)) goto L_Find;
- if (QL_HIDENSEEK > 0) goto L_Doing;
-
- mes "You see a girl standing behind the wheat. She has a look of intense concentration on her face.";
- menu
- "Hi, what are you doing there?",L_Next,
- "(Leave)",L_Close;
-
-L_Next:
- mes "[Ghada]";
- mes "\"Oh, hello. I'm hiding. We're playing hide and seek.\"";
- goto L_Close;
-
-L_Find:
- mes "[Ghada]";
- mes "\"Oh no! You found me! You must be very clever.";
- mes "My friend Sandra is clever too, but she said it's a waste of time to play hide and seek.\"";
- getexp @EXP, 0;
- set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found5;
- goto L_Close;
-
-L_Doing:
- callfunc "CountHideNSeek";
- mes "[Ghada]";
- mes "\"Are you still searching for the others? I'm sure you'll find them soon.\"";
- mes "\"You found " + @hidden_kid_cnt + " out of 5 us.\"";
- goto L_Close;
-
-L_Done:
- mes "[Ghada]";
- mes "\"It's so nice that you played with us! You're about the same age as my older sister, but she never plays with us. Her name is Sarah.\"";
- goto L_Close;
-
-L_Close:
- set @EXP, 0;
- close;
-}
diff --git a/world/map/npc/029-1/kaan.txt b/world/map/npc/029-1/kaan.txt
deleted file mode 100644
index 1133744c..00000000
--- a/world/map/npc/029-1/kaan.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-// This file is part of the Tutorial
-// Author: Jenalya
-
-029-1,46,95,0|script|Kaan|160
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- set @kaan_talked, (STARTAREA & $@SpokeToKaan);
- if (!(@kaan_talked)) goto L_Tanisha;
- if (QL_BEGIN >= 13) goto L_TutDone;
- if (QL_BEGIN == 12) goto L_Plan;
- if (QL_BEGIN == 11) goto L_TrickKnown;
- if (QL_BEGIN == 10) goto L_Trick;
- if (QL_BEGIN == 9) goto L_Hasan;
- goto L_Out;
-
-L_Tanisha:
- set STARTAREA, STARTAREA | $@SpokeToKaan;
- mes "[Young Man]";
- mes "\"You're the person I brought here, right?";
- mes "My name is Kaan, I'm Tanisha's brother.\"";
- mes "\"She was babbling at me about it all the morning until I sent her to take care of the maggots in the cafe.\"";
- mes "Kaan grins mischieviously.";
- mes "[Kaan]";
- mes "\"She hates maggots.\"";
- mes "\"Did you already talk to Tanisha?\"";
- menu
- "Yes, I helped her with the maggots.",L_Tanisha1,
- "Yeah, and she's done with the maggots.",L_Tanisha1;
-
-L_Tanisha1:
- mes "[Kaan]";
- mes "\"Ah, that is good news.";
- mes "You know, we have a lot of problems with bugs here.\"";
- mes "\"I've slain many bugs here to keep them out of our fields.\"";
- mes "\"If we don't watch out the maggots will eat all of our stocks.";
- mes "And the island is crawling with scorpions.\"";
- mes "\"Are you going to visit Hurnscald?";
- mes "Hurnscald is a wondeful place! Traders, entertainers, adventurers - it's very exciting.\"";
- mes "\"And Ian the trainer is hanging around there often. You should talk to him, he's a smart guy.\"";
- mes "\"The ferry to the south takes your there for free.\"";
- goto L_Close;
-
-L_Out:
- mes "[Kaan]";
- mes "\"Hello! How are you? Did you already visit Hurnscald?\"";
- menu
- "Yes.", L_Close,
- "Not yet.",L_Close;
-
-L_Hasan:
- mes "[Kaan]";
- mes "\"Hello! How are you? Did you already visit Hurnscald?\"";
- menu
- "A guy named Hasan is bullying someone.",L_Next1,
- "Yes.", L_Close,
- "Not yet.",L_Close;
-
-L_Next1:
- mes "\"Hasan! That's crazy. He becomes more cheeky with every day.";
- mes "I'd like to help you, but - I won't risk an open confrontation with him.\"";
- mes "\"Sometimes he just freaks out and then he's dangerous.";
- mes "He might listen to one of the adult men, but they're all off to work in Hurnscald during the day.\"";
- mes "\"We should think about some kind of trick. Ah, if only I knew his weak point.\"";
- set QL_BEGIN, 10;
- goto L_Trick;
-
-L_Trick:
- mes "[Kaan]";
- mes "\"Do you have any idea what Hasan's weakness could be?";
- mes "I wonder if Sorfina know something about him that could help us.\"";
- menu
- "No idea.",L_Close;
-
-L_TrickKnown:
- mes "[Kaan]";
- mes "\"Do you have any idea what Hasan's weakness could be?";
- menu
- "He's afraid of scorpions.",L_Next2,
- "No idea.",L_Close;
-
-L_Next2:
- mes "[Kaan]";
- mes "\"Scorpions?! Right! How could I forget?";
- mes "When he was a child, he nearly died because he fell into a scorpion nest.\"";
- set QL_BEGIN, 12;
- next;
- goto L_Explain;
-
-L_Explain:
- mes "\"Ok, then here's the plan:";
- mes "\"You'll go to Hasan and give me a sign when you're ready.";
- mes "Lets say the sign is that you're scratching your head.";
- mes "I'll watch you from this point.\"";
- mes "\"When you give me the sign, I'll summon a scorpion on him.";
- mes "I bet that will show him for the coward he really is.\"";
- mes "\"How's that? We can start as soon as you're ready.\"";
- goto L_Close;
-
-L_Plan:
- mes "[Kaan]";
- mes "\"I'm ready. Just give me the sign when you're down there.";
- mes "Or do you want me to explain the plan again?\"";
- menu
- "Yes please.",L_Explain,
- "No, everything's alright.",L_Close;
-
-L_TutDone:
- mes "[Kaan]";
- mes "\"Hi there. I hope you enjoy your time in Hurnscald.";
- mes "Hasan can be a real troublemaker, but it seems like he has calmed down for now.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-1/liana.txt b/world/map/npc/029-1/liana.txt
deleted file mode 100644
index e3ffe889..00000000
--- a/world/map/npc/029-1/liana.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-// Talk NPCs to help make trek interesting between Tutorial and Bazaar.
-
-029-1,62,96,0|script|Liana|205
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- goto L_Talk;
-
-L_Talk:
- mes "[Liana]";
- mes "\"Hurnscald is a large city. I'm sure glad I live in Candor because I know where everything's at.\"";
- if (QL_BEGIN == 10) goto L_Hasan;
- goto L_Close;
-
-L_Hasan:
- mes "[Liana]";
- mes "\"Are you enjoying yourself in Candor? Do you have any questions?\"";
- menu
- "A guy named Hasan is bullying people.",L_Next,
- "No, thanks.",L_Close;
-
-L_Next:
- mes "\"Ah, Hasan. He's causing trouble again?\"";
- mes "She shakes her head.";
- mes "\"This guy has been a plague ever since he could walk. He's always causing trouble.\"";
- mes "\"And his father... Well, one day his father thought he should teach Hasan a lesson.\"";
- mes "\"He took him into the desert and then left him there!";
- mes "Hasan was only seven years old!\"";
- mes "\"I never understood how someone could do something like that to a child, even if it's a rascal like Hasan.\"";
- mes "\"Anyway, Hasan tried to find his way back home, but stumbled into a nest of scorpions!\"";
- mes "She shakes her head.";
- mes "\"If Lieutenant Dausen hadn't have come along that moment, Hasan would have died that day.\"";
- mes "\"However, the scorpions poison caused a bad fever and once Hasan had recovered from that, he was even more malicious than before.\"";
- mes "She sighs.";
- set QL_BEGIN, 11;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-1/mapflags.txt b/world/map/npc/029-1/mapflags.txt
deleted file mode 100644
index 3eb8d0f9..00000000
--- a/world/map/npc/029-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-029-1|mapflag|resave|029-1,39,102
diff --git a/world/map/npc/029-1/monster_guide.txt b/world/map/npc/029-1/monster_guide.txt
deleted file mode 100644
index 205ff4df..00000000
--- a/world/map/npc/029-1/monster_guide.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-
-029-1,45,97,0|script|Aidan|102
-{
- if (MPQUEST == 0)
- goto L_Register;
- mes "[Aidan the Monster Guide]";
- mes "You currently have " +Mobpt+ " Monster Points. These points are acquired while killing monsters";
- close;
-
-L_Register:
- mes "[Aidan the Monster Guide]";
- mes "Oh my, you don't seem to be registered as a Quest Participant. Would you like to register?";
- next;
- goto L_Choice;
-
-L_Choice:
- menu
- "Register",L_R,
- "Not at the moment",
- L_N,"Information",L_I;
-
-L_R:
- mes "[Aidan the Monster Guide]";
- mes "Give me a second to look over your paperwork.";
- next;
- mes "[Monster Guide]";
- mes "Well, looks like you qualify!";
- mes "Welcome to the questing world!";
- set MPQUEST,1;
- close;
-
-L_N:
- mes "[Aidan the Monster Guide]";
- mes "Very well, you don't know what you're missing.";
- close;
-
-L_I:
- mes "[Aidan the Monster Guide]";
- mes "Here in The Mana World, there are certain rewards for your vanquishing of foes.";
- mes "For example, there are Monster Points; every monster you kill has a certain amount of points that get added to your account.";
- mes "The more points you have, the more expensive things you can buy using them.";
- next;
- mes "[Monster Guide]";
- mes "So whaddaya say, sign up won't you?";
- next;
- goto L_Choice;
-}
diff --git a/world/map/npc/029-1/rewards_master.txt b/world/map/npc/029-1/rewards_master.txt
deleted file mode 100644
index 1ed99ac2..00000000
--- a/world/map/npc/029-1/rewards_master.txt
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-
-029-1,47,97,0|script|Ishi|106
-{
- if (MPQUEST == 0) goto L_Register;
- if (tvis == 0) set tvis, 1;
- if (Mobpt < tvis) goto L_NotEnough;
-
- setarray @Items$, "AppleCake", "Arrow", "Beer", "Boots", "BugLeg", "CactusDrink", "CactusPotion", "Cake", "Candy", "CasinoCoins", "CherryCake", "ChickenLeg", "ChocolateBar", "ChocolateCake", "CottonBoots", "CottonCloth", "CottonShirt", "CottonShorts", "FancyHat", "GreenApple", "HardSpike", "IronOre", "Lifestone", "LightBlueDye", "MaggotSlime", "Milk", "Orange", "OrangeCake", "OrangeCupcake", "PinkPetal", "PileOfAsh", "PinkAntenna", "PoltergeistPowder", "RawLog", "RedApple", "RedDye", "ScorpionStinger", "SerfHat", "SmallHealingPotion", "SmallMushroom", "SnakeSkin", "SpectrePowder", "Steak", "TinyHealingPotion", "WhiteCake", "WhiteFur", "WispPowder", "YellowDye", "Coal";
-
- mes "[Ishi the Rewards Master]";
- mes "\"Welcome! I see you have " + Mobpt + " Monster Points. Would you like to exchange some of those for items?\"";
- next;
-
- set @i, 0;
- setarray @Menu$, "", "", "", "", "", "", "", "", "", "", "", "";
- callsub S_prep_menu;
-
- menu
- @Menu$[0], L_MenuItems,
- @Menu$[1], L_MenuItems,
- @Menu$[2], L_MenuItems,
- @Menu$[3], L_MenuItems,
- @Menu$[4], L_MenuItems,
- @Menu$[5], L_MenuItems,
- @Menu$[6], L_MenuItems,
- @Menu$[7], L_MenuItems,
- @Menu$[8], L_MenuItems,
- @Menu$[9], L_MenuItems,
- @Menu$[10], L_MenuItems,
- @Menu$[11], L_MenuItems;
-
-L_MenuItems:
- // this is for the last entry "No thanks":
- if (@menu > @i) goto L_Close;
- // this is for the "Give all" entry:
- if (@menu == 11) goto L_Give_all;
-
- set @req, @menu;
- set @rec, 0;
- goto L_Item_Loop;
-
-L_Item_Loop:
- if (@rec == @req || Mobpt < tvis) goto L_Item_Done;
-
- callsub S_give_item;
- set @rec, @rec + 1;
- goto L_Item_Loop;
-
-L_Item_Done:
- if (@rec < @req) mes "It looks like your Monster Points were over estimated.";
- goto L_Close;
-
-L_Register:
- mes "[Ishi the Rewards Master]";
- mes "\"Hey, it seems like you didn't register as a quest participant yet! You can sign up with Aidan.\"";
- goto L_Close;
-
-L_NotEnough:
- mes "[Ishi the Rewards Master]";
- mes "\"You don't have enough Monster Points for a reward. You'll need to kill some more monsters first.\"";
- goto L_Close;
-
-L_Give_all:
- // we need to count how many loop iterations are done there,
- // since the server complains about more than 250 (70 according to Jaxad0127)
- // gotos without interrupting next statement.
- set @gotocounter, 50;
- goto L_Give_all_loop;
-
-L_Give_all_loop:
- set @gotocounter, @gotocounter - 1;
- if (@gotocounter < 1) goto L_Give_all_next;
- set @itemgiveerror, 0;
- callsub S_give_item;
- if (@itemgiveerror != 0) goto L_Close;
- goto L_Give_all_loop;
-
-L_Give_all_next:
- next;
- mes "[Ishi the Rewards Master]";
- mes "\"You have received a lot of items. You still have " + Mobpt + " monster points. Shall we continue?\"";
- menu
- "Yes", L_Give_all,
- "No", L_Close;
-
-L_Close:
- set @gotocounter, 0;
- set @itemgiveerror, 0;
- set @pts, 0;
- set @dif, 0;
- set @i, 0;
- cleararray @Menu$[0], "", 10;
- cleararray @Items$[0], "", 10;
- close;
-
-//////////////////////////////////////////////////
-// Subroutines
-//////////////////////////////////////////////////
-
-S_prep_menu:
- set @pts, Mobpt;
- set @dif, tvis;
- goto L_Menu_Loop;
-
-L_Menu_Loop:
- if (@pts < @dif || @i == 10) goto L_Menu_Check;
-
- set @Menu$[@i], @i + 1;
-
- set @i, @i + 1;
- set @pts, @pts - @dif;
- set @dif, @dif + 1;
-
- goto L_Menu_Loop;
-
-L_Menu_Check:
- // if we are able to give 10, we can enable the option to give all we can have
- if (@i != 10) goto L_Menu_Done;
- set @Menu$[@i], "Please give me as many as I deserve!";
- set @i, @i + 1;
- goto L_Menu_Done;
-
-L_Menu_Done:
- set @Menu$[@i], "No thanks";
- return;
-
-S_give_item:
- set @itemgiveerror, 0;
- getinventorylist;
- if (@inventorylist_count == 100) goto S_give_noinv;
- if (Mobpt < tvis) goto S_give_nomobpts;
- set Mobpt, Mobpt - tvis;
- set tvis, tvis + 1;
- set @item$, @Items$[rand(getarraysize(@Items$))];
-
- getitem @item$, 1;
-
- mes "You received one " + getitemlink(@item$) + "!";
- return;
-
-S_give_noinv:
- mes "Your inventory is full!";
- set @itemgiveerror, 1;
- return;
-
-S_give_nomobpts:
- mes "It looks like your Monster Points were over estimated.";
- set @itemgiveerror, 1;
- return;
-}
diff --git a/world/map/npc/029-1/soul-menhir.txt b/world/map/npc/029-1/soul-menhir.txt
deleted file mode 100644
index 8113d9c5..00000000
--- a/world/map/npc/029-1/soul-menhir.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-
-029-1,39,101,0|script|Soul Menhir#candor|344
-{
- set @map$, "029-1";
- setarray @Xs, 38, 39, 40, 38, 40, 38, 39, 40;
- setarray @Ys, 100, 100, 100, 101, 101, 102, 102, 102;
- set @x, 0;
- set @y, 0;
- callfunc "SoulMenhir";
- set @map$, "";
- cleararray @Xs[0], 0, getarraysize(@Xs);
- cleararray @Ys[0], 0, getarraysize(@Ys);
- set @x, 0;
- set @y, 0;
- close;
-}
diff --git a/world/map/npc/029-1/traveler.txt b/world/map/npc/029-1/traveler.txt
deleted file mode 100644
index befa8eef..00000000
--- a/world/map/npc/029-1/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-029-1,69,68,0|script|Knitra the Traveler|103
-{
- set @npcname$, "Knitra";
- set @NpcTravelBit, $@candor_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/029-1/tutorial.txt b/world/map/npc/029-1/tutorial.txt
deleted file mode 100644
index e6f31c4a..00000000
--- a/world/map/npc/029-1/tutorial.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-// This file is part of the Tutorial
-// Author: Jenalya
-// if you enter the tutorial area from outside, it is set to be already done
--|script|#TutorialConfig|32767
-{
- end;
-
-OnInit:
- set $@ScorpionFighter, 0;
- set $@ScorpionTimer, 0;
- set $@ScorpDeath, 0;
- set $@SpokeToKaan, (1 << 31);
- end;
-}
-029-2,21,26,0|script|TutDebug|154
-{
- mes "[TutDebug]";
- mes "Reset?";
- menu
- "Reset Kaan/Hasan",L_Kaan,
- "Yes.",L_Reset,
- "No.",L_Close;
-
-L_Kaan:
- set QL_BEGIN, 8;
- set STARTAREA, STARTAREA &~ $@SpokeToKaan;
- mes "Reset!";
- goto L_Close;
-
-L_Reset:
- set TUT_var, 0;
- set QL_BEGIN, 0;
- set STARTAREA, STARTAREA &~ $@SpokeToKaan;
- mes "Reset!";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if(!debug)
- disablenpc "TutDebug";
- end;
-}
-029-1,32,99,0|script|#tutorialoutside|45,0,0
-{
- if (QL_BEGIN >= 8)
- goto L_Warp;
- goto L_ResetTutorial;
-
-L_ResetTutorial:
- set QL_BEGIN, 8;
- goto L_Warp;
-
-L_Warp:
- warp "029-2", 114, 92;
- end;
-}
diff --git a/world/map/npc/029-1/valon.txt b/world/map/npc/029-1/valon.txt
deleted file mode 100644
index 20cbbcf8..00000000
--- a/world/map/npc/029-1/valon.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-// This file is part of the Tutorial
-// Author: Jenalya, Wushin
--|script|#ValonConfig|32767
-{
- end;
-
-OnInit:
- setarray $@ValonMob, 1002,1050,1046,1003;
- setarray $@ValonMobName$, "Maggots","House Maggots","Tame Scorpions","Scorpion";
- setarray $@ValonMobCnt, 10,5,3,1;
- end;
-}
-function|script|ValonCount
-{
- set @valon_mob, 0;
- if (QL_VALON >= 2)
- set @valon_mob, (QL_VALON - 2);
- set @valon_count, ((STARTAREA & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
- return;
-}
-function|script|ResetValonCntMask
-{
- set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT));
- return;
-}
-function|script|AddValonCntMask
-{
- set @valon_tmp, (@valon_count + 1);
- if (@valon_tmp > $@ValonMobCnt[@valon_mob])
- set @valon_tmp, $@ValonMobCnt[@valon_mob];
- set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (@valon_tmp << NIBBLE_2_SHIFT));
- set @valon_tmp, 0;
- callfunc "ValonProgress";
- return;
-}
-function|script|ValonProgress
-{
- callfunc "ValonCount";
- if ((QL_VALON > 1) && (QL_VALON < 6))
- message strcharinfo(0), $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob];
- return;
-}
-029-1,74,86,0|script|ValonDebug|156
-{
- mes "[Valon Debug]";
- mes "Reset?";
- menu
- "Yes.", L_Reset,
- "No.", L_Close;
-
-L_Reset:
- set QL_VALON, 0;
- set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT));
- mes "Reset!";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "ValonDebug";
- end;
-}
-029-1,72,86,0|script|Valon|156
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- callfunc "ValonCount";
- if (QL_VALON >= 6)
- goto L_QuestComplete;
- if (QL_VALON == 1)
- goto L_QuestAskAgain;
- if (@valon_count >= $@ValonMobCnt[@valon_mob])
- goto L_NextMob;
- if ((QL_VALON >= 2) && (QL_VALON < 6))
- goto L_QuestStarted;
- goto L_QuestAsk;
-
-L_QuestAskAgain:
- mes "[Valon]";
- mes "\"Hello, Adventurer! Have you come back to help?\"";
- menu
- "Yes. I will help with the island beasts.", L_Accept,
- "Maybe some other time.", L_Close;
-
-L_QuestAsk:
- mes "[Valon]";
- mes "\"Hello!";
- mes "You're looking for adventures, right?\"";
- mes "\"But you shouldn't underestimate this island, it is dangerous.\"";
- mes "\"It's crawling with scorpions, and the heat has overcome adventurers tougher than you are.\"";
- mes "\"I should know I guard this gate from all manner of island beasts.\"";
- mes "\"Maybe you would like help and earn your stripes?\"";
- mes "\"The Council of Wizard's does offer a reward for helping...\"";
- set QL_VALON, 1;
- callfunc "ResetValonCntMask";
- menu
- "YES!!! let me at them!", L_Accept,
- "Maybe some other time.", L_Close;
-
-L_Accept:
- set QL_VALON, 2;
- callfunc "ValonCount";
- goto L_NewMob;
-
-L_NextMob:
- getexp 40, 0;
- mes "\"I see you killed all the " + $@ValonMobName$[@valon_mob] + " needed.\"";
- mes "\"The Wizard's thank thee as well.\"";
- set Zeny, Zeny + 25;
- set QL_VALON, (QL_VALON + 1);
- callfunc "ResetValonCntMask";
- callfunc "ValonCount";
- if (@valon_mob == getarraysize($@ValonMob))
- goto L_QuestOver;
- goto L_NewMob;
-
-L_NewMob:
- mes "\"Let's see whats on the list. Ah ok, I need you to kill me " + $@ValonMobCnt[@valon_mob] + " " + $@ValonMobName$[@valon_mob] + "\"";
- mes "\"I'll be waiting here, come back and see after you've killed those mobs.\"";
- goto L_Close;
-
-L_QuestStarted:
- mes "[Valon]";
- mes "Hail adventurer! You are well on your way to mastering the beasts of the island.\"";
- mes "\"You need to kill " + $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob] + "\"";
- mes "\"Come back and see me when the job is done.\"";
- goto L_Close;
-
-L_QuestOver:
- mes "[Valon]";
- mes "\"Thanks once again for helping with the monsters in the island.\"";
- getexp 50, 0;
- set QL_VALON, (QL_VALON + 1);
- goto L_Close;
-
-L_QuestComplete:
- mes "[Valon]";
- mes "\"Thanks once again for helping with the monsters in the island.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-1/vincent.txt b/world/map/npc/029-1/vincent.txt
deleted file mode 100644
index e36b52c2..00000000
--- a/world/map/npc/029-1/vincent.txt
+++ /dev/null
@@ -1,136 +0,0 @@
-029-1,108,108,0|script|Vincent Debug|113
-{
- mes "[Vincent Debug]";
- mes "Reset?";
- menu
- "Yes.", L_Reset,
- "No.", L_Close;
-
-L_Reset:
- set QL_VINCENT, 0;
- mes "Reset!";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "Vincent Debug";
- end;
-}
-029-1,107,110,0|script|Vincent|113
-{
- set @halloween_npc_id, $@halloween_npc_vincent;
- callfunc "TrickOrTreat";
-
- if (QL_VINCENT >= 2) goto L_Done;
- if (QL_VINCENT == 1) goto L_Progress;
- goto L_Con_Vin_First;
-
-L_Con_Vin_First:
- mes "[Vincent]";
- mes "\"I'm making an action figure. I'm almost done with it.\"";
- next;
-
- set @TEMP, rand(4);
- if(@TEMP == 1) goto L_Opening2;
- if(@TEMP == 2) goto L_Opening3;
- if(@TEMP == 3) goto L_Opening4;
- goto L_Opening1;
-
-L_Opening1:
- mes "\"I just need 5 more Bug Legs to finish my action figure!\"";
- next;
- goto L_Ask;
-
-L_Opening2:
- mes "\"This maggot action figure is awesome! I just need to attach 5 Bug Legs.\"";
- next;
- goto L_Ask;
-
-L_Opening3:
- mes "\"This is a great action figure! A must have! All I need is a few parts...\"";
- next;
- goto L_Ask;
-
-L_Opening4:
- mes "\"Can you get me 5 Bug Legs? I need them to replace the action figure parts.\"";
- next;
- goto L_Ask;
-
-L_Ask:
- mes "\"Will you help me find 5 Bug Legs?\"";
- next;
- menu
- "Yes.", L_Sure,
- "No.", L_Close;
-
-L_Sure:
- set QL_VINCENT, 1;
- set @TEMP, rand(4);
- if(@TEMP == 1) goto L_Req2;
- if(@TEMP == 2) goto L_Req3;
- if(@TEMP == 3) goto L_Req4;
- goto L_Req1;
-
-L_Req1:
- mes "[Vincent]";
- mes "\"Thank you!\"";
- next;
- goto L_Wait;
-
-L_Req2:
- mes "[Vincent]";
- mes "\"I don't know how to thank you enough!\"";
- next;
- goto L_Wait;
-
-L_Req3:
- mes "[Vincent]";
- mes "\"I will thank you when I get them!\"";
- next;
- goto L_Wait;
-
-L_Req4:
- mes "[Vincent]";
- mes "\"I'm sure I will give a small reward.\"";
- next;
- goto L_Wait;
-
-L_Wait:
- mes "\"Now please go get me 5 Bug Legs.\"";
- goto L_Close;
-
-L_Progress:
- if(countitem("BugLeg") >= 5)
- goto L_Have;
- mes "[Vincent]";
- mes "\"Please help me collect 5 Bug Legs! I need them to complete my action figure.\"";
- goto L_Close;
-
-L_Have:
- mes "[Vincent]";
- mes "\"Excellent! Finally I can complete the model!!\"";
- next;
- if(countitem("BugLeg") < 5)
- goto L_Progress;
- delitem "BugLeg", 5;
- getexp 50, 0;
- set Zeny, Zeny + 1000;
- set QL_VINCENT, 2;
-
- mes "[Vincent]";
- mes "\"Here you go, a little of my appreciation!\"";
- mes "";
- mes "[1000 gold]";
- goto L_Close;
-
-L_Done:
- mes "[Vincent]";
- mes "\"Thanks for your help!\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-1/zegas.txt b/world/map/npc/029-1/zegas.txt
deleted file mode 100644
index b25bd6c9..00000000
--- a/world/map/npc/029-1/zegas.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-// Barrels
-// Author: Wushin
-// Npc
-029-1,45,85,0|script|Zegas|165
-{
- set @npc_distance, 2;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (QL_ZEGAS == 1)
- goto L_Find;
- if (QL_ZEGAS == 2)
- goto L_Looking;
- if (QL_ZEGAS == 3)
- goto L_QuestEnd;
- if (QL_ZEGAS == 4)
- goto L_Thanks;
- goto L_Meet;
-
-L_Meet:
- mes "[Zegas]";
- mes "\"Hey do you have a second?\"";
- next;
- mes "\"The storehouse here is over run with house maggots.\"";
- next;
- mes "\"Wouldn't you know it, the bug bomb Eomie gave us is in one of the store room barrels.\"";
- next;
- mes "\"Can you search the barrels for the bug bomb and set it off when you find it?\"";
- set QL_ZEGAS, 1;
- menu
- "Sure.",L_Start,
- "Maybe some other time.",L_Close;
-
-L_Find:
- mes "[Zegas]";
- mes "\"The storehouse is still over run with house maggots.\"";
- next;
- mes "\"Please help me find the bug bomb Eomie gave us is in one of the store room barrels?\"";
- menu
- "Sure.",L_Start,
- "Maybe some other time.",L_Close;
-
-L_Start:
- mes "[Zegas]";
- set QL_ZEGAS, 2;
- mes "\"Thanks, come back and see me once you found the bug bomb and set it off.\"";
- goto L_Close;
-
-L_Looking:
- mes "[Zegas]";
- mes "\"Still haven't found it? Well keep looking I know it's in there some where.\"";
- goto L_Close;
-
-L_QuestEnd:
- mes "[Zegas]";
- mes "\"From the smell I can see you found the bug bomb!\"";
- mes "\"Thanks once again, I know it's not much but here is 50 GP for your troubles.\"";
- getexp 50, 0;
- set Zeny, (Zeny + 50);
- set QL_ZEGAS, 4;
- goto L_Close;
-
-L_Thanks:
- mes "[Zegas]";
- mes "\"Thanks for Helping with clear out the store room!\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-029-1,47,86,0|script|ZegasDebug|165
-{
- mes "[Zegas Debug]";
- mes "Reset ?";
- menu
- "Yes.", L_Reset,
- "No.", L_Close;
-
-L_Reset:
- set QL_ZEGAS, 0;
- set STARTAREA, STARTAREA &~ (1 << 20);
- set STARTAREA, STARTAREA &~ (1 << 21);
- set STARTAREA, STARTAREA &~ (1 << 22);
- set STARTAREA, STARTAREA &~ (1 << 23);
- set STARTAREA, STARTAREA &~ (1 << 24);
- set STARTAREA, STARTAREA &~ (1 << 25);
- set STARTAREA, STARTAREA &~ (1 << 26);
- set STARTAREA, STARTAREA &~ (1 << 27);
- mes "Reset!";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug)
- disablenpc "ZegasDebug";
- end;
-}
diff --git a/world/map/npc/029-2/_import.txt b/world/map/npc/029-2/_import.txt
deleted file mode 100644
index b87b6dc1..00000000
--- a/world/map/npc/029-2/_import.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// Map 029-2: Candor Island Indoor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 029-2
-npc: npc/029-2/_mobs.txt
-npc: npc/029-2/_nodes.txt
-npc: npc/029-2/_warps.txt
-npc: npc/029-2/alchemy.txt
-npc: npc/029-2/bankroom.txt
-npc: npc/029-2/barrels.txt
-npc: npc/029-2/barrels_config.txt
-npc: npc/029-2/cynric.txt
-npc: npc/029-2/mapflags.txt
-npc: npc/029-2/morgan.txt
-npc: npc/029-2/nyle.txt
-npc: npc/029-2/sorfina.txt
-npc: npc/029-2/stat_reset.txt
-npc: npc/029-2/tanisha.txt
-npc: npc/029-2/two_arms.txt
diff --git a/world/map/npc/029-2/_mobs.txt b/world/map/npc/029-2/_mobs.txt
deleted file mode 100644
index a63fae65..00000000
--- a/world/map/npc/029-2/_mobs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Island Indoor mobs
-
-029-2,33,57,24,7|monster|HouseMaggot|1050,7,100000ms,30000ms
diff --git a/world/map/npc/029-2/_nodes.txt b/world/map/npc/029-2/_nodes.txt
deleted file mode 100644
index 9e38e0e1..00000000
--- a/world/map/npc/029-2/_nodes.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Island Indoor nodes
-
-029-2,0,0,0|script|Node029-2|32767
-{
- end;
-OnInit:
- setarray .m$, "_N-Alchemy", "029-2";
- setarray .x1, "_N-Alchemy", 113;
- setarray .y1, "_N-Alchemy", 57;
- setarray .x2, "_N-Alchemy", 0;
- setarray .y2, "_N-Alchemy", 0;
- setarray .id, "_N-Alchemy", 0;
- donpcevent "_N-Alchemy::OnMaybeStart";
- destroy;
-}
diff --git a/world/map/npc/029-2/_warps.txt b/world/map/npc/029-2/_warps.txt
deleted file mode 100644
index 26c5ed80..00000000
--- a/world/map/npc/029-2/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Island Indoor warps
-
-029-2,29,62|warp|-1,-1,029-1,40,89
-029-2,22,93|warp|-1,-1,029-1,44,84
-029-2,112,84|warp|-1,-1,029-2,44,30
-029-2,103,62|warp|-1,-1,029-1,52,85
-029-2,94,31|warp|-1,-1,029-1,58,80
-029-2,24,124|warp|-1,-1,029-1,49,78
diff --git a/world/map/npc/029-2/alchemy.txt b/world/map/npc/029-2/alchemy.txt
deleted file mode 100644
index 7bc58337..00000000
--- a/world/map/npc/029-2/alchemy.txt
+++ /dev/null
@@ -1,138 +0,0 @@
--|script|_N-Alchemy|32767
-{
- set @npc_distance, 1;
- callfunc "PCtoNPCRange";
- if (@npc_check) end;
-
- title "Alchemy Lab";
- mes "This is an alchemy lab.";
- mes "With it, you can combine reagents together to create powerful potions.";
- next;
- clear;
- mes "##BDrag & drop 2 items from your inventory. All items used will be lost.##b";
- cleararray @alchlab_items$[0], "", 2; // since we're not using a scoped (.@) array, we need to clean it
- requestitem @alchlab_items$[0], 2; // TODO: add a craft builtin (npc action 12)
- clear;
- if (@alchlab_items$[0] == "" || @alchlab_items$[1] == "")
- goto L_NoItems;
-
- mes "You are about to combine the following:";
- mes " ["+ getitemlink(@alchlab_items$[0]) +"]";
- mes " ["+ getitemlink(@alchlab_items$[1]) +"]";
- mes;
- mes "##BWarning! This will permanently destroy the selected items.##b";
- // can not use a scope variable to store item names because menu is a script terminator (destroys the scope)
- menu
- "Abort Mission.", L_Abort,
- "Proceed.", L_Proceed,
- "I want to make several.", L_Multi;
-
-L_Proceed:
- // XXX: here we could make it wait a little, while the potion is boiling (and show an animation/particles/sound)
- if (countitem(@alchlab_items$[0]) < 1 || countitem(@alchlab_items$[1]) < 1) // this shouldn't happen, but just to be safe..
- goto L_NoItems;
- delitem @alchlab_items$[0], 1;
- delitem @alchlab_items$[1], 1;
- if (@alchlab_items$[0] == "BottleOfWater" || @alchlab_items$[1] == "BottleOfWater") // give back used bottles
- getitem "EmptyBottle", if_then_else(@alchlab_items$[0] == "BottleOfWater" && @alchlab_items$[1] == "BottleOfWater",2,1);
-
- set .@n, -3;
- goto L_CheckRecipes;
-
-L_CheckRecipes:
- set .@n, .@n+3;
- if (.@n == get(.rsize, "_N-Alchemy"))
- goto L_Failed;
- if (!(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[0] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[1]) &&
- !(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[1] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[0]))
- goto L_CheckRecipes;
-
- getitem get(.recipes$[.@n+2], "_N-Alchemy"), 1; // XXX: here we could also make it fail sometimes depending on your expertise
-
- // XXX: here we could make it give profession/crafting exp
- clear;
- mes "You combined the following:";
- mes " ["+ getitemlink(@alchlab_items$[0]) +"]";
- mes " ["+ getitemlink(@alchlab_items$[1]) +"]";
- mes;
- mes "You obtained:";
- mes " ["+ getitemlink(get(.recipes$[.@n+2], "_N-Alchemy")) +"]";
- close;
-
-L_NoItems:
- mes "You must put exactly 2 items.";
- close;
-
-L_Failed:
- mes "The potion bubbles violently and evaporates."; // XXX: here we could have random failure messages
- close;
-
-L_Abort:
- close;
-
-// Bikeshedding starts here
-L_Multi:
- mes "How many?";
- mes "##BWarning! This will permanently destroy the selected items.##b";
- input @count;
- if (@count == 0)
- close;
-
- if (countitem(@alchlab_items$[0]) < @count || countitem(@alchlab_items$[1]) < @count)
- goto L_NoItems;
- delitem @alchlab_items$[0], @count;
- delitem @alchlab_items$[1], @count;
- if (@alchlab_items$[0] == "BottleOfWater" || @alchlab_items$[1] == "BottleOfWater")
- getitem "EmptyBottle", if_then_else(@alchlab_items$[0] == "BottleOfWater" && @alchlab_items$[1] == "BottleOfWater",2*@count,@count);
-
- set .@n, -3;
- goto L_CheckRecipesMulti;
-
-L_CheckRecipesMulti:
- set .@n, .@n+3;
- if (.@n == get(.rsize, "_N-Alchemy"))
- goto L_Failed;
- if (!(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[0] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[1]) &&
- !(get(.recipes$[.@n], "_N-Alchemy") == @alchlab_items$[1] && get(.recipes$[.@n+1], "_N-Alchemy") == @alchlab_items$[0]))
- goto L_CheckRecipesMulti;
-
- getitem get(.recipes$[.@n+2], "_N-Alchemy"), @count;
-
- clear;
- mes "You combined the following:";
- mes " ["+ getitemlink(@alchlab_items$[0]) +"]";
- mes " ["+ getitemlink(@alchlab_items$[1]) +"]";
- mes;
- mes "You obtained:";
- mes " ["+ getitemlink(get(.recipes$[.@n+2], "_N-Alchemy")) +"]";
- close;
-// Bikeshedding ends here
-
-S_Spawn:
- set .@s, getarraysize(.x1);
- if (.spawned >= .@s)
- goto S_Return;
- set .@n$, "#_Al-lab"+chr(3)+.spawned;
- if (puppet(.m$[.spawned], .x1[.spawned], .y1[.spawned], .@n$, 399) < 1) mapexit;
- set .spawned, .spawned + 1;
- if (.spawned < .@s)
- goto S_Spawn;
- return;
-
-S_Return:
- return;
-
-OnMaybeStart:
- callsub S_Spawn;
- if (.started == 0)
- goto L_InitVars;
- end;
-
-L_InitVars:
- setarray .recipes$[0], 0,
- "DilutedConcentrationPot", "DarkConcentrationPotion", "ConcentrationPotion",
- "CactusDrink", "CactusDrink", "CactusPotion",
- "PinkPetal", "BottleOfWater", "ConcentrationPotion";
- set .rsize, getarraysize(.recipes$);
- end;
-}
diff --git a/world/map/npc/029-2/bankroom.txt b/world/map/npc/029-2/bankroom.txt
deleted file mode 100644
index 44dc3b4d..00000000
--- a/world/map/npc/029-2/bankroom.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Nyle is part of the Tutorial.
-// He explains how to use the bank.
-// Author: Cassy
-
-029-2,35,122,0|script|#BankRoom|32767,0,0
-{
- message strcharinfo(0), "The door is locked. This must be where Cynric saves the people's money and items.";
- end;
-}
diff --git a/world/map/npc/029-2/barrels.txt b/world/map/npc/029-2/barrels.txt
deleted file mode 100644
index 39bd0ad3..00000000
--- a/world/map/npc/029-2/barrels.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// Barrels
-// Author: Wushin
-029-2,23,86,0|script|Barrel#0|400
-{
- set @barrel, 0;
- callfunc "CheckBarrel";
- end;
-
-OnMaggotDeath:
- set @mobID, 1050;
- callfunc "MobPoints";
- end;
-}
-029-2,28,86,0|script|Barrel#1|400
-{
- set @barrel, 1;
- callfunc "CheckBarrel";
- end;
-}
-029-2,31,91,0|script|Barrel#2|400
-{
- set @barrel, 2;
- callfunc "CheckBarrel";
- end;
-}
-029-2,36,85,0|script|Barrel#3|400
-{
- set @barrel, 3;
- callfunc "CheckBarrel";
- end;
-}
-029-2,40,89,0|script|Barrel#4|400
-{
- set @barrel, 4;
- callfunc "CheckBarrel";
- end;
-}
-029-2,38,91,0|script|Barrel#5|400
-{
- set @barrel, 5;
- callfunc "CheckBarrel";
- end;
-}
-029-2,29,92,0|script|Barrel#6|400
-{
- set @barrel, 6;
- callfunc "CheckBarrel";
- end;
-}
-029-2,24,91,0|script|Barrel#7|400
-{
- set @barrel, 7;
- callfunc "CheckBarrel";
- end;
-}
diff --git a/world/map/npc/029-2/barrels_config.txt b/world/map/npc/029-2/barrels_config.txt
deleted file mode 100644
index 9fe9de71..00000000
--- a/world/map/npc/029-2/barrels_config.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-// Barrels
-// Author: Wushin
-029-2,33,88,24,7|monster|HouseMaggot|1050,2,100000ms,30000ms,Barrel#0::OnMaggotDeath
--|script|#BarrelConfig|32767
-{
- end;
-
-OnInit:
- setarray $@BarrelBits, (1 << 20), (1 << 21), (1 << 22), (1 << 23), (1 << 24), (1 << 25), (1 << 26), (1 << 27);
- setarray $@BarrelRewards, 533, 507, 505, 518, 537, 526;
- set $@BarrelSpawnCnt, 1;
- set $@BarrelSpawnId, 1050;
- set $@BarrelMax, getarraysize($@BarrelBits);
- end;
-}
-function|script|CountBarrels
-{
- set @barrel_count, 0;
- set @count_tmp, 0;
- goto L_Loop;
-
-L_Loop:
- if (STARTAREA & $@BarrelBits[@barrel_count])
- goto L_AddOne;
- goto L_LoopAgain;
-
-L_AddOne:
- set @barrel_count, (@barrel_count + 1);
- goto L_LoopAgain;
-
-L_LoopAgain:
- set @count_tmp, (@count_tmp + 1);
- if (@count_tmp == getarraysize($@BarrelBits))
- goto L_BarrelTally;
- goto L_Loop;
-
-L_BarrelTally:
- return;
-}
-function|script|CheckBarrel
-{
- set @npc_distance, 2;
- callfunc "PCtoNPCRange";
- if(@npc_check) goto L_Return;
- if (!(QL_ZEGAS == 2))
- goto L_NoI;
- if (STARTAREA & $@BarrelBits[@barrel])
- goto L_Empty;
- set STARTAREA, STARTAREA | $@BarrelBits[@barrel];
-
- callfunc "CountBarrels";
- if (@barrel_count == $@BarrelMax)
- goto L_QuestReward;
- set @player_random, rand(@barrel_count * 10);
- set @barrel_random, rand(@barrel_count * $@BarrelMax);
- if (@barrel_random > @player_random)
- goto L_Spawn;
- goto L_Reward;
-
-L_NoI:
- message strcharinfo(0), "Nothing interesting here.";
- goto L_Return;
-
-L_Empty:
- message strcharinfo(0), "You've already searched this barrel.";
- goto L_Return;
-
-L_QuestReward:
- message strcharinfo(0), "You found the bug bomb.";
- misceffect 33;
- set QL_ZEGAS, 3;
- killmonster getmap() + "", "Barrel#0::OnMaggotDeath";
- goto L_Return;
-
-L_Spawn:
- message strcharinfo(0), "Uck, More Maggots!";
- setarray @npc_loc, getnpcx(), getnpcy();
- areamonster getmap(), @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), "", $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath";
- cleararray @npc_loc, 0, 2;
- goto L_Return;
-
-L_Reward:
- getitem $@BarrelRewards[rand(getarraysize($@BarrelRewards))], 1;
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/029-2/cynric.txt b/world/map/npc/029-2/cynric.txt
deleted file mode 100644
index 2a133e41..00000000
--- a/world/map/npc/029-2/cynric.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-
-029-2,30,118,0|script|Cynric|161
-{
- set @npcname$, "Cynric";
- callfunc "Banker";
- close;
-}
diff --git a/world/map/npc/029-2/mapflags.txt b/world/map/npc/029-2/mapflags.txt
deleted file mode 100644
index 09b62b45..00000000
--- a/world/map/npc/029-2/mapflags.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-029-2|mapflag|nosave|029-2,22,24
-029-2|mapflag|resave|029-2,22,24
-029-2|mapflag|mask|1
diff --git a/world/map/npc/029-2/morgan.txt b/world/map/npc/029-2/morgan.txt
deleted file mode 100644
index a72bfa1d..00000000
--- a/world/map/npc/029-2/morgan.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-// Tut mage
-// Author: Wushin
-// Gains Access to Magic School
-// See 024-2 clean that shit up
-// Morgan, liana
-029-2,105,57,0|script|MorganDebug|355
-{
- mes "[Morgan Debug]";
- mes "Reset?";
- menu
- "Yes.", L_Reset,
- "No.", L_End;
-L_Reset:
- set QL_MORGAN, 0;
- mes "Reset!";
- goto L_End;
-
-L_End:
- end;
-
-OnInit:
- if (!debug)
- disablenpc "MorganDebug";
- end;
-}
-029-2,101,57,0|script|Morgan#_M|355
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (Int >= 5)
- goto L_Learn;
- goto L_NotMagic;
-
-L_Learn:
- if (QL_MORGAN == 0)
- goto L_NotSeen;
- if (QL_MORGAN == 1)
- goto L_Seen;
- if (QL_MORGAN == 2)
- goto L_Started;
- if (QL_MORGAN == 3)
- goto L_CastOnce;
- if (QL_MORGAN == 4)
- goto L_LearningDone;
- goto L_Close;
-
-L_NotSeen:
- set QL_MORGAN, 1;
- mes "[Morgan]";
- mes "\"Welcome to the magic school of Candor\"";
- mes "\"My name is Morgan, I'm Head of Wizardry.\"";
- mes "\"You appear to have the markings to use magic.\"";
- mes "\"Granted you are still to young to cast spells.\"";
- mes "\"But we can teach you to use simple magic devices.\"";
- mes "\"Would you like to learn some apprentice skills?\"";
- menu
- "Yes.", L_Start,
- "Maybe later", L_Close;
-
-L_Seen:
- mes "[Morgan]";
- mes "\"Have you returned to learn some magic?\"";
- menu
- "Yes.", L_Start,
- "Maybe later", L_Close;
-
-L_NotMagic:
- mes "[Morgan]";
- mes "\"Hrmm you don't appear to posses enough magical talent to teach.\"";
- goto L_Close;
-
-L_Start:
- set QL_MORGAN, 2;
- mes "\"Great, lets begin your first lesson.\"";
- getitem 1171, 1;
- mes "\"This is a wand, there are many like it but this one is now yours.\"";
- mes "\"Various wands and staffs are found throughout the land with many different strengths and weaknesses.\"";
- mes "\"To use the wand you need to have it equipped and speak the incantation to let it tap into your mana.\"";
- mes "\"As the power of your magic grows so will the spells you can cast.\"";
- mes "\"Lets start with a basic wand attack. " + get(.invocation$, "spell-wand") + "\"";
- mes "\"Equip the wand and lets try out that spell.\"";
- mes "\"To cast a spell open the chat window, type the invocation and press enter.\"";
- mes "\"Speak to me again once you've cast the spell.\"";
- goto L_Close;
-
-L_Started:
- mes "[Morgan]";
- mes "\"Lets start with a basic wand attack. " + get(.invocation$, "spell-wand") + "\"";
- mes "\"Equip the wand and lets try out that spell.\"";
- mes "\"To cast a spell open the chat window, type the invocation and press enter.\"";
- mes "\"Speak to me again once you've cast the spell.\"";
- goto L_Close;
-
-L_CastOnce:
- mes "[Morgan]";
- mes "\"Ok, good job! Looks like you have good mana flow.\"";
- mes "\"Onto the next lesson. Now that you have " + get(.invocation$, "spell-wand") + " cast,\"";
- mes "\"Each time you attack the wand will convert a bit of you mana into a magic bolt.\"";
- mes "\"After so many attacks, you will need to recast the invocation to stay attuned to the wand.\"";
- mes "\"(Logging out will also cancel any spell effects currently active in-game.).\"";
- next;
- mes "\"I've taught you all I can for now. You should visit the Mana Seed north west of Hurnscald.\"";
- set QL_MORGAN, 4;
- goto L_Close;
-
-L_LearningDone:
- mes "[Morgan]";
- mes "\"" + get(.invocation$, "spell-wand") + " is a basic wand attack.\"";
- mes "\"A Wand must be equipped to use the spell.\"";
- mes "\"To cast a spell open the chat window, type the invocation and press enter.\"";
- mes "\"You can also discharge any active spell by saying " + get(.invocation$, "discharge spell") + ".\"";
- mes "\"I've taught you all I can for now. You should visit the Mana Seed north west of Hurnscald.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-029-2,113,59,0|shop|Zitoni|103,CactusDrink:*1,CactusPotion:*1,TinyManaElixir:*5,SmallManaElixir:*5
diff --git a/world/map/npc/029-2/nyle.txt b/world/map/npc/029-2/nyle.txt
deleted file mode 100644
index f705b585..00000000
--- a/world/map/npc/029-2/nyle.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-// Nyle is part of the Tutorial.
-// He explains how to use the bank.
-// Author: Cassy
-
-029-2,26,120,6|script|Nyle|101
-{
- mes "[Nyle]";
- mes "\"Visiting the bank too right? We're only a small village but Cynric is the best bank guy I know.\"";
- menu
- "Yeah, you're right.", L_Close,
- "What is banking?", L_Explain;
-
-L_Explain:
- mes "[Nyle]";
- mes "\"There are banks all over the world. Usually every important village or city has one.";
- mes "You can save both items and money at a bank.\"";
- menu
- "How do I save items?", L_Items,
- "How do I save money?", L_Money,
- "Thanks!", L_Thanks;
-
-L_Items:
- mes "[Nyle]";
- mes "\"Let Cynric open your storage. You might also want to open your inventory.";
- mes "Pick an item from either storage or inventory and choose what you want to do with it by clicking the right button.";
- mes "You can also pick and drag items from one window into the other but this will move all items of this kind.";
- next;
- mes "Items in your storage are totally safe. Banking itself is totally safe.\"";
- menu
- "And how do I save money?", L_Money,
- "Thanks!", L_Thanks;
-
-L_Money:
- mes "[Nyle]";
- mes "\"That's easy. Cynric will save your money when you ask him to deposit. Or you pick up your money by asking to withdraw.";
- mes "You only have to tell him how much you want to deposit or withdraw.";
- mes "Also you can ask how much he already save for you by checking your balance.";
- next;
- mes "Money in your storage is totally safe. Banking itself is totally safe.\"";
- menu
- "And how do I save items?", L_Items,
- "Thanks!", L_Thanks;
-
-L_Thanks:
- mes "[Nyle]";
- mes "\"You are very welcome.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-2/sorfina.txt b/world/map/npc/029-2/sorfina.txt
deleted file mode 100644
index 7c6a589f..00000000
--- a/world/map/npc/029-2/sorfina.txt
+++ /dev/null
@@ -1,419 +0,0 @@
-// This file is part of the Tutorial
-// Author: Jenalya
-029-2,27,27,0|script|Sorfina|154,0,1
-{
- set @npc_distance, 2;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- goto L_Main;
-
-L_Main:
- if (QL_BEGIN == 10) goto L_Hasan;
- if (QL_BEGIN >= 4) goto L_Again;
- if (QL_BEGIN == 3) goto L_Clothes;
- if (QL_BEGIN == 2) goto L_Dresser;
- if (QL_BEGIN == 1) goto L_Carpet;
- goto L_Start;
-
-L_Start:
- mes "You open your eyes.";
- mes "";
- mes "[Old Woman]";
- mes "\"Ah, you woke up. You washed ashore on the beach 3 days ago. You've been asleep since.";
- mes "You must have been thrown off one of the ships sailing during that last tremor.\"";
- mes "\"My little granddaughter Tanisha found you. Kaan was able to carry you to bed.";
- mes "We've been taking care of you ever since. Waiting for you to wake up.\"";
- mes "\"You didn't have any possessions on you when we found you and no one knows who you are.\"";
- mes "Do you have a name?";
- menu
- strcharinfo(0), L_Name;
-
-L_Name:
- mes "[Old Woman]";
- mes "\"Well " + strcharinfo(0) + " what else can you tell me about yourself?.\"";
- menu
- "I'm a woman from ...", L_Woman,
- "I'm a man that lived in ...", L_Man,
- "My home is in ...", L_N;
-
-L_Woman:
- set Sex, 0;
- goto L_Species;
-
-L_Man:
- set Sex, 1;
- goto L_Species;
-
-L_N:
- set Sex, 2;
- goto L_Species;
-
-L_Species:
- mes "[Old Woman]";
- mes "\"Go on. If you need to think a bit, take your time.\"";
- menu
- "... Tulimshar in Tonori ... I'm a Talpan.", L_Talpan;
-
-L_Talpan:
- set Class, 1;
- goto L_AnythingElse;
-
-L_AnythingElse:
- mes "[Old Woman]";
- mes "\"Anything else you can remember?\"";
- menu
- "Umm... no... I... I don't remember anything else...", L_KnowNothing;
-
-L_KnowNothing:
- mes "[Old Woman]";
- mes "\"Well I can tell you some useful things, if you want to hear.";
- mes "Some of it might jog your memory or at least help you catch your bearings.";
- mes "Oh, and by the way my name is Sorfina.\"";
- menu
- "That would be great!",L_Tut,
- "No, thanks. I already know how things are going.",L_SkipTut;
-
-L_Tut:
- mes "She smiles at you.";
- mes "[Sorfina]";
- mes "\"You have arrived at a very strange time. The Council is visiting Candor today.\"";
- mes "\"All the recent rumbling from the cave has all of Candor worried.\"";
- mes "\"Our guess is something with the last big shaker was the reason you ended up here.\"";
- mes "\"Ok, lets start by getting you dressed.\"";
- goto L_Carpet;
-
-L_Carpet:
- mes "[Sorfina]";
- mes "\"Try to take a few steps and walk to that carpet over there.";
- next;
- camera "#Carpet";
- mapmask getmask() | 4;
- next;
- camera;
- mes "Press [###keyMoveUp;] to move up, press [###keyMoveDown;] to move down, ";
- mes "press [###keyMoveLeft;] to move left, press [###keyMoveRight;] to move right ";
- mes " or click on the place you want to go to.\"";
- set QL_BEGIN, 1;
- goto L_Close;
-
-L_Dresser:
- mes "[Sorfina]";
- mes "\"You should get dressed now.\"";
- next;
- camera "Dresser#tutorial";
- mapmask getmask() | 32;
- mes "\"In that dresser there are some clothes you can wear.\"";
- mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press [###keyTargetNPC;] to focus and [###keyTalk;] to talk/activate.\"";
- next;
- camera;
- mes "\"Now get the clothes out of the dresser.\"";
- goto L_Close;
-
-L_Naked:
- mes "[Sorfina]";
- mes "\"Press [###keyWindowInventory;] or click on the Inventory button in the bar at the upper right corner to open your bag.\"";
- mes "\"Once we stop talking, double-click on the clothes to equip.\"";
- mes "\"Talk to me again after you get dressed. You can either click on me, or press [###keyTargetNPC;] to focus on me and [###keyTalk;] to talk.\"";
- goto L_Close;
-
-L_Clothes:
- if (getequipid(equip_torso) < 0)
- goto L_Naked;
- mes "[Sorfina]";
- mes "\"That's much better, don't you think?\"";
- mes "\"Here take this.\"";
- getitem "HitchhikersTowel", 1;
- mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
- mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
- mes "\"I think this will help you a bit. To get more information, press the button Setup and look at the controls on the Keyboard tab. You can also change them as you like.";
- mes "Talk to me again if you want me to explain more things.\"";
-
- mes "\"Oh, and if you're looking for extra work, you should talk to Aidan and Valon when you go outside. They're giving rewards for monster hunting.";
- mes "You can find Aidan near the camp fire outside and Valon out by the fields in the east.\"";
- next;
-
- mes "She digs in her pocket for a moment.";
- mes "\"And here is some money for you. Don't spend it all in one place.";
- mes "Now go help Tanisha downstairs.\"";
- mapmask getmask() | 8;
- set Zeny, Zeny + 30;
- set QL_BEGIN, 4;
- goto L_Close;
-
-L_Again:
- mes "[Sorfina]";
- mes "\"Make yourself at home! Do you have any questions?\"";
- menu
- "Yes, could you explain about...",L_Explain,
- "Could I get Healed?",L_Heal,
- "No, thanks.",L_Close;
-
-L_Heal:
- if (BaseLevel > 20)
- goto L_NoHeal;
- mes "[Sorfina]";
- mes "\"Hello Dear! You look tired, you should rest a moment.\"";
- mes "You take a short nap and feel refreshed.";
- heal MaxHp, 0;
- goto L_Main;
-
-L_NoHeal:
- mes "[Sorfina]";
- mes "\"I'm sorry but your wounds are far to advanced for my skills.\"";
- goto L_Main;
-
-L_Explain:
- menu
- "... walking?",L_Walk,
- "... talking?",L_Talk,
- "... the inventory and items?",L_Items,
- "... shortcuts?",L_Shortcut,
- "... what to do in Candor?",L_Aidan,
- "... change my appearence?",L_Barber,
- "... nevermind.",L_Close;
-
-L_Walk:
- mes "[Sorfina]";
- mes "\"You can use the arrow keys to walk around.";
- mes "Press [###keyMoveUp;] to move up, press [###keyMoveDown;] to move down, ";
- mes "press [###keyMoveLeft;] to move left, press [###keyMoveRight;] to move right ";
- mes " or click on the place you want to go to.";
- mes "This only works if that place is reachable and walkable.\"";
- goto L_Close;
-
-L_Talk:
- mes "[Sorfina]";
- mes "\"If you want to talk to a normal person, you can click at him or her.";
- mes "Or you can press [###keyTargetNPC;] to focus on the nearest person and then press [###keyTalk;] to talk.\"";
- next;
- mes "\"If you want to talk to other adventurers, press [###keyChat;] to open your chat window.";
- mes "Then type your message and press Enter to send.\"";
- next;
- mes "\"You may want to talk privately to another adventurer sometimes. In that case you can whisper.";
- mes "After pressing [###keyChat;] type '/whisper [name] [message]'.";
- mes "Or you can right click on someone and choose the whisper option.\"";
- next;
- mes "\"Press [###keyWindowChat;] to show and hide your chat window.\"";
- goto L_Close;
-
-L_Items:
- mes "[Sorfina]";
- mes "\"There are three types of items.";
- mes "They can be Consumables, Equipment or Miscellaneous.\"";
- next;
- mes "\"Consumable items such as Potions, can be used only once.";
- mes "After use, they will disappear from your inventory.";
- mes "There are some rare items that can be used but don't get consumed.\"";
- next;
- mes "\"Equipment items like Armors, Weapons, Accessories can be equipped for fashionable purposes or to raise your status.\"";
- next;
- mes "\"Miscellaneous items such as maggot slime, can be used in creating other items, or just to trade and sell.\"";
- next;
- mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
- mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
- next;
- mes "\"Press [###keyWindowInventory;] to open your inventory.";
- mes "When placing your cursor over an item there, you can see a box with some information about that item.\"";
- next;
- mes "\"To use or equip an item, select it by double-clicking on it.";
- mes "Selecting the item then pressing Use or Equip also works.\"";
- goto L_Close;
-
-L_Shortcut:
- mes "[Sorfina]";
- mes "\"Press [###keyWindowShortcut;] or click the Shortcut button in the bar at the upper right to open your shortcut window.\"";
- next;
- mes "\"You can select the item you want to put on a shortcut with your mouse and then click on the position in the shortcut window you want to place it.\"";
- next;
- mes "\"Now you can use or equip/unequip it by pressing the number of the shortcut.\"";
- goto L_Close;
-
-L_Aidan:
- mes "[Sorfina]";
- mes "\"I heard Aidan and Valon are looking for brave adventurers, you might want to talk to them. ";
- mes "You can find Aidan near the camp fire outside. The fields are just south of the town exit. ";
- mes "You'll see Valon of the city gaurd standing there. They both are offering rewards for monster hunting.\"";
- next;
- mes "\"When you leave this area to the South, you'll come to the docks.";
- mes "They will take you to Hurnscald, a major trading port.\"";
- next;
- mes "\"Go east out of Candor and north. You will find the cave everyone is talking about to the north.";
- next;
- mes "Talk to everybody. You can never tell when they might know something useful.\"";
- goto L_Close;
-
-L_Barber:
- mes "[Sorfina]";
- mes "\"Jessie downstairs can change your appearance.\"";
- mes "\"They will allow you to change your hair color or style as well as gender.\"";
- next;
- mes "\"There are a number of people across the continent that can change this for you.\"";
- mes "\"There is no cost or limit to the number of times it can be changed.\"";
- goto L_Close;
-
-L_Hasan:
- mes "[Sorfina]";
- mes "\"Make yourself at home! Do you have any questions?\"";
- menu
- "A guy named Hasan is bullying people.",L_Next,
- "Yes, could you explain again about...",L_Explain,
- "No, thanks.",L_Close;
-
-L_Next:
- mes "\"Ah, Hasan. He's causing trouble again?\"";
- mes "She shakes her head.";
- mes "[Sorfina]";
- mes "\"This guy has been a plague ever since he could walk. He's always causing trouble.\"";
- mes "\"And his father... Well, one day his father thought he should teach Hasan a lesson.\"";
- mes "\"He took him into the desert and then left him there!";
- mes "Hasan was only seven years old!\"";
- mes "\"I never understood how someone could do something like that to a child, even if it's a rascal like Hasan.\"";
- mes "\"Anyway, Hasan tried to find his way back home, but stumbled into a nest of scorpions!\"";
- mes "She shakes her head.";
- mes "\"If Valon hadn't have come along that moment, Hasan would have died that day.\"";
- mes "\"However, the scorpions poison caused a bad fever and once Hasan had recovered from that, he was even more malicious than before.\"";
- mes "She sighs.";
- set QL_BEGIN, 11;
- goto L_Close;
-
-L_SkipTut:
- mes "[Sorfina]";
- mes "\"Really? You seem quite unexperienced. Listening to some advice won't hurt.\"";
- menu
- "Thinking about it twice... please tell me.",L_Tut,
- "Yeah, but thanks for the offer. Bye.",L_Bye;
-
-L_Bye:
- mes "[Sorfina]";
- mes "\"Alright, if you say so. But take at least this. See you later.\"";
- getitem "Knife", 1;
- getitem "SlingShot", 1;
- getitem "SlingBullet", 500;
- getitem "HitchhikersTowel", 1;
- getitem "CottonShirt", 1;
- getitem "RaggedShorts", 1;
- set Zeny, Zeny + 35; // tanisha gives 5 zeny
- set QL_BEGIN, 8;
- goto L_Close;
-
-L_Close:
- close;
-
-OnTouch:
- if (QL_BEGIN > 0)
- end;
- goto L_Start;
-}
-
-029-2,33,27,0|script|#Carpet|127,1,1
-{
- if (QL_BEGIN != 1)
- end;
- mapmask getmask();
- mes "[Sorfina]";
- mes "\"You should get dressed now.\"";
- next;
- camera "Dresser#tutorial";
- mapmask getmask() | 16;
- mes "\"In that dresser there are some clothes you can wear.\"";
- mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press N to focus and T to talk/activate.\"";
- next;
- camera;
- mes "\"Now get the clothes out of the dresser.\"";
- set QL_BEGIN, 2;
- close;
-}
-
-029-2,29,23,0|script|Dresser#tutorial|400
-{
- set @npc_distance, 2;
- set @distance_handler, 1;
- callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_CloseDis;
- if (QL_BEGIN > 2) goto L_Empty;
- if (QL_BEGIN == 2) goto L_Shirt;
- goto L_Walk;
-
-L_Walk:
- mes "[Sorfina]";
- mes "\"Thats not what I said to do. Please don't skip ahead.\"";
- close;
-
-L_Shirt:
- mapmask getmask();
- mes "You take a simple Cotton Shirt and some very worn-out Ragged Shorts out of the dresser.";
- getitem "CottonShirt", 1;
- getitem "RaggedShorts", 1;
- mes "[Sorfina]";
- mes "\"Great! Now you can equip it.\"";
- mes "\"You can open your inventory by pressing F3 or clicking on the 'Inventory' button in the bar at the upper right corner.\"";
- next;
- mes "\"After we finish talking, click on the clothes and press the equip button.\"";
- set QL_BEGIN, 3;
- close;
-
-L_Empty:
- mes "The dresser is empty.";
- close;
-
-L_CloseDis:
- mes "You cannot reach that far.";
- close;
-}
-
-029-2,44,31,0|script|#DoorOutTut1|45,0,0
-{
- if (QL_BEGIN < 4)
- goto L_Block;
- mapmask getmask();
- warp "029-2", 112, 85;
- end;
-
-L_Block:
- message strcharinfo(0), "Sorfina : ##BWait a moment! ##bYou're not ready to leave.";
- // FIXME: this should be changed to npctalk with strcharinfo(0) once we increase the view area
- end;
-}
-029-2,23,24,0|script|#GameRules1|32767,0,1
-{
- if (TUT_var > 0)
- end;
- mes "[Server/Client Notice]";
- mes "The explanations in this tutorial are based on the official client, Manaplus.";
- mes "If you're using another client, settings and controls may be different.";
- callfunc "GameRules";
- close;
-}
-029-2,21,24,0|script|#GameRules2|32767,0,1
-{
- if (TUT_var > 0)
- end;
- mes "[Server/Client Notice]";
- mes "The explanations in this tutorial are based on the official client, Manaplus.";
- mes "If you're using another client, settings and controls may be different.";
- callfunc "GameRules";
- close;
-}
-029-2,22,26,0|script|#GameRules3|32767,1,0
-{
- if (TUT_var == 0)
- goto L_KnockBack;
- end;
-
-L_KnockBack:
- message strcharinfo(0), "Server : ##BPlease Accept the Game rules";
- warp "029-2", 22, 24;
- end;
-}
-029-2,24,24,0|script|#GameRules4|32767,0,1
-{
- if (TUT_var == 0)
- goto L_KnockBack;
- end;
-
-L_KnockBack:
- message strcharinfo(0), "Server : ##BPlease Accept the Game rules";
- warp "029-2", 22, 24;
- end;
-}
diff --git a/world/map/npc/029-2/stat_reset.txt b/world/map/npc/029-2/stat_reset.txt
deleted file mode 100644
index 427a1da5..00000000
--- a/world/map/npc/029-2/stat_reset.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-
-029-2,98,92,0|script|Jessie|159
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (BaseLevel >= 10)
- goto L_Sorry;
-
- mes "[Jessie]";
- mes "\"I know a spell that will";
- mes "reset status points on the youngings.";
- mes "";
- mes "I can also change their appearance.\"";
- next;
- menu
- "Reset my stats",L_Reset,
- "Change my appearance", L_Appearance,
- "Forget about it",L_Pass;
-
-L_Appearance:
- callfunc "Barber";
- goto L_Pass;
-
-L_Reset:
- resetstatus;
-
- mes "[Jessie]";
- mes "\"There you are.";
- mes "";
- mes "Good as new!\"";
- goto L_Close;
-
-L_Pass:
- mes "[Jessie]";
- mes "\"Very well then, see you.\"";
- goto L_Close;
-
-L_Sorry:
- mes "[Jessie]";
- mes "\"My spell only works on the very young, sorry.\"";
- next;
- mes "\"You can try Mailvox in the Tulimshar Bazaar or Wyara in the Potion Shop in Hurnscald.\"";
- menu
- "Change my appearance", L_Appearance,
- "Bye", L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/029-2/tanisha.txt b/world/map/npc/029-2/tanisha.txt
deleted file mode 100644
index 025cc499..00000000
--- a/world/map/npc/029-2/tanisha.txt
+++ /dev/null
@@ -1,291 +0,0 @@
-// This file is part of the Tutorial
-// Authors: Jenalya, alastrim
-// Cleanup: o11c
-
-029-2,110,88,0|script|Tanisha|114
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (isin("029-2", 98, 84, 106, 89))
- goto L_Fighting;
-
- if (QL_BEGIN >= 8) goto L_Tut_Done;
- if (QL_BEGIN == 7) goto L_Stats;
- if (QL_BEGIN == 6) goto L_Fail;
- if (QL_BEGIN == 5) goto L_Maggots;
-
- mes "[Tanisha]";
- mes "\"Hey! You're up again!\"";
- emotion EMOTE_HAPPY, strcharinfo(0);
- mes "\"Are you feeling better?\"";
- menu
- "Yes, thank you.",L_Next,
- "Yeah, but everything is gone. My stuff and memories..",L_Next;
-
-L_Next:
- mes "[Tanisha]";
- mes "\"I'm glad you're feeling better. It was really bad luck what happened to you.";
- mes "Hey, I have an idea.\"";
- set QL_BEGIN, 5;
- goto L_Maggots;
-
-L_Maggots:
- mes "[Tanisha]";
- mes "\"There are some maggots eating the goods and I'm supposed to get rid of them.";
- mes "But they're so yucky!\"";
- mes "\"If you kill them, I'll give you my knife.";
- mes "What do you say?\"";
- menu
- "I guess it's the least I can do.",L_Next1;
-
-L_Next1:
- mes "[Tanisha]";
- mes "\"Wonderful.";
- // since the check happens here, it is actually possible to have
- // more than $@Maggot_MaxHunters in the area at one time
- // but that's not a BIG problem
- if (getareausers("029-2", 98, 84, 106, 89) >= $@Maggot_MaxHunters)
- goto L_Crowded;
- next;
- goto L_Fight_Again;
-
-L_Fight_Again:
- mes "[Tanisha]";
- mes "\"Ok, listen what to do.";
- mes "Equip a weapon and kill the maggots.\"";
- mes "\"Press [###keyTargetMonster;] to focus on a monster. With [###keyTargetAttack;] you can focus and start attacking the same time.";
- mes "But it also works to click on the monster with your mouse.\"";
- next;
- mes "\"If you press the [###keyTarget;], you can abort your attack.\"";
- next;
- mes "\"Maggots aren't aggressive, so they won't harm you until you attack them first. Take them out one by one.\"";
- next;
- mes "\"Sometimes dead monsters leave some useful things. You can pick them up by pressing [###keyPickup;] or clicking on the items with your mouse.\"";
- close2;
- // The getitem must be in the same place as set QL_BEGIN, 2;
- // since it was moved to after L_Fight_Again, add it conditionally
- if (QL_BEGIN == 5)
- goto L_GetFightItems;
- goto L_ContinueFight;
-
-L_GetFightItems:
- set QL_BEGIN, 6;
- getitem "Knife", 1;
- getitem "SlingShot", 1;
- getitem "SlingBullet", 500;
- goto L_ContinueFight;
-
-L_ContinueFight:
- set QL_BEGIN, 6;
- set @Maggot_Kills, 0;
- set @time, 0;
- if (getareausers("029-2", 98, 84, 106, 89) == 0)
- initnpctimer;
- warp "029-2", 101, 87;
- goto L_Summon;
-
-L_Summon:
- areamonster "029-2", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
- end;
-
-L_Stats:
- mes "[Tanisha]";
- mes "\"That was great! Like a professional exterminator!\"";
- mes "\"And it seems you became stronger and more experienced.";
- mes "That means you got some status points which you can use to increase your abilities.\"";
- mes "\"Press [###keyWindowStatus;] or click the Status button in the bar at the upper right to see your status window. There you can distribute your points on six different properties.\"";
- mapmask getmask() | 2;
- next;
- goto L_StatsRe;
-
-L_StatsRe:
- mes "\"Strength makes you hit harder and you can carry more weight.\"";
- mes "\"Agility increases your attack speed and your ability to dodge attacks.\"";
- mes "\"Vitality gives you more hit points and more defense against physical attacks.\"";
- mes "\"Intelligence is useful for magic attack and defense.";
- mes "But as long as you don't know any magic, you shouldn't use your points on this.\"";
- mes "\"Dexterity is needed to hit monsters. It's also very important for the damage if you use a ranged weapon.\"";
- mes "\"Luck gives you the chance to do critical hits and lowers the chance to receive a critical hit from your opponent.\"";
- next;
- mes "\"Think about how you want to play before assigning the points.\"";
- mes "\"My Uncle sitting at the counter knows a spell to help the younglings reset their stats.\"";
- mes "\"He can also change your hair style and color, along with your gender.\"";
- mes "\"Furthermore, he knows of mages with even more powerful reset spells for your stats.\"";
- next;
- if (QL_BEGIN == 7)
- goto L_Money;
- goto L_Advice;
-
-L_Money:
- next;
- mes "[Tanisha]";
- mes "\"Hey, you are so smart taking out all that yucky maggots for me.";
- mes "You can have my pocket money. Here.\"";
- set QL_BEGIN, 8;
- set Zeny, Zeny + 5;
- next;
- goto L_Advice;
-
-L_Advice:
- mes "\"When you go to Hurnscald, you should see Bernard. He can make a delicious soup!";
- mes "Good luck!\"";
- emotion EMOTE_HAPPY, strcharinfo(0);
- goto L_Close;
-
-L_Explain:
- menu
- "... how to fight?",L_Fight,
- "... monsters?",L_Mob,
- "... status points?",L_StatsRe,
- "... what to do in Hurnscald?",L_Advice,
- "... nevermind.",L_Close;
-
-L_Fight:
- mes "[Tanisha]";
- mes "\"Press [###keyTargetMonster;] to focus on a monster. With [###keyTargetAttack;] you can focus and attack.";
- mes "But it also works to click on the monster with your mouse.\"";
- next;
- mes "\"If you press the [###keyTarget;] button, you can abort your attack.\"";
- next;
- mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing [###keyPickup;] or clicking on the items with your mouse.\"";
- next;
- mes "\"If you feel exhausted from battle you can sit down by pressing [###keyBeingSit;] to recover faster.\"";
- goto L_Close;
-
-L_Mob:
- mes "[Tanisha]";
- mes "\"I don't know much about monsters, I'm just a little girl. But I know a few things.";
- mes "There are several types of monsters...Aggressive, Neutral, and Assistants.\"";
- next;
- mes "\"Aggressive monsters will attack you as soon as they see you.\"";
- next;
- mes "\"Neutral monsters are peaceful until they get attacked.\"";
- next;
- mes "\"Assistants are monsters who help each other.\"";
- goto L_Close;
-
-L_Tut_Done:
- mes "[Tanisha]";
- mes "\"These yucky maggots! They're eating our goods!";
- mes "No matter how many of them you kill, they always come back.\"";
- mes "She sighs.";
- mes "[Tanisha]";
- mes "\"Do you have any questions?\"";
- menu
- "Yes, could you explain about...", L_Explain,
- "No, thanks.", L_Close;
-
-L_Crowded:
- mes "[Tanisha]";
- mes "\"That's great! But...";
- mes "it seems a little crowded in there.\"";
- mes "\"Let's wait a short while.\"";
- goto L_Close;
-
-L_Sleep:
- warp "029-2", 101, 87;
- mes "[Tanisha]";
- mes "\"What are you doing in there?";
- mes "Sleeping?";
- mes "Come back when you're serious.\"";
- set @Maggot_Kills, 0;
- set @time, 0;
- close2;
- if (getareausers("029-2", 98, 84, 106, 89) == 0)
- goto L_CleanUp;
- end;
-
-L_Fail:
- mes "Tanisha seems to be trying hard to supress laughter.";
- mes "[Tanisha]";
- mes "\"The maggots defeated you.\"";
- mes "She bursts out with laughter.";
- mes "\"Oops, I'm sorry. It's just too funny.";
- mes "Do you want to try it again?\"";
- menu
- "Sure!", L_Next2,
- "No, I need a rest.", L_Close;
-
-L_Next2:
- if (getareausers("029-2", 98, 84, 106, 89) >= $@Maggot_MaxHunters)
- goto L_Crowded;
- goto L_Fight_Again;
-
-L_Fighting:
- npctalk strnpcinfo(0), "##3I believe in you!", strcharinfo(0);
- end;
-
-OnTimer1000:
- setnpctimer 0;
- if (getareausers("029-2", 98, 84, 106, 89) == 0)
- goto L_CleanUp;
- // This is needed because multiple players can be in the area at once
- areatimer 0, "029-2", 98, 84, 106, 89, 0, "Tanisha::OnTick";
- end;
-
-L_CleanUp:
- killmonster "029-2", "Tanisha::OnMaggotDeath";
- set $@Maggot_Hunters, 0;
- stopnpctimer;
- areamonster "029-2", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
- end;
-
-OnTick:
- set @time, @time + 1;
- if (@time > 300)
- goto L_Sleep;
- if (isdead())
- end;
- if (Hp > 20)
- end;
- heal MaxHp, 0;
- npctalk strnpcinfo(0), "##3You're doing good!", strcharinfo(0);
- end;
-
-OnMaggotDeath:
- if (@Maggot_Kills == 1)
- npctalk strnpcinfo(0), "##3Aaahhhh... another one! It will crawl up your legs!", strcharinfo(0);
- if (@Maggot_Kills == 2)
- npctalk strnpcinfo(0), "##3Ohh... Irrhk... Eeeeww... They just appear from nowhere!", strcharinfo(0);
- if (@Maggot_Kills == 3)
- npctalk strnpcinfo(0), "##3Yuck... I think I am getting sick.", strcharinfo(0);
- if (isin("029-2", 98, 84, 106, 89))
- set @Maggot_Kills, @Maggot_Kills + 1;
- if (@Maggot_Kills < 5)
- goto L_Summon;
- // else, complete
- warp "029-2", 110, 88;
- set QL_BEGIN, 7;
- set @Maggot_Kills, 0;
- set @time, 0;
- if (getareausers("029-2", 98, 84, 106, 89) == 0)
- goto L_CleanUp;
- end;
-
-L_Close:
- close;
-
-OnInit:
- set $@Maggot_MaxHunters, 4;
- areamonster "029-2", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
- end;
-}
-029-2,114,93,0|script|#DoorOutTut2|45,0,0
-{
- end;
-
-OnTouch:
- if (QL_BEGIN >= 8)
- goto L_Warp;
- goto L_Block;
-
-L_Warp:
- mapmask getmask();
- warp "029-1", 32, 100;
- end;
-
-L_Block:
- npctalk "Tanisha", "##3##BPlease come here. ##bI'd like some help!", strcharinfo(0);
- end;
-}
diff --git a/world/map/npc/029-2/two_arms.txt b/world/map/npc/029-2/two_arms.txt
deleted file mode 100644
index 07fcf065..00000000
--- a/world/map/npc/029-2/two_arms.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// Forge Shops
-
-029-2,99,25,0|shop|Rosen|311,SlingShot:*1,SlingBullet:*1,ShortBow:*4,Arrow:*2,IronArrow:*1
-029-2,112,24,0|shop|Toichi|377,Knife:*1,SharpKnife:*1,Dagger:*1,LeatherShirt:*1,LeatherShield:*1
diff --git a/world/map/npc/029-3/_import.txt b/world/map/npc/029-3/_import.txt
deleted file mode 100644
index 2fe4f885..00000000
--- a/world/map/npc/029-3/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 029-3: Candor Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 029-3
-npc: npc/029-3/_mobs.txt
-npc: npc/029-3/_nodes.txt
-npc: npc/029-3/_warps.txt
-npc: npc/029-3/barrier.txt
-npc: npc/029-3/mapflags.txt
-npc: npc/029-3/parua.txt
diff --git a/world/map/npc/029-3/_mobs.txt b/world/map/npc/029-3/_mobs.txt
deleted file mode 100644
index 83f4ee2f..00000000
--- a/world/map/npc/029-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Cave mobs
-
diff --git a/world/map/npc/029-3/_nodes.txt b/world/map/npc/029-3/_nodes.txt
deleted file mode 100644
index 127723aa..00000000
--- a/world/map/npc/029-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/029-3/_warps.txt b/world/map/npc/029-3/_warps.txt
deleted file mode 100644
index 9b1b03a9..00000000
--- a/world/map/npc/029-3/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Candor Cave warps
-
diff --git a/world/map/npc/029-3/barrier.txt b/world/map/npc/029-3/barrier.txt
deleted file mode 100644
index e528b49e..00000000
--- a/world/map/npc/029-3/barrier.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-029-3,49,54,0|script|#FightCaveBarrier|45,0,0
-{
- if ($@FIGHT_CAVE_STATUS == 1) goto L_Block;
- warp "029-1", 69, 62;
- end;
-
-L_Block:
- message strcharinfo(0), "Some force seems to be blocking you from exiting.";
- end;
-}
diff --git a/world/map/npc/029-3/mapflags.txt b/world/map/npc/029-3/mapflags.txt
deleted file mode 100644
index 81d4e7fb..00000000
--- a/world/map/npc/029-3/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-029-3|mapflag|nosave|029-1,39,102
-029-3|mapflag|resave|029-1,39,102
diff --git a/world/map/npc/029-3/parua.txt b/world/map/npc/029-3/parua.txt
deleted file mode 100644
index ef630413..00000000
--- a/world/map/npc/029-3/parua.txt
+++ /dev/null
@@ -1,407 +0,0 @@
-// Parua's fight
-029-3,50,25,0|script|Parua|183
-{
- set $@candor_npctalk$, "The dungeon is now ready for its next victims.";
- donpcevent "#CandorAnnouncer::OnCommandTalk";
- set @FIGHT_CAVE_COST, 20000;
- set @FIGHT_CAVE_COST$, "20,000";
- set @FIGHT_CAVE_ANNOUNCE_COST, 3000;
- set @FIGHT_CAVE_ANNOUNCE_COST$, "3,000";
- if ($@FIGHT_CAVE_STATUS == 1) goto L_Enjoy;
- if ($@FIGHT_CAVE_STATUS >= 2 && $@ANNOUNCE_TIME > gettimetick(2)) goto L_Wait;
- mes "[Parua]";
- mes "\"Hello.\"";
- next;
- mes "[Parua]";
- mes "\"Do you dare challenge the power that sleeps here?\"";
- menu "No, I'll let it sleep.", L_Exit,
- "Ha! What's the worst it could do?", L_Next,
- "What is this place anyway?", L_Explain,
- "Actually, I want to leave, but I'm stuck!", L_Stuck;
-
-L_Next:
- mes "[Parua]";
- mes "\"Very well, for a fee of "+@FIGHT_CAVE_COST$+" GP, I will awaken that power.\"";
- menu "No, what a ripoff!", L_Exit,
- "Fine, here you go.", L_Fine;
-
-L_Fine:
- if ($@FIGHT_CAVE_STATUS == 1)
- goto L_AlreadyStarted;
- if (Zeny >= @FIGHT_CAVE_COST + @FIGHT_CAVE_ANNOUNCE_COST)
- goto L_CallPlayers;
- goto L_Paying;
-
-L_Paying:
- if (getmapusers("029-3") < 5)
- goto L_NotEnoughPlayers;
- if (Zeny < @FIGHT_CAVE_COST)
- goto L_NotEnough;
-// Do not charge the money if the fight or the announces were already started by someone else
- if ($@FIGHT_CAVE_STATUS != 0)
- goto L_AlreadyStarted;
- if ($@FIGHT_CAVE_PAID != 0)
- goto L_AlreadyStarted;
- set Zeny, Zeny - @FIGHT_CAVE_COST;
- set $@FIGHT_CAVE_PAID, 1;
- goto L_StartFight;
-
-L_StartFight:
- if (getmapusers("029-3") < 5)
- goto L_NotEnoughPlayers;
- npctalk strnpcinfo(0), "Let the battle begin!";
- set $@FIGHT_CAVE_STATUS, 1;
- set $@FIGHT_CAVE_LEVEL, 1;
- set $@FIGHT_CAVE_PLAYER_COUNT, getmapusers("029-3");
- startnpctimer;
- goto L_Exit;
-
-L_CallPlayers:
- mes "[Parua]";
- mes "\"Good... Your money will be very useful. I can awaken this power right now, if you want, or, for an additional fee of "+@FIGHT_CAVE_ANNOUNCE_COST$+" GP, I can help you gather some of your friends to help you in this battle. What will it be?\"";
- menu
- "We are OK. Just do it!", L_Paying,
- "I will accept your help.", L_AcceptHelp;
-
-L_AcceptHelp:
- mes "[Parua]";
- mes "\"OK, I can make up to 3 announcements to the people of this world, letting them know that you are about to challenge the powers that sleep in this cave! If you want the fight to start in 5 minutes, I will make one announcement, if it is 10 minutes, I will make 2 announcements, and if it is to start in 15 minutes, it will be 3 announcements.\"";
- next;
- mes "\"But be careful! If there aren't at least five people here at the time of the fight, your money will be lost.\"";
- next;
- mes "\"So, when should it start?\"";
- menu
- "In 5 minutes.", L_TimeFightStart,
- "In 10 minutes.", L_TimeFightStart,
- "In 15 minutes.", L_TimeFightStart,
- "I don't want to wait. Let's start it now!", L_Paying;
-
-L_TimeFightStart:
-// Do not charge the money if the fight or the announces were already started by someone else
- if ($@FIGHT_CAVE_STATUS != 0)
- goto L_AlreadyStarted;
- if (getmapusers("029-3") < 5)
- goto L_NotEnoughPlayers;
- if (Zeny < @FIGHT_CAVE_COST + @FIGHT_CAVE_ANNOUNCE_COST)
- goto L_NotEnough_Announce;
- if ($@FIGHT_CAVE_PAID != 0)
- goto L_AlreadyStarted;
- set Zeny, Zeny - (@FIGHT_CAVE_COST + @FIGHT_CAVE_ANNOUNCE_COST);
- set $@FIGHT_CAVE_PAID, 1;
- set $@SPONSOR$, strcharinfo(0);
- set $@FIGHT_CAVE_STATUS, $@FIGHT_CAVE_STATUS + (@menu + 2);
- if ($@FIGHT_CAVE_STATUS == 3)
- set $@ANNOUNCE_TIME, gettimetick(2) + 300;
- if ($@FIGHT_CAVE_STATUS == 4)
- set $@ANNOUNCE_TIME, gettimetick(2) + 600;
- if ($@FIGHT_CAVE_STATUS >= 5)
- set $@ANNOUNCE_TIME, gettimetick(2) + 900;
- startnpctimer;
- close;
-
-L_Enjoy:
- mes "[Parua]";
- mes "\"Enjoy the fight!\"";
- goto L_Exit;
-
-L_Wait:
- set @seconds, $@ANNOUNCE_TIME - gettimetick(2);
- callfunc "HumanTime";
- mes "[Parua]";
- mes "\"Be Patient... The fight will start in " + @time$ + ".\"";
- goto L_Exit;
-
-L_NotEnough:
- mes "[Parua]";
- mes "\"Seems you can't meet my fee.\"";
- goto L_Exit;
-
-L_NotEnough_Announce:
- mes "[Parua]";
- mes "\"Seems you can't meet the announcement fee.\"";
- goto L_Exit;
-
-L_AlreadyStarted:
- mes "[Parua]";
- mes "\"Seems your friend already paid me.\"";
- goto L_Exit;
-
-L_NotEnoughPlayers:
- if ($@FIGHT_CAVE_STATUS == 2)
- goto L_CleanUp_Announcement;
- mes "[Parua]";
- mes "\"Maybe you should bring some friends with you; this will get messy.\"";
- mes "He takes a moment to calculate. \"You'll probably need at least...five people, including yourself.\"";
- goto L_Exit;
-
-L_Explain:
- mes "[Parua]";
- mes "\"Long ago many human beings and other creatures have been slaughtered in a battle in this now cursed cave. Their souls still lie here.\"";
- next;
- mes "\"My try to use a spell to cure this place from the curse backfired and turned me into this.\"";
- next;
- mes "\"To change me back expensive ingredients for a curing potion are required.\"";
- next;
- mes "\"Pay me and I will use my dark astral magic to summon the undead. If you survive you will receive 100 Boss Points.\"";
- menu
- "I need to think about this.", L_Exit,
- "I'm interested.", L_Next,
- "What are Boss Points?", L_Explain_Boss_Points;
-
-L_Explain_Boss_Points:
- mes "[Parua]";
- mes "\"Boss points are another type of experience.\"";
- next;
- mes "\"Fighting experience makes you level up, magic experience makes your spells more effective and allows you to learn new spells.\"";
- next;
- mes "\"Boss Points show your skills and nerves in important battles and heroic actions.\"";
- next;
- mes "\"Be aware, they can be consumed as well. For instance by negative actions, such as selfishness or simply stupidity.\"";
- menu
- "Thanks, I will think about your offer now.", L_Exit,
- "I want to challenge the powers in this cave.", L_Next;
-
-L_Stuck:
- mes "[Parua]";
- mes "\"I see. I can teleport you to another nice cave.\"";
- mes "His face doesn't show any emotion, but his voice sounds threatening.";
- menu
- "Please do so!", L_Warp,
- "I changed my mind.", L_Exit;
-
-L_Warp:
- warp "005-3", 86, 34;
- goto L_Exit;
-
-L_Exit:
- close;
-
-// Fight logic
-OnTimer5000:
- setnpctimer 0;
- if ($@FIGHT_CAVE_STATUS == 1)
- goto L_CaveLogic;
- if ($@FIGHT_CAVE_STATUS >= 2)
- goto L_GlobalAnnounce;
- goto L_Return_1;
-
-L_Return_1:
- set $@FIGHT_CAVE_PLAYER_COUNT, 0;
- areatimer 0, "029-3", 20, 20, 70, 60, 10, "Parua::OnTick";
- end;
-
-L_CaveLogic:
- set $@FIGHT_CAVE_ROUND_PEN, $@FIGHT_CAVE_PLAYER_COUNT;
- if ($@FIGHT_CAVE_ROUND_PEN > 60)
- set $@FIGHT_CAVE_ROUND_PEN, 60;
- if ($@FIGHT_CAVE_PLAYER_COUNT <= 0)
- goto L_CleanUp;
- set $@FIGHT_CAVE_ROUND_TIMER, $@FIGHT_CAVE_ROUND_TIMER + 5; // Advance 5 seconds
- if (mobcount("029-3", "Parua::OnPetDeath") <= 0)
- goto L_NextRound;
- if ($@FIGHT_CAVE_ROUND_TIMER + $@FIGHT_CAVE_ROUND_PEN >= 120)
- goto L_NextRound;
- goto L_Return_1;
-
-L_NextRound:
- set $@FIGHT_CAVE_ROUND_TIMER, 0;
-
- set $@FIGHT_CAVE_TEMP_UP, ($@FIGHT_CAVE_LEVEL / 10);
- if ($@FIGHT_CAVE_TEMP_UP > 100)
- set $@FIGHT_CAVE_TEMP_UP, 100;
-
- set $@FIGHT_CAVE_LEVEL, $@FIGHT_CAVE_LEVEL + $@FIGHT_CAVE_PLAYER_COUNT + $@FIGHT_CAVE_TEMP_UP;
- if ($@FIGHT_CAVE_LEVEL >= 2200)
- goto L_CleanUp;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_LEVEL;
-
- areatimer 0, "029-3", 20, 20, 70, 60, 10, "Parua::OnNewRound";
-
- set $@candor_npctalk$, "The next round (level " + $@FIGHT_CAVE_LEVEL + ") is starting with " + $@FIGHT_CAVE_PLAYER_COUNT + " player(s) left alive.";
- donpcevent "#CandorAnnouncer::OnCommandTalk";
- mapannounce "029-3", "Parua : The next round (level " + $@FIGHT_CAVE_LEVEL + ") is starting with " + $@FIGHT_CAVE_PLAYER_COUNT + " player(s) left alive." , 0;
-
- set $@MOB_1_SUMMON, 0;
- set $@MOB_2_SUMMON, 0;
- set $@MOB_3_SUMMON, 0;
- set $@MOB_4_SUMMON, 0;
- set $@MOB_5_SUMMON, 0;
- set $@MOB_6_SUMMON, 0;
- goto L_Summon;
-
-L_Summon:
- if ($@FIGHT_CAVE_POINTS >= 243
- && $@MOB_1_SUMMON < 2)
- goto L_MOB1;
- if ($@FIGHT_CAVE_POINTS >= 81
- && $@MOB_2_SUMMON < 6)
- goto L_MOB2;
- if ($@FIGHT_CAVE_POINTS >= 27
- && $@MOB_3_SUMMON < 5)
- goto L_MOB3;
- if ($@FIGHT_CAVE_POINTS >= 9
- && $@MOB_4_SUMMON < 7)
- goto L_MOB4;
- if ($@FIGHT_CAVE_POINTS >= 3
- && $@MOB_5_SUMMON < 10)
- goto L_MOB5;
- if ($@FIGHT_CAVE_POINTS >= 1
- && $@MOB_6_SUMMON < 12)
- goto L_MOB6;
- goto L_Return_1;
-
-L_GlobalAnnounce:
- set $@FIGHT_CAVE_PLAYER_COUNT, getmapusers("029-3");
- if ($@FIGHT_CAVE_STATUS == 3)
- goto L_Five_Minutes;
- if ($@FIGHT_CAVE_STATUS == 4)
- goto L_Ten_Minutes;
- if ($@FIGHT_CAVE_STATUS >= 5)
- goto L_Fifteen_Minutes;
- if (gettimetick(2) >= $@ANNOUNCE_TIME)
- goto L_StartFight;
- end;
-
-L_Five_Minutes:
- if ($@ANNOUNCE_TIME - gettimetick(2) > 300)
- end;
- if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there is ##3only 1 fighter##1 in the cave.", 0;
- if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- set $@FIGHT_CAVE_STATUS, 2;
- end;
-
-L_Ten_Minutes:
- if ($@ANNOUNCE_TIME - gettimetick(2) > 600)
- end;
- if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there is ##3only 1 fighter##1 in the cave.", 0;
- if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- set $@FIGHT_CAVE_STATUS, 3;
- end;
-
-L_Fifteen_Minutes:
- if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there is ##3only 1 fighter##1 in the cave.", 0;
- if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- set $@FIGHT_CAVE_STATUS, 4;
- end;
-
-L_MOB1:
- set $@MOB_1_SUMMON, $@MOB_1_SUMMON + 1;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_POINTS - 243;
- areamonster "029-3", 20, 20, 70, 60, "", 1022, 1, "Parua::OnPetDeath";
- goto L_Summon;
-
-L_MOB2:
- set $@MOB_2_SUMMON, $@MOB_2_SUMMON + 1;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_POINTS - 81;
- areamonster "029-3", 20, 20, 70, 60, "", 1045, 1, "Parua::OnPetDeath";
- goto L_Summon;
-
-L_MOB3:
- set $@MOB_3_SUMMON, $@MOB_3_SUMMON + 1;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_POINTS - 27;
- areamonster "029-3", 20, 20, 70, 60, "", 1024, 1, "Parua::OnPetDeath";
- goto L_Summon;
-
-L_MOB4:
- set $@MOB_4_SUMMON, $@MOB_4_SUMMON + 1;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_POINTS - 9;
- areamonster "029-3", 20, 20, 70, 60, "", 1043, 1, "Parua::OnPetDeath";
- goto L_Summon;
-
-L_MOB5:
- set $@MOB_5_SUMMON, $@MOB_5_SUMMON + 1;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_POINTS - 3;
- areamonster "029-3", 20, 20, 70, 60, "", 1010, 1, "Parua::OnPetDeath";
- goto L_Summon;
-
-L_MOB6:
- set $@MOB_6_SUMMON, $@MOB_6_SUMMON + 1;
- set $@FIGHT_CAVE_POINTS, $@FIGHT_CAVE_POINTS - 1;
- areamonster "029-3", 20, 20, 70, 60, "", 1008, 1, "Parua::OnPetDeath";
- goto L_Summon;
-
-// Called on each player once every 5 seconds
-OnTick:
- if (isdead()) end;
- set $@FIGHT_CAVE_PLAYER_COUNT, $@FIGHT_CAVE_PLAYER_COUNT + 1;
- end;
-
-// called on each player when a new round begins
-OnNewRound:
- if (isdead())
- end;
- if ($@FIGHT_CAVE_LEVEL < 600)
- end;
- set @candor_oldx, @candor_x;
- set @candor_oldy, @candor_y;
- set @candor_x, getx();
- set @candor_y, gety();
- if (!(@candor_oldx == @candor_x && @candor_oldy == @candor_y))
- goto L_IdleCheckPassed;
- set @candor_idle_counter, @candor_idle_counter + 1;
- sc_start sc_poison, 1, @candor_idle_counter*25;
- heal ((MaxHp/100) * (-20 * @candor_idle_counter)), 0;
- message strcharinfo(0), "The evil energy of this place hurts you. You should keep moving!";
- end;
-
-OnPetDeath:
- end;
-
-OnInit:
- if (debug >= 2) end;
- initnpctimer;
- stopnpctimer;
- goto L_CleanUp;
-
-L_CleanUp:
- npctalk strnpcinfo(0), "Game Over";
- set $@candor_npctalk$, "The dungeon is now ready for its next victims.";
- donpcevent "#CandorAnnouncer::OnCommandTalk";
- areatimer 0, "029-3", 20, 20, 70, 60, 10, "Parua::OnReward";
- set $@FIGHT_CAVE_STATUS, 0;
- set $@ANNOUNCE_TIME, 0;
- set $@FIGHT_CAVE_PAID, 0;
- set $@FIGHT_CAVE_PLAYER_COUNT, 0;
- set $@FIGHT_CAVE_LEVEL, 1;
- set $@FIGHT_CAVE_ROUND_TIMER, 0;
- killmonster "029-3", "Parua::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_CleanUp_Announcement:
- npctalk strnpcinfo(0), $@SPONSOR$ + " lost the money invested in the fight, since there are less than 5 players in the cave";
- set $@SPONSOR$, "";
- set $@ANNOUNCE_TIME, 0;
- set $@FIGHT_CAVE_STATUS, 0;
- set $@FIGHT_CAVE_PAID, 0;
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnPCDieEvent:
- goto L_CleanUp_Player;
-
-L_CleanUp_Player:
- set @candor_oldx, 0;
- set @candor_oldy, 0;
- set @candor_x, 0;
- set @candor_y, 0;
- set @candor_idle_counter, 0;
- end;
-
-L_IdleCheckPassed:
- //FIXME we could do that, but I'd say, let's be severe.
- //set @candor_idle_counter, 0;
- end;
-
-OnReward:
- if (isdead())
- end;
- set BOSS_POINTS, BOSS_POINTS + 100;
- message strcharinfo(0), "You gain 100 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_CleanUp_Player;
-}
diff --git a/world/map/npc/029-4/_import.txt b/world/map/npc/029-4/_import.txt
deleted file mode 100644
index 10833d5c..00000000
--- a/world/map/npc/029-4/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 029-4: 2014 Candor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 029-4
-npc: npc/029-4/_mobs.txt
-npc: npc/029-4/_nodes.txt
-npc: npc/029-4/_warps.txt
-npc: npc/029-4/mapflags.txt
-npc: npc/029-4/time-traveler.txt
diff --git a/world/map/npc/029-4/_mobs.txt b/world/map/npc/029-4/_mobs.txt
deleted file mode 100644
index 1b1f2252..00000000
--- a/world/map/npc/029-4/_mobs.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// 2014 Candor mobs
-
-029-4,69,65,12,13|monster|EvilMushroom|1013,4,20000ms,60000ms
-029-4,32,33,12,13|monster|Squirrel|1038,3,30000ms,60000ms
-029-4,46,48,4,1|monster|CloverPatch|1037,1,10000ms,120000ms
-029-4,37,60,22,20|monster|SpikyMushroom|1019,5,10000ms,30000ms
-029-4,54,36,17,18|monster|Bat|1017,4,25000ms,30000ms
-029-4,59,51,13,9|monster|LogHead|1025,2,25000ms,30000ms
diff --git a/world/map/npc/029-4/_nodes.txt b/world/map/npc/029-4/_nodes.txt
deleted file mode 100644
index 5eae3c8a..00000000
--- a/world/map/npc/029-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// 2014 Candor nodes
-
-// (no nodes)
diff --git a/world/map/npc/029-4/_warps.txt b/world/map/npc/029-4/_warps.txt
deleted file mode 100644
index 588ef957..00000000
--- a/world/map/npc/029-4/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// 2014 Candor warps
-
-029-4,22,38|warp|-1,0,029-1,25,38
diff --git a/world/map/npc/029-4/mapflags.txt b/world/map/npc/029-4/mapflags.txt
deleted file mode 100644
index 8e181716..00000000
--- a/world/map/npc/029-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-029-4|mapflag|resave|029-4,69,69
diff --git a/world/map/npc/029-4/time-traveler.txt b/world/map/npc/029-4/time-traveler.txt
deleted file mode 100644
index 1242e7c4..00000000
--- a/world/map/npc/029-4/time-traveler.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-// time traveler that warps from old tonori to new tonori
-
-029-1,25,40,0|script|Time Traveler#291|184
-{
- mes "Would you like to time travel?";
- menu
- "Yes!", L_Warp;
-
-L_Warp:
- mes "Hang tight!";
- close2;
- warp "029-4", 24, 38;
- close;
-}
-
-029-4,26,36,0|script|Time Traveler#294|184
-{
- mes "Welcome back!";
- menu
- "What year are we in?", L_What,
- "How do I leave?", L_Leave;
-
-L_What:
- mes "This is what Candor used to look like back in 2014.";
- // TODO: we need an explaination
- close;
-
-L_Leave:
- mes "Walk West from here to escape the time dilation bubble.";
- close;
-}
diff --git a/world/map/npc/030-1/_import.txt b/world/map/npc/030-1/_import.txt
deleted file mode 100644
index d9f4f8ed..00000000
--- a/world/map/npc/030-1/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 030-1: Romantic Place
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 030-1
-npc: npc/030-1/_mobs.txt
-npc: npc/030-1/_nodes.txt
-npc: npc/030-1/_warps.txt
-npc: npc/030-1/mapflags.txt
-npc: npc/030-1/time-traveler.txt
diff --git a/world/map/npc/030-1/_mobs.txt b/world/map/npc/030-1/_mobs.txt
deleted file mode 100644
index 91ee6219..00000000
--- a/world/map/npc/030-1/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Romantic Place mobs
-
-030-1,0,0,0,0|monster|Pollett|1113,7,100000ms,30000ms
-030-1,0,0,0,0|monster|WhiteBell|1095,4,100000ms,30000ms
-030-1,71,67,0,0|monster|Santaboo|1112,2,100000ms,30000ms
-030-1,71,67,0,0|monster|Reinboo|1094,2,100000ms,30000ms
diff --git a/world/map/npc/030-1/_nodes.txt b/world/map/npc/030-1/_nodes.txt
deleted file mode 100644
index 7efeee24..00000000
--- a/world/map/npc/030-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Romantic Place nodes
-
-// (no nodes)
diff --git a/world/map/npc/030-1/_warps.txt b/world/map/npc/030-1/_warps.txt
deleted file mode 100644
index fd8485f3..00000000
--- a/world/map/npc/030-1/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Romantic Place warps
-
-030-1,61,27|warp|2,-1,019-1,101,101
diff --git a/world/map/npc/030-1/mapflags.txt b/world/map/npc/030-1/mapflags.txt
deleted file mode 100644
index 1069bff8..00000000
--- a/world/map/npc/030-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-030-1|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/030-1/time-traveler.txt b/world/map/npc/030-1/time-traveler.txt
deleted file mode 100644
index a79b812d..00000000
--- a/world/map/npc/030-1/time-traveler.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-// time traveler that warps from old nivalis to new nivalis
-
-019-1,102,100,0|script|Time Traveler#19|184
-{
- mes "Would you like to time travel?";
- menu
- "Yes!", L_Warp;
-
-L_Warp:
- mes "Hang tight!";
- close2;
- warp "030-1", 61, 29;
- close;
-}
-
-030-1,64,33,0|script|Time Traveler#30|184
-{
- mes "Welcome back!";
- menu
- "What is this place?", L_What,
- "How do I leave?", L_Leave;
-
-L_What:
- mes "This place used to be part of Kaizei a few years back.";
- mes "Unfortunately, a great landslide occured and it got completely engulfed by the sea.";
- next;
- mes "Santa's workshop used to be located here, but after the incident they had to move further inland.";
- mes "Fortunately, they managed to salvage most of the equipment and nobody was injured.";
- close;
-
-L_Leave:
- mes "Walk North from here to exit the time dilation bubble.";
- close;
-}
diff --git a/world/map/npc/030-2/_import.txt b/world/map/npc/030-2/_import.txt
deleted file mode 100644
index 938c74e8..00000000
--- a/world/map/npc/030-2/_import.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// Map 030-2: Christmas Inn
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 030-2
-npc: npc/030-2/_mobs.txt
-npc: npc/030-2/_nodes.txt
-npc: npc/030-2/_warps.txt
-npc: npc/030-2/avalia.txt
-npc: npc/030-2/basic_npcs.txt
-npc: npc/030-2/bedding_helper.txt
-npc: npc/030-2/chief_helper.txt
-npc: npc/030-2/eljas.txt
-npc: npc/030-2/empty_boxes_helper.txt
-npc: npc/030-2/glitter_helper.txt
-npc: npc/030-2/guards.txt
-npc: npc/030-2/mapflags.txt
-npc: npc/030-2/present_helper.txt
-npc: npc/030-2/roasted_acorns_helper.txt
-npc: npc/030-2/shipping_helper.txt
-npc: npc/030-2/storage_helper.txt
-npc: npc/030-2/wrapping_paper_helper.txt
diff --git a/world/map/npc/030-2/_mobs.txt b/world/map/npc/030-2/_mobs.txt
deleted file mode 100644
index 7664126e..00000000
--- a/world/map/npc/030-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Christmas Inn mobs
-
diff --git a/world/map/npc/030-2/_nodes.txt b/world/map/npc/030-2/_nodes.txt
deleted file mode 100644
index 8fea3767..00000000
--- a/world/map/npc/030-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Christmas Inn nodes
-
-// (no nodes)
diff --git a/world/map/npc/030-2/_warps.txt b/world/map/npc/030-2/_warps.txt
deleted file mode 100644
index de2844e1..00000000
--- a/world/map/npc/030-2/_warps.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Christmas Inn warps
-
-030-2,88,51|warp|-1,-1,020-1,33,94
-030-2,72,31|warp|-1,-1,030-2,51,31
-030-2,194,68|warp|-1,-1,030-2,78,88
-030-2,52,31|warp|-1,-1,030-2,73,31
-030-2,75,19|warp|0,-1,030-2,127,50
-030-2,102,19|warp|0,-1,030-2,153,50
-030-2,127,51|warp|0,-1,030-2,75,20
-030-2,154,51|warp|0,-1,030-2,101,20
-030-2,156,24|warp|-1,0,030-2,21,78
-030-2,20,78|warp|-1,0,030-2,155,24
-030-2,42,105|warp|0,-1,030-2,93,74
-030-2,94,73|warp|0,-1,030-2,41,104
-030-2,102,73|warp|0,-1,030-2,127,104
-030-2,127,105|warp|0,-1,030-2,102,74
-030-2,78,87|warp|-1,-1,030-2,194,67
diff --git a/world/map/npc/030-2/avalia.txt b/world/map/npc/030-2/avalia.txt
deleted file mode 100644
index 818fabae..00000000
--- a/world/map/npc/030-2/avalia.txt
+++ /dev/null
@@ -1,223 +0,0 @@
-// Annual Xmas
-// Author: cinderweb, wushin
-
-030-2,198,61,0|script|Avalia|356
-{
- callfunc "XmasStates";
-
- if(($@xmas_time) && !(@xmas_side))
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Avalia]";
- mes "\"What are you doing in here? Get out!\"";
- warp "030-2",88,80;
- close;
-
-L_XmasMain:
- if(@xmas_reward_done_state) goto L_ThankYou;
- if(@xmas_reward1_done_state) goto L_Thanks;
- if(@xmas_reward_start_state) goto L_Reward;
- if(@xmas_reward2_done_state) goto L_Reward;
- if(@xmas_boss_door_state) goto L_Quick;
- if(@xmas_reagent_done_state) goto L_PowerReagents;
- if(@xmas_reagent_start_state) goto L_PowerReagents;
- if(@xmas_helper_done_state) goto L_HelperQuest;
- if(@xmas_helper_start_state) goto L_HelperQuest;
- if(@xmas_list_deliver) goto L_ListReturn;
- goto L_OffSeason;
-
-L_ListReturn:
- mes "[Avalia]";
- mes "\"This had better be important, I have got enough to worry about.\"";
- menu
- "Sorry for interrupting, but I have been sent up here with the List", L_Next;
-
-L_Next:
- mes "She stares blankly at you for a bit...";
- next;
- mes "\"YAHOO!!\"";
- next;
- mes "\"One problem down, only a few more to go.\"";
- next;
- mes "\"Since you have already been so helpful, I was wondering if you could continue to do so?\"";
- mes "\"I do have the power to reward you handsomely.\"";
- next;
- mes "\"You see this nutcracker here beside me? He is different from the rest. He had a will of his own. It started shortly after we installed the new power core.\"";
- next;
- mes "\"At first, it was just magical research that had me keep him close to me. As time wore on, mine and his interactions became more intimate. I was hoping to get my research done before the Holidays.\"";
- next;
- mes "\"I wanted to show Santa and ask to if he knew how to help make it permanent, but Someone didn't approve. Took away our central spell power core. Now all the nutcrackers are back to being mindless automatons. Now the Christmas Sages must use magic to animate them.\"";
- next;
- mes "\"Please you must help me find a way to restore our power core before Christmas. I want to show Santa Millis, so he can give him life permanently for me.\"";
- mes "\"First I need time to do some more research. Which means I need to spend less time helping with the holidays. Can you check with the helpers and make sure everything is going smoothly?\"";
- menu
- "Sure.", L_Start;
-
-L_Start:
- mes "\"Ok, go check in with Chief Warrick. You might have to persist a bit but he will let you help.\"";
- mes "\"Once you have completed this task come back and talk to me. As he reports to me.\"";
- set @xmas_state, $@xmas_helpers_start_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-L_HelperQuest:
- mes "[Avalia]";
- mes "\"Welcome Back!\"";
- mes "\"So how are the Holiday Preparations coming along?\"";
- menu
- "It's a mess but they got things handled.", L_Continue,
- "I'd better get back to helping.", L_Close;
-
-L_Continue:
- callfunc "XmasHelperPoints";
- callfunc "XmasStates";
- if(@xmas_helper_done_state)
- goto L_ManaBattery;
- goto L_NotHelpEnough;
-
-L_NotHelpEnough:
- mes "\"Hrmm... I'm still getting bugged. You better go back there and see whats going on.\"";
- goto L_Close;
-
-L_ManaBattery:
- mes "\"Now that we are caught up on the holidays and I've finished my research, I know what is needed to make the spell permanent.\"";
- next;
- callfunc "ListReagents";
- mes "\"When you have gathered the required materials please come back and see me.\"";
- set @xmas_state, $@xmas_reagents_start;
- callfunc "XmasSetState";
- callfunc "XmasXpReward";
- goto L_Close;
-
-L_IngredientList:
- callfunc "ListReagents";
- mes "\"When you have gathered the required materials please come back and see me.\"";
- goto L_Close;
-
-L_PowerReagents:
- mes "[Avalia]";
- mes "\"Welcome Back!\"";
- mes "\"Have you gotten the reagents?\"";
- menu
- "Yes.", L_CheckReagents,
- "What were they again?", L_IngredientList,
- "No.", L_NotEnough;
-
-L_CheckReagents:
- callfunc "CheckReagents";
- callfunc "XmasStates";
- if(!(@xmas_reagent_done_state))
- goto L_NotEnough;
- callfunc "DeleteReagents";
- mes "\"Huzzah!, you have all the required components!\"";
- mes "\"Now I can create a ManaBattery to power the Nutcrackers from a central location.\"";
- mes "\"Our sages will now be free to perform other tasks. Oh boy the holidays are going to get easy again!\"";
- mes "\"Stand back, this spell could backfire.\"";
- next;
- mes "You watch as she puts equal amounts of emerald powder into each of the empty bottles.";
- mes "She methodically crushes up the shock sweet and spreads it amongst the empty bottles.";
- mes "She positions the four bottles in a stand so all the openings are mostly facing each other.";
- mes "She Begins to chant.";
- next;
- mes "[Avalia]";
- mes "O";
- next;
- mes "wat";
- next;
- mes "goo";
- next;
- mes "siam";
- next;
- mes "The bottles begin to pulse with mana.";
- mes "She continues to chant";
- next;
- mes "[Avalia]";
- mes "Aye";
- next;
- mes "Am";
- next;
- mes "Knot";
- next;
- mes "Phunee";
- next;
- mes "Mana surges to life in the bottles making a peel of thunder.";
- next;
- mes "[Avalia]";
- mes "\"Phew! That takes alot out of a person.\"";
- mes "\"I'm in no condition to go anywhere.\"";
- mes "\"Take the Mana Battery and install it in the warehouse.\"";
- mes "\"It's found behind Chief Warrick\"";
- set @xmas_state, $@xmas_boss_door_open_state;
- callfunc "XmasSetState";
- callfunc "XmasXpReward";
- goto L_Close;
-
-L_NotEnough:
- mes "\"I need all the reagents before Santa visits. Come back and see me when you have them.\"";
- goto L_Close;
-
-L_Quick:
- mes "[Avalia]";
- mes "\"What are you still doing here?\"";
- mes "\"Quickly, to the warehouse.\"";
- goto L_Close;
-
-L_Reward:
- mes "[Avalia]";
- mes "\"Thanks for all the help.\"";
- mes "\"Take this as a token of my gratitude.\"";
- if (@xmas_reward2_done_state)
- set @xmas_state, $@xmas_reward_done;
- if (@xmas_reward_start_state)
- set @xmas_state, $@xmas_reward1_done;
- callfunc "XmasSetState";
- callfunc "XmasMainXpBpReward";
- goto L_Close;
-
-L_Thanks:
- mes "[Avalia]";
- mes "\"Please feel free to continue to help us while we prepare your reward.\"";
- goto L_Close;
-
-L_ThankYou:
- mes "\"We can't thank you enough for restoring the nutcrackers humanity.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-030-2,190,64,0|script|Milis|330
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Milis]";
- mes "\"What are you doing in here, get out!\"";
- warp "030-2",88,80;
- close;
-
-L_XmasMain:
- if(@xmas_reward_start_state)
- goto L_Reward;
- goto L_NoResponse;
-
-L_Reward:
- mes "[Milis]";
- mes "\"Thanks for you help! I a REAL MAN, once again.\"";
- goto L_Close;
-
-L_NoResponse:
- mes "[Milis]";
- mes "...";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-2/basic_npcs.txt b/world/map/npc/030-2/basic_npcs.txt
deleted file mode 100644
index 6dae901f..00000000
--- a/world/map/npc/030-2/basic_npcs.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-// Added for flavor
-// author: Jenalya, wushin, Chayenne
-
-// In the office
-
-030-2,37,81,0|script|Oswal|328
-{
- mes "[Oswal]";
- mes "\"Welcome. I hope you enjoy your visit in Santa's residence. You already saw the workshop where the Christmas presents are crafted, right?\"";
- next;
- mes "\"Well, here you are in the office. We're taking care of various administrative tasks. Some are related to Christmas, but we also need to keep the everyday business running.";
- mes "Santa, as one of the most powerful Sages, has a lot of issues to pay attention to.\"";
- close;
-}
-
-030-2,37,85,0|script|Taito|328
-{
- mes "[Taito]";
- mes "\"Hello. I'm sorry, but I'm very busy at the moment and want to concentrate. If you have any questions, ask one of the other helpers.\"";
- close;
-}
-
-030-2,31,77,0|script|Rikhard|329
-{
- mes "[Rikhard]";
- mes "\"I'm really glad that this year's Christmas preparations are going well. You know, last year nearly everything went wrong, so we all had to work really hard on that, and the everyday issues had to be neglected.\"";
- next;
- mes "\"But there are very important topics we have to take care on as Santa's helpers. The Sages have an important role in the politics of Kaizei.\"";
- next;
- mes "\"As an example, currently I'm working on analyzing a trade regulation proposal from Tulimshar's Wizard Council. I can't get into the details about this, obviously. But, let me tell you, those Tulimshar people try to get everything under their control.\"";
- next;
- mes "\"It's part of our work to maintain Kaizei's independency. In my opinion the Sages should be much more reluctant about this anyway. But well, I'm only a mere helper, this isn't up to me. I can only do my best to deliver an analysis as accurate as possible.\"";
- next;
- mes "\"Which is why I should go back to work now.\"";
- close;
-}
-
-030-2,31,85,0|script|Akseli|329
-{
- mes "[Akseli]";
- mes "\"Ah, a visitor! Do you enjoy your time in Santa's residence?\"";
- menu
- "Yes, it's really interesting.", L_Interesting,
- "It's ok.", L_Rage,
- "I'm confused, it's much bigger than from the outside.", L_Next;
-
-L_Next:
- mes "[Akseli]";
- mes "\"Ah, yes, that's a magic technique almost all of the Sages use. The house is located in a shifted dimension.\"";
- goto L_Close;
-
-L_Interesting:
- mes "[Akseli]";
- mes "\"Good to hear that! Go look around, talk with the other guys and girls, we have an open house policy all year.\"";
- goto L_Close;
-
-L_Rage:
- mes "[Akseli]";
- mes "\"tsss... you young people can't get no satisfaction eh?\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-// In the workshop
-
-030-2,78,34,0|script|Aaron|328
-{
- mes "[Aaron]";
- mes "\"Welcome to Santa's famous Christmas workshop. Feel free to have a look around and talk to the craftsmen.\"";
- next;
- mes "\"You have to know, Santa is a great promoter for skilled craftsmen. He's always looking out for talented persons who can join our team and get an excellent apprenticeship here.\"";
- close;
-}
-
-030-2,154,33,0|script|Iivo|329
-{
- mes "You see a helper cutting some leather pieces. He looks very focused on his work. Then he notices you.";
- mes "[Iivo]";
- mes "\"Hu? Oh, hello. Feel free to watch.\"";
- close;
-}
diff --git a/world/map/npc/030-2/bedding_helper.txt b/world/map/npc/030-2/bedding_helper.txt
deleted file mode 100644
index 8e35d4c2..00000000
--- a/world/map/npc/030-2/bedding_helper.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-// Annual Xmas
-// author: Jenalya, wushin, Chayenne
-// Osmo asks for some White Fur which is used for bedding some presents in the boxes
-// can be sabotaged by given Cloth instead
-
-030-2,37,77,0|script|Osmo|328
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Osmo]";
- mes "\"It's nice to relax and not have to worry about Xmas.\"";
- mes "\"All that rush to gather those furs kills me every year.\"";
- goto L_Close;
-
-L_XmasMain:
- if (XMASTIME & $@xmas_helper_bit_bed_ends) goto L_Done;
- if (XMASTIME & $@xmas_helper_bit_bed_starts) goto L_Bedding;
- if (@xmas_helper_bit) goto L_Helping;
-
- mes "[Osmo]";
- mes "\"What? Uh, excuse me, I have some work to do.\"";
- goto L_Close;
-
-L_Helping:
- mes "[Osmo]";
- mes "\"You came in at just the right moment. I was informed that our bedding material for fragile presents is nearly depleted.";
- mes "Could you bring me " + $@xmas_bedding_amount + " White Furs?\"";
- next;
- mes "[Osmo]";
- mes "\"Take care that it's real White Fur.";
- mes "Other materials tend to go out of place in the present box, leaving the fragile content unprotected from any pushes.\"";
- set XMASTIME, XMASTIME | $@xmas_helper_bit_bed_starts;
- goto L_Close;
-
-L_Bedding:
- mes "[Osmo]";
- mes "\"Ah, you're back. Do you have the " + $@xmas_bedding_amount + " White Fur needed as bedding for fragile presents?\"";
- if ((countitem("WhiteFur") >= $@xmas_bedding_amount) && (countitem("CottonCloth") >= $@xmas_bedding_amount))
- menu
- "Yeah, here it is. (Give the White Fur.)",L_Fur,
- "Sure, here it is. (Give the Cotton Cloth.)",L_Cloth,
- "No, I'm still working on that.",L_Close;
- if (countitem("WhiteFur") >= $@xmas_bedding_amount)
- menu
- "Yeah, here it is. (Give the White Fur.)",L_Fur,
- "No, I'm still working on that.",L_Close;
- if (countitem("CottonCloth") >= $@xmas_bedding_amount)
- menu
- "Sure, here it is. (Give the Cotton Cloth.)",L_Cloth,
- "No, I'm still working on that.",L_Close;
- if ((countitem("WhiteFur") < $@xmas_bedding_amount) && (countitem("CottonCloth") < $@xmas_bedding_amount))
- menu
- "No.", L_Close;
- goto L_Close;
-
-L_Fur:
- if (countitem("WhiteFur") < $@xmas_bedding_amount)
- goto L_NoItems;
- delitem "WhiteFur", $@xmas_bedding_amount;
- set XMASTIME, XMASTIME | $@xmas_helper_bit_bed_ends;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNice";
- callfunc "XmasXpReward";
- mes "[Osmo]";
- mes "\"Wonderful! Thanks for your effort.\"";
- goto L_Close;
-
-L_Cloth:
- if (countitem("CottonCloth") < $@xmas_bedding_amount)
- goto L_NoItems;
- delitem "CottonCloth", $@xmas_bedding_amount;
- set XMASTIME, XMASTIME &~ $@xmas_helper_bit_bed_starts;
- set XMASTIME, XMASTIME | $@xmas_helper_bit_bed_ends;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNaughty";
- callfunc "XmasXpReward";
- mes "He doesn't notice that you're giving him Cotton Cloth.";
- mes "[Osmo]";
- mes "\"Wonderful! Thanks for your effort.\"";
- goto L_Close;
-
-L_Done:
- mes "[Osmo]";
- if (!(@xmas_helper_bedding))
- mes "\"The Fur you brought me isn't working very well.\"";
- if (@xmas_helper_bedding)
- mes "\"Thanks for helping out with the bedding material.\"";
- goto L_Close;
-
-L_NoItems:
- mes "[Osmo]";
- mes "\"Where do you have it? Is this a joke?\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-2/chief_helper.txt b/world/map/npc/030-2/chief_helper.txt
deleted file mode 100644
index 969d0272..00000000
--- a/world/map/npc/030-2/chief_helper.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-// Annual Xmas
-// author: Jenalya, wushin
-// Warrick is the Chief of Santa's helpers
-
-030-2,127,42,0|script|Chief Warrick|329
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Chief Warrick]";
- mes "\"Things run a lot smoother in the offseason. Why don't you check back when it gets closer to the holiday?\"";
- goto L_Close;
-
-L_XmasMain:
- if (@xmas_helper_bit)
- goto L_HelpStatus;
- if (@xmas_helper_start_state)
- goto L_Helping;
- if (@xmas_list_deliver)
- goto L_Avalia;
- goto L_NoHelp;
-
-L_Helping:
- mes "[Chief Warrick]";
- mes "\"Welcome to the home of Santa! My name is Warrick, I'm the chief of Santa's helpers.";
- mes "As you certainly know Christmas is near. Therefore we're very very busy.\"";
- next;
- mes "\"For this reason I have to ask you to leave and come back some at some more convenient time.\"";
- menu
- "Availa Sent me. She said you should have me help out.",L_Next;
-
-L_Next:
- mes "Warrick sighs.";
- next;
- mes "[Chief Warrick]";
- mes "\"Everything is going wrong, we're missing ingredients for the Christmas candy and material for the toys.";
- mes "The lists got lost, we are running low on supplies, everything is in utter confusion.";
- mes "And to make matters worse some of the presents are missing!\"";
- next;
- mes "\"Oh, please excuse me. I didn't mean to moan.";
- mes "However, as you can see we have to deal with some serious problems here.";
- mes "So I'd appreciate if you could just leave and not interfere.\"";
- menu
- "But I can help!",L_Continue;
-
-L_Continue:
- mes "He hesitates.";
- next;
- mes "[Chief Warrick]";
- mes "\"I'm not sure...\"";
- menu
- "Really, I can do a lot of things.",L_Insist;
-
-L_Insist:
- mes "[Chief Warrick]";
- mes "\"Well, alright. I suppose it can't get worse than it already is.";
- mes "Go to the helpers all over the house and ask them what is needed.";
- mes "This will show you're hired as a co-helper.\"";
- mes "He stabs your chest with his finger and leaves a blinking mark.";
- set XMASTIME, XMASTIME | $@xmas_helper_bit;
- goto L_Close;
-
-L_HelpStatus:
- mes "[Chief Warrick]";
- if (@xmas_karma)
- mes "\"It seems we're catching up with the tasks to do, thanks to your help.\"";
- if (!(@xmas_karma))
- mes "\"I hope you're doing well.\"";
- if (@xmas_all_helpers)
- mes "\"The helpers are happy for the extra help.\"";
- if (!(@xmas_all_helpers))
- mes "\"My workers are so stressed.\"";
- if (@xmas_all_lists)
- mes "\"I think all the children will be happy this year.\"";
- if (!(@xmas_all_lists))
- mes "\"I wonder how this season will turn out.\"";
- goto L_Close;
-
-L_Avalia:
- mes "\"Wow, this can't be. The Missing Lists. You should go see Avalia right away. She can be found on the other side of the work shop. To the Room to the West of the Nutcracker.\"";
- goto L_Close;
-
-L_NoHelp:
- mes "[Chief Warrick]";
- mes "\"Hello young one. Welcome to Santa's house.\"";
- mes "\"Have a look around and enjoy your visit, but please don't interrupt the busy helpers.\"";
- mes "He smiles at you.";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-2/eljas.txt b/world/map/npc/030-2/eljas.txt
deleted file mode 100644
index 09e549e7..00000000
--- a/world/map/npc/030-2/eljas.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-// Annual Xmas and Year round info
-// Author: Jenalya, wushin
-
-030-2,87,41,0|script|Eljas|328,5,1
-{
- callfunc "XmasStates";
- callfunc "ThrowOutTheBum";
- if(@getout) end;
- goto L_Start;
-
-L_Start:
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_XmasMain:
- if (@xmas_state > $@xmas_list_deliver_state)
- goto L_OffSeason;
- if (@xmas_list_deliver)
- goto L_SeeChief;
- if (@xmas_list_complete)
- goto L_HaveList1;
- if (@xmas_list_both)
- goto L_HaveList1;
- if (@xmas_list_path1)
- goto L_HaveList2;
- if (@xmas_list_path2)
- goto L_NeedList1;
- goto L_NeedList2;
-
-L_HaveList1:
- mes "[Eljas]";
- mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic happen.\"";
- next;
- mes "\"What brings you here?\"";
- next;
- mes "...";
- menu
- "What were the childrens names again?", L_ListNames,
- "Look, I have Santa's List.", L_SantasList,
- "I have Santa's List.(follow Orum and his evil deeds)", L_SantasFakeList,
- "Christmas?", L_Christmas,
- "I am interested in magical research.", L_Research,
- "Nothing, I have to go.", L_Close;
-
-L_HaveList2:
- mes "Mmmmh he probably won't notice what lists you will bring him (Did you ever notice that he does not move at all?)";
- mes "Haven't you always wondered what happens if you simply cheat?";
- mes "Well ... It's a story as ancient as mankind.";
- mes "If you break the rules that are tied to an environment you live in, you are likely to be punished";
- mes "by them. So be careful what you do next, you might regret it...";
- next;
- menu
- "What were the childrens names again?", L_ListNames,
- "Look, I have Santa's List.", L_SantasList,
- "I have Santa's List. (replace every wish with \"Christmas would die\" )", L_SantasFakeList,
- "Christmas?", L_Christmas,
- "I am interested in magical research.", L_Research,
- "Nothing, I have to go.", L_Close;
-
-L_NeedList1:
- mes "[Eljas]";
- mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic of the holidays happen.\"";
- next;
- mes "\"So what brings you here my dear?\"";
- menu
- "Mmh? Nothing, I have to go.", L_Close,
- "I heard you need help with some Wish lists?", L_Next;
-
-L_Next:
- mes "\"True...\"";
- next;
- mes "\"It appears we are missing some of the wish list from the children from all over the Mana World.\"";
- mes "\"Let me check here...\"";
- next;
- mes "\"Ah ha, here we go.\"";
- mes "\"The missing wish lists are:";
- callfunc "XmasListList";
- mes "\"If you can find these children, please bring their lists back to me.\"";
- mes "\"Thank you for helping out!\"";
- mes "He looks up from his notes and gives you a broad smile";
-
- set @xmas_state, $@xmas_list_both_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-
-L_NeedList2:
- mes "[Eljas]";
- mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic of the holidays happen.\"";
- next;
- mes "\"So what brings you here my dear?\"";
- menu
- "Do you need any help this year?", L_StartQuest,
- "Mmh? Nothing, I have to go.", L_Close;
-
-L_OffSeason:
- mes "[Eljas]";
- mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic of the holidays happen.\"";
- next;
- mes "\"And what brings you here?\"";
- menu
- "Christmas.", L_Christmas,
- "Magical research.", L_Research,
- "Och, nothing. I have to go.", L_Close;
-
-L_StartQuest:
- mes "\"Why yes! Of course we do!\"";
- next;
- mes "\"It appears we are missing some of the wish list from the children from all over the Mana World.\"";
- mes "\"Let me check here...\"";
- next;
- mes "\"Ah ha, here we go.\"";
- mes "\"The missing wish lists are:";
- callfunc "XmasListList";
- mes "\"If you can find these children, please bring their lists back to me.\"";
- mes "\"Thank you for helping out!\"";
- mes "He looks up from his notes and gives you a broad smile";
- next;
- set @xmas_state, $@xmas_list_path1_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-L_ListNames:
- mes "He checks a piece of paper on his desk...";
- mes "\"Mmh... the missing lists are:";
- callfunc "XmasListList";
- mes "\"If you can find these children, please bring their lists back.\"";
- goto L_Close;
-
-L_SantasList:
- callfunc "XmasCheckList";
- callfunc "XmasStates";
- if(!(@xmas_list_complete))
- goto L_NotComplete;
- mes "\"Awesome! Now please take those lists to Chief Warrick on the next floor.\"";
- set @karma_bonus, @xmas_list_count;
- callfunc "XmasNice";
- set @xmas_state, $@xmas_list_deliver_state;
- callfunc "XmasSetState";
- callfunc "XmasXpReward";
- goto L_Close;
-
-L_SantasFakeList:
- callfunc "XmasCheckList";
- callfunc "XmasStates";
- if(!(@xmas_list_complete))
- goto L_NotComplete;
- mes "\"Wait a second... whats that aura...\"";
- mes "\"THESE ARE NOT THE REAL LISTS!\"";
- mes "\"Guards! Toss this naughty one outside!\"";
- next;
- set @karma_bonus, @xmas_list_count;
- callfunc "XmasNaughty";
- callfunc "XmasSetSide";
- callfunc "XmasThrowOut";
- set @xmas_state, $@xmas_list_deliver_state;
- callfunc "XmasSetState";
- callfunc "XmasXpReward";
- goto L_NotWelcome;
-
-L_NotComplete:
- mes "\"Hrmm... Even I can tell that you did not bring all the lists we are missing.\"";
- goto L_ListNames;
-
-L_SeeChief:
- mes "\"Please take those lists to Chief Warrick on the next floor.\"";
- goto L_Close;
-
-L_Christmas:
- mes "\"All year round we work hard to make toys and repair our help for each years event.\"";
- mes "\"Ask Chief Warrick on the next floor, He is the shop foreman, people are always looking to him to find extra help.\"";
- next;
- goto L_Close;
-
-L_Research:
- mes "\"Well, the most astonishing discovery in our recent researches is a complex combination of Transmutation, Astral and Nature Magic to animate wooden figurines.\"";
- mes "\"Did you notice the Guards around the house? Originally those were simple nutcrackers, carved out of wood by our talented carpenters.\"";
- next;
- mes "\"With the results of our magic researches, we were able to transform them into animated beings, acting rudimentary self-determined and capable to perform simple tasks.\"";
- mes "\"At the moment we can keep them animated for an unlimited time, as long as the caster stays in range.\"";
- next;
- mes "\"If you want to learn more about the magic used speak with Avalia she is on the 4th floor in her private room.\"";
- next;
- goto L_Close;
-
-L_NotWelcome:
- mes "... You hear a voice calling your name ... ";
- mes "[Orum's Homunculus]";
- mes "\"Come See me in the caves below.\"";
- mes "\"go south till you reach the snowman. Then head into the cave to the east.\"";
- warp "020-1",33,94;
- close;
-
-L_Close:
- mes"\"Goodbye\"";
- close;
-
-L_End:
- end;
-
-OnTouch:
- callfunc "XmasStates";
- callfunc "ThrowOutTheBum";
- if(@getout) end;
- if((@xmas_list_gather) || !($@xmas_time))
- goto L_End;
- goto L_Start;
-}
diff --git a/world/map/npc/030-2/empty_boxes_helper.txt b/world/map/npc/030-2/empty_boxes_helper.txt
deleted file mode 100644
index fbc720f7..00000000
--- a/world/map/npc/030-2/empty_boxes_helper.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-// Annual Xmas
-// author: Jenalya, wushin
-// Urmas asks for raw logs to make empty presents boxes
-// later he can be asked for those boxes to put toys in
-
-030-2,140,41,0|script|Urmas|328
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Urmas]";
- mes "\"It's nice to not need to find logs in such a hurry. I always seem to have problems every year.\"";
- goto L_Close;
-
-L_XmasMain:
- if (@xmas_helper_bit) goto L_Helping;
-
- mes "[Urmas]";
- mes "\"Don't stand in the way! We have some serious problems here.\"";
- goto L_Close;
-
-L_Helping:
- mes "[Urmas]";
- mes "\"Ah, I see you're one of the seasonal helpers. Ok, listen to me.";
- mes "\"We have a shortage on the empty present boxes. Don't ask me how that can happen!";
- mes "Those paper-shufflers up there probably messed up the ordering or something. Pah.\"";
- next;
- mes "\"However, we need to fix it. I have only a few boxes left.";
- mes "Bring me some wood, so I can make new boxes out of it.";
- mes $@xmas_log_amount + " Raw Logs will do for one box.\"";
- mes "";
- if (countitem("RawLog") < $@xmas_log_amount)
- mes "\"But I see you do not have enough with you anyway. Come back with some material please.\"";
- if (countitem("RawLog") < $@xmas_log_amount) goto L_Close;
- next;
- mes "\"How many boxes do you need?\"";
- input @amount;
- if (@amount <= 0)
- goto L_Close;
- if (countitem("RawLog") < (@amount * $@xmas_log_amount))
- goto L_NoItems;
- getinventorylist;
- if (@inventorylist_count > 100)
- goto L_FullInv;
- delitem "RawLog", (@amount * $@xmas_log_amount);
- mes "[Urmas]";
- mes "\"Alright! Good job, kid. I'll start to make some more boxes now.";
- mes "Here, take this in the meanwhile and put some toys in it.\"";
- getitem "OpenPresentBox", @amount;
- goto L_Close;
-
-L_FullInv:
- mes "\"You need some space to put the empty boxes.\"";
- goto L_Close;
-
-L_NoItems:
- mes "[Urmas]";
- mes "\"Eh? Are you kidding?\"";
- goto L_Close;
-
-L_Close:
- set @amount, 0;
- close;
-}
diff --git a/world/map/npc/030-2/glitter_helper.txt b/world/map/npc/030-2/glitter_helper.txt
deleted file mode 100644
index b04e3b2a..00000000
--- a/world/map/npc/030-2/glitter_helper.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-// Annual Xmas
-// author: Jenalya, wushin
-// Veneri asks for Diamond Powder and Ruby Powder for decoration
-// can be sabotaged with Red Powder and Yellow Powder, Saboteur can make that out of Wisp and Spectre Powder
-
-030-2,31,81,0|script|Veneri|328
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Veneri]";
- mes "\"I should take this time off to go see the doctor in Hurnscald about whether or not I have glitter lung.\"";
- goto L_Close;
-
-L_XmasMain:
- if (XMASTIME & $@xmas_helper_bit_glitter_ends) goto L_Done;
- if (XMASTIME & $@xmas_helper_bit_glitter_starts) goto L_Powder;
- if (@xmas_helper_bit) goto L_Helping;
-
- mes "[Veneri]";
- mes "\"Mh? Excuse me, I'm very busy right now.\"";
- goto L_Close;
-
-L_Helping:
- mes "[Veneri]";
- mes "\"Hello. We have some problems here. Something went wrong with the shipment of the ingredients for our decoration glitter.";
- mes "Would you be so kind and get me " + $@xmas_red_amount + " Ruby Powders and " + $@xmas_yellow_amount + " Topaz Powders?\"";
- next;
- mes "[Veneri]";
- mes "\"This material has proven to have the quality we need to make our christmas magic last until it can sparkle under every christmas tree. Sadly we made some bad experience in the past. Please make sure you only bring class A powders.\"";
- set XMASTIME, XMASTIME | $@xmas_helper_bit_glitter_starts;
- goto L_Close;
-
-L_Powder:
- mes "[Veneri]";
- mes "\"Welcome back. Do you have the " + $@xmas_red_amount + " Ruby Powders and " + $@xmas_yellow_amount + " Topaz Powders needed for the decoration glitter?\"";
- if ((countitem("RubyPowder") >= $@xmas_red_amount) && (countitem("TopazPowder") >= $@xmas_yellow_amount) && (countitem("RedPowder") >= $@xmas_red_amount) && (countitem("YellowPowder") >= $@xmas_yellow_amount))
- menu
- "Yeah, here it is. (Give the gem powders.)",L_GemPowders,
- "Sure, here you go. (Give the fake powders.)",L_FakePowders,
- "No, I am still working on that.",L_Close;
- if ((countitem("RubyPowder") >= $@xmas_red_amount) && (countitem("TopazPowder") >= $@xmas_yellow_amount))
- menu
- "Yeah, here it is. (Give the gem powders.)",L_GemPowders,
- "No, I am still working on that.",L_Close;
- if ((countitem("RedPowder") >= $@xmas_red_amount) && (countitem("YellowPowder") >= $@xmas_yellow_amount))
- menu
- "Sure, here it is. (Give the fake powders.)",L_FakePowders,
- "No, I am still working on that.",L_Close;
- goto L_Close;
-
-L_GemPowders:
- if ((countitem("RubyPowder") < $@xmas_red_amount) || (countitem("TopazPowder") < $@xmas_yellow_amount))
- goto L_NoItems;
- delitem "RubyPowder", $@xmas_red_amount;
- delitem "TopazPowder", $@xmas_yellow_amount;
- set XMASTIME, XMASTIME | $@xmas_helper_bit_glitter_ends;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNice";
- callfunc "XmasXpReward";
- mes "[Veneri]";
- mes "\"Excellent! Thank you very much.\"";
- goto L_Close;
-
-L_FakePowders:
- if ((countitem("RedPowder") < $@xmas_red_amount) || (countitem("YellowPowder") < $@xmas_yellow_amount))
- goto L_NoItems;
- delitem "RedPowder", $@xmas_red_amount;
- delitem "YellowPowder", $@xmas_yellow_amount;
- set XMASTIME, XMASTIME | $@xmas_helper_bit_glitter_ends;
- set XMASTIME, XMASTIME &~ $@xmas_helper_bit_glitter_starts;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNaughty";
- callfunc "XmasXpReward";
- mes "It seems like he didn't notice that the powder you gave him is bogus.";
- mes "[Veneri]";
- mes "\"Excellent! Thank you very much.\"";
- goto L_Close;
-
-L_Done:
- mes "[Veneri]";
- if (!(@xmas_helper_glitter))
- mes "\"Even after your help, the powder still isn't working right. Maybe it got wet.\"";
- if (@xmas_helper_glitter)
- mes "\"Thanks for bringing the powders.\"";
- goto L_Close;
-
-L_NoItems:
- mes "[Veneri]";
- mes "\"Eh? Are you kidding?\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-2/guards.txt b/world/map/npc/030-2/guards.txt
deleted file mode 100644
index 5ed2e2e9..00000000
--- a/world/map/npc/030-2/guards.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-// Annual Xmas Bouncers
-
-030-2,85,43,0|script|Valjas|330
-{
- callfunc "XmasStates";
- callfunc "ThrowOutTheBum";
- if(@getout) end;
- mes "[Valjas]";
- mes "\"...\"";
- close;
-}
-
-030-2,89,43,0|script|Halas|330
-{
- callfunc "XmasStates";
- callfunc "ThrowOutTheBum";
- if(@getout) end;
- mes "[Halas]";
- mes "\"...\"";
- close;
-}
-
-030-2,89,84,0|script|Kilis|330,5,2
-{
- callfunc "XmasStates";
- callfunc "ThrowOutTheBum";
- if(@getout) end;
- mes "[Kilis]";
- mes "\"...\"";
- close;
-
-OnTouch:
- callfunc "XmasStates";
- callfunc "ThrowOutTheBum";
- end;
-}
diff --git a/world/map/npc/030-2/mapflags.txt b/world/map/npc/030-2/mapflags.txt
deleted file mode 100644
index 17712898..00000000
--- a/world/map/npc/030-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-030-2|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/030-2/present_helper.txt b/world/map/npc/030-2/present_helper.txt
deleted file mode 100644
index 2a265245..00000000
--- a/world/map/npc/030-2/present_helper.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-// Annual Xmas
-// Author: wushin
-// Present Reclamation
-
-030-2,47,82,0|script|Jonathan|328
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Jonathan]";
- mes "\"Hello! Welcome to the reclamation department.\"";
- mes "\"Lucky all the presents stolen have been replaced. Save any you find. You never know what we will need to replace next year.\"";
- goto L_Close;
-
-L_XmasMain:
- mes "[Jonathan]";
- mes "\"Hello! Welcome to the reclamation department.\"";
-
- if(@xmas_helper_bit) goto L_Helping;
-
- mes "\"We are incredibly busy right now, monsters have stolen some of our presents.\"";
- mes "\"I must go inform Chief Warrick immediately.\"";
- goto L_Close;
-
-L_Helping:
- mes "\"Here we take back any presents stolen from us by those nasty creatures.\"";
- next;
- goto L_Main;
-
-L_Main:
- mes "\"Did you find any presents you would like to return?\"";
- next;
- menu
- "No, I just wanted to say hello.",L_Close,
- $@xmas_present_amount + " Purple present boxes.",L_Purple,
- $@xmas_present_amount + " Blue present boxes.",L_Blue,
- $@xmas_present_amount + " Green present boxes.",L_Green,
- $@xmas_present_amount + " Yellow present boxes.",L_Yellow,
- $@xmas_present_amount + " White present boxes.",L_White;
-
-L_Purple:
- set @karma_bonus, $@xmas_karma_bonus;
- set @present_name$, "PurplePresentBox";
- goto L_RewardIncrease;
-
-L_Blue:
- set @karma_bonus, $@xmas_karma_bonus;
- set @present_name$, "BluePresentBox";
- goto L_RewardIncrease;
-
-L_Green:
- set @karma_bonus, $@xmas_karma_bonus;
- set @present_name$, "GreenPresentBox";
- goto L_RewardIncrease;
-
-L_Yellow:
- set @karma_bonus, 2;
- set @present_name$, "YellowPresentBox";
- goto L_RewardIncrease;
-
-L_White:
- set @karma_bonus, 2;
- set @present_name$, "WhitePresentBox";
- goto L_RewardIncrease;
-
-L_RewardIncrease:
- if ($@xmas_present_amount > countitem(@present_name$))
- goto L_NotEnough;
- mes "\"Oh, thank you!\"";
- delitem @present_name$, $@xmas_present_amount;
- callfunc "XmasNice";
- goto L_Close;
-
-L_NotEnough:
- mes "\"I am sorry, but you don't have enough presents to return.\"";
- goto L_Main;
-
-L_Close:
- mes "\"See You later!\"";
- set @present_name$, "";
- close;
-}
diff --git a/world/map/npc/030-2/roasted_acorns_helper.txt b/world/map/npc/030-2/roasted_acorns_helper.txt
deleted file mode 100644
index 5d835d8d..00000000
--- a/world/map/npc/030-2/roasted_acorns_helper.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-// Annual Xmas
-// author: Jenalya, wushin
-
-030-2,89,23,0|script|Verneri|334
-{
- callfunc "XmasStates";
-
- if((@xmas_state >= $@xmas_helpers_start_state) && ($@xmas_time))
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Verneri]";
- mes "\"Nothing like the getting past the holiday rush to make you dread next season.\"";
- goto L_Close;
-
-L_XmasMain:
- mes "[Verneri]";
- mes "\"Hm? I'm currently having a break. It's really nice here at the fireplace, isn't it?\"";
- next;
- mes "\"Ah, I remember when I was a child we used to roast acorns at the fireplace. We dunked them into Iron Potion and then put them over the fire for a while. That gave a tasty icing.\"";
- menu
- "Let's roast some.", L_LetsRoast,
- "Children's stuff...", L_Close;
-
-L_LetsRoast:
- mes "[Verneri]";
- mes "\"Well, if you get some Acorns and Iron Potions, we can do that.\"";
- mes "\"With one Iron Potion we can ice about " + $@xmas_acorn_amount + " Acorns.\"";
- next;
- mes "[Verneri]";
- mes "\"Do you have everything we need? Shall we start?\"";
- menu
- "Sure!", L_Roast,
- "I need to get the ingredients.", L_Close;
-
-L_Roast:
- if (countitem("Acorn") < $@xmas_acorn_amount || countitem("IronPotion") < $@xmas_iron_potion_amount)
- goto L_NoItems;
-
- getinventorylist;
- if (@inventorylist_count > 100)
- goto L_FullInv;
- delitem "IronPotion", $@xmas_iron_potion_amount;
- delitem "Acorn", $@xmas_acorn_amount;
-
- mes "Verneri takes the Iron Potion and the Acorns from you. He pours the potion into some bowl and adds the Acorns.";
- mes "Then he puts the bowl over the fire, stirring it every now and then. After a while it starts to smell really tasty.";
- next;
- mes "[Verneri]";
- mes "\"Here we are! Let me take one of them, ok?\"";
- mes "He carefully takes one of the roasted acorns and eats it.";
- next;
-
- mes "[Verneri]";
- mes "\"Ouch, hot. But tasty! Some of them might be burnt, I'll throw those away.\"";
- set XMASTIME, XMASTIME | $@xmas_helper_bit_acorns;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNice";
- getitem "RoastedAcorn", rand(($@xmas_acorn_amount / 2), $@xmas_acorn_amount);
- menu
- "Let's roast some more.", L_Roast,
- "Thank you.", L_Close;
-
-L_FullInv:
- mes "\"You need some space to put the roasted acorns.\"";
- goto L_Close;
-
-L_NoItems:
- mes "[Verneri]";
- mes "\"You need to bring at least one Iron Potion and " + $@xmas_acorn_amount + " Acorns.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-2/shipping_helper.txt b/world/map/npc/030-2/shipping_helper.txt
deleted file mode 100644
index 92277278..00000000
--- a/world/map/npc/030-2/shipping_helper.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-// Annual Xmas
-// Author: Jenalya, wushin
-
-030-2,30,88,0|script|Mo|328
-{
- set $@npc_name$, "Mo";
- callfunc "helpersPacking";
- close;
-}
-
-030-2,33,88,0|script|Lorrie|329
-{
- set $@npc_name$, "Lorrie";
- callfunc "helpersPacking";
- close;
-}
-
-030-2,37,88,0|script|Curlee|329
-{
- set $@npc_name$, "Curlee";
- callfunc "helpersPacking";
- close;
-}
-
-function|script|helpersPacking
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[" + $@npc_name$ + "]";
- mes "\"Boy it sure is grand to goof off all day with no presents to wrap.\"";
- goto L_Close;
-
-L_XmasMain:
- mes "[" + $@npc_name$ + "]";
- mes "Hello, hello, hello!";
-
- if(@xmas_helper_bit) goto L_Helping;
-
- mes "\"Real busy now, gotta go or the boss will have my head. Back to work knuckleheads!\"";
- goto L_Close;
-
-L_Helping:
- mes "\"I am " + $@npc_name$ + ". We are in charge of getting all the presents together, but we messed up and now all our supplies are ruined. Can you help us out?\"";
- mes "\"We need wrapping paper and empty boxes! We can provide the gifts!\"";
- next;
- goto L_Main;
-
-L_Main:
- mes "\"Do you have any supplies we can use?\"";
- next;
- menu
- "What? err... I just wanted to say hello.",L_Close,
- "Purple Wrapping Paper and an empty box.",L_Purple,
- "Blue Wrapping Paper and an empty box.",L_Blue,
- "Green Wrapping Paper and an empty box.",L_Green,
- "Yellow Wrapping Paper and an empty box.",L_Yellow,
- "White Wrapping Paper and an empty box.",L_White;
-
-L_Purple:
- set @wrap$, "PurpleWrap";
- set @present_name$, "PurplePresentBox";
- goto L_Gift;
-
-L_Blue:
- set @wrap$, "BlueWrap";
- set @present_name$, "BluePresentBox";
- goto L_Gift;
-
-L_Green:
- set @wrap$, "GreenWrap";
- set @present_name$, "GreenPresentBox";
- goto L_Gift;
-
-L_Yellow:
- set @wrap$, "YellowWrap";
- set @present_name$, "YellowPresentBox";
- goto L_Gift;
-
-L_White:
- set @wrap$, "WhiteWrap";
- set @present_name$, "WhitePresentBox";
- goto L_Gift;
-
-L_Gift:
- if ($@xmas_wrap_amount > countitem(@wrap$))
- goto L_NotEnough;
- if ($@xmas_empty_box_amount > countitem("OpenPresentBox"))
- goto L_NotEnough;
- getinventorylist;
- if ((@inventorylist_count == 100) || (checkweight(@present_name$, $@xmas_wrap_reward) == 0))
- goto L_FullInv;
- delitem "OpenPresentBox", $@xmas_empty_box_amount;
- delitem @wrap$, $@xmas_wrap_amount;
- getitem @present_name$, $@xmas_ship_present_amount;
- goto L_Give;
-
-L_Give:
- mes "\"Ok, here is the present. Make sure to drop these off at the warehouse.\"";
- goto L_Main;
-
-L_NotEnough:
- mes "\"O wiseguy, huh? Why don't you come back when you got all the supplies you knucklehead.\"";
- goto L_Main;
-
-L_FullInv:
- mes "\"Where you going to put this? In your ear? Come back when you have more space in your inventory.\"";
- goto L_Main;
-
-L_Close:
- mes "\"Ok, back to work you two, we have to make up lost time for your antics.\"";
- set @wrap$, "";
- set @present_name$, "";
- return;
-}
diff --git a/world/map/npc/030-2/storage_helper.txt b/world/map/npc/030-2/storage_helper.txt
deleted file mode 100644
index d1c3f357..00000000
--- a/world/map/npc/030-2/storage_helper.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-// Annual Christmas
-// author: Jenalya, wushin
-
-030-2,25,35,0|script|Vellamo|328
-{
- set @halloween_npc_id, $@halloween_npc_vellamo;
- callfunc "TrickOrTreat";
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Vellamo]";
- mes "\"Candy Stock is built back up. Though... the more we store the more they want...\"";
- goto L_Close;
-
-L_XmasMain:
- if (XMASTIME & $@xmas_helper_bit_storage) goto L_Candy;
- if (@xmas_helper_bit) goto L_Helping;
-
- mes "[Vellamo]";
- mes "\"Sorry, too busy to chat right now. The chief has got me working overtime for the holidays.\"";
- close;
-
-L_Helping:
- mes "[Vellamo]";
- mes "\"Oh, hello. Visitors usually don't come down here in the basement. Here we store several things, materials for the presents, the finished presents, supplies.\"";
- menu
- "Nice. I have to go.", L_Close,
- "Do you need help with anything?", L_Next;
-
-L_Next:
- mes "[Vellamo]";
- mes "\"Oh? You want to help us? Actually, there is one thing you could do. Did you see those weird slimes out there on the snow fields? Argh, I hate those creatures, last year they invaded the entire basement...\"";
- next;
- mes "\"However, this year they tried again, but I was able to hold them off. They just managed to devour most of our candy supplies.\"";
- next;
- mes "\"So in case you find some of the Candies, feel free to bring them back. Ismo will give you some reward for them.\"";
- set XMASTIME, XMASTIME | ($@xmas_helper_bit_storage);
- goto L_Close;
-
-L_Candy:
- mes "[Vellamo]";
- mes "\"Ah, welcome back. When you have found some of the candy, please give it to Ismo.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-030-2,33,29,0|script|Ismo|329
-{
- callfunc "XmasStates";
-
- if(($@xmas_time) && (XMASTIME & $@xmas_helper_bit_storage))
- goto L_Helping;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Ismo]";
- mes "\"Hello. I'm helping Vellamo. He's the storage administrator.\"";
- goto L_Close;
-
-L_Helping:
- mes "[Ismo]";
- mes "\"Did you get back some candy from the slimes?\"";
- next;
- menu
- "Give " + $@xmas_good_friendly_name$, L_GoodCandy,
- "Give " + $@xmas_bad_friendly_name$ + "(What? how mean!).", L_BadCandy;
-
-L_BadCandy:
- set @dq_level, $@xmas_bad_level;
- set @dq_cost, $@xmas_bad_cost;
- set @dq_count, $@xmas_bad_count;
- set @dq_name$, $@xmas_bad_name$;
- set @dq_friendly_name$, $@xmas_bad_friendly_name$;
- set @dq_money, $@xmas_bad_money;
- set @dq_exp, $@xmas_bad_exp;
-
- callfunc "DailyQuest";
- if (countitem(@dq_name$) < @dq_count)
- goto L_Close;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNaughty";
- goto L_Close;
-
-L_GoodCandy:
- set @dq_level, $@xmas_good_level;
- set @dq_cost, $@xmas_good_cost;
- set @dq_count, $@xmas_good_count;
- set @dq_name$, $@xmas_good_name$;
- set @dq_friendly_name$, $@xmas_good_friendly_name$;
- set @dq_money, $@xmas_good_money;
- set @dq_exp, $@xmas_good_exp;
-
- callfunc "DailyQuest";
- if (countitem(@dq_name$) < @dq_count)
- goto L_Close;
- set @karma_bonus, $@xmas_karma_bonus;
- callfunc "XmasNice";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-2/wrapping_paper_helper.txt b/world/map/npc/030-2/wrapping_paper_helper.txt
deleted file mode 100644
index 3ac10b12..00000000
--- a/world/map/npc/030-2/wrapping_paper_helper.txt
+++ /dev/null
@@ -1,144 +0,0 @@
-// author: Jenalya, wushin
-// Reino asks for reed bundles and water to make wrapping paper
-// also for some dyes to make them colorful
-// later he can be asked for those papers to wrap boxes
-
-030-2,140,31,0|script|Reino|328
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "[Reino]";
- mes "\"Hrmm... I forgot what the real color of my hand was... \"";
- goto L_Close;
-
-L_XmasMain:
- if (@xmas_helper_bit) goto L_Helping;
-
- mes "[Reino]";
- mes "\"Excuse me, but please don't interrupt. We're all very busy.\"";
- goto L_Close;
-
-L_Helping:
- mes "[Reino]";
- mes "\"Oh, I see you're here to help. Maybe you can assist me with a problem we have.";
- mes "We're nearly out of wrapping paper for the present boxes.";
- mes "That's very very bad. Can you imagine how it would look if the presents didn't have wrapping paper?\"";
- next;
- mes "\"So, eh, I can only give you some of the remaining wrapping paper if you bring me the needed material to make new wrapping paper.";
- mes "For making one roll of wrapping paper, I need " + $@xmas_reed_amount + " Reed Bundles, " + $@xmas_water_amount + " Bottle of Water and some dye to make it colored.\"";
- next;
- goto L_Again;
-
-L_Again:
- mes "\"Let's see... These are the regulations for wrapping paper colors and designs for this year. Tell me which you want.\"";
- mes "He shows you an official looking piece of paper.";
- menu
- "White dotted (" + $@xmas_poa_amount +" Piles of Ash)", L_White,
- "Yellow dotted (" + $@xmas_wrap_yellow_amount + " Yellow Dyes)", L_Yellow,
- "Blue dotted (" + $@xmas_wrap_ltblue_amount + " Light Blue Dyes)", L_Blue,
- "Purple striped (" + $@xmas_wrap_purple_amount + " Purple Dye)", L_Purple,
- "Green (" + $@xmas_wrap_green_amount + " Green Dye)", L_Green,
- "Why do you have a regulation for wrapping papers?!", L_Regulation,
- "I'm on my way.",L_Close;
-
-L_White:
-getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("WhiteWrap", $@xmas_wrap_reward) == 0))
- goto L_FullInv;
- if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("PileOfAsh") < $@xmas_poa_amount))
- goto L_NoItems;
- delitem "ReedBundle", $@xmas_reed_amount;
- delitem "BottleOfWater", $@xmas_water_amount;
- delitem "PileOfAsh", $@xmas_poa_amount;
- getitem "WhiteWrap", $@xmas_wrap_reward;
- mes "[Reino]";
- mes "\"This one is classical.\"";
- goto L_MadePaper;
-
-L_Yellow:
- getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("YellowWrap", $@xmas_wrap_reward) == 0))
- goto L_FullInv;
- if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("YellowDye") < $@xmas_wrap_yellow_amount))
- goto L_NoItems;
- delitem "ReedBundle", $@xmas_reed_amount;
- delitem "BottleOfWater", $@xmas_water_amount;
- delitem "YellowDye", $@xmas_wrap_yellow_amount;
- getitem "YellowWrap", $@xmas_wrap_reward;
- mes "[Reino]";
- mes "\"Right, bright paper brings good vibes.\"";
- goto L_MadePaper;
-
-L_Blue:
- getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("BlueWrap", $@xmas_wrap_reward) == 0))
- goto L_FullInv;
- if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("LightBlueDye") < $@xmas_wrap_ltblue_amount))
- goto L_NoItems;
- delitem "ReedBundle", $@xmas_reed_amount;
- delitem "BottleOfWater", $@xmas_water_amount;
- delitem "LightBlueDye", $@xmas_wrap_ltblue_amount;
- getitem "BlueWrap", $@xmas_wrap_reward;
- mes "[Reino]";
- mes "\"Plain and simple. Here.\"";
- goto L_MadePaper;
-
-L_Purple:
- getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("PurpleWrap", $@xmas_wrap_reward) == 0))
- goto L_FullInv;
- if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("PurpleDye") < $@xmas_wrap_purple_amount))
- goto L_NoItems;
- delitem "ReedBundle", $@xmas_reed_amount;
- delitem "BottleOfWater", $@xmas_water_amount;
- delitem "PurpleDye", $@xmas_wrap_purple_amount;
- getitem "PurpleWrap", $@xmas_wrap_reward;
- mes "[Reino]";
- mes "\"Mh, personally I don't like it that much, but here you go.\"";
- goto L_MadePaper;
-
-L_Green:
- getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("GreenWrap", $@xmas_wrap_reward) == 0))
- goto L_FullInv;
- if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("GreenDye") < $@xmas_wrap_green_amount))
- goto L_NoItems;
- delitem "ReedBundle", $@xmas_reed_amount;
- delitem "BottleOfWater", $@xmas_water_amount;
- delitem "GreenDye", $@xmas_wrap_green_amount;
- getitem "GreenWrap", $@xmas_wrap_reward;
- mes "[Reino]";
- mes "\"Yeah, this is really Christmas-styled.\"";
- goto L_MadePaper;
-
-L_MadePaper:
- next;
- mes "\"Do you need more wrapping paper?\"";
- menu
- "Yes.",L_Again,
- "No, I have all I need.",L_Close;
-
-L_Regulation:
- mes "Reino seems irritated.";
- mes "[Reino]";
- mes "\"Well, because, ah - there would be total chaos without regulations!";
- mes "You know, this Christmas business requires a lot of coordination. Things have to be well-ordered.\"";
- goto L_Close;
-
-L_FullInv:
- mes "\"You need some space to put the wrapping paper.\"";
- goto L_Close;
-
-L_NoItems:
- mes "[Reino]";
- mes "\"Oh? It seems you don't have the required items.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-3/_import.txt b/world/map/npc/030-3/_import.txt
deleted file mode 100644
index 252027e4..00000000
--- a/world/map/npc/030-3/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 030-3: The Frozen Lake
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 030-3
-npc: npc/030-3/_mobs.txt
-npc: npc/030-3/_nodes.txt
-npc: npc/030-3/_warps.txt
-npc: npc/030-3/mapflags.txt
-npc: npc/030-3/orum_homunculus.txt
diff --git a/world/map/npc/030-3/_mobs.txt b/world/map/npc/030-3/_mobs.txt
deleted file mode 100644
index d1a3f5e8..00000000
--- a/world/map/npc/030-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Frozen Lake mobs
-
diff --git a/world/map/npc/030-3/_nodes.txt b/world/map/npc/030-3/_nodes.txt
deleted file mode 100644
index e78786b3..00000000
--- a/world/map/npc/030-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Frozen Lake nodes
-
-// (no nodes)
diff --git a/world/map/npc/030-3/_warps.txt b/world/map/npc/030-3/_warps.txt
deleted file mode 100644
index be6bab6b..00000000
--- a/world/map/npc/030-3/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Frozen Lake warps
-
-030-3,54,69|warp|-1,-1,019-3,80,102
diff --git a/world/map/npc/030-3/mapflags.txt b/world/map/npc/030-3/mapflags.txt
deleted file mode 100644
index ea20b58f..00000000
--- a/world/map/npc/030-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-030-3|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/030-3/orum_homunculus.txt b/world/map/npc/030-3/orum_homunculus.txt
deleted file mode 100644
index aa5d6953..00000000
--- a/world/map/npc/030-3/orum_homunculus.txt
+++ /dev/null
@@ -1,476 +0,0 @@
-// Annual Xmas
-// Authors: Wushin, Chayenne
-
-019-3,79,30,0|script|#OrumTelepathy1|127,3,3
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"Not that way!\"";
- mes "\"Use the southernmost exit.\"";
- close;
-
-L_End:
- end;
-}
-
-019-3,104,67,0|script|#OrumTelepathy2|127,1,1
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"That is the long way!\"";
- mes "\"Just go south from here to the southernmost exit.\"";
- close;
-
-L_End:
- end;
-}
-
-019-3,102,95,0|script|#OrumTelepathy3|127,3,3
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"Ok. You are getting closer, I can feel it!\"";
- mes "\"You are heading in the right direction - to the southern most exit.\"";
- close;
-
-L_End:
- end;
-}
-
-019-3,81,61,0|script|#OrumTelepathy4|127,3,3
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"Ok, you are getting closer, I can feel it.!\"";
- mes "\"Go take the south west path towards the brazier.\"";
- close;
-
-L_End:
- end;
-}
-
-030-3,49,53,0|script|#OrumTelepathy5|127,1,1
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"Wrong way!\"";
- mes "\"I am in the northeastern corner.\"";
- close;
-
-L_End:
- end;
-}
-
-030-3,48,73,0|script|#OrumTelepathy6|127,1,1
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"Wrong Way!\"";
- mes "\"I am in the northeastern corner.\"";
- close;
-
-L_End:
- end;
-}
-
-030-3,95,66,0|script|#OrumTelepathy7|127,1,1
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_End;
-
-L_XmasMain:
- if((@xmas_state == $@xmas_list_deliver_state) && !(@xmas_knows_route))
- goto L_Telepathy;
- goto L_End;
-
-L_Telepathy:
- mes "[Orum's Homunculus]";
- mes "\"Wrong Way!\"";
- mes "\"I am in the northeastern corner.\"";
- close;
-
-L_End:
- end;
-}
-
-030-3,100,49,0|script|Orum's Homunculus|385
-{
- callfunc "XmasStates";
-
- if($@xmas_time)
- goto L_XmasMain;
- goto L_OffSeason;
-
-L_OffSeason:
- mes "Orums Homunculus looks up, inspects you briefly, and looks away again.";
- end;
-
-L_XmasMain:
- if(!(@xmas_knows_route)) goto L_SetPath;
- if((@xmas_list_deliver) && !(@xmas_side)) goto L_OffSeason;
- if((@xmas_reward_done_state) && (@xmas_side)) goto L_ThankYou;
- if((@xmas_reward1_done_state) && (@xmas_side)) goto L_Thanks;
- if((@xmas_reward2_done_state) && (@xmas_side)) goto L_Reward;
- if((@xmas_reward_start_state) && (@xmas_side)) goto L_Reward;
- if((@xmas_boss_door_state) && (@xmas_side)) goto L_Quick;
- if((@xmas_reagent_done_state) && (@xmas_side)) goto L_PowerReagents;
- if((@xmas_reagent_start_state) && (@xmas_side)) goto L_PowerReagents;
- if((@xmas_helper_done_state) && (@xmas_side)) goto L_HelperQuest;
- if((@xmas_helper_start_state) && (@xmas_side)) goto L_HelperQuest;
- if(@xmas_list_deliver) goto L_ListReturn;
- if(@xmas_list_complete) goto L_SantasList;
- if(@xmas_list_both) goto L_HaveList2;
- if(@xmas_list_path1) goto L_QuestStart1;
- if(@xmas_list_path2) goto L_HaveList2;
- if($@xmas_time) goto L_QuestStart2;
- goto L_OffSeason;
-
-L_SetPath:
- set @xmas_knows_route, 1;
- callfunc "XmasSetRoute";
- goto L_XmasMain;
-
-L_QuestStart1:
- mes "[Orum's Homunculus]";
- mes "\"Greetings traveler, Do you have any time to help me out?\"";
- menu
- "No. I really have to go.", L_Close,
- "Sure, I'm listening.", L_Next;
-
-L_Next:
- mes "\"Good. You may have heard that some of the children's wish lists are missing.\"";
- mes "\"I sent a courier out to get their lists, but they have yet to return.\"";
- next;
- mes "\"Let's see the following children's lists are still missing:\"";
- callfunc "XmasListList";
- mes "\"Would you please go and take a look what happened to them? If you can get hold of a list, report back. We surely know how to \"amend\" these things properly...\"";
- set @xmas_state, $@xmas_list_both_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-L_QuestStart2:
- mes "[Orum's Homunculus]";
- mes "\"Greetings traveler, Do you have any time to help me out?\"";
- menu
- "No. I really have to go.", L_Close,
- "Sure, I'm listening.", L_KeepGoing;
-
-L_KeepGoing:
- mes "\"Good. You may have heard that some of the children's wish lists are missing.\"";
- mes "\"I sent a courier out to get their lists, but they have yet to return.\"";
- next;
- mes "\"Let's see the following children's lists are missing:\"";
- callfunc "XmasListList";
- mes "\"Would you please go and take a look what happened to them? If you get a list, report back.\"";
- set @xmas_state, $@xmas_list_path2_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-L_HaveList2:
- mes "[Orum's Homunculus]";
- mes "\"Have you got the missing lists?\"";
- menu
- "What were those names again?", L_ListNames,
- "Yes.", L_SantasList,
- "No.", L_Close;
-
-L_ListNames:
- mes "\"The missing children's names are;\"";
- callfunc "XmasListList";
- mes "\"Go now, and come back when you have the lists.\"";
- goto L_Close;
-
-L_NotComplete:
- mes "\"This doesn't seem like enough names to work with. Come back when you have more.\"";
- goto L_Close;
-
-L_SantasList:
- callfunc "XmasCheckList";
- callfunc "XmasStates";
- if(!(@xmas_list_complete))
- goto L_NotComplete;
- mes "\"Take the altered list to Elijas.\"";
- menu
- "I don't know, this sounds kind of naughty.", L_Foo;
-
-L_Foo:
- mes "\"Do my bidding or I'll have no more words with you.\"";
- goto L_Close;
-
-L_ListReturn:
- mes "[Orum's Homunculus]";
- mes "\"This had better be important, I've got enough to worry about.\"";
- menu
- "Sorry for interrupting, but I've come down here because I delivered the fake list", L_FakeList;
-
-L_FakeList:
- mes "he stares blankly at you for a bit... ";
- next;
- mes "\"MUHAHAHAHAHAHAA!!\"";
- next;
- mes "\"I see. Mighty naughty, I bet they tossed you out?\"";
- mes "\"I was wondering if you would have any interest in continuing to do so?\"";
- mes "\"I do have the power to reward you handsomely for your naughtiness.\"";
- next;
- mes "\"You see the Christmas Inn and it's insufferable happiness and joy they spread makes dark magic users sick.\"";
- mes "\"Well this year I struck back. I managed to make it inside and snatch their mana battery that powers their precious nutcrackers. Then ruin their back stock with the nutcrackers powered down.\"";
- next;
- mes "\"The sages showed up and had me tossed out. It seems like they also created some kind of barrier to toss our kind, saying those of a truely evil heart, out.\"";
- mes "\"They may have blocked my aura, but surely didn't crush my spirit. Mainly because those fools didn't discover the portal I created into the Inn's basement.\"";
- next;
- mes "\"Muhahahaha\"";
- next;
- mes "\"I have more plans for both later. First, we need to slow the Christmas Inn down.\"";
- mes "\"We can't let them free time to fix their problems. We need to press our advantage.\"";
- next;
- mes "\"I will need you to gather some items for me. They are required to make the helpers job a living hell.\"";
- next;
- mes "\"Lets see... To replace the glitter I need you to get me " + ($@xmas_red_amount + $@xmas_yellow_amount) + " Piles of Ash, " + $@xmas_red_amount + " Red Dyes and " + $@xmas_yellow_amount + " Yellow Dyes\"";
- mes "\"Bring them here and I can instruct you how to mix them into fake glitter, a powder that will make them believe they have what they need but really they don't. It will loose it's shine before it arrives. They are way to self absorbed to notice the difference. And even if they notice... It will be too late!\"";
- next;
- mes "He bursts into a devilish laughter...";
- next;
- mes "\"mmh... To replace the packing material we also need to get some Cotton Cloth.\"";
- mes "He makes a strange frown and clenches his teeth. It seems like he is talking to himself, not to you.";
- mes "\"Yes... That will rattle of few cages, when the presents rattle and the gifts break.\"";
- next;
- mes "\"You can also give them " + $@xmas_bad_friendly_name$ + " for their candy storage.\"";
- mes "\"Be assured my minion that will take a good bite out of their holiday cheer.\"";
- next;
- mes "\"Excellent.\"";
- mes "\"Now listen:\"";
- next;
- mes "\"So far my basement portal has remained undetected:";
- mes "Head to the west in this cave to find it.\"";
- mes "\"Once there smash your fist into the small crack and you will be teleported into the basement of the inn.\"";
- mes "\"Let me fake the mark Chief Warrick uses to identify his helpers. Don't get to close to the guards they might spot you.\"";
- mes "\"Now, prove yourself, gather the required items and go back to the Inn to sabotage Santa's Helpers.\"";
- callfunc "XmasSetSide";
- set XMASTIME, XMASTIME | $@xmas_helper_bit;
- set XMASTIME, XMASTIME | $@xmas_basement_passage;
- set @xmas_state, $@xmas_helpers_start_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-L_HelperQuest:
- mes "[Orum's Homunculus]";
- mes "\"Welcome back!\"";
- mes "\"How is the sabotage coming along?\"";
- menu
- "What is this all about again?", L_HelpHelpers,
- "They keep throwing me out.", L_HelpPassage,
- "I need some powders made.", L_MakePowders,
- "It's a mess.", L_Continue,
- "I'd better break some things.", L_Close;
-
-L_HelpHelpers:
- mes "\"I will need you to gather some items for me. They are required to make the helpers job a living hell.\"";
- next;
- mes "\"Lets see... To replace the glitter I need you to get me " + ($@xmas_red_amount + $@xmas_yellow_amount) + " Piles of Ash, " + $@xmas_red_amount + " Red Dyes and " + $@xmas_yellow_amount + " Yellow Dyes\"";
- mes "\"Bring them here and I can instruct you how to mix them into fake glitter, a powder that will make them believe they have what they need but really they don't. It will loose it's shine before it arrives. They are way to self absorbed to notice the difference. And even if they notice... It will be too late!\"";
- next;
- mes "He bursts into a devilish laughter...";
- next;
- mes "\"mmh... To replace the packing material we also need to get some Cotton Cloth.\"";
- mes "He makes a strange frown and clenches his teeth. It seems like he is talking to himself, not to you.";
- mes "\"Yes... That will rattle of few cages, when the presents rattle and the gifts break.\"";
- next;
- mes "\"You can also give them " + $@xmas_bad_friendly_name$ + " for their candy storage.\"";
- mes "\"Be assured my minion that will take a good bite out of their holiday cheer.\"";
- next;
- goto L_HelperQuest;
-
-L_HelpPassage:
- mes "\"As I told you, I installed a passage to the Inn's basement:";
- mes "Head to the west in this cave to find it.\"";
- mes "\"Once there, smash your fist into the small crack and you will be teleported into the basement of the inn.\"";
- goto L_Close;
-
-L_MakePowders:
- callfunc "BadPowderMake";
- goto L_Close;
-
-L_Continue:
- callfunc "XmasHelperPoints";
- callfunc "XmasStates";
- if(@xmas_helper_done_state)
- goto L_ManaBattery;
- goto L_NotHelpEnough;
-
-L_NotHelpEnough:
- mes "\"Hrmm... I'm still seeing too much activity up there. You better wreck some more havoc otherwise they might restore the power before us.\"";
- goto L_Close;
-
-L_ManaBattery:
- mes "\"Now that we set back the holiday, It's time for the next step in my plan.\"";
- next;
- callfunc "ListReagents";
- mes "\"When you have gathered the required materials please come back and see me.\"";
- set @xmas_state, $@xmas_reagents_start;
- callfunc "XmasSetState";
- callfunc "XmasXpReward";
- goto L_Close;
-
-L_IngredientList:
- callfunc "ListReagents";
- mes "\"When you have gathered the required materials please come back and see me.\"";
- goto L_Close;
-
-L_PowerReagents:
- mes "[Orum's Homunculus]";
- mes "\"Have you gotten the reagents?\"";
- menu
- "Yes.", L_CheckReagents,
- "What were they again?", L_IngredientList,
- "No.", L_NotEnough;
-
-L_CheckReagents:
- callfunc "CheckReagents";
- callfunc "XmasStates";
- if(!(@xmas_reagent_done_state))
- goto L_NotEnough;
- callfunc "DeleteReagents";
- mes "\"YES! you have all the required components!\"";
- mes "\"Now I can create a mind link to the mana battery and control the nutcrackers\"";
- next;
- mes "You watch as he puts equal amounts of emerald powder into each of the iron potions.";
- mes "He methodically crushes up the dark crystal and speads it amongst the potions.";
- mes "He positions the four potions in a stand so all the openings are mostly facing each other.";
- mes "He begins to chant.";
- next;
- mes "[Orum's Homunculus]";
- mes "O";
- next;
- mes "wat";
- next;
- mes "goo";
- next;
- mes "siam";
- next;
- mes "The potions begin to pulse with mana.";
- mes "He continues to chant";
- next;
- mes "[Orum's Homunculus]";
- mes "Aye";
- next;
- mes "Am";
- next;
- mes "Knot";
- next;
- mes "Phunee";
- next;
- mes "Mana surges to life in the potions";
- next;
- mes "\"Phew! That takes alot out of a person.\"";
- mes "\"I'm in no condition to go anywhere.\"";
- next;
- mes "\"Take the Mana Battery and install it in the warehouse.\"";
- mes "\"It's found behind Chief Warrick\"";
- set @xmas_state, $@xmas_boss_door_open_state;
- callfunc "XmasSetState";
- callfunc "XmasXpReward";
- goto L_Close;
-
-L_Quick:
- mes "[Orum's Homunculus]";
- mes "\"What are you still doing here?\"";
- mes "\"Quickly, to the warehouse.\"";
- goto L_Close;
-
-L_Reward:
- mes "[Orum's Homunculus]";
- mes "\"Revenge is a dish best served cold..\"";
- if (@xmas_reward2_done_state)
- set @xmas_state, $@xmas_reward_done;
- if (@xmas_reward_start_state)
- set @xmas_state, $@xmas_reward1_done;
-
- callfunc "XmasSetState";
- callfunc "XmasMainXpBpReward";
- goto L_Close;
-
-L_Thanks:
- mes "[Orum's Homunculus]";
- mes "\"Please feel free to continue to sabotage whats left of the Inn while I prepare your reward.\"";
- goto L_Close;
-
-L_NotEnough:
- mes "\"Come back with the components or don't come back at all.\"";
- goto L_Close;
-
-L_ThankYou:
- mes "\"Now I'm the one in power of the Inn. You did well my minion.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/030-4/_import.txt b/world/map/npc/030-4/_import.txt
deleted file mode 100644
index 26492173..00000000
--- a/world/map/npc/030-4/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 030-4: Christmas Inn Warehouse
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 030-4
-npc: npc/030-4/_mobs.txt
-npc: npc/030-4/_nodes.txt
-npc: npc/030-4/_warps.txt
-npc: npc/030-4/mana_battery.txt
-npc: npc/030-4/mapflags.txt
diff --git a/world/map/npc/030-4/_mobs.txt b/world/map/npc/030-4/_mobs.txt
deleted file mode 100644
index e53861b5..00000000
--- a/world/map/npc/030-4/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Christmas Inn Warehouse mobs
-
diff --git a/world/map/npc/030-4/_nodes.txt b/world/map/npc/030-4/_nodes.txt
deleted file mode 100644
index 14284ca5..00000000
--- a/world/map/npc/030-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Christmas Inn Warehouse nodes
-
-// (no nodes)
diff --git a/world/map/npc/030-4/_warps.txt b/world/map/npc/030-4/_warps.txt
deleted file mode 100644
index 6dca5022..00000000
--- a/world/map/npc/030-4/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Christmas Inn Warehouse warps
-
diff --git a/world/map/npc/030-4/mana_battery.txt b/world/map/npc/030-4/mana_battery.txt
deleted file mode 100644
index 15ff40c3..00000000
--- a/world/map/npc/030-4/mana_battery.txt
+++ /dev/null
@@ -1,454 +0,0 @@
-// Annual Xmas Battle
-// Author: Jenalya, shamelessly adapted by Chayenne, wushin
-
-// Variables:
-// @xmas_battle_side: if set its "naughty path" if not set "nice path"
-// XmasBattleStatus:
-// 0 battle not started
-// 1 battle easy good
-// 2 battle hard good
-// 3 battle easy bad
-// 4 battle hard bad
-// 5 battle time out
-// basically its this:
-// Announcements depend on wether starter was naughty/nice path
-// mobs are not yet balanced, they also depend on battle mode
-// only nutcrackers need to be killed ( I hope )
-
-// player gets state set to finished for winning the battle once and mode bit set on easy/hard accordingly
-// every player *is* allowed to restart the quest ONCE himself if he hasnt started it himself yet
-
-//TODO Add an icreasing particle effect to the chest, move it half a tile right
-// and make it one of those lab tables from the slime quests
-
-030-4,32,21,0|script|AniManOMat|400
-{
- set $@XmasBattleStatusClone, 0;
- callfunc "XmasStates";
- set @xmas_battle_side, 0;
- if ($@XmasBattleCoolDown)
- goto L_CoolDown;
- if (@xmas_side)
- set @xmas_battle_side, 1;
- if ($@XmasBattleStatus)
- goto L_BattleInProgress;
- if (@xmas_state < $@xmas_boss_door_open_state)
- goto L_ThrowOut;
- if ((@xmas_boss_start) && (@xmas_state > $@xmas_boss_door_open_state))
- goto L_Helper;
- if (@xmas_state == $@xmas_boss_door_open_state)
- goto L_InitiateBattle;
- goto L_InitiateBattle;
-
-L_InitiateBattle:
- callfunc "XmasSetBossStart";
- if(@xmas_battle_side)
- goto L_BattleBad;
- goto L_BattleGood;
-
-L_BattleBad:
- mes "[Orum's Homunculus]";
- mes "\"So this is where this whole shallow charade will end...\"";
- mes "\"Good. Are you ready to get this over with?\"";
- menu
- "Huh? Sure, why not.", L_KeepGoing,
- "Wait a sec.", L_Close,
- "Well... since you ask... I prefer to leave now, this is way to dangerous. I have responsibities.", L_Coward;
-
-L_KeepGoing:
- mes "[Orums Homunculus]";
- mes "\"Okay now listen closely, at least for once.\"";
- mes "\"Put the mana battery into that vessel in front of you.\"";
- next;
- menu
- "Ok.", L_YeahOk,
- "No way, I prefer to leave. Now!", L_Coward,
- "Give me a second, I need to consider my options.", L_Close;
-
-L_YeahOk:
- mes "You carefully install the Mana Battery as good as you can manage.";
- mes "As you bend over, you notice a strong sulphur odour coming from the crate";
- next;
- mes "[Orum]";
- mes "\"Ok. now this should be enough.\"";
- mes "\"Get out of here, before the bomb explodes!.\"";
- menu
- "Agreed.", L_StartBad,
- "You know what? If I pull this lever this should become HUGE! (Beware! that's dangerous)", L_StartBadHard;
-
-L_BattleGood:
- mes "You stare into a box that even through your unexperienced eyes looks less than secure to harbour such a powerful device as the mana battery is.";
- menu
- "Ok, this should be where the battery belongs.", L_StartGood,
- "No WAY! I am not going to put my life in danger", L_Close,
- "Ok that does it, I am going to leave! I cannot be responsible for blowing up the entire mana world.", L_Coward,
- "I studied magic and this looks all wrong. (Beware! that's dangerous)", L_StartGoodHard;
-
-L_StartGood:
- if ($@XmasBattleStatus)
- goto L_BattleInProgress;
- set @xmas_battle_status, 1;
- goto L_Start;
-
-L_StartGoodHard:
- if ($@XmasBattleStatus)
- goto L_BattleInProgress;
- callsub S_CheckHardReq;
- delitem $@xmas_boss_req$[ @xmas_battle_side ], $@xmas_boss_amount[ @xmas_battle_side ];
- mes "You pour a handfull of " + $@xmas_boss_req$[@xmas_battle_side] + " over the Mana Battery.";
- set @xmas_battle_status, 2;
- goto L_Start;
-
-L_StartBad:
- if ($@XmasBattleStatus)
- goto L_BattleInProgress;
- set @xmas_battle_status, 3;
- goto L_Start;
-
-L_StartBadHard:
- if ($@XmasBattleStatus)
- goto L_BattleInProgress;
- callsub S_CheckHardReq;
- delitem $@xmas_boss_req$[ @xmas_battle_side ], $@xmas_boss_amount[ @xmas_battle_side ];
- mes "You pour a handfull of " + $@xmas_boss_req$[@xmas_battle_side] + " over the Mana Battery.";
- set @xmas_battle_status, 4;
- goto L_Start;
-
-L_Start:
- mes "You struggle a little with your task, since the mana battery doesn't seem to fit in as smooth as you expected it.";
- next;
- mes "W00t!";
- next;
- mes "Now it is glowing wildly";
- next;
- mes "it seems like this will not turn out as planned, Look this Guard of Honour is going crazy!";
- next;
- npctalk strnpcinfo(0), "The Guards are out of control!";
- if ($@XmasBattleStatus)
- goto L_BattleAlreadyStarted;
- set $@XmasBattleStatus, @xmas_battle_status;
- set $@XmasBattleStatusClone, $@XmasBattleStatus;
- set $@XmasBossRound, 0;
- set $@XmasBossPlayerCount, getmapusers("030-4");
- areamonster "030-4", 20, 21, 40, 40, "", 1114, 1, "AniManOMat::OnGuardDeath";
- initnpctimer;
- goto L_Close;
-
-L_ThrowOut:
- // if the player didnt get a bomb yet
- mes "This looks dangerous. Come back when you are prepared";
- next;
- warp "030-2",151,25;
- goto L_Close;
-
-L_Coward:
- //Player chose to cancel
- mes "What a pitty now you still have a bomb in your hands but...";
- mes "As you wish.";
- next;
- warp "030-2",151,25;
- goto L_Close;
-
-L_Helper:
- //Player used up his own chance to start
- mes "mmh the AniManOMat is empty again, maybe we should try with a different mana battery.";
- menu
- "No I prefer to leave now, get me out of here.", L_Quit,
- "Wait let me check if i can fix this ...(Beware!)", L_Repeat,
- "Why would I do that? Aaaah... Nevermind.", L_Close;
-
-L_Repeat:
- //Player wants to try again on hard mode again
- if ($@XmasBattleStatus)
- goto L_BattleInProgress;
- callsub S_CheckHardReq;
- delitem $@xmas_boss_req$[ @xmas_battle_side ], $@xmas_boss_amount[ @xmas_battle_side ];
- set @xmas_battle_status, (2 * (@xmas_battle_side)) + 2;
- goto L_Start;
-
-L_Quit:
- warp "030-2",151,25;
- goto L_Close;
-
-L_CoolDown:
- mes "The AniManOMat is too hot to handle right now, you should wait a bit to try a new battery.";
- menu
- "No I prefer to leave now, get me out of here.", L_Quit,
- "Ughhh, but I'm certain this time the battery will work!", L_Close;
-
-L_BattleInProgress:
- mes "The mana battery looks like it is about to explode. You better take cover!";
- goto L_Close;
-
-L_BattleAlreadyStarted:
- mes "Seems like someone was faster than you.";
- goto L_Close;
-
-L_Close:
- callsub S_ClearVariables;
- close;
-
- // per NPC logic
-OnTimer5000:
- setnpctimer 0;
- if ($@XmasBattleStatus)
- goto L_CaveLogic;
- goto L_CleanUp;
-
-L_Return_1:
- set $@XmasBossPlayerCount, 0;
- areatimer 0, "030-4", 0, 0, 60, 60, 10, "AniManOMat::OnTick";
- end;
-
-L_CaveLogic:
- if ($@XmasBossPlayerCount < 1)
- goto L_AllDead;
- set $@BombTimer, $@BombTimer + 5; // Advance 5 seconds
- if ((mobcount("030-4", "AniManOMat::OnGuardDeath") + 1) == 0)
- goto L_NextWave;
- if ($@BombTimer >= 120)
- goto L_NextWave;
- goto L_Return_1;
-
-L_NextWave:
- set $@BombTimer, 0;
- set $@DangerCellNumber, rand(8);
- set $@XmasBossRound, $@XmasBossRound + 1;
- if (($@XmasBossRound > 10) && ((mobcount("030-4", "AniManOMat::OnGuardDeath") + 1) == 0))
- goto L_Finished;
- // Break/LastChance(s)
- if (($@XmasBossRound > 10) && ($@XmasBossRound <= 16))
- goto L_Return_1;
- //KillerWaves
- if ($@XmasBossRound > 16)
- areamonster "030-4", 0, 0, 50, 50, "", 1114, $@XmasBossRound*2 + $@XmasBossPlayerCount*3, "AniManOMat::OnGuardDeath";
- //Normal Waves 1 to 10
- // Guard Amount doubles if on hard mode
- set $@GuardAmount, 1 + (6 + ($@XmasBossRound) + (2 * $@XmasBossPlayerCount)) / 7;
- set $@SkullAmount, 1 + ($@GuardAmount * $@GuardAmount) / 4;
-
- if ($@GuardAmount > 15)
- set $@GuardAmount, 15;
-
- //Obliatory Guard Of Honour in the Southern Hallway
- areamonster "030-4", 30, 43, 39, 49, "", 1114, $@GuardAmount, "AniManOMat::OnGuardDeath";
- //CopperSlimes, I love Copper Slimes anywhere anytime
- areamonster "030-4", 20, 21, 49, 49, "", 1098, rand(2,7), "AniManOMat::OnGuardDeath";
- //IceSkulls for hard mode in room 3 and 4
- if ($@XmasBattleStatus == 2 || $@XmasBattleStatus == 4)
- areamonster "030-4", 20, 32, 28, 39, "", 1085, $@SkullAmount / 2, "AniManOMat::OnGuardDeath";
- if ($@XmasBattleStatus == 2 || $@XmasBattleStatus == 4)
- areamonster "030-4", 41, 32, 49, 39, "", 1085, $@SkullAmount / 2 + 1, "AniManOMat::OnGuardDeath";
- //Angry Sea Slimes for Easy Mode in Nice Version in Room 3,4,5,6
- if ($@XmasBattleStatus == 1)
- areamonster "030-4", 20, 32, 28, 49, "", 1109, $@SkullAmount, "AniManOMat::OnGuardDeath";
- if ($@XmasBattleStatus == 1)
- areamonster "030-4", 41, 32, 49, 49, "", 1109, $@SkullAmount, "AniManOMat::OnGuardDeath";
- //Candied Slimes for Nice Mode in Rooms 1 and 2
- if ($@XmasBattleStatus == 1 || $@XmasBattleStatus == 2)
- areamonster "030-4", 20, 21, 28, 28, "", 1111, ($@XmasBossRound / 2) + 1, "AniManOMat::OnGuardDeath";
- if ($@XmasBattleStatus == 1 || $@XmasBattleStatus == 2)
- areamonster "030-4", 41, 21, 49, 28, "", 1111, ($@XmasBossRound / 2) + 2, "AniManOMat::OnGuardDeath";
- //Bluepars for Easy mode in Naughty Variant in Rooms 3,4,5,6
- if ($@XmasBattleStatus == 3)
- areamonster "030-4", 20, 32, 28, 49, "", 1107, $@SkullAmount, "AniManOMat::OnGuardDeath";
- if ($@XmasBattleStatus == 3)
- areamonster "030-4", 41, 32, 49, 49, "", 1107, $@SkullAmount, "AniManOMat::OnGuardDeath";
- // Wicked Mushrooms for Naughty Mode in Rooms 1 and 2
- if ($@XmasBattleStatus == 3 || $@XmasBattleStatus == 4)
- areamonster "030-4", 20, 21, 28, 28, "", 1106, $@XmasBossRound + ($@XmasBossRound / 2), "AniManOMat::OnGuardDeath";
- if ($@XmasBattleStatus == 3 || $@XmasBattleStatus == 4)
- areamonster "030-4", 41, 21, 49, 28, "", 1106, $@XmasBossRound + ($@XmasBossRound / 2), "AniManOMat::OnGuardDeath";
-
- set $@msgnumber, (2 * $@XmasBossRound) + (($@XmasBattleStatus - 1) >> 1);
- set $@msg$, $@XmasBossMes$[ $@msgnumber ];
- set $@msgnumber, 0;
- if ($@XmasBossRound > 10) goto L_Return_1;
- callsub S_Announce;
- goto L_Return_1;
-
-OnTick:
- if (isdead()) end;
- set $@XmasBossPlayerCount, $@XmasBossPlayerCount + 1;
- if(isin("030-4", $@DangerCellX1[$@DangerCellNumber], $@DangerCellY1[$@DangerCellNumber], $@DangerCellX2[$@DangerCellNumber], $@DangerCellY2[$@DangerCellNumber]))
- goto L_DangerCell;
- end;
-
-L_DangerCell:
- message strcharinfo(0), "Target Aquired. Locking on Now.";
- misceffect 10001, strcharinfo(0);
- heal ((MaxHp/100) * -20), 0;
- end;
-
-OnGuardDeath:
- end;
-
-L_AllDead:
- set $@msg$, $@xmas_final_announce$[ ($@XmasBattleStatus - 1) / 2 ];
- callsub S_Announce;
- goto L_CleanUp;
-
-L_Finished:
- set $@msg$, $@xmas_final_announce$[ (($@XmasBattleStatus - 1) / 2) + 2 ];
- callsub S_Announce;
- goto L_CleanUp;
-
-L_CleanUp:
- areatimer 0, "030-4", 0, 0, 50, 50, 10, "AniManOMat::OnReward";
- set $@XmasBossPlayerCount, 0;
- set $@XmasBossRound, 0;
- set $@BombTimer, 0;
- set $@GuardAmount, 0;
- set $@SkullAmount, 0;
- killmonster "030-4", "AniManOMat::OnGuardDeath";
- stopnpctimer;
- donpcevent "#XmasChamberCooler::OnCommandCoolDown";
- end;
-
-OnReward:
- if (isdead())
- end;
- if (($@XmasBattleStatusClone % 2) == 0)
- set XMASTIME, XMASTIME | $@xmas_boss_hero_bit;
- set @xmas_state, (XMASTIME & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT;
- set @bonus, (55 - (BaseLevel / 2));
- set DailyQuestBonus, DailyQuestBonus + @bonus;
- message strcharinfo(0), "You feel a temporary rush of power and zest for action.";
- if (@xmas_state != $@xmas_boss_door_open_state )
- goto L_End;
- set @xmas_state, $@xmas_reward_start;
- callfunc "XmasSetState";
- set @xmas_state, 0;
- set @karma_bonus, $@xmas_boss_bonus;
- message strcharinfo(0), "Wow, what happened here?.";
- goto L_End;
-
-L_End:
- if ((($@XmasBattleStatus - 1) / 2) == 0) goto L_EndNice;
- goto L_EndNaughty;
-
-L_EndNaughty:
- callfunc "XmasNaughty";
- callsub S_ClearVariables;
- end;
-
-L_EndNice:
- callfunc "XmasNice";
- callsub S_ClearVariables;
- end;
-
-OnCommandChamberReset:
- areatimer 0, "030-4", 0, 0, 50, 50, 10, "AniManOMat::OnReward";
- set $@XmasBattleStatus, 0;
- set $@XmasBossPlayerCount, 0;
- set $@XmasBossRound, 0;
- set $@BombTimer, 0;
- set $@GuardAmount, 0;
- set $@SkullAmount, 0;
- killmonster "030-4", "AniManOMat::OnGuardDeath";
- stopnpctimer;
- setnpctimer 0;
- goto L_Restart;
-
-OnInit:
- goto L_Restart;
-
-L_Restart:
- set $@XmasBattleStatus, 0;
- setarray $@XmasBossMes$,
- "", // unused
- "", // unused
- "Scrrreeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaatch",
- "Scrrreeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaatch",
- "Avalia : I am getting a weird sensation ... ",
- "Orums Homunculus : I think they know what we are up to!",
- "Avalia : Oh no! This is going to blow up",
- "Orums Homunculus : The Door is locked you idiot, fight for your life.",
- "Avalia : Guards of Honor I demand you: STOP!",
- "Orums Homunculus : Okay, this is somewhat funny... why are they coming back?!?",
- "Avalia : You brave fighters! Deactivate the nutcrackers! they are out of control!",
- "Orums Homunculus : The good news is: if we make it this time we will never have to do that again!",
- "Avalia : Oh boy we are so screwed.",
- "Orums Homunculus : Report: I am an Idiot",
- "Avalia : Quick, we need to kill the nutcrackers, before they ruin everything we've been working for.",
- "Orums Homunculus : Strange they are getting more and not less.",
- "Avalia : Oh no, they are too powerful. Fight my warriors, Fight for the spirit of Christmas.",
- "Orums Homunculus : If I was smart enough to stop talking, it would have happened already..",
- "Avalia : I cannot believe it, this is making them stronger. More and more of them are coming.",
- "Orums Homunculus : I think we are almost done, the bomb should explode any second.",
- "Avalia : Those poor creatures. Just kill them all.",
- "Orums Homunculus : A N Y S E C O N D.",
- "Avalia : Oh well... just try again, I trust in you.",
- "Orum's Homunculus : just lol.",
- "Avalia : Wow! You saved christmas.",
- "Orum's Homunculus : Yep, it's over... and strange enough you survived.";
-
- setarray $@xmas_final_announce$,
- "Avalia : Oh no, not only did you slay half my Guard of Honour, but also the issue was not fixed, try to install the battery again!",
- "Orum's Homunculus : Boy are you lame. So what now? The battery is still not placed! Go try again!",
- "Avalia : W00t you actually made it through. I think now that the manabattery lost some of its abundant power this seems to have given those nutcrackers that didn't go crazy a good boost of life energy. Thank you for your help all and come see me for a reward.",
- "Orum's Homunculus : Good. They are dead. Now GET OUT OF THERE, this bomb is dangerous!";
- // Danger Cells to attack sitters
- // 0: 19,20,29,29
- // 1: 30,20,40,29
- // 2: 41,20,50,29
- // 3: 19,31,29,40
- // 4: 30,31,40,40
- // 5: 41,31,50,40
- // 6: 19,42,29,50
- // 7: 30,42,40,50
- // 8: 41,42,50,50
- setarray $@DangerCellX1, 19, 30, 41, 19, 30, 41, 19, 30, 41;
- setarray $@DangerCellY1, 20, 20, 20, 31, 31, 31, 42, 42, 42;
- setarray $@DangerCellX2, 29, 40, 50, 29, 40, 50, 29, 40, 50;
- setarray $@DangerCellY2, 29, 29, 29, 40, 40, 40, 50, 50, 50;
- end;
-
-S_Announce:
- mapannounce "030-4", "Danger Cell Activated. Zone " + $@DangerCellNumber + " activated.", 0;
- mapannounce "030-4", $@msg$, 0;
- mapannounce "030-2", $@msg$, 0;
- set $@msg$, "";
- return;
-
-S_CheckHardReq:
- if (BaseLevel < $@BossHardLevel)
- goto L_NotHighEnough;
- if (countitem($@xmas_boss_req$[ @xmas_battle_side ]) < $@xmas_boss_amount[ @xmas_battle_side ])
- goto L_NotEnoughItems;
- goto L_Return;
-
-L_NotEnoughItems:
- mes "Nono, you need to bring " + $@xmas_boss_amount[ @xmas_battle_side ] + " " + $@xmas_boss_req$[ @xmas_battle_side ] + "s.";
- goto L_Close;
-
-L_NotHighEnough:
- mes "\"Err no sweetie, you don't. just do it the normal way.\"";
- goto L_Close;
-
-L_Return:
- return;
-
-S_ClearVariables:
- set @xmas_battle_side, 0;
- set @bonus, 0;
- set @xmas_state, 0;
- set @xmas_battle_status, 0;
- set @karma_bonus, 0;
- return;
-}
-
-030-4,0,0,0|script|#XmasChamberCooler|32767
-{
- end;
-OnCommandCoolDown:
- set $@XmasBattleStatus, 0;
- set $@XmasBattleCoolDown, 1;
- initnpctimer;
- end;
-
-OnTimer120000:
- set $@XmasBattleCoolDown, 0;
- stopnpctimer;
- end;
-}
diff --git a/world/map/npc/030-4/mapflags.txt b/world/map/npc/030-4/mapflags.txt
deleted file mode 100644
index c95a8d5f..00000000
--- a/world/map/npc/030-4/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-030-4|mapflag|nosave|030-2,151,25
-030-4|mapflag|resave|030-2,151,25
diff --git a/world/map/npc/031-1/_import.txt b/world/map/npc/031-1/_import.txt
deleted file mode 100644
index fe66c2d2..00000000
--- a/world/map/npc/031-1/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 031-1: Nivalis Port
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 031-1
-npc: npc/031-1/_mobs.txt
-npc: npc/031-1/_nodes.txt
-npc: npc/031-1/_warps.txt
-npc: npc/031-1/angelaOutside.txt
-npc: npc/031-1/dock.txt
-npc: npc/031-1/frozenbeard.txt
-npc: npc/031-1/house.txt
-npc: npc/031-1/mapflags.txt
diff --git a/world/map/npc/031-1/_mobs.txt b/world/map/npc/031-1/_mobs.txt
deleted file mode 100644
index c8d85539..00000000
--- a/world/map/npc/031-1/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis Port mobs
-
-031-1,0,0,0,0|monster|Fluffy|1020,10,100000ms,30000ms
-031-1,0,0,0,0|monster|Pollett|1113,14,100000ms,30000ms
-031-1,76,26,10,5|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-1,0,0,0,0|monster|WhiteBell|1095,4,100000ms,30000ms
diff --git a/world/map/npc/031-1/_nodes.txt b/world/map/npc/031-1/_nodes.txt
deleted file mode 100644
index c369eff4..00000000
--- a/world/map/npc/031-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis Port nodes
-
-// (no nodes)
diff --git a/world/map/npc/031-1/_warps.txt b/world/map/npc/031-1/_warps.txt
deleted file mode 100644
index c9adc25f..00000000
--- a/world/map/npc/031-1/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nivalis Port warps
-
-031-1,37,55|warp|-1,-1,020-1,106,55
-031-1,76,24|warp|-1,-1,031-3,212,299
-031-1,90,115|warp|-1,-1,031-2,73,29
diff --git a/world/map/npc/031-1/angelaOutside.txt b/world/map/npc/031-1/angelaOutside.txt
deleted file mode 100644
index 2ffd0804..00000000
--- a/world/map/npc/031-1/angelaOutside.txt
+++ /dev/null
@@ -1,145 +0,0 @@
-// author: Jenalya
-// state0: Angela is to upset to tell you anything, needs a concentration potion
-// state1: got the mission to save Cindy
-// state2 and state3: Cindy is saved Angela invites you to visit them for giving a reward
-// state greater than 3: Angela invites and asks you to bring present boxes
-
-031-1,81,24,0|script|Debug#Angela|195
-{
- mes "Current state: " + QL_CINDY;
- mes "---";
- mes "Available states:";
- mes "0 - can not do the quest.";
- mes "5 - does not have the quest.";
- mes "6 - got the quest.";
- mes "1 - can go rescue cindy.";
- mes "2 - rescued cindy.";
- mes "3 - got reward from cindy.";
- mes "4 - got reward from angela.";
- menu
- "set state", L_Set,
- "close", L_Close;
-
-L_Set:
- input @state;
- if(@state < 0 || @state > 6) set @state, 0;
- set QL_CINDY, @state;
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- if (!debug) disablenpc strnpcinfo(0);
- end;
-}
-
-031-1,79,24,0|script|Angela|195,15,15
-{
- if (QL_CINDY == 3) goto L_Please_Visit_Again;
- if (QL_CINDY > 1 && QL_CINDY < 5) goto L_Please_Visit;
- if (QL_CINDY == 1) goto L_Please_Help;
-
- mes "[Angela]";
- mes "\"Please, I need help! My little daughter!\"";
- next;
- mes "\"It's terrible, oh my dear child!\"";
- next;
- if (countitem("ConcentrationPotion") > 0 && BaseLevel >= .minlevel && QL_CINDY == 6)
- goto L_Menu_Potion;
-
- menu
- "\"Please calm down and tell me what happened.\"", L_Whining,
- "Leave", L_Close;
-
-OnTouch:
- if(BaseLevel >= .minlevel && QL_CINDY < 1)
- set QL_CINDY, 5;
- end;
-
-L_Whining:
- mes "[Angela]";
- mes "\"My poor little daughter, please! Oh no, oh no...\"";
- next;
- mes "\"We need to do something! My poor little Cindy! My cute little girl!\"";
- next;
- mes "\"It's so terrible, how could that happen? Please, I need help, it's so terrible.\"";
- next;
- mes "\"Those awful filthy monsters - terrible!\"";
- next;
- mes "\"Oh Cindy, my little Cindy - oh no...\"";
- next;
- mes "\"Please help, we need to do something!\"";
- next;
- mes "\"It's so terrible, my poor cute little Cindy...\"";
- next;
- mes "\"Oh, when I think what might happen to her right now!\"";
- next;
- mes "She is crying and sobbing.";
- next;
- mes "It seems she is too upset to tell you anything helpful. If she would just calm down and concentrate a bit...";
- if(BaseLevel >= .minlevel) goto L_GetQuest;
- goto L_Close;
-
-L_GetQuest:
- next;
- set QL_CINDY, 6;
- mes "Perhaps you could give her something to help concentrate ?";
- goto L_Close;
-
-L_Menu_Potion:
- menu
- "\"Please calm down and tell me what happened.\"", L_Whining,
- "Give her a concentration potion.", L_Calm_Down,
- "Leave", L_Close;
-
-L_Calm_Down:
- if (countitem("ConcentrationPotion") == 0)
- goto L_No_Potion;
- delitem "ConcentrationPotion", 1;
- mes "She drinks the concentration potions and calms down.";
- mes "[Angela]";
- mes "\"Thank you, this was helpful.\"";
- next;
- mes "\"My daughter Cindy and I were on our way to Santa, to bring him some presents. Many people here in Nivalis are helping Santa with his business.\"";
- next;
- mes "\"When we passed the entrance of this cave, a pack of Yetis came out of there. It's disturbing, because usually they are very shy.\"";
- next;
- mes "\"We tried to run away, but there were too many of them. They took my poor little Cindy and all the presents with them.\"";
- next;
- mes "\"Oh my poor little girl. I'm so worried - what might they do with her? Oh no!\"";
- next;
- mes "\"You look like an adventurer! Please, can you go in that cave and rescue my little Cindy? I beg you for help!\"";
- set QL_CINDY, 1;
- goto L_Close;
-
-L_No_Potion:
- mes "You don't have a concentration potion.";
- goto L_Close;
-
-L_Please_Help:
- mes "[Angela]";
- mes "\"Please go in that cave and rescue my daughter!\"";
- goto L_Close;
-
-L_Please_Visit:
- mes "[Angela]";
- mes "\"Thank you so much for rescuing my beloved Cindy. Please come to visit us in our house at the beach.\"";
- next;
- mes "\"My husband is an adventurer like you, and I want to give you something he got on his travels to show my gratitude.\"";
- goto L_Close;
-
-L_Please_Visit_Again:
- mes "[Angela]";
- mes "\"Hello! You are welcome to visit us in our house at the beach everytime. Cindy loves to see you!\"";
- next;
- mes "\"If you have found any present boxes the Yetis took away, please bring them to our house. Usually, the Yetis are very shy... their behavior is a bit odd.\"";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- set .minlevel, 70;
- end;
-}
diff --git a/world/map/npc/031-1/dock.txt b/world/map/npc/031-1/dock.txt
deleted file mode 100644
index 1904487e..00000000
--- a/world/map/npc/031-1/dock.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-// The ferry dock
-
-031-1,110,108,0|script|Nivalis Koga|395,12,2
-{
- callfunc "BoardFerry";
- end;
-
-OnTouch:
- addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard";
- end;
-
-OnBoard:
- callfunc "BoardFerry";
- end;
-}
-
-031-1,99,109,0|script|Nivalis Dock|400,2,1
-{
- set @npc_distance, 3;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- callfunc "BoardFerry";
- end;
-}
-
-031-1,100,100,0|script|#NivalisDock|32767
-{
- end;
-
-OnCommandArrive:
- disablenpc "Nivalis Dock";
- enablenpc "Nivalis Koga";
- areatimer 0, "031-1", 97, 108, 108, 110, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock
- end;
-
-OnAreaWarp:
- callfunc "BoardFerry";
- end;
-
-OnCommandWarp:
- disablenpc "Nivalis Koga";
- enablenpc "Nivalis Dock";
- end;
-}
diff --git a/world/map/npc/031-1/frozenbeard.txt b/world/map/npc/031-1/frozenbeard.txt
deleted file mode 100644
index 94a20853..00000000
--- a/world/map/npc/031-1/frozenbeard.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-
-031-1,96,113,0|script|Frozenbeard|138
-{
-
- mes "[Frozenbeard]";
- mes "\"Yar! Do you need something, matey?\"";
- goto L_Main;
-
-L_Main:
- menu
- "Can you explain the Ferry?", L_Explain,
- "Nothing I guess", L_Close;
-
-L_Explain:
- mes "[Frozenbeard]";
- mes "\"Arrr mate! I pioneered the trade routes between Nivalis and the rest of the World, so now merchants and adventurers can travel to and fro without any hassle other than the harsh weather up here, yarr.\"";
- next;
- callfunc "FerryHelp";
- goto L_Main;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/031-1/house.txt b/world/map/npc/031-1/house.txt
deleted file mode 100644
index 7e086986..00000000
--- a/world/map/npc/031-1/house.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-// here is based on the queststatus for the rescue Cindy quest, if the player can enter
-// player can enter, if Cindy is already saved and the player has been invited, quest status > 2
-// author: Jenalya
-
-031-1,95,80,0|script|#Door|45,0,0
-{
- if (QL_CINDY == 3 || QL_CINDY == 4)
- goto L_Warp;
- message strcharinfo(0), "Door : ##BThe door is locked.";
- end;
-
-L_Warp:
- warp "031-2", 23, 28;
- end;
-}
diff --git a/world/map/npc/031-1/mapflags.txt b/world/map/npc/031-1/mapflags.txt
deleted file mode 100644
index 9b4dcc26..00000000
--- a/world/map/npc/031-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-031-1|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/031-2/_import.txt b/world/map/npc/031-2/_import.txt
deleted file mode 100644
index cfb6eb4a..00000000
--- a/world/map/npc/031-2/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 031-2: Angela's House
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 031-2
-npc: npc/031-2/_mobs.txt
-npc: npc/031-2/_nodes.txt
-npc: npc/031-2/_warps.txt
-npc: npc/031-2/angelaHouse.txt
-npc: npc/031-2/cindyHouse.txt
-npc: npc/031-2/mapflags.txt
diff --git a/world/map/npc/031-2/_mobs.txt b/world/map/npc/031-2/_mobs.txt
deleted file mode 100644
index b21a6a20..00000000
--- a/world/map/npc/031-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Angela's House mobs
-
diff --git a/world/map/npc/031-2/_nodes.txt b/world/map/npc/031-2/_nodes.txt
deleted file mode 100644
index f62ab315..00000000
--- a/world/map/npc/031-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Angela's House nodes
-
-// (no nodes)
diff --git a/world/map/npc/031-2/_warps.txt b/world/map/npc/031-2/_warps.txt
deleted file mode 100644
index 330cf262..00000000
--- a/world/map/npc/031-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Angela's House warps
-
-031-2,23,30|warp|-1,-1,031-1,95,81
-031-2,73,30|warp|-1,-1,031-1,90,116
diff --git a/world/map/npc/031-2/angelaHouse.txt b/world/map/npc/031-2/angelaHouse.txt
deleted file mode 100644
index 11eeaff6..00000000
--- a/world/map/npc/031-2/angelaHouse.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-// author: Jenalya
-// state0, 1, 2: you shouldn't be able to come here
-// state3: it's your first visit, you can choose a reward
-// state4: you can do daily quests with white and yellow presents boxes
-
-031-2,29,28,0|script|Angela#house|196
-{
- if (QL_CINDY == 4) goto L_Hello_Again;
- if (QL_CINDY == 3) goto L_Reward;
-
- mes "...";
- goto L_Close;
-
-L_Reward:
- mes "[Angela]";
- mes "\"Hello " + strcharinfo(0) + ", thank you again. I'm so glad Cindy is back home safe.\"";
- next;
- mes "\"As I told you, my husband is an adventurer. He is on one of his travels, so he couldn't rescue Cindy himself.\"";
- next;
- mes "\"I want to give you one of his treasures. Beside all the junk he brings, there are some very valuable things.\"";
- next;
- mes "\"This item is called the Rock Knife. When you wield it, you feel as robust as a rock.\"";
-
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- getitem "RockKnife", 1;
- set QL_CINDY, 4;
-
- next;
- mes "\"I hope this will be useful for you.\"";
- next;
- mes "\"I am so glad Cindy is safe. But there is still another problem. The Yetis took away all the white and yellow present boxes we wanted to bring to Santa!\"";
- next;
- mes "\"Usually, Yetis are very shy - I wonder why they did that. There is something strange going on.\"";
- next;
- mes "\"May I ask you for help again? I'll give you a small reward for every 3 boxes of one color you bring me.\"";
- goto L_Close;
-
-L_Full_Inv:
- mes "\"Oh, it seems you carry so much stuff - I will keep it for you until you can take it.\"";
- goto L_Close;
-
-L_Hello_Again:
- mes "[Angela]";
- mes "\"Hello! Good to see you again. Please warm yourself.\"";
- next;
- menu
- "I just wanted to say hello.",L_Close,
- "I have some yellow present boxes.",L_Yellow,
- "I have some white present boxes.",L_White;
-
-L_Yellow:
- set @dq_level, 70;
- set @dq_cost, 32;
- set @dq_count, 3;
- set @dq_name$, "YellowPresentBox";
- set @dq_friendly_name$, "yellow present box";
- set @dq_money, 5300;
- set @dq_exp, 1300;
-
- callfunc "DailyQuest";
- next;
- if (@dq_return == 4)
- mes "\"Santa will be glad to have them back.\"";
- goto L_Close;
-
-L_White:
- set @dq_level, 80;
- set @dq_cost, 64;
- set @dq_count, 3;
- set @dq_name$, "WhitePresentBox";
- set @dq_friendly_name$, "white present box";
- set @dq_money, 10800;
- set @dq_exp, 2800;
-
- callfunc "DailyQuest";
- next;
- if (@dq_return == 4)
- mes "\"You are a great help!\"";
- goto L_Close;
-
-L_Close:
- set @dq_level, 0;
- set @dq_cost, 0;
- set @dq_count, 0;
- set @dq_name$, "";
- set @dq_friendly_name$, "";
- set @dq_money, 0;
- set @dq_exp, 0;
- set @dq_return, 0;
- close;
-}
diff --git a/world/map/npc/031-2/cindyHouse.txt b/world/map/npc/031-2/cindyHouse.txt
deleted file mode 100644
index c1f0c1e3..00000000
--- a/world/map/npc/031-2/cindyHouse.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-// author: Jenalya
-// state0,1,2: you shouldn't be able to reach this place
-// state3 and greater: Cindy is saved, she says one of some random phrases
-
-031-2,27,26,0|script|Cindy#house|197
-{
- if (QL_CINDY == 3 || QL_CINDY == 4) goto L_Happy_Random;
-
- mes "...";
- goto L_Close;
-
-L_Happy_Random:
- getinventorylist;
- set @candy, rand(50);
- if (@inventorylist_count < 100 && @candy == 42)
- goto L_Candy;
-
- setarray @quote_Cindy$, "Thank you so much for rescuing me!",
- "My mother made really tasty cookies yesterday. But I already ate them all...",
- "I want to go ice skating tomorrow. That will be fun!",
- "I wonder when Daddy will come home next time. He always brings exciting stuff!",
- strcharinfo(0) + "! You're my hero!",
- "My mother is so upset about the Yetis - they are very very shy usually. You have to be lucky to see one. I wonder what's wrong with them.",
- "When I'm a little older, I want to travel like you and my father. I want to see every place on the world!",
- "Did you ever meet Santa? He's very kind! He always gives me some candy when we go to see him.",
- strcharinfo(0) + ", you are sooo strong! Amazing! But my dad is strong too!";
- set @random, rand(9);
- if (@random != 5)
- emotion EMOTE_HAPPY, strcharinfo(0);
- set @quote$, "\"" + @quote_Cindy$[@random] + "\"";
- mes "[Cindy]";
- mes @quote$;
- goto L_Close;
-
-L_Candy:
- mes "[Cindy]";
- mes "\"Santa gave me some candy! Please, take that!\"";
- getitem "Candy", 1;
- goto L_Close;
-
-L_Close:
- set @candy, 0;
- set @inventorylist_count, 0;
- set @random, 0;
- set @quote$, "";
- close;
-}
diff --git a/world/map/npc/031-2/mapflags.txt b/world/map/npc/031-2/mapflags.txt
deleted file mode 100644
index e188a3e0..00000000
--- a/world/map/npc/031-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-031-2|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/031-3/_import.txt b/world/map/npc/031-3/_import.txt
deleted file mode 100644
index bd4af770..00000000
--- a/world/map/npc/031-3/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 031-3: Ice Labyrinth
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 031-3
-npc: npc/031-3/_mobs.txt
-npc: npc/031-3/_nodes.txt
-npc: npc/031-3/_warps.txt
-npc: npc/031-3/labyrinth.txt
-npc: npc/031-3/mapflags.txt
diff --git a/world/map/npc/031-3/_mobs.txt b/world/map/npc/031-3/_mobs.txt
deleted file mode 100644
index 2004a2f2..00000000
--- a/world/map/npc/031-3/_mobs.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Ice Labyrinth mobs
-
-031-3,230,279,25,26|monster|IceGoblin|1058,5,100000ms,30000ms
-031-3,195,277,25,26|monster|IceGoblin|1058,3,100000ms,30000ms
-031-3,213,282,66,43|monster|Bat|1017,5,100000ms,30000ms
-031-3,37,213,27,23|monster|Yeti|1072,2,100000ms,30000ms
-031-3,35,212,27,23|monster|Bat|1017,11,100000ms,30000ms
-031-3,38,147,44,68|monster|Moggun|1061,19,100000ms,30000ms
-031-3,97,261,42,22|monster|Moggun|1061,5,100000ms,30000ms
-031-3,97,291,42,22|monster|Moggun|1061,5,100000ms,30000ms
-031-3,36,148,64,43|monster|Bat|1017,11,100000ms,30000ms
-031-3,97,277,22,42|monster|Bat|1017,11,100000ms,30000ms
-031-3,148,282,22,42|monster|Bat|1017,11,100000ms,30000ms
-031-3,145,293,25,26|monster|IceGoblin|1058,6,100000ms,30000ms
-031-3,98,214,39,44|monster|IceElement|1071,2,100000ms,30000ms
-031-3,99,214,25,26|monster|IceGoblin|1058,3,100000ms,30000ms
-031-3,198,144,29,53|monster|IceGoblin|1058,4,100000ms,30000ms
-031-3,97,291,42,22|monster|Moggun|1061,5,100000ms,30000ms
-031-3,278,282,33,14|monster|IceGoblin|1058,5,100000ms,30000ms
-031-3,98,214,39,44|monster|IceElement|1071,2,100000ms,30000ms
-031-3,285,218,8,75|monster|IceElement|1071,2,100000ms,30000ms
-031-3,283,217,41,64|monster|Bat|1017,15,100000ms,30000ms
-031-3,282,237,63,20|monster|Moggun|1061,3,100000ms,30000ms
-031-3,282,196,62,16|monster|Moggun|1061,3,100000ms,30000ms
-031-3,229,226,27,34|monster|Yeti|1072,3,100000ms,30000ms
-031-3,230,227,12,42|monster|IceGoblin|1058,5,100000ms,30000ms
-031-3,209,199,12,17|monster|Yeti|1072,2,100000ms,30000ms
-031-3,193,216,12,17|monster|Yeti|1072,1,100000ms,30000ms
-031-3,213,282,66,43|monster|Bat|1017,5,100000ms,30000ms
-031-3,213,282,66,43|monster|Pollett|1113,5,100000ms,30000ms
-031-3,199,200,45,14|monster|Bat|1017,13,100000ms,30000ms
-031-3,209,199,12,17|monster|Yeti|1072,2,100000ms,30000ms
-031-3,234,141,18,19|monster|Yeti|1072,2,100000ms,30000ms
-031-3,282,196,62,16|monster|Moggun|1061,3,100000ms,30000ms
-031-3,212,159,62,16|monster|Moggun|1061,7,100000ms,30000ms
-031-3,212,159,62,16|monster|Moggun|1061,7,100000ms,30000ms
-031-3,212,130,62,16|monster|Moggun|1061,7,100000ms,30000ms
-031-3,284,143,40,48|monster|Moggun|1061,7,100000ms,30000ms
-031-3,283,84,36,31|monster|Bat|1017,15,100000ms,30000ms
-031-3,283,84,36,31|monster|Bat|1017,15,100000ms,30000ms
-031-3,274,81,15,32|monster|Yeti|1072,2,100000ms,30000ms
-031-3,40,53,44,68|monster|Moggun|1061,10,100000ms,30000ms
-031-3,120,160,85,30|monster|Yeti|1072,4,100000ms,30000ms
-031-3,121,131,82,24|monster|Yeti|1072,8,100000ms,30000ms
-031-3,107,130,25,26|monster|IceGoblin|1058,6,100000ms,30000ms
-031-3,145,160,25,24|monster|IceGoblin|1058,6,100000ms,30000ms
-031-3,94,167,25,24|monster|IceGoblin|1058,6,100000ms,30000ms
-031-3,282,37,31,28|monster|IceElement|1071,5,100000ms,30000ms
-031-3,213,36,64,32|monster|IceElement|1071,5,100000ms,30000ms
-031-3,228,83,31,28|monster|IceElement|1071,3,100000ms,30000ms
-031-3,283,138,15,13|monster|IceElement|1071,1,100000ms,30000ms
-031-3,198,83,31,28|monster|IceElement|1071,3,100000ms,30000ms
-031-3,214,75,25,26|monster|IceGoblin|1058,3,100000ms,30000ms
-031-3,217,37,66,43|monster|Bat|1017,10,100000ms,30000ms
-031-3,39,52,64,56|monster|Bat|1017,5,100000ms,30000ms
-031-3,39,274,64,56|monster|Bat|1017,10,100000ms,30000ms
-031-3,119,51,39,64|monster|Bat|1017,10,100000ms,30000ms
-031-3,119,50,57,51|monster|IceElement|1071,5,100000ms,30000ms
-031-3,120,79,20,17|monster|Yeti|1072,2,100000ms,30000ms
-031-3,37,284,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,28,255,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-031-3,212,277,14,9|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,289,295,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,292,288,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-031-3,296,233,7,6|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,271,222,7,6|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,281,215,55,21|monster|BlueSlime|1091,5,100000ms,30000ms
-031-3,126,35,6,5|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,143,124,34,22|monster|BlueSlime|1091,2,100000ms,30000ms
-031-3,48,65,14,9|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,37,113,5,13|monster|BlueSlime|1091,1,100000ms,30000ms
-031-3,136,227,14,9|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,152,218,13,17|monster|BlueSlime|1091,4,100000ms,30000ms
-031-3,135,206,9,6|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,154,202,7,7|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,136,216,6,4|monster|BlueSlime|1091,2,100000ms,30000ms
-031-3,112,276,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,143,294,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,149,268,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,136,264,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,157,283,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,139,264,25,19|monster|BlueSlime|1091,4,100000ms,30000ms
-031-3,24,265,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,52,280,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,37,254,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,24,290,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,48,298,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,53,260,6,4|monster|WhiteSlime|1093,7,100000ms,30000ms
-031-3,23,275,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-031-3,37,272,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-031-3,52,285,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
diff --git a/world/map/npc/031-3/_nodes.txt b/world/map/npc/031-3/_nodes.txt
deleted file mode 100644
index 38ed7558..00000000
--- a/world/map/npc/031-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Ice Labyrinth nodes
-
-// (no nodes)
diff --git a/world/map/npc/031-3/_warps.txt b/world/map/npc/031-3/_warps.txt
deleted file mode 100644
index 58974492..00000000
--- a/world/map/npc/031-3/_warps.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Ice Labyrinth warps
-
-031-3,212,300|warp|-1,-1,031-1,76,25
-031-3,205,264|warp|-1,-1,031-3,150,260
-031-3,149,259|warp|-1,-1,031-3,206,265
-031-3,225,282|warp|-1,-1,031-3,274,299
-031-3,274,300|warp|-1,-1,031-3,225,283
-031-3,283,271|warp|-1,-1,031-3,269,244
-031-3,269,245|warp|-1,-1,031-3,283,272
-031-3,148,150|warp|-1,-1,031-3,128,134
-031-3,139,258|warp|-1,-1,031-3,156,196
-031-3,155,195|warp|-1,-1,031-3,139,259
-031-3,142,301|warp|-1,-1,031-3,98,300
-031-3,97,301|warp|-1,-1,031-3,143,300
-031-3,135,196|warp|-1,-1,031-3,106,231
-031-3,106,232|warp|-1,-1,031-3,135,197
-031-3,286,190|warp|-1,-1,031-3,227,241
-031-3,227,242|warp|-1,-1,031-3,286,191
-031-3,236,211|warp|-1,-1,031-3,187,227
-031-3,187,228|warp|-1,-1,031-3,236,212
-031-3,94,254|warp|-1,-1,031-3,54,251
-031-3,54,250|warp|-1,-1,031-3,94,255
-031-3,103,199|warp|-1,-1,031-3,52,176
-031-3,52,177|warp|-1,-1,031-3,103,200
-031-3,212,193|warp|-1,-1,031-3,207,167
-031-3,207,168|warp|-1,-1,031-3,212,194
-031-3,235,167|warp|-1,-1,031-3,195,123
-031-3,195,122|warp|-1,-1,031-3,235,166
-031-3,296,97|warp|-1,-1,031-3,292,124
-031-3,292,123|warp|-1,-1,031-3,296,96
-031-3,289,164|warp|-1,-1,031-3,228,122
-031-3,228,121|warp|-1,-1,031-3,289,163
-031-3,24,157|warp|-1,-1,031-3,31,143
-031-3,31,144|warp|-1,-1,031-3,24,158
-031-3,36,249|warp|-1,-1,031-3,35,225
-031-3,35,226|warp|-1,-1,031-3,36,250
-031-3,34,25|warp|-1,-1,031-3,281,24
-031-3,281,22|warp|-1,-1,031-3,34,27
-031-3,283,48|warp|-1,-1,031-3,275,74
-031-3,275,73|warp|-1,-1,031-3,283,47
-031-3,26,178|warp|-1,-1,031-3,36,201
-031-3,36,200|warp|-1,-1,031-3,26,177
-031-3,91,125|warp|-1,-1,031-3,36,79
-031-3,36,80|warp|-1,-1,031-3,91,126
-031-3,52,78|warp|-1,-1,031-3,192,71
-031-3,192,70|warp|-1,-1,031-3,52,77
-031-3,128,135|warp|-1,-1,031-3,148,151
-031-3,232,93|warp|-1,-1,031-3,234,26
-031-3,234,25|warp|-1,-1,031-3,232,92
-031-3,200,50|warp|-1,-1,031-3,136,30
-031-3,136,29|warp|-1,-1,031-3,200,49
diff --git a/world/map/npc/031-3/labyrinth.txt b/world/map/npc/031-3/labyrinth.txt
deleted file mode 100644
index 2213624d..00000000
--- a/world/map/npc/031-3/labyrinth.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// Conditional warp for yeti cave
-// Authors: Jenalya
-
-031-3,46,24,0|script|#YetiBarrier-outside|45,0,0
-{
- if ($@FIGHT_YETI_STATUS == 1) goto L_Blocked;
- warp "031-4", 40, 70;
- end;
-
-L_Blocked:
- message strcharinfo(0), "A force field seems to be blocking you from entering.";
- end;
-}
diff --git a/world/map/npc/031-3/mapflags.txt b/world/map/npc/031-3/mapflags.txt
deleted file mode 100644
index 205f7580..00000000
--- a/world/map/npc/031-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-031-3|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/031-4/_import.txt b/world/map/npc/031-4/_import.txt
deleted file mode 100644
index 250e5b20..00000000
--- a/world/map/npc/031-4/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 031-4: Cindy Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 031-4
-npc: npc/031-4/_mobs.txt
-npc: npc/031-4/_nodes.txt
-npc: npc/031-4/_warps.txt
-npc: npc/031-4/barrier.txt
-npc: npc/031-4/cindyCave.txt
-npc: npc/031-4/mapflags.txt
diff --git a/world/map/npc/031-4/_mobs.txt b/world/map/npc/031-4/_mobs.txt
deleted file mode 100644
index 891a5cd7..00000000
--- a/world/map/npc/031-4/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cindy Cave mobs
-
diff --git a/world/map/npc/031-4/_nodes.txt b/world/map/npc/031-4/_nodes.txt
deleted file mode 100644
index 11486912..00000000
--- a/world/map/npc/031-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cindy Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/031-4/_warps.txt b/world/map/npc/031-4/_warps.txt
deleted file mode 100644
index 5b691beb..00000000
--- a/world/map/npc/031-4/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cindy Cave warps
-
diff --git a/world/map/npc/031-4/barrier.txt b/world/map/npc/031-4/barrier.txt
deleted file mode 100644
index 1d570c69..00000000
--- a/world/map/npc/031-4/barrier.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-031-4,40,71,0|script|#YetiBarrier-inside|45,0,0
-{
- if ($@FIGHT_YETI_STATUS == 1) goto L_Block;
- warp "031-3", 46, 25;
- end;
-
-L_Block:
- message strcharinfo(0), "A force field seems to be blocking you from exiting.";
- end;
-}
diff --git a/world/map/npc/031-4/cindyCave.txt b/world/map/npc/031-4/cindyCave.txt
deleted file mode 100644
index 1655205f..00000000
--- a/world/map/npc/031-4/cindyCave.txt
+++ /dev/null
@@ -1,232 +0,0 @@
-// author: Jenalya
-// state0: Cindy is totally scared and does nothing helpful
-// state1: you are able to open the cage
-// state2: Cindy is saved, she gives you a reward (wizard hat or wooden staff)
-// state3: and greater: Cindy is saved, she asks you to visit them
-
-031-4,42,42,0|script|Cindy|198
-{
- if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti;
-
- set @KEYS_AMOUNT, 10;
- set @minlevel, 70;
-
- if (QL_CINDY == 4) goto L_Please_Visit;
- if (QL_CINDY == 2) goto L_Reward;
- if (QL_CINDY == 1) goto L_Please_Help;
-
- mes "There is a little girl in a cage. As you come near, she starts to shiver and back off from you as far as she can in that small cage.";
- next;
- mes "You don't know what to do.";
- goto L_Close;
-
-L_Please_Help:
- mes "There is a little girl in a cage. As you come near, she starts to shiver and back off from you as far as she can in that small cage.";
- next;
- menu
- "Hello Cindy, I'm here to save you.", L_Next;
-
-L_Next:
- mes "Cindy doesn't look so scared anymore.";
- next;
- mes "[Cindy]";
- mes "\"Hello, adventurer. Did my mother send you?\"";
- next;
- mes "\"It's so cold in here! Can you please open the cage?\"";
- next;
- mes "\"But be careful. If the Yetis hear you, they will come!\"";
- menu
- "Try to open the cage", L_Try_Cage,
- "Leave", L_Close;
-
-L_Try_Cage:
- if (BaseLevel < @minlevel)
- goto L_To_Weak;
- if (countitem("TreasureKey") < @KEYS_AMOUNT)
- goto L_Not_Enough_Keys;
- delitem "TreasureKey", @KEYS_AMOUNT;
- mes "As you try to open the door of the cage, there is a loud squeaking noise.";
- next;
- mes "You get an uncomfortable feeling and Cindy starts to shiver.";
- if ($@FIGHT_YETI_STATUS != 0)
- goto L_Yeti;
- npctalk strnpcinfo(0), "Oh no, the Yetis...";
-
- // initialize fight
- set $@FIGHT_YETI_STATUS, 1;
- set $@FIGHT_YETI_WAVE, 0;
- set $@YETI_COUNT, 1;
- set $@FIGHT_YETI_PLAYER_COUNT, getmapusers("031-4");
- areamonster "031-4", 0, 0, 95, 91, "", 1072, 1, "Cindy::OnPetDeath";
-
- initnpctimer;
- goto L_Close;
-
-L_Yeti:
- mes "[Cindy]";
- mes "\"Watch out, the Yetis!\"";
- goto L_Close;
-
-L_Reward:
- mes "[Cindy]";
- mes "\"You are a hero! All these strong monsters!\"";
- next;
- mes "\"I've found this thing in the cave - it looks valuable. I want you to have it.\"";
- next;
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
-
- set @reward, rand(15);
- if (@reward < 10)
- goto L_Wizard_Hat;
- getitem "WoodenStaff", 1;
- set QL_CINDY, 3;
- goto L_Visit;
-
-L_Wizard_Hat:
- // get a wizard hat in one of the ten colors - no white
- setarray @wizardhats[0], 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209;
- getitem @wizardhats[@reward], 1;
- set QL_CINDY, 3;
- goto L_Visit;
-
-L_Visit:
- mes "\"Thank you so much; please come to my home. It's the house at the beach.\"";
- next;
- mes "\"I'm sure my mother wants to thank you as well.\"";
- goto L_Close;
-
-L_Please_Visit:
- mes "[Cindy]";
- mes "\"Thank you, thank you! You're a hero! Please come home with me to our house at the beach!\"";
- goto L_Close;
-
-L_To_Weak:
- mes "You try to open the cage, but it's stuck. It seems you're too weak!";
- goto L_Close;
-
-L_Not_Enough_Keys:
- mes "You don't have enough keys to open the cage.";
- goto L_Close;
-
-L_Full_Inv:
- mes "\"Oh, it seems you carry so much stuff - I will keep it for you until you can take it.\"";
- goto L_Close;
-
-L_Close:
- set @KEYS_AMOUNT, 0;
- set @minlevel, 0;
- set @inventorylist_count, 0;
- cleararray @wizardhats, 0, 10;
- set @reward, 0;
- close;
-
-// Fight logic attached to npc
-OnTimer5000:
- setnpctimer 0;
- if ($@FIGHT_YETI_STATUS != 0)
- goto L_CaveLogic;
- goto L_Return_1;
-
-L_Return_1:
- set $@FIGHT_YETI_PLAYER_COUNT, 0;
- areatimer 0, "031-4", 0, 0, 95, 91, 10, "Cindy::OnTick";
- end;
-
-L_CaveLogic:
- set $@FIGHT_YETI_ROUND_PEN, $@FIGHT_YETI_PLAYER_COUNT;
- if ($@FIGHT_YETI_ROUND_PEN > 60)
- set $@FIGHT_YETI_ROUND_PEN, 60;
- if ($@FIGHT_YETI_PLAYER_COUNT <= 0)
- goto L_CleanUp;
- set $@FIGHT_YETI_ROUND_TIMER, $@FIGHT_YETI_ROUND_TIMER + 5; // Advance 5 seconds
- if (mobcount("031-4", "Cindy::OnPetDeath") < 0)
- goto L_NextWave;
- if ($@FIGHT_YETI_ROUND_TIMER + $@FIGHT_YETI_ROUND_PEN >= 120)
- goto L_NextWave;
- goto L_Return_1;
-
-L_NextWave:
- set $@FIGHT_YETI_ROUND_TIMER, 0;
- set $@FIGHT_YETI_WAVE, $@FIGHT_YETI_WAVE + 1;
- if ($@FIGHT_YETI_WAVE > 10
- && $@YETI_COUNT == 0)
- goto L_CleanUp;
- if ($@FIGHT_YETI_WAVE > 10
- && $@FIGHT_YETI_WAVE < 22)
- goto L_Return_1;
- if ($@FIGHT_YETI_WAVE > 22)
- areamonster "031-4", 0, 0, 95, 91, "", 1072, $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5, "Cindy::OnPetDeath";
- if ($@FIGHT_YETI_WAVE > 22)
- set $@YETI_COUNT, $@YETI_COUNT + $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5;
- set $@FIGHT_YETI_NUMBER, (5 + (1 * $@FIGHT_YETI_WAVE) + (2 * $@FIGHT_YETI_PLAYER_COUNT))/4;
- set $@YETI_COUNT, $@YETI_COUNT + $@FIGHT_YETI_NUMBER;
-
- areamonster "031-4", 0, 0, 95, 91, "", 1072, $@FIGHT_YETI_NUMBER, "Cindy::OnPetDeath";
-
- set $@msg$, $@FIGHT_YETI_MESSAGES$[$@FIGHT_YETI_WAVE];
- if ($@msg$ == "")
- goto L_Return_1;
- mapannounce "031-4", $@msg$, 0;
- mapannounce "031-3", $@msg$, 0;
- set $@msg$, "";
- goto L_Return_1;
-
-// Called on each player once every 5 seconds
-OnTick:
- if (isdead()) end;
- set $@FIGHT_YETI_PLAYER_COUNT, $@FIGHT_YETI_PLAYER_COUNT + 1;
- end;
-
-OnPetDeath:
- set $@YETI_COUNT, $@YETI_COUNT - 1;
- end;
-
-L_CleanUp:
- areatimer 0, "031-4", 0, 0, 95, 91, 10, "Cindy::OnReward";
- set $@FIGHT_YETI_STATUS, 0;
- set $@FIGHT_YETI_PLAYER_COUNT, 0;
- set $@FIGHT_YETI_WAVE, 0;
- set $@FIGHT_YETI_ROUND_TIMER, 0;
- set $@YETI_COUNT, 0;
- set $@FIGHT_YETI_ROUND_PEN, 0;
- set $@FIGHT_YETI_NUMBER, 0;
- killmonster "031-4", "Cindy::OnPetDeath";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnReward:
- if (isdead()) end;
- set @bonus, (BaseLevel/2);
- set DailyQuestBonus, DailyQuestBonus + @bonus;
- message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
- if (QL_CINDY != 1 )
- goto L_End;
- set QL_CINDY, 2;
- message strcharinfo(0), "Cindy looks relieved and as if she wants to talk with you.";
- set BOSS_POINTS, BOSS_POINTS + 70;
- message strcharinfo(0), "You gain 70 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_End;
-
-L_End:
- set @bonus, 0;
- end;
-
-OnInit:
- setarray $@FIGHT_YETI_MESSAGES$[0],
- "", // unused
- // " : " is magic so that it says "global announcement from"
- "Cindy : Yetis!",
- "Cindy : Watch out!",
- "Cindy : More of them are coming!",
- "Cindy : Be careful! More of them!",
- "Cindy : Attention! There is another bunch of them!",
- "Cindy : Hang on! More of them!",
- "Cindy : More Yetis! Will this never end?",
- "Cindy : There are coming more and more!",
- "Cindy : Watch your back! There are so many of them!",
- "Cindy : This seems to be their final attack! I believe in you!";
- end;
-}
diff --git a/world/map/npc/031-4/mapflags.txt b/world/map/npc/031-4/mapflags.txt
deleted file mode 100644
index 11b07dc8..00000000
--- a/world/map/npc/031-4/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-031-4|mapflag|nosave|031-3,46,26
-031-4|mapflag|resave|031-3,46,26
diff --git a/world/map/npc/032-3/_import.txt b/world/map/npc/032-3/_import.txt
deleted file mode 100644
index 09f9448c..00000000
--- a/world/map/npc/032-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 032-3: Outback Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 032-3
-npc: npc/032-3/_mobs.txt
-npc: npc/032-3/_nodes.txt
-npc: npc/032-3/_warps.txt
-npc: npc/032-3/mapflags.txt
diff --git a/world/map/npc/032-3/_mobs.txt b/world/map/npc/032-3/_mobs.txt
deleted file mode 100644
index b84e45f3..00000000
--- a/world/map/npc/032-3/_mobs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Outback Cave mobs
-
-032-3,90,44,9,10|monster|Skeleton|1043,3,30000ms,100000ms
-032-3,44,23,29,22|monster|MountainSnake|1026,7,30000ms,100000ms
-032-3,125,46,35,75|monster|Snake|1010,13,30000ms,100000ms
-032-3,80,44,9,10|monster|BlackScorpion|1009,5,30000ms,100000ms
-032-3,85,33,9,10|monster|Spider|1012,5,30000ms,100000ms
-032-3,83,18,37,9|monster|Archant|1060,8,30000ms,100000ms
-032-3,78,76,24,21|monster|Archant|1060,8,30000ms,100000ms
-032-3,25,76,24,21|monster|YellowSlime|1007,11,300000ms,1000000ms
-032-3,46,51,34,18|monster|CaveMaggot|1056,11,30000ms,100000ms
-032-3,0,0,0,0|monster|Bat|1017,25,30000ms,100000ms
diff --git a/world/map/npc/032-3/_nodes.txt b/world/map/npc/032-3/_nodes.txt
deleted file mode 100644
index 87034821..00000000
--- a/world/map/npc/032-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Outback Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/032-3/_warps.txt b/world/map/npc/032-3/_warps.txt
deleted file mode 100644
index 7a3cc571..00000000
--- a/world/map/npc/032-3/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Outback Cave warps
-
-032-3,128,34|warp|-1,-1,006-1,30,124
-032-3,56,61|warp|-1,-1,006-1,111,111
diff --git a/world/map/npc/032-3/mapflags.txt b/world/map/npc/032-3/mapflags.txt
deleted file mode 100644
index b7e94a3e..00000000
--- a/world/map/npc/032-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-032-3|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/033-1/_import.txt b/world/map/npc/033-1/_import.txt
deleted file mode 100644
index 60a3096a..00000000
--- a/world/map/npc/033-1/_import.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// Map 033-1: snow Path
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 033-1
-npc: npc/033-1/_mobs.txt
-npc: npc/033-1/_nodes.txt
-npc: npc/033-1/_warps.txt
-npc: npc/033-1/backDoor.txt
-npc: npc/033-1/barbarianinit.txt
-npc: npc/033-1/birrod.txt
-npc: npc/033-1/kimarr.txt
-npc: npc/033-1/mapflags.txt
-npc: npc/033-1/traveler.txt
-npc: npc/033-1/yerrnk.txt
diff --git a/world/map/npc/033-1/_mobs.txt b/world/map/npc/033-1/_mobs.txt
deleted file mode 100644
index 2eb36796..00000000
--- a/world/map/npc/033-1/_mobs.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Path mobs
-
-033-1,73,49,10,18|monster|Wolvern|1090,2,100000ms,30000ms
-033-1,33,38,15,49|monster|Reinboo|1094,3,100000ms,30000ms
-033-1,56,87,50,42|monster|Squirrel|1038,15,100000ms,30000ms
-033-1,0,0,0,0|monster|WhiteBell|1095,3,100000ms,30000ms
diff --git a/world/map/npc/033-1/_nodes.txt b/world/map/npc/033-1/_nodes.txt
deleted file mode 100644
index 3842473e..00000000
--- a/world/map/npc/033-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Path nodes
-
-// (no nodes)
diff --git a/world/map/npc/033-1/_warps.txt b/world/map/npc/033-1/_warps.txt
deleted file mode 100644
index cc2d8af8..00000000
--- a/world/map/npc/033-1/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Path warps
-
-033-1,22,20|warp|-1,0,034-1,159,19
-033-1,119,70|warp|-1,0,019-1,22,69
diff --git a/world/map/npc/033-1/backDoor.txt b/world/map/npc/033-1/backDoor.txt
deleted file mode 100644
index 2740841b..00000000
--- a/world/map/npc/033-1/backDoor.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-033-1,86,28,0|script|#KimarrBackDoor|45,0,0
-{
- if ($@Fluffy_Hunting == 0)
- goto L_Warp;
- end;
-
-L_Warp:
- warp "033-1", 77, 30;
- end;
-}
diff --git a/world/map/npc/033-1/barbarianinit.txt b/world/map/npc/033-1/barbarianinit.txt
deleted file mode 100644
index 2523ebae..00000000
--- a/world/map/npc/033-1/barbarianinit.txt
+++ /dev/null
@@ -1,26 +0,0 @@
--|script|#barbarian033_1init|32767
-{
- end;
-
-OnInit:
- set $@Q_Barbarians_MASK, NIBBLE_0_MASK;
- set $@Q_Barbarians_SHIFT, NIBBLE_0_SHIFT;
- set $@Q_Barbarians_wolvern_amount, 16;
- set $@Q_Barbarians_Ambush_max, 0x00007FFF;
- set $@Q_Barbarians_Ambush0_flag, 0x00000001;
- set $@Q_Barbarians_Ambush1_flag, 0x00000002;
- set $@Q_Barbarians_Ambush2_flag, 0x00000004;
- set $@Q_Barbarians_Ambush3_flag, 0x00000008;
- set $@Q_Barbarians_Ambush4_flag, 0x00000010;
- set $@Q_Barbarians_Ambush5_flag, 0x00000020;
- set $@Q_Barbarians_Ambush6_flag, 0x00000040;
- set $@Q_Barbarians_Ambush7_flag, 0x00000080;
- set $@Q_Barbarians_Ambush8_flag, 0x00000100;
- set $@Q_Barbarians_Ambush9_flag, 0x00000200;
- set $@Q_Barbarians_Ambush10_flag, 0x00000400;
- set $@Q_Barbarians_Ambush11_flag, 0x00000800;
- set $@Q_Barbarians_Ambush12_flag, 0x00001000;
- set $@Q_Barbarians_Ambush13_flag, 0x00002000;
- set $@Q_Barbarians_Ambush14_flag, 0x00004000;
- end;
-}
diff --git a/world/map/npc/033-1/birrod.txt b/world/map/npc/033-1/birrod.txt
deleted file mode 100644
index 19586e51..00000000
--- a/world/map/npc/033-1/birrod.txt
+++ /dev/null
@@ -1,264 +0,0 @@
-033-1,72,27,0|script|Birrod|217
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set @wolvern_level, 40; // minimum level to do the wolvern hunting
- set @wolvern_exp, 5000;
-
- set @minigame_exp, 5000;
-
- if (@state >= 6) goto L_Impressed;
- if (@state == 5) goto L_Questions;
- if (@state == 4) goto L_Wolverns;
- if (@state == 3) goto L_Hunting;
- if (@state == 2) goto L_Kimarr;
- if (@state == 1) goto L_Fluffy;
-
- mes "[Barbarian]";
- mes "\"Welcome. My name is Birrod, warrior of the Mangarr.";
- mes "We usually live high up in the snowy mountains, but we need to solve a problem, so we came down here.\"";
- next;
- mes "\"But this shouldn't concern you.\"";
- goto L_Close;
-
-L_Fluffy:
- mes "[Birrod]";
- mes "\"Kimarr asked you to perform the Fluffy hunting? I'm curious how you're going to do it.\"";
- mes "He grins.";
- goto L_Close;
-
-L_Kimarr:
- mes "[Birrod]";
- mes "\"Great! Very well done! Welcome to our tribe.\"";
- next;
- mes "\"I think Kimarr has something for you.\"";
- goto L_Close;
-
-L_Hunting:
- if (BaseLevel < @wolvern_level)
- goto L_Weak;
- mes "[Birrod]";
- mes "\"Hello, " + strcharinfo(0) + "! Would you like to prove your hunting skills again?\"";
- next;
- mes "\"I noticed some groups of Wolverns in the forest west of here which are unusually aggressive.";
- mes "This makes it dangerous for all the small people from the nearby town to go there.\"";
- next;
- mes "\"To prove your skills, go to the forest and hunt down " + $@Q_Barbarians_wolvern_amount + " of the very aggressive Wolverns.\"";
- next;
- mes "\"There are also some Wolverns that behave normally and attack you only when you come too close to them.";
- mes "Those are not the ones I mean, but those that seek the battle themselves.\"";
- set @state, 4;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Wolverns:
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- goto L_Wolverns_Done;
- mes "[Birrod]";
- mes "\"Greetings, my friend.";
- mes "The aggressive wolverns are still roaming the forest west of here.\"";
- next;
- mes "\"This is your chance to prove your worth.\"";
- goto L_Close;
-
-L_Wolverns_Done:
- set @state, 5;
- callsub S_Update_Mask;
- set wolvern_count, 0;
- mes "[Birrod]";
- mes "\"" + strcharinfo(0) + "!";
- mes "Good work. This area is much safer now.\"";
- next;
- getexp @wolvern_exp, 0;
- if (getskilllv(SKILL_POOL) == 0)
- goto L_Not_Ready;
- mes "\"Your skills are impressive. You are worthy to be called a warrior of the Mangarr, if you accept.\"";
- next;
- goto L_Questions;
-
-L_Questions:
- if (getskilllv(SKILL_POOL) == 0)
- goto L_Not_Ready;
- mes "Birrod has a very solemn look on his face.";
- mes "[Birrod]";
- mes "\"" + strcharinfo(0) + ", are you ready to become a full-fledged member of our tribe, the Mangarr?\"";
- menu
- "Yes, what do I need to do?",L_Next,
- "That's why I'm here.",L_Next,
- "Sorry, I have to go. See you.",L_No_Member;
-
-L_Next:
- mes "Birrod nods earnestly.";
- mes "[Birrod]";
- mes "\"I will ask you some questions.";
- mes "Think well and be honest, because your answers will determine whether you are worthy.\"";
- next;
- mes "\"What's the most important thing for a true warrior?\"";
- menu
- "Strength!",L_Fail11,
- "A good weapon.",L_Fail12,
- "Bravery.",L_Success11;
-
-L_Fail11:
- mes "[Birrod]";
- mes "\"Strength is indeed important for a warrior. But before you can show strength, you need to have something else.\"";
- next;
- goto L_No_Member;
-
-L_Fail12:
- mes "[Birrod]";
- mes "\"Are you kidding?\"";
- next;
- goto L_No_Member;
-
-L_Success11:
- mes "[Birrod]";
- mes "\"Wise words.\"";
- next;
- mes "\"What would you do if you are wounded but Yetis are attacking our tribe?\"";
- menu
- "Run as fast as I can.",L_Fail21,
- "Fight no matter what.",L_Fail22,
- "Try to hold them back until everyone is safe, then retreat.",L_Success21;
-
-L_Fail21:
- mes "[Birrod]";
- mes "\"You will never become an accepted member of our tribe with that attitude.\"";
- next;
- goto L_No_Member;
-
-L_Fail22:
- mes "[Birrod]";
- mes "\"Honorable, but stupid.\"";
- next;
- goto L_No_Member;
-
-L_Success21:
- mes "[Birrod]";
- mes "\"Right.\"";
- next;
- mes "\"When you are on a hunting trip with your comrades and it's time to set up a camp in the evening, what things do you do?\"";
- menu
- "Take care of everyone who got wounded.",L_Success31,
- "Pitch the tent and make a fire.",L_Success32,
- "Lay down and rest.",L_Fail31;
-
-L_Success31:
- mes "[Birrod]";
- mes "\"You're a caring person. Good.\"";
- next;
- goto L_Success3;
-
-L_Success32:
- mes "[Birrod]";
- mes "\"You're diligent, good.\"";
- next;
- goto L_Success3;
-
-L_Fail31:
- mes "[Birrod]";
- mes "\"You wouldn't make friends that way.\"";
- next;
- goto L_No_Member;
-
-L_Success3:
- mes "\"What is your goal in life?\"";
- menu
- "Learn new things and see the world.",L_Success41,
- "Become as powerful as I can.",L_Fail41,
- "Protect the ones I love.",L_Success42;
-
-L_Success41:
- mes "[Birrod]";
- mes "\"You're curious. An attribute we appreciate.\"";
- next;
- goto L_Success4;
-
-L_Fail41:
- mes "[Birrod]";
- mes "\"You're seeking power? For what?\"";
- next;
- goto L_No_Member;
-
-L_Success42:
- mes "[Birrod]";
- mes "\"An honorable goal.\"";
- next;
- goto L_Success4;
-
-L_Success4:
- mes "\"What do you think is a good reason to fight and kill?\"";
- menu
- "Because I want it.",L_Fail51,
- "To survive.",L_Success51,
- "To protect someone in need.",L_Success52;
-
-L_Fail51:
- mes "[Birrod]";
- mes "\"You think so?\"";
- next;
- goto L_No_Member;
-
-L_Success51:
- mes "[Birrod]";
- mes "\"Right.\"";
- next;
- goto L_Success5;
-
-L_Success52:
- mes "[Birrod]";
- mes "\"Yes, that's the most honorable reason.\"";
- next;
- goto L_Success5;
-
-L_Success5:
- getexp @minigame_exp, 0;
- setskill SKILL_RAGING, 1;
- set @state, 6;
- callsub S_Update_Mask;
- mes "You feel an exciting energy inside you.";
- mes "[Birrod]";
- mes "\"You are now a warrior of the Mangarr.\"";
- next;
- mes "\"As a Mangarr warrior, you gain the ability to put back your own safety for Raging in battle with a tremendous power.";
- mes "This power now lies within you, waiting for someone to help you focus on it.\"";
- goto L_Close;
-
-L_Impressed:
- mes "[Birrod]";
- mes "\"I'm very proud that you're a member of the tribe.\"";
- goto L_Close;
-
-L_Not_Ready:
- mes "[Birrod]";
- mes "\"" + strcharinfo(0) + ", you've shown great hunting skills and are an enrichment to our tribe.";
- mes "But you still lack the needed mental skills to become a full member of our tribe.\"";
- next;
- mes "\"Roam this world to find more experienced persons than yourself to learn new things.";
- mes "Then come back when you've gained the ability to focus your mind.\"";
- goto L_Close;
-
-L_No_Member:
- mes "Birrod shakes his head.";
- mes "[Birrod]";
- mes "\"Think again about your position in our tribe and what you want to achieve.";
- mes "Come back when you feel better prepared.\"";
- goto L_Close;
-
-L_Weak:
- mes "[Birrod]";
- mes "\"Hello, " + strcharinfo(0) + "! I might have a task for you when you've grown up a bit.\"";
- goto L_Close;
-
-L_Close:
- set @state, 0;
- set @wolvern_level, 0;
- set @wolvern_exp, 0;
- set @minigame_exp, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Barbarians,
- (QUEST_Barbarians & ~($@Q_Barbarians_MASK)) | (@state << $@Q_Barbarians_SHIFT);
- return;
-}
diff --git a/world/map/npc/033-1/kimarr.txt b/world/map/npc/033-1/kimarr.txt
deleted file mode 100644
index 8a16ab93..00000000
--- a/world/map/npc/033-1/kimarr.txt
+++ /dev/null
@@ -1,577 +0,0 @@
-// Fluffy hunting quest
-// initially by Jenalya
-// more by alastrim
-// broken by o11c, then fixed
-
-// Variables:
-// global $@Fluffy_Hunting - state of the quest
-// 0: nobody is hunting
-// 1-2: 2 timer iterations to give time for the warp to finish.
-// 3: somebody is hunting. The script checks every second if there is food on the ground.
-// global $@Fluffy_Time - the number of seconds since you entered the area
-// global $@Fluffy_Spawn - how many fluffies have been spawned
-// global $@Fluffy_Kills - how many fluffies you have killed so far
-// global $@Fluffy_Min - how many fluffies you have to kill to get a reward
-// global $@Fluffy_Alive - how many fluffies are currently alive
-// global $@Fluffy_PC_Deaths - used to keep track of whether the fluffies kill you
-// global $@Fluffy_Fighter$ - name of the person hunting fluffies (only used for ornamentation)
-// global $@Fluffy_FighterID - ID of the person hunting fluffies
-// nibble 0 of QUEST_Barbarians - state for this and adjacent NPCs
-// 0: haven't talked about it
-// 1: heard about it
-// 2: finished quest
-// 3: got reward
-
-// Note: if you're going to reenable the "drop multiple times" feature
-// 1: please do it every second, not just once you've killed everything - Done
-// 2: you should change $@Fluffy_Spawn to $@Fluffy_Alive and decrement it on kills
-// Kept $@Fluffy_Spawn and added $@Fluffy_Alive. The script spawns the amount related to what you drop at each specific time.
-// 3: add a variable to spawn more fluffies if you drop more than 100 apples, as you kill them
-
-// Also, the $@Fluffy_Extra behaviour should be reconsidered (hardly anything spawns ...)
-// that's the only reason I didn't make that one a local variable like it really is
-
-
-033-1,74,32,0|script|Kimarr|218
-{
- set @halloween_npc_id, $@halloween_npc_kimarr;
- callfunc "TrickOrTreat";
-
- if ($@Fluffy_FighterID == getcharid(3))
- goto L_Attention;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- if (@state >= 3) goto L_Again;
- if (@state == 2) goto L_Reward;
- if (@state == 1) goto L_Ask;
-
- mes "[Barbarian]";
- mes "\"Greetings, little person.\"";
- next;
- mes "\"I am Kimarr, hunter and warrior of the Mangarr.\"";
- next;
- mes "\"You are very small and must be careful in these snowy mountains. It is cold, and dangerous monsters are here.\"";
- menu
- "Hello, my name is " + strcharinfo(0) + " and I'm not small. I'm a great warrior!",L_Next,
- "I'm " + strcharinfo(0) + ", don't underestimate me. I'm an experienced adventurer!",L_Next,
- "I'm the legendary " + strcharinfo(0) + ", I've fought countless battles.",L_Next;
-
-L_Next:
- mes "Kimarr seems to be amused.";
- mes "[Kimarr]";
- mes "\"Really? Do you want to prove it?\"";
- menu
- "Sure! What shall I do?",L_Continue,
- "No, I don't need to prove anything.",L_Close;
-
-L_Continue:
- mes "\"Every young member of our tribe proves his or her worth by hunting monsters.\"";
- next;
- mes "\"The first monsters to hunt are Fluffies. Fluffies give a good meal for a young person and the fur can be used to make clothes and blankets.\"";
- next;
- set @state, 1;
- callsub S_Update_Mask;
- goto L_ExplainGame;
-
-L_ExplainGame:
- mes "[Kimarr]";
- mes "\"In that cave there are living Fluffies. They like to eat apples.\"";
- next;
- mes "\"I also saw one of them getting excited about one of those sweet things you call 'cake'.\"";
- next;
- mes "\"Go to the cave entrance and throw food on the floor to make them come out.\"";
- next;
- mes "\"You should be careful, other monsters living here might like the food as well.\"";
- next;
- mes "\"Hunt as many Fluffies as you can until I tell you to stop.\"";
- next;
- mes "\"Drop more food when no Fluffies are left.\"";
- next;
- goto L_Ask;
-
-// dialog starts here if you've asked about it but not done it (@state == 1)
-L_Ask:
- if ($@KIMARR_EVENT)
- goto L_WithEvent;
- goto L_WithoutEvent;
-
-L_WithEvent:
- mes "[Kimarr]";
- mes "\"So, are you going to try?\"";
- menu
- "Yeah, let's start!",L_Game,
- "Could you explain again?",L_ExplainGame,
- "Can you tell me who were the most successful Fluffy hunters?",L_ShowRecord,
- "On the event, who were the most successful Fluffy hunters?",L_CRC_ShowRecord,
- "Maybe later.",L_Close;
-
-L_WithoutEvent:
- mes "[Kimarr]";
- mes "\"So, are you going to try?\"";
- menu
- "Yeah, let's start!",L_Game,
- "Could you explain again?",L_ExplainGame,
- "Can you tell me who were the most successful Fluffy hunters?",L_ShowRecord,
- "Maybe later.",L_Close;
-
-L_AlreadyGotReward:
- npctalk strnpcinfo(0), strcharinfo(0) + " killed " + $@Fluffy_Kills + " Fluffies and has once again proven to be a good hunter.";
- message strcharinfo(0), "Kimarr: Once again you prove your worth as a hunter! You killed " + $@Fluffy_Kills + " Fluffies.";
- callsub S_Clean;
- goto L_Close;
-
-L_Reward1:
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- if (@state >= 2)
- goto L_AlreadyGotReward;
-
- npctalk strnpcinfo(0), "Hooray! " + strcharinfo(0) + " killed " + $@Fluffy_Kills + " Fluffies and is now a worthy hunter.";
-
- // as far as I can tell, this fails because it won't resume from the "next"
- // when the script is executed via the "OnFluffyDeath" callback
- // (I haven't tried via the 301st call of OnTimer1000)
- message strcharinfo(0), "Kimarr: Hooray! You hunted " + $@Fluffy_Kills + " Fluffies. Talk to me for your reward.";
-
- set @state, 2;
- callsub S_Update_Mask;
- callsub S_Clean;
- goto L_Close;
-
-// this label is reached on completion of the quest, or, if you inventory was
-// full at the time, when you next initiate dialog (with @state == 2)
-L_Reward:
- mes "[Kimarr]";
- mes "\"That was very impressive. Now you can call yourself a hunter, " + strcharinfo(0) + ".\"";
- next;
-
- getinventorylist;
- if (@inventorylist_count == 100)
- goto L_Full_Inv;
- set @inventorylist_count, 0;
-
- mes "\"Take this as a symbol of your strength. You're a member of our tribe now.\"";
- getitem "YetiSkinShirt", 1;
- set @state, 3;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Full_Inv:
- mes "\"You can't carry the reward I want to give you.\"";
- goto L_Close;
-
-// dialog starts here after you've completed this quest
-L_Again:
- if ($@KIMARR_EVENT)
- goto L_AgainWithEvent;
- goto L_AgainWithoutEvent;
-
-L_AgainWithEvent:
- mes "[Kimarr]";
- mes "\"Does the hunter " + strcharinfo(0) + " want to hunt some Fluffies again?\"";
- menu
- "Yeah!",L_Game,
- "Can you tell me who were the most successful Fluffy hunters?",L_ShowRecord,
- "On the event, who were the most successful Fluffy hunters?",L_CRC_ShowRecord,
- "Not now.",L_Close;
-
-L_AgainWithoutEvent:
- mes "[Kimarr]";
- mes "\"Does the hunter " + strcharinfo(0) + " want to hunt some Fluffies again?\"";
- menu
- "Yeah!",L_Game,
- "Can you tell me who were the most successful Fluffy hunters?",L_ShowRecord,
- "Not now.",L_Close;
-
-L_Game:
- if ($@Fluffy_Hunting)
- goto L_Someone_Else;
- set $@Fluffy_Hunting, 1;
- set $@Fluffy_Kills, 0;
- set $@Fluffy_PC_Deaths, PC_DIE_COUNTER;
- set $@Fluffy_Fighter$, strcharinfo(0);
- set $@Fluffy_FighterID, getcharid(3);
- set $@Fluffy_Time, 180;
- set $@Fluffy_Min, 1 + (BaseLevel*7)/10;
-
- warp "033-1", 79, 34;
- initnpctimer;
- goto L_Close;
-
-L_Someone_Else:
- mes "[Kimarr]";
- mes "\"Someone else is hunting right now. Let's wait until that hunt has ended.\"";
- goto L_Close;
-
-L_Attention:
- message strcharinfo(0), "Kimarr: You should be focused on hunting Fluffies, not talking.";
- end;
-
-OnTimer1000:
-// Give 3 seconds, so the server can warp and the player can get ready
- if ($@Fluffy_Hunting == 3)
- goto L_Action;
- set $@Fluffy_Hunting, $@Fluffy_Hunting + 1;
- goto L_ContinueTimer;
-L_Action:
-// Checking if player is logged
- if (attachrid($@Fluffy_FighterID) == 0)
- goto L_GotOut;
-// Checking if player is still in the map or used a towel or spell to get out
- if (getareausers("033-1", 79, 28, 88, 42) == 0)
- goto L_GotOut;
- if (PC_DIE_COUNTER > $@Fluffy_PC_Deaths)
- goto L_Died;
-// Checking if there is more than 1 player in the fight area
- if (getareausers("033-1", 79, 28, 88, 42) > 1)
- areatimer 0, "033-1", 79, 28, 88, 42, 10, "Kimarr::OnTooMany";
-
- if ($@Fluffy_Time == 180)
- npctalk strnpcinfo(0), strcharinfo(0) + ", you have 3 minutes.";
- if ($@Fluffy_Time == 120)
- npctalk strnpcinfo(0), "You have 2 minutes left.";
- if ($@Fluffy_Time == 60)
- npctalk strnpcinfo(0), "You have 1 minute left.";
- if ($@Fluffy_Time == 30)
- npctalk strnpcinfo(0), "You have 30 seconds left.";
- if ($@Fluffy_Time == 15)
- npctalk strnpcinfo(0), "You have 15 seconds left.";
- if ($@Fluffy_Time == 10)
- npctalk strnpcinfo(0), "You have 10 seconds left.";
- if ($@Fluffy_Time == 5)
- npctalk strnpcinfo(0), "You have 5 seconds left.";
- set $@Fluffy_Time, $@Fluffy_Time - 1;
- if ($@Fluffy_Time < 0)
- goto L_TimeOver;
- goto L_CheckDrops;
-
-L_ContinueTimer:
- setnpctimer 0;
- end;
-
-L_GotOut:
- npctalk strnpcinfo(0), "What a strange thing... " + $@Fluffy_Fighter$ + " just disappeared!";
- callsub S_Clean;
- end;
-
-OnTooMany:
- if (getcharid(3) == $@Fluffy_FighterID)
- end;
- npctalk strnpcinfo(0), "Hey " + strcharinfo(0) + "! What are you doing there? This hunt is for " + $@Fluffy_Fighter$ + " alone!";
- warp "033-1", 77, 34;
- end;
-
-L_Died:
- warp "033-1", 77, 34;
- message strcharinfo(0), "You are dead.";
- npctalk strnpcinfo(0), "Oh no! " + $@Fluffy_Fighter$ + " got overwhelmed!";
- callsub S_Clean;
- end;
-
-L_TimeOver:
- message strcharinfo(0), "Your time is over.";
- goto L_MaybeRecordScore;
-
-L_CheckDrops:
- set @Fluffy_RedApple, getareadropitem("033-1", 79, 29, 88, 42, "RedApple", 1);
- set @Fluffy_XmasCake, getareadropitem("033-1", 79, 29, 88, 42, "XmasCake", 1);
- set @Fluffy_Cake, getareadropitem("033-1", 79, 29, 88, 42, "Cake", 1);
- set @Fluffy_GreenApple, getareadropitem("033-1", 79, 29, 88, 42, "GreenApple", 1);
- if (@Fluffy_RedApple || @Fluffy_XmasCake || @Fluffy_Cake || @Fluffy_GreenApple)
- goto L_BeginHunting;
- goto L_ContinueTimer;
-
-L_BeginHunting:
- set $@Fluffy_Spawn, @Fluffy_RedApple + 5 * @Fluffy_XmasCake + 3 * @Fluffy_Cake + @Fluffy_GreenApple;
- // limit the number of monsters that can be spawned, to prevent people creating lag with massive amount of monsters
- if (($@Fluffy_Spawn + $@Fluffy_Alive) <= 100)
- goto L_SpawnFluffies;
- message strcharinfo(0), "Wow, calm down, there are already too many Fluffies around here.";
- set $@Fluffy_Spawn, 100 - $@Fluffy_Alive;
- if ($@Fluffy_Spawn <= 0)
- goto L_ContinueTimer;
- goto L_SpawnFluffies;
-
-L_SpawnFluffies:
- areamonster "033-1", 79, 29, 88, 42, "", 1089, $@Fluffy_Spawn, "Kimarr::OnFluffyDeath";
-
- set $@Fluffy_Extra, 5 * @Fluffy_XmasCake + 3 * @Fluffy_Cake + 12 * ($@Fluffy_Alive + $@Fluffy_Spawn) + 7 * BaseLevel;
- if ((BaseLevel > 40) && (rand($@Fluffy_Extra) > 500)) // Ice Goblin
- areamonster "033-1", 79, 29, 88, 42, "", 1058, 1, "Kimarr::OnIceGoblinDeath";
- if ((BaseLevel > 60) && (rand($@Fluffy_Extra) > 550)) // Wolvern
- areamonster "033-1", 79, 29, 88, 42, "", 1090, 1, "Kimarr::OnWolvernDeath";
- if ((BaseLevel > 70) && (rand($@Fluffy_Extra) > 600)) // Yeti
- areamonster "033-1", 79, 29, 88, 42, "", 1072, 1, "Kimarr::OnYetiDeath";
-
- set $@Fluffy_Extra, 0;
- set @Fluffy_RedApple, 0;
- set @Fluffy_XmasCake, 0;
- set @Fluffy_Cake, 0;
- set @Fluffy_GreenApple, 0;
- set $@Fluffy_Alive, $@Fluffy_Alive + $@Fluffy_Spawn;
- goto L_ContinueTimer;
-
-OnIceGoblinDeath:
- set @MobID, 1058;
- if (getcharid(3) != $@Fluffy_FighterID)
- goto L_Punish;
- set @MobID, 0;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
- if (getcharid(3) != $@Fluffy_FighterID)
- goto L_Punish;
- set @MobID, 0;
- end;
-
-OnYetiDeath:
- set @MobID, 1072;
- if (getcharid(3) != $@Fluffy_FighterID)
- goto L_Punish;
- set @MobID, 0;
- end;
-
-OnFluffyDeath:
- set @MobID, 1089;
- if ($@Fluffy_Hunting == 0)
- end;
- if (getcharid(3) != $@Fluffy_FighterID)
- goto L_Punish;
- set @MobID, 0;
- set $@Fluffy_Kills, $@Fluffy_Kills + 1;
- set $@Fluffy_Alive, $@Fluffy_Alive - 1;
- if ($@Fluffy_Alive != 0)
- end;
- if (attachrid($@Fluffy_FighterID) == 1)
- goto L_Killedall;
- goto L_GotOut;
-
-L_Punish:
- if (@MobID == 1089)
- areamonster "033-1", 79, 29, 88, 42, "", 1089, 1, "Kimarr::OnFluffyDeath";
- if (@MobID == 1058)
- areamonster "033-1", 79, 29, 88, 42, "", 1058, 1, "Kimarr::OnIceGoblinDeath";
- if (@MobID == 1090)
- areamonster "033-1", 79, 29, 88, 42, "", 1090, 1, "Kimarr::OnWolvernDeath";
- if (@MobID == 1072)
- areamonster "033-1", 79, 29, 88, 42, "", 1072, 1, "Kimarr::OnYetiDeath";
-
- npctalk strnpcinfo(0), strcharinfo(0) + "! This hunt is for " + $@Fluffy_Fighter$ + " alone!";
- heal -Hp, 0;
- set @MobID, 0;
- end;
-
-L_Killedall:
- message strcharinfo(0), "Good job, but you still have time to throw more food on the ground.";
- end;
-
-S_Clean:
- stopnpctimer;
- set $@Fluffy_Hunting, 0;
- set $@Fluffy_Time, 0;
- set $@Fluffy_PC_Deaths, 0;
- set $@Fluffy_Fighter$, "";
- set $@Fluffy_FighterID, 0;
- set $@Fluffy_Kills, 0;
- set $@Fluffy_Spawn, 0;
- set $@Fluffy_Alive, 0;
- killmonster "033-1", "Kimarr::OnIceGoblinDeath";
- killmonster "033-1", "Kimarr::OnWolvernDeath";
- killmonster "033-1", "Kimarr::OnYetiDeath";
- killmonster "033-1", "Kimarr::OnFluffyDeath";
- set @state, 0;
- return;
-
-L_MaybeRecordScore:
- warp "033-1", 77, 34;
- set @loop, 0;
- set @rank, 0;
- if ($@KIMARR_EVENT)
- goto L_CRC_MaybeInsertNext;
- // No event, keep as usual
- if ($@Fluffy_Kills < $@Fluffy_Min)
- goto L_NotGoodEnough;
- goto L_MaybeInsertNext;
-
-L_MaybeInsertNext:
- if ($@Fluffy_Kills > $Record_Fluffy_Kills[@rank])
- goto L_InsertScore;
- // you already had a better score
- if (strcharinfo(0) == $Record_Fluffy_Name$[@rank])
- goto L_Reward1;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_Reward1;
- goto L_MaybeInsertNext;
-
-L_InsertScore:
- set @loop, @rank;
- goto L_FindLastScore;
-
-L_FindLastScore:
- // comment this out to allow the player to be in the list more than once
- // though actually, it might be better just to assume the list is full
- if (strcharinfo(0) == $Record_Fluffy_Name$[@loop])
- goto L_MoveStuff;
-
- set @loop, @loop + 1;
- if (@loop == MAX_HIGH_SCORES)
- goto L_MoveStuff;
- goto L_FindLastScore;
-
-L_MoveStuff:
- if (@loop == @rank)
- goto L_FinallyInsertMe;
- set $Record_Fluffy_Kills[@loop], $Record_Fluffy_Kills[@loop - 1];
- set $Record_Fluffy_Name$[@loop], $Record_Fluffy_Name$[@loop - 1];
- set $Record_Fluffy_Date$[@loop], $Record_Fluffy_Date$[@loop - 1];
- set @loop, @loop - 1;
- goto L_MoveStuff;
-
-L_FinallyInsertMe:
- set $Record_Fluffy_Kills[@rank], $@Fluffy_Kills;
- set $Record_Fluffy_Name$[@rank], strcharinfo(0);
- callfunc "time_stamp";
- set $Record_Fluffy_Date$[@rank], @ts_date$ + " " + @ts_time$;
- set @ts_date$, "";
- set @ts_time$, "";
- goto L_Reward1;
-
-L_NotGoodEnough:
- npctalk strnpcinfo(0), "What a disappointment, " + strcharinfo(0) + " hunted only " + $@Fluffy_Kills + " Fluffies.";
- message strcharinfo(0), "Kimarr: What a disappointment, you hunted only " + $@Fluffy_Kills + " Fluffies.";
- callsub S_Clean;
- end;
-
-L_ShowRecord:
- set @rank, 0;
- set @loop, 0;
- goto L_ShowNextRecord;
-
-L_ShowNextRecord:
- if ($Record_Fluffy_Kills[@loop] == 0)
- goto L_Close;
- mes (@loop + 1) + " - " + $Record_Fluffy_Name$[@loop] + " - " + $Record_Fluffy_Kills[@loop] + " Fluffies killed at " + $Record_Fluffy_Date$[@loop];
- set @loop, @loop + 1;
- if (MAX_HIGH_SCORES > 4 && (@loop % 5) == 0 && $Record_Fluffy_Kills[@loop] > 0)
- goto L_NextShowNextRecord;
- goto L_ShowNextRecord;
-
-L_NextShowNextRecord:
- next;
- goto L_ShowNextRecord;
-
-L_CRC_MaybeRecordScore:
- if ($@Fluffy_Kills < $@Fluffy_Min)
- goto L_NotGoodEnough;
- set @rank, 0;
- set @loop, 0;
- goto L_MaybeInsertNext;
-
-L_CRC_MaybeInsertNext:
- if ($@Fluffy_Kills > $Record_CRC_Fluffy_Kills[@rank])
- goto L_CRC_InsertScore;
- // you already had a better score
- if (strcharinfo(0) == $Record_CRC_Fluffy_Name$[@rank])
- goto L_CRC_MaybeRecordScore;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_CRC_MaybeRecordScore;
- goto L_CRC_MaybeInsertNext;
-
-L_CRC_InsertScore:
- set @loop, @rank;
- goto L_CRC_FindLastScore;
-
-L_CRC_FindLastScore:
- // comment this out to allow the player to be in the list more than once
- // though actually, it might be better just to assume the list is full
- if (strcharinfo(0) == $Record_CRC_Fluffy_Name$[@loop])
- goto L_CRC_MoveStuff;
-
- set @loop, @loop + 1;
- if (@loop == MAX_HIGH_SCORES)
- goto L_CRC_MoveStuff;
- goto L_CRC_FindLastScore;
-
-L_CRC_MoveStuff:
- if (@loop == @rank)
- goto L_CRC_FinallyInsertMe;
- set $Record_CRC_Fluffy_Kills[@loop], $Record_CRC_Fluffy_Kills[@loop - 1];
- set $Record_CRC_Fluffy_Name$[@loop], $Record_CRC_Fluffy_Name$[@loop - 1];
- set $Record_CRC_Fluffy_Date$[@loop], $Record_CRC_Fluffy_Date$[@loop - 1];
- set @loop, @loop - 1;
- goto L_CRC_MoveStuff;
-
-L_CRC_FinallyInsertMe:
- set $Record_CRC_Fluffy_Kills[@rank], $@Fluffy_Kills;
- set $Record_CRC_Fluffy_Name$[@rank], strcharinfo(0);
- callfunc "time_stamp";
- set $Record_CRC_Fluffy_Date$[@rank], @ts_date$ + " " + @ts_time$;
- set @ts_date$, "";
- set @ts_time$, "";
- goto L_CRC_MaybeRecordScore;
-
-L_CRC_ShowRecord:
- set @rank, 0;
- set @loop, 0;
- goto L_CRC_ShowNextRecord;
-
-L_CRC_ShowNextRecord:
- if ($Record_CRC_Fluffy_Kills[@loop] == 0)
- goto L_Close;
- mes (@loop + 1) + " - " + $Record_CRC_Fluffy_Name$[@loop] + " - " + $Record_CRC_Fluffy_Kills[@loop] + " Fluffies killed at " + $Record_CRC_Fluffy_Date$[@loop];
- set @loop, @loop + 1;
- if (MAX_HIGH_SCORES > 4 && (@loop % 5) == 0 && $Record_CRC_Fluffy_Kills[@loop] > 0)
- goto L_CRC_NextShowNextRecord;
- goto L_CRC_ShowNextRecord;
-
-L_CRC_NextShowNextRecord:
- next;
- goto L_CRC_ShowNextRecord;
-
-L_Close:
- // clear all temporary player variables that are not otherwise cleared
-
- // it is not feasible to otherwise clear @loop
- // but, not all jumpers to L_Close have necessarily used it ...
- // still, I think it's a good precent to ALWAYS exit via L_Close
- set @loop, 0;
-
- // if you unset @state, it might break the script
- // If only we had the concept of "local constants" ...
- close;
-
-S_Update_Mask:
- set QUEST_Barbarians,
- (QUEST_Barbarians & ~($@Q_Barbarians_MASK)) | (@state << $@Q_Barbarians_SHIFT);
- return;
-}
-
-function|script|FluffyDebug
-{
- mes "[Numa]";
- mes "Please select an action.";
- menu
- "Enable/Disable Event Scoreboards", L_Enable,
- "Reset event scoreboards", L_Reset;
-
-L_Enable:
- set $@KIMARR_EVENT, !$@KIMARR_EVENT;
- return;
-
-L_Reset:
- if (GM < G_EVENT) goto L_Decline;
- cleararray $Record_CRC_Fluffy_Kills, 0, MAX_HIGH_SCORES;
- cleararray $Record_CRC_Fluffy_Name$, "", MAX_HIGH_SCORES;
- cleararray $Record_CRC_Fluffy_Date$, "", MAX_HIGH_SCORES;
- gmlog strcharinfo(0) + " wiped Fluffy Hunt Event Scoreboards.";
- return;
-
-L_Decline:
- mes "[Numa]";
- mes "I'm sorry, but your GM level does not authorizes you to perform this operation.";
- return;
-}
diff --git a/world/map/npc/033-1/mapflags.txt b/world/map/npc/033-1/mapflags.txt
deleted file mode 100644
index 08a33311..00000000
--- a/world/map/npc/033-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-033-1|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/033-1/traveler.txt b/world/map/npc/033-1/traveler.txt
deleted file mode 100644
index 462e2586..00000000
--- a/world/map/npc/033-1/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-033-1,63,30,0|script|Khoenan the Traveler|103
-{
- set @npcname$, "Khoenan";
- set @NpcTravelBit, $@barbarians_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/033-1/yerrnk.txt b/world/map/npc/033-1/yerrnk.txt
deleted file mode 100644
index 16ada95b..00000000
--- a/world/map/npc/033-1/yerrnk.txt
+++ /dev/null
@@ -1,206 +0,0 @@
-033-1,66,28,0|script|Yerrnk|216
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set @yeti_level, 70;
-
- if (@state >= 9) goto L_Done;
- if (@state == 8) goto L_Yeti_Success;
- if (@state == 7) goto L_Hunt_Yeti;
- if (@state == 6) goto L_Warrior;
- if (@state == 5) goto L_Birrod;
- if (@state == 4) goto L_Sorrow;
- if (@state == 3) goto L_Duty;
- if (@state == 2) goto L_Kimarr;
- if (@state == 1) goto L_Fluffy;
-
- mes "[Barbarian]";
- mes "\"Hello. I'm Yerrnk, first warrior of the Mangarr.\"";
- next;
- mes "Yerrnk looks at you cautiously.";
- mes "[Yerrnk]";
- mes "\"Please take care of your own business.\"";
- goto L_Close;
-
-L_Fluffy:
- mes "[Yerrnk]";
- mes "\"Kimarr talks too much sometimes.\"";
- mes "He sighs.";
- next;
- mes "[Yerrnk]";
- mes "\"Are you going to accept Kimarr's task? It's an ancient ceremony in our tribe. A young member is accepted as an adult after completing it.\"";
- goto L_Close;
-
-L_Kimarr:
- mes "[Yerrnk]";
- mes "\"I think Kimarr wants to give you something.\"";
- goto L_Close;
-
-L_Duty:
- mes "[Yerrnk]";
- mes "\"I'm not sure if you are aware about the meaning of your actions.\"";
- next;
- mes "\"You passed the initiation rite for hunters of our tribe. That means now you are a hunter of our tribe, with all the rights and duties that come along with that.\"";
- next;
- mes "\"So you'll have to obey our laws and traditions, protect and help any member of our tribe that is in need, and show neither weakness nor fear in battle.\"";
- next;
- mes "\"Keep this in mind. If you fail you'll have to receive the elders' judgement.\"";
- goto L_Close;
-
-L_Sorrow:
- mes "[Yerrnk]";
- mes "\"I noticed that you're getting along with Kimarr and Birrod very well. That's good.\"";
- mes "He smiles, but then an expression of worry returns to his face.";
- next;
- goto L_Mission;
-
-L_Mission:
- mes "[Yerrnk]";
- mes "\"Our tribe is going through dire times. We have lived in harmony with the mountain since time beyond memory.";
- mes "Life is hard in the snowy mountains, but this life suits our nature.\"";
- next;
- mes "\"Some weeks ago the Yetis started to act very strangely. Usually they are very shy, but now....";
- mes "They left the secluded areas high up in the mountains they used to live on and started roaming our hunting grounds.\"";
- next;
- mes "\"It became very dangerous to leave the village, so it's even harder to gather enough food to survive.";
- mes "Not only this, but the Yetis are getting more daring every day. They might attack the village itself sooner or later.\"";
- next;
- mes "\"Other wild animals are more aggressive as well, though the Yetis are the most dangerous.";
- mes "Something like this has never happened before. We have no idea what could cause the animals to behave like this.\"";
- next;
- mes "\"That's why we were sent on a mission to seek help from the Sages of Kaizei.";
- mes "The Sages are wizards of great power and wisdom, and we hope they might be able to give us advice.\"";
- next;
- mes "\"We already went to Sage Nikolai, who's residence is located in the same snow mountains we live in.";
- mes "But there happened some severe accident, so they weren't able to spent any attention to our problem and might rather need help themselves.\"";
- next;
- mes "\"That's why we came down here to search for Santa, he's one of the most powerful of the Sages.\"";
- goto L_Close;
-
-L_Birrod:
- mes "[Yerrnk]";
- mes "\"" + strcharinfo(0) + ", I have to admit that I'm surprised by your skills.";
- mes "You've proven your bravery and strength.\"";
- next;
- if (getskilllv(SKILL_POOL) == 0)
- goto L_Not_Ready;
- mes "\"Please talk to Birrod to receive the initiation rite to become a warrior of the Mangarr.\"";
- menu
- "Alright.",L_Close,
- "Can you tell me again what you are here for?",L_Mission;
-
-L_Not_Ready:
- mes "[Yerrnk]";
- mes "\"But you're not yet ready to become a fully accepted warrior of our tribe.";
- mes "You should travel the world to gain the ability to focus on your inner strength.\"";
- menu
- "Alright.",L_Close,
- "What are you doing down here?",L_Mission;
-
-L_Warrior:
- mes "[Yerrnk]";
- mes "\"" + strcharinfo(0) + ", welcome back!";
- mes "Do you have any question?\"";
- menu
- "Everything's all right, thanks.",L_Close,
- "What are you doing down here?",L_Mission,
- "Can you explain the Raging ability to me?",L_Skill,
- "Do you have a task for me?",L_Task;
-
-L_Skill:
- mes "[Yerrnk]";
- mes "\"As a warrior of our tribe it should be the most important thing to you to defend weaker members of the tribe.";
- mes "To achieve this goal our warriors are training the skill to stand the pain of being hit and even use it to get into a state of rage.\"";
- next;
- mes "\"It works only in a melee fight, when you hear your opponent gasping, smell his sweat, and feel the heat of his body.\"";
- next;
- mes "Yerrnk gets excited, then he pauses a moment to calm down.";
- mes "\"Basically you neglect of your own defense but gain the ability to hit your enemy with outstanding might.\"";
- next;
- mes "[Yerrnk]";
- mes "\"You can imagine that this creates some danger. That's why we usually fight as a group, so a weakened warrior can step back and recover while the others continue to fight.";
- mes "It's also beneficial to have a healer, but very few members of our tribe are born with the ability to wield magic.\"";
- goto L_Close;
-
-L_Task:
- if (BaseLevel >= @yeti_level)
- goto L_Yeti;
- mes "[Yerrnk]";
- mes "\"Not at the moment.";
- mes "Try to stop by later and use the time to practice your abilities.\"";
- goto L_Close;
-
-L_Yeti:
- mes "[Yerrnk]";
- mes "\"Indeed, there's something to do that needs a competent warrior.";
- mes "We've got reports about a single Yeti prowling around one of the houses in the woods west of here.\"";
- next;
- mes "\"If you dare to take on this task, seek that Yeti and make the area secure again.";
- mes "To find the house, enter the forest and then go first south and then west.\"";
- set @state, 7;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Hunt_Yeti:
- mes "[Yerrnk]";
- mes "\"That Yeti is still roaming in the forest west of here.";
- mes "To find the house it's prowling around, enter the forest and then go first south and then west.\"";
- menu
- "I'm on it.",L_Close,
- "What are you doing down here?",L_Mission,
- "Can you explain the Raging ability to me?",L_Skill;
-
-L_Yeti_Success:
- mes "[Yerrnk]";
- mes "\"" + strcharinfo(0) + "! You made it!";
- mes "You proved that you're one of the most skilled warriors of our tribe. Please have this.\"";
- getitem "LeatherTrousers", 1;
- set @state, 9;
- callsub S_Update_Mask;
- goto L_Close;
-
-L_Done:
- if (countitem("Antlers") > 0 && @state < 10) goto L_AntlerHat;
- mes "Yerrnk smiles at you.";
- mes "[Yerrnk]";
- mes "\"Welcome back, great warrior.\"";
- menu
- "What's the reason you came here?",L_Mission,
- "Can you explain the raging ability to me?",L_Skill,
- "(Leave)",L_Close;
-
-L_AntlerHat:
- mes "Yerrnk grins.";
- next;
- mes "[Yerrnk]";
- mes "\"Welcome back, great warrior.\"";
- next;
- mes "\"I could turn your " + getitemlink("Antlers") + " into a " + getitemlink("AntlerHat") + " for the modest price of 5,000,000 GP.\"";
- if (Zeny >= 5000000)
- menu
- "Please do!", L_AntlerHat_Proceed;
- menu
- "Sorry, I'm broke", L_Close;
-
-L_AntlerHat_Proceed:
- mes "[Yerrnk]";
- mes "\"There you go.\"";
- set @state, 10;
- callsub S_Update_Mask;
- delitem "Antlers", 1;
- if (Zeny < 5000000) goto L_Close;
- set Zeny, Zeny - 5000000;
- getitem "AntlerHat", 1;
- goto L_Close;
-
-L_Close:
- set @state, 0;
- set @yeti_level, 0;
- close;
-
-S_Update_Mask:
- set QUEST_Barbarians,
- (QUEST_Barbarians & ~($@Q_Barbarians_MASK))
- | (@state << $@Q_Barbarians_SHIFT);
- return;
-}
diff --git a/world/map/npc/034-1/_import.txt b/world/map/npc/034-1/_import.txt
deleted file mode 100644
index fab02ab2..00000000
--- a/world/map/npc/034-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 034-1: Snow Forest
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 034-1
-npc: npc/034-1/_mobs.txt
-npc: npc/034-1/_nodes.txt
-npc: npc/034-1/_warps.txt
-npc: npc/034-1/ambushs.txt
-npc: npc/034-1/mapflags.txt
-npc: npc/034-1/yetiSpawn.txt
diff --git a/world/map/npc/034-1/_mobs.txt b/world/map/npc/034-1/_mobs.txt
deleted file mode 100644
index 575d0220..00000000
--- a/world/map/npc/034-1/_mobs.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Forest mobs
-
-034-1,0,0,0,0|monster|Reinboo|1094,4,100000ms,30000ms
-034-1,0,0,0,0|monster|Fluffy|1020,25,100000ms,30000ms
-034-1,0,0,0,0|monster|WhiteBell|1095,5,100000ms,30000ms
-034-1,0,0,0,0|monster|Squirrel|1038,25,100000ms,30000ms
-034-1,0,0,0,0|monster|Santaboo|1112,4,100000ms,30000ms
-034-1,1,1,0,0|monster|IceGoblin|1058,25,100000ms,30000ms
diff --git a/world/map/npc/034-1/_nodes.txt b/world/map/npc/034-1/_nodes.txt
deleted file mode 100644
index 99c4688b..00000000
--- a/world/map/npc/034-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Forest nodes
-
-// (no nodes)
diff --git a/world/map/npc/034-1/_warps.txt b/world/map/npc/034-1/_warps.txt
deleted file mode 100644
index 0432fdc6..00000000
--- a/world/map/npc/034-1/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Forest warps
-
-034-1,160,20|warp|-1,0,033-1,23,19
-034-1,16,103|warp|-1,1,045-1,176,133
-034-1,15,31|warp|-1,0,045-1,174,59
-034-1,95,18|warp|0,-1,046-1,94,123
-034-1,31,68|warp|-1,-1,034-2,28,31
-034-1,64,99|warp|-1,-1,034-2,73,29
diff --git a/world/map/npc/034-1/ambushs.txt b/world/map/npc/034-1/ambushs.txt
deleted file mode 100644
index 9abc4481..00000000
--- a/world/map/npc/034-1/ambushs.txt
+++ /dev/null
@@ -1,902 +0,0 @@
-// This file belongs to the wolvern hunting quest given by 033-1/birrod.txt
-// Author: Jenalya, cody, PjotrOrial
-
-034-1,118,59,0|script|#Ambush0Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush0_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush0_Spawn > 0)
- end;
- set $@Ambush0VictimID, getcharid(3);
- donpcevent "#Ambush0::OnAmbush";
- end;
-}
-
-034-1,118,59,0|script|#Ambush0|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush0VictimID) == 0)
- goto L_Clean;
- set $@Ambush0_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 115, 56, 121, 62, "", 1090, $@Ambush0_Spawn, "#Ambush0::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush0_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush0_Spawn, $@Ambush0_Spawn - 1;
-
- if (($@Ambush0VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush0_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush0VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush0_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,94,91,0|script|#Ambush1Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush1_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush1_Spawn > 0)
- end;
- set $@Ambush1VictimID, getcharid(3);
- donpcevent "#Ambush1::OnAmbush";
- end;
-}
-
-034-1,94,91,0|script|#Ambush1|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush1VictimID) == 0)
- goto L_Clean;
- set $@Ambush1_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 91, 88, 97, 94, "", 1090, $@Ambush1_Spawn, "#Ambush1::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush1_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush1_Spawn, $@Ambush1_Spawn - 1;
-
- if (($@Ambush1VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush1_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush1VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush1_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,122,35,0|script|#Ambush2Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush2_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush2_Spawn > 0)
- end;
- set $@Ambush2VictimID, getcharid(3);
- donpcevent "#Ambush2::OnAmbush";
- end;
-}
-
-034-1,122,35,0|script|#Ambush2|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush2VictimID) == 0)
- goto L_Clean;
- set $@Ambush2_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 119, 32, 125, 38, "", 1090, $@Ambush2_Spawn, "#Ambush2::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush2_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush2_Spawn, $@Ambush2_Spawn - 1;
-
- if (($@Ambush2VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush2_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush2VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush2_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,83,44,0|script|#Ambush3Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush3_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush3_Spawn > 0)
- end;
- set $@Ambush3VictimID, getcharid(3);
- donpcevent "#Ambush3::OnAmbush";
- end;
-}
-
-034-1,83,44,0|script|#Ambush3|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush3VictimID) == 0)
- goto L_Clean;
- set $@Ambush3_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 80, 41, 86, 47, "", 1090, $@Ambush3_Spawn, "#Ambush3::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush3_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush3_Spawn, $@Ambush3_Spawn - 1;
-
- if (($@Ambush3VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush3_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush3VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush3_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,74,28,0|script|#Ambush4Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush4_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush4_Spawn > 0)
- end;
- set $@Ambush4VictimID, getcharid(3);
- donpcevent "#Ambush4::OnAmbush";
- end;
-}
-
-034-1,74,28,0|script|#Ambush4|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush4VictimID) == 0)
- goto L_Clean;
- set $@Ambush4_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 71, 25, 77, 31, "", 1090, $@Ambush4_Spawn, "#Ambush4::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush4_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush4_Spawn, $@Ambush4_Spawn - 1;
-
- if (($@Ambush4VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush4_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush4VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush4_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,26,44,0|script|#Ambush5Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush5_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush5_Spawn > 0)
- end;
- set $@Ambush5VictimID, getcharid(3);
- donpcevent "#Ambush5::OnAmbush";
- end;
-}
-
-034-1,26,44,0|script|#Ambush5|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush5VictimID) == 0)
- goto L_Clean;
- set $@Ambush5_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 23, 41, 29, 47, "", 1090, $@Ambush5_Spawn, "#Ambush5::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush5_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush5_Spawn, $@Ambush5_Spawn - 1;
-
- if (($@Ambush5VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush5_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush5VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush5_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,50,47,0|script|#Ambush6Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush6_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush6_Spawn > 0)
- end;
- set $@Ambush6VictimID, getcharid(3);
- donpcevent "#Ambush6::OnAmbush";
- end;
-}
-
-034-1,50,47,0|script|#Ambush6|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush6VictimID) == 0)
- goto L_Clean;
- set $@Ambush6_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 47, 44, 53, 50, "", 1090, $@Ambush6_Spawn, "#Ambush6::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush6_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush6_Spawn, $@Ambush6_Spawn - 1;
-
- if (($@Ambush6VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush6_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush6VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush6_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,36,62,0|script|#Ambush7Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush7_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush7_Spawn > 0)
- end;
- set $@Ambush7VictimID, getcharid(3);
- donpcevent "#Ambush7::OnAmbush";
- end;
-}
-
-034-1,36,62,0|script|#Ambush7|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush7VictimID) == 0)
- goto L_Clean;
- set $@Ambush7_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 33, 59, 39, 65, "", 1090, $@Ambush7_Spawn, "#Ambush7::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush7_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush7_Spawn, $@Ambush7_Spawn - 1;
-
- if (($@Ambush7VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush7_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush7VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush7_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,26,95,0|script|#Ambush8Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush8_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush8_Spawn > 0)
- end;
- set $@Ambush8VictimID, getcharid(3);
- donpcevent "#Ambush8::OnAmbush";
- end;
-}
-
-034-1,26,95,0|script|#Ambush8|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush8VictimID) == 0)
- goto L_Clean;
- set $@Ambush8_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 23, 92, 29, 98, "", 1090, $@Ambush8_Spawn, "#Ambush8::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush8_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush8_Spawn, $@Ambush8_Spawn - 1;
-
- if (($@Ambush8VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush8_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush8VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush8_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,56,91,0|script|#Ambush9Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush9_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush9_Spawn > 0)
- end;
- set $@Ambush9VictimID, getcharid(3);
- donpcevent "#Ambush9::OnAmbush";
- end;
-}
-
-034-1,56,91,0|script|#Ambush9|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush9VictimID) == 0)
- goto L_Clean;
- set $@Ambush9_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 53, 88, 59, 94, "", 1090, $@Ambush9_Spawn, "#Ambush9::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush9_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush9_Spawn, $@Ambush9_Spawn - 1;
-
- if (($@Ambush9VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush9_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush9VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush9_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,65,66,0|script|#Ambush10Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush10_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush10_Spawn > 0)
- end;
- set $@Ambush10VictimID, getcharid(3);
- donpcevent "#Ambush10::OnAmbush";
- end;
-}
-
-034-1,65,66,0|script|#Ambush10|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush10VictimID) == 0)
- goto L_Clean;
- set $@Ambush10_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 62, 63, 68, 69, "", 1090, $@Ambush10_Spawn, "#Ambush10::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush10_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush10_Spawn, $@Ambush10_Spawn - 1;
-
- if (($@Ambush10VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush10_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush10VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush10_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,86,68,0|script|#Ambush11Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush11_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush11_Spawn > 0)
- end;
- set $@Ambush11VictimID, getcharid(3);
- donpcevent "#Ambush11::OnAmbush";
- end;
-}
-
-034-1,86,68,0|script|#Ambush11|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush11VictimID) == 0)
- goto L_Clean;
- set $@Ambush11_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 83, 65, 89, 71, "", 1090, $@Ambush11_Spawn, "#Ambush11::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush11_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush11_Spawn, $@Ambush11_Spawn - 1;
-
- if (($@Ambush11VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush11_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush11VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush11_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,101,79,0|script|#Ambush12Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush12_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush12_Spawn > 0)
- end;
- set $@Ambush12VictimID, getcharid(3);
- donpcevent "#Ambush12::OnAmbush";
- end;
-}
-
-034-1,101,79,0|script|#Ambush12|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush12VictimID) == 0)
- goto L_Clean;
- set $@Ambush12_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 98, 76, 104, 82, "", 1090, $@Ambush12_Spawn, "#Ambush12::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush12_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush12_Spawn, $@Ambush12_Spawn - 1;
-
- if (($@Ambush12VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush12_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush12VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush12_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,124,88,0|script|#Ambush13Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush13_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush13_Spawn > 0)
- end;
- set $@Ambush13VictimID, getcharid(3);
- donpcevent "#Ambush13::OnAmbush";
- end;
-}
-
-034-1,124,88,0|script|#Ambush13|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush13VictimID) == 0)
- goto L_Clean;
- set $@Ambush13_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 121, 85, 127, 91, "", 1090, $@Ambush13_Spawn, "#Ambush13::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush13_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush13_Spawn, $@Ambush13_Spawn - 1;
-
- if (($@Ambush13VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush13_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush13VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush13_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
-
-034-1,117,103,0|script|#Ambush14Trigger|32767,2,2
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 4)
- end;
-
- if (@ambushs034 == $@Q_Barbarians_Ambush_max)
- set @ambushs034, 0;
- if (@ambushs034 & $@Q_Barbarians_Ambush14_flag)
- end;
- if (rand(50) < wolvern_count)
- end;
-
- if ($@Ambush14_Spawn > 0)
- end;
- set $@Ambush14VictimID, getcharid(3);
- donpcevent "#Ambush14::OnAmbush";
- end;
-}
-
-034-1,117,103,0|script|#Ambush14|32767
-{
-end;
-
-OnAmbush:
- if (attachrid($@Ambush14VictimID) == 0)
- goto L_Clean;
- set $@Ambush14_Spawn, 3 + rand(2);
- message strcharinfo(0), "An ambush!";
- areamonster "034-1", 114, 100, 120, 106, "", 1090, $@Ambush14_Spawn, "#Ambush14::OnWolvernDeath";
- set @ambushs034, @ambushs034 | $@Q_Barbarians_Ambush14_flag;
- end;
-
-OnWolvernDeath:
- set @MobID, 1090;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
-
- set $@Ambush14_Spawn, $@Ambush14_Spawn - 1;
-
- if (($@Ambush14VictimID == getcharid(3)) && (@state == 4))
- goto L_Count;
- if ($@Ambush14_Spawn > 0)
- end;
- goto L_Clean;
-
-L_Clean:
- set $@Ambush14VictimID, 0;
- end;
-
-L_Count:
- set wolvern_count, wolvern_count + 1;
- if (wolvern_count >= $@Q_Barbarians_wolvern_amount)
- message strcharinfo(0), "You've hunted down a lot of Wolverns. Maybe you should talk to Birrod?";
- if ($@Ambush14_Spawn <= 0)
- goto L_Clean;
- end;
-}
-
diff --git a/world/map/npc/034-1/mapflags.txt b/world/map/npc/034-1/mapflags.txt
deleted file mode 100644
index 35e50a76..00000000
--- a/world/map/npc/034-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-034-1|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/034-1/yetiSpawn.txt b/world/map/npc/034-1/yetiSpawn.txt
deleted file mode 100644
index c1f60312..00000000
--- a/world/map/npc/034-1/yetiSpawn.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-// This file belongs to the yeti hunting quest given by 033-1/yerrnk.txt
-// Author: Jenalya
-
-034-1,79,98,0|script|#Yerrnk_YetiTrigger|32767,1,3
-{
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 7)
- end;
-
- if ($@Yerrnk_Yeti_Active != 0)
- end;
- set $@Yerrnk_Yetifighter_ID, getcharid(3);
- set $@Yerrnk_Yeti_Active, 1;
- donpcevent "#Yerrnk_Yeti::OnYeti";
- end;
-}
-
-034-1,78,98,0|script|#Yerrnk_Yeti|32767
-{
-end;
-
-OnYeti:
- if (attachrid($@Yerrnk_Yetifighter_ID) == 0)
- goto L_Abort;
-
- message strcharinfo(0), "There is the Yeti!";
- areamonster "034-1", 67, 93, 74, 102, "", 1072, 1, "#Yerrnk_Yeti::OnYetiDeath";
- end;
-
-L_Abort:
- set $@Yerrnk_Yeti_Active, 0;
- set $@Yerrnk_Yetifighter_ID, 0;
- end;
-
-OnYetiDeath:
- set @MobID, 1072;
-
- set @state, ((QUEST_Barbarians & $@Q_Barbarians_MASK) >> $@Q_Barbarians_SHIFT);
- if (@state != 7)
- goto L_NonQuestKill;
- set @state, 8;
- callsub S_Update_Mask;
- set BOSS_POINTS, BOSS_POINTS + 40;
- message strcharinfo(0), "You defeated the Yeti and gain 40 Boss Points giving you a total of " + BOSS_POINTS + ".";
- goto L_End;
-
-L_End:
- set $@Yerrnk_Yeti_Active, 0;
- set $@Yerrnk_Yetifighter_ID, 0;
- end;
-
-L_NonQuestKill:
- message strcharinfo(0), "The dying Yeti takes you along to the other side.";
- heal -Hp, 0;
- goto L_End;
-
-S_Update_Mask:
- set QUEST_Barbarians,
- (QUEST_Barbarians & ~($@Q_Barbarians_MASK))
- | (@state << $@Q_Barbarians_SHIFT);
- return;
-}
diff --git a/world/map/npc/034-2/_import.txt b/world/map/npc/034-2/_import.txt
deleted file mode 100644
index 47130e2d..00000000
--- a/world/map/npc/034-2/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 034-2: Trappers Huts
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 034-2
-npc: npc/034-2/_mobs.txt
-npc: npc/034-2/_nodes.txt
-npc: npc/034-2/_warps.txt
-npc: npc/034-2/mapflags.txt
diff --git a/world/map/npc/034-2/_mobs.txt b/world/map/npc/034-2/_mobs.txt
deleted file mode 100644
index 9045b1c4..00000000
--- a/world/map/npc/034-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Trappers Huts mobs
-
diff --git a/world/map/npc/034-2/_nodes.txt b/world/map/npc/034-2/_nodes.txt
deleted file mode 100644
index c92382fc..00000000
--- a/world/map/npc/034-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Trappers Huts nodes
-
-// (no nodes)
diff --git a/world/map/npc/034-2/_warps.txt b/world/map/npc/034-2/_warps.txt
deleted file mode 100644
index 7d5c2c41..00000000
--- a/world/map/npc/034-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Trappers Huts warps
-
-034-2,28,32|warp|-1,-1,034-1,31,69
-034-2,73,30|warp|-1,-1,034-1,64,100
diff --git a/world/map/npc/034-2/mapflags.txt b/world/map/npc/034-2/mapflags.txt
deleted file mode 100644
index b5c4f28f..00000000
--- a/world/map/npc/034-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-034-2|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/035-2/_import.txt b/world/map/npc/035-2/_import.txt
deleted file mode 100644
index 78b7188c..00000000
--- a/world/map/npc/035-2/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 035-2: Koga - Main
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 035-2
-npc: npc/035-2/_mobs.txt
-npc: npc/035-2/_nodes.txt
-npc: npc/035-2/_warps.txt
-npc: npc/035-2/casino.txt
-npc: npc/035-2/emblems.txt
-npc: npc/035-2/koga.txt
-npc: npc/035-2/mapflags.txt
-npc: npc/035-2/shops.txt
diff --git a/world/map/npc/035-2/_mobs.txt b/world/map/npc/035-2/_mobs.txt
deleted file mode 100644
index bb3f2eca..00000000
--- a/world/map/npc/035-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Koga - Main mobs
-
diff --git a/world/map/npc/035-2/_nodes.txt b/world/map/npc/035-2/_nodes.txt
deleted file mode 100644
index 7002a966..00000000
--- a/world/map/npc/035-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Koga - Main nodes
-
-// (no nodes)
diff --git a/world/map/npc/035-2/_warps.txt b/world/map/npc/035-2/_warps.txt
deleted file mode 100644
index 10e713a7..00000000
--- a/world/map/npc/035-2/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Koga - Main warps
-
diff --git a/world/map/npc/035-2/casino.txt b/world/map/npc/035-2/casino.txt
deleted file mode 100644
index 91971cfa..00000000
--- a/world/map/npc/035-2/casino.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Casino
-035-2,34,37,0|script|Slots#4|400
-{
- callfunc "SlotMachine";
- close;
-}
-
-035-2,36,37,0|script|Slots#5|400
-{
- callfunc "SlotMachine";
- close;
-}
diff --git a/world/map/npc/035-2/emblems.txt b/world/map/npc/035-2/emblems.txt
deleted file mode 100644
index bf0cc7eb..00000000
--- a/world/map/npc/035-2/emblems.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-035-2,28,27,0|script|#k1city1e|410
-{
- end;
- OnInit:
- disablenpc "#k1city1e";
- end;
-}
-035-2,28,27,0|script|#k1city1d|411
-{
- end;
-}
-
-035-2,30,27,0|script|#k1city2e|412
-{
- end;
- OnInit:
- disablenpc "#k1city2e";
- end;
-}
-035-2,30,27,0|script|#k1city2d|413
-{
- end;
-}
-
-035-2,32,27,0|script|#k1city3e|414
-{
- end;
- OnInit:
- disablenpc "#k1city3e";
- end;
-}
-035-2,32,27,0|script|#k1city3d|415
-{
- end;
-}
-
-035-2,32,27,0|script|#k1sound|127
-{
- end;
- OnCommandDing:
- specialeffect 402;
- end;
-}
diff --git a/world/map/npc/035-2/koga.txt b/world/map/npc/035-2/koga.txt
deleted file mode 100644
index d54e3e27..00000000
--- a/world/map/npc/035-2/koga.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-// Dock
-
-035-2,39,29,0|script|#KogaExit|45,0,1
-{
- mes "Disembark the ferry for "+$@MainDocks$[$@MainCurrentDock]+"?";
- menu
- "Yes.", L_Leave,
- "Nevermind", L_Close;
-
-L_Leave:
- if ($@MainCurrentDock == 0)
- goto L_Hurnscald;
- if ($@MainCurrentDock == 1)
- goto L_Nivalis;
- if ($@MainCurrentDock == 2)
- goto L_Tulimshar;
- goto L_Close;
-
-L_Tulimshar:
- warp "001-1", 63, 73;
- goto L_Close;
-
-L_Hurnscald:
- warp "008-1", 137, 64;
- goto L_Close;
-
-L_Nivalis:
- warp "031-1", 95, 109;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/035-2/mapflags.txt b/world/map/npc/035-2/mapflags.txt
deleted file mode 100644
index 2866ca80..00000000
--- a/world/map/npc/035-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-035-2|mapflag|town
-035-2|mapflag|resave|035-2,20,21
diff --git a/world/map/npc/035-2/shops.txt b/world/map/npc/035-2/shops.txt
deleted file mode 100644
index 85bd3e2b..00000000
--- a/world/map/npc/035-2/shops.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-
-035-2,23,38,0|shop|Cooky|213,Beer:*1,Orange:*1,CasinoCoins:*1
-
-035-2,23,35,0|script|Bunkmaster Phict|212
-{
- set @npcname$, "Bunkmaster Phict";
- set @cost, 100;
- callfunc "Inn";
- set @npcname$, "";
- set @cost, 0;
- close;
-}
diff --git a/world/map/npc/036-2/_import.txt b/world/map/npc/036-2/_import.txt
deleted file mode 100644
index 79ee898b..00000000
--- a/world/map/npc/036-2/_import.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Map 036-2: Koga - Candor
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 036-2
-npc: npc/036-2/_mobs.txt
-npc: npc/036-2/_nodes.txt
-npc: npc/036-2/_warps.txt
-npc: npc/036-2/casino.txt
-npc: npc/036-2/emblems.txt
-npc: npc/036-2/koga-candor.txt
-npc: npc/036-2/mapflags.txt
-npc: npc/036-2/shops.txt
diff --git a/world/map/npc/036-2/_mobs.txt b/world/map/npc/036-2/_mobs.txt
deleted file mode 100644
index 483d68b1..00000000
--- a/world/map/npc/036-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Koga - Candor mobs
-
diff --git a/world/map/npc/036-2/_nodes.txt b/world/map/npc/036-2/_nodes.txt
deleted file mode 100644
index 20ea08f2..00000000
--- a/world/map/npc/036-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Koga - Candor nodes
-
-// (no nodes)
diff --git a/world/map/npc/036-2/_warps.txt b/world/map/npc/036-2/_warps.txt
deleted file mode 100644
index 2953cea6..00000000
--- a/world/map/npc/036-2/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Koga - Candor warps
-
diff --git a/world/map/npc/036-2/casino.txt b/world/map/npc/036-2/casino.txt
deleted file mode 100644
index 5658aea6..00000000
--- a/world/map/npc/036-2/casino.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Casino
-036-2,34,37,0|script|Slots#6|400
-{
- callfunc "SlotMachine";
- close;
-}
-
-036-2,36,37,0|script|Slots#7|400
-{
- callfunc "SlotMachine";
- close;
-}
diff --git a/world/map/npc/036-2/emblems.txt b/world/map/npc/036-2/emblems.txt
deleted file mode 100644
index 31b90955..00000000
--- a/world/map/npc/036-2/emblems.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-036-2,29,27,0|script|#k2city1e|412
-{
- end;
- OnInit:
- disablenpc "#k2city1e";
- end;
-}
-036-2,29,27,0|script|#k2city1d|413
-{
- end;
-}
-
-036-2,31,27,0|script|#k2city2e|416
-{
- end;
- OnInit:
- disablenpc "#k2city2e";
- end;
-}
-036-2,31,27,0|script|#k2city2d|417
-{
- end;
-}
-
-036-2,32,27,0|script|#k2sound|127
-{
- end;
- OnCommandDing:
- specialeffect 402;
- end;
-}
diff --git a/world/map/npc/036-2/koga-candor.txt b/world/map/npc/036-2/koga-candor.txt
deleted file mode 100644
index 8aee6be3..00000000
--- a/world/map/npc/036-2/koga-candor.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-// Dock
-
-036-2,39,29,0|script|#KogaCandorExit|45,0,1
-{
- mes "Disembark the ferry for "+$@CandorDocks$[$@CandorCurrentDock]+"?";
- menu
- "Yes.", L_Leave,
- "Nevermind", L_Close;
-
-L_Leave:
- if ($@CandorCurrentDock == 0)
- goto L_Candor;
- if ($@CandorCurrentDock == 1)
- goto L_Hurnscald;
- goto L_Close;
-
-L_Hurnscald:
- warp "008-1", 137, 75;
- goto L_Close;
-
-L_Candor:
- warp "029-1", 46, 109;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/036-2/mapflags.txt b/world/map/npc/036-2/mapflags.txt
deleted file mode 100644
index a21839b0..00000000
--- a/world/map/npc/036-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-036-2|mapflag|town
-036-2|mapflag|resave|036-2,20,21
diff --git a/world/map/npc/036-2/shops.txt b/world/map/npc/036-2/shops.txt
deleted file mode 100644
index eadfc02b..00000000
--- a/world/map/npc/036-2/shops.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-
-036-2,23,38,0|shop|Chef Armand|211,Beer:*1,Steak:*2,CasinoCoins:*1
-036-2,35,22,0|shop|Gunney|138,Arrow:*4,IronArrow:*2
-
-036-2,23,35,0|script|Bunkmaster Daban|212
-{
- set @npcname$, "Bunkmaster Daban";
- set @cost, 100;
- callfunc "Inn";
- set @npcname$, "";
- set @cost, 0;
- close;
-}
diff --git a/world/map/npc/041-1/_import.txt b/world/map/npc/041-1/_import.txt
deleted file mode 100644
index 0dbf0044..00000000
--- a/world/map/npc/041-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 041-1: Beach
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 041-1
-npc: npc/041-1/_mobs.txt
-npc: npc/041-1/_nodes.txt
-npc: npc/041-1/_warps.txt
-npc: npc/041-1/mapflags.txt
diff --git a/world/map/npc/041-1/_mobs.txt b/world/map/npc/041-1/_mobs.txt
deleted file mode 100644
index b766519b..00000000
--- a/world/map/npc/041-1/_mobs.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach mobs
-
-041-1,81,55,18,9|monster|Scorpion|1003,3,100000ms,30000ms
-041-1,101,67,18,9|monster|Scorpion|1003,3,100000ms,30000ms
-041-1,100,84,18,9|monster|Scorpion|1003,3,100000ms,30000ms
-041-1,61,34,13,20|monster|Scorpion|1003,3,100000ms,30000ms
-041-1,55,30,10,48|monster|SeaSlime|1033,3,100000ms,30000ms
-041-1,59,13,10,9|monster|Scorpion|1003,3,100000ms,30000ms
-041-1,60,7,3,2|monster|TameScorpion|1046,1,100000ms,30000ms
-041-1,66,49,3,2|monster|TameScorpion|1046,1,100000ms,30000ms
-041-1,95,75,21,9|monster|TameScorpion|1046,1,100000ms,30000ms
-041-1,100,57,18,9|monster|RedScorpion|1004,3,100000ms,30000ms
-041-1,83,64,18,9|monster|RedScorpion|1004,3,100000ms,30000ms
diff --git a/world/map/npc/041-1/_nodes.txt b/world/map/npc/041-1/_nodes.txt
deleted file mode 100644
index 8c36389e..00000000
--- a/world/map/npc/041-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach nodes
-
-// (no nodes)
diff --git a/world/map/npc/041-1/_warps.txt b/world/map/npc/041-1/_warps.txt
deleted file mode 100644
index 7f4ff77e..00000000
--- a/world/map/npc/041-1/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach warps
-
-041-1,101,95|warp|1,-1,004-1,68,20
-041-1,58,4|warp|1,-1,042-1,44,113
diff --git a/world/map/npc/041-1/mapflags.txt b/world/map/npc/041-1/mapflags.txt
deleted file mode 100644
index 07ef50ce..00000000
--- a/world/map/npc/041-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-041-1|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/042-1/_import.txt b/world/map/npc/042-1/_import.txt
deleted file mode 100644
index c0063e14..00000000
--- a/world/map/npc/042-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 042-1: Tulimshar Suburbs
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 042-1
-npc: npc/042-1/_mobs.txt
-npc: npc/042-1/_nodes.txt
-npc: npc/042-1/_warps.txt
-npc: npc/042-1/mapflags.txt
diff --git a/world/map/npc/042-1/_mobs.txt b/world/map/npc/042-1/_mobs.txt
deleted file mode 100644
index fdb0e4ec..00000000
--- a/world/map/npc/042-1/_mobs.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Suburbs mobs
-
-042-1,101,69,31,15|monster|Maggot|1002,5,100000ms,30000ms
-042-1,65,59,27,15|monster|Maggot|1002,7,100000ms,30000ms
-042-1,68,102,7,8|monster|BlackScorpion|1009,5,100000ms,30000ms
-042-1,98,88,5,8|monster|Scorpion|1003,4,100000ms,30000ms
-042-1,63,63,37,30|monster|TameScorpion|1046,6,100000ms,30000ms
-042-1,85,102,5,8|monster|Scorpion|1003,5,100000ms,30000ms
-042-1,98,99,5,5|monster|Scorpion|1003,3,100000ms,30000ms
-042-1,82,87,6,3|monster|Scorpion|1003,2,100000ms,30000ms
-042-1,70,88,5,8|monster|BlackScorpion|1009,5,100000ms,30000ms
-042-1,80,35,11,5|monster|BlackScorpion|1009,5,100000ms,30000ms
diff --git a/world/map/npc/042-1/_nodes.txt b/world/map/npc/042-1/_nodes.txt
deleted file mode 100644
index 2bb4d903..00000000
--- a/world/map/npc/042-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Suburbs nodes
-
-// (no nodes)
diff --git a/world/map/npc/042-1/_warps.txt b/world/map/npc/042-1/_warps.txt
deleted file mode 100644
index 61aa0b87..00000000
--- a/world/map/npc/042-1/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Tulimshar Suburbs warps
-
-042-1,65,20|warp|0,-1,023-1,64,143
-042-1,44,115|warp|1,-1,041-1,58,6
diff --git a/world/map/npc/042-1/mapflags.txt b/world/map/npc/042-1/mapflags.txt
deleted file mode 100644
index 50566b0a..00000000
--- a/world/map/npc/042-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-042-1|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/043-1/_import.txt b/world/map/npc/043-1/_import.txt
deleted file mode 100644
index 79f05acf..00000000
--- a/world/map/npc/043-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 043-1: Beach
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 043-1
-npc: npc/043-1/_mobs.txt
-npc: npc/043-1/_nodes.txt
-npc: npc/043-1/_warps.txt
-npc: npc/043-1/mapflags.txt
diff --git a/world/map/npc/043-1/_mobs.txt b/world/map/npc/043-1/_mobs.txt
deleted file mode 100644
index 3dccd6e2..00000000
--- a/world/map/npc/043-1/_mobs.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach mobs
-
-043-1,0,0,0,0|monster|SeaSlime|1033,17,40000ms,30000ms
-043-1,0,0,0,0|monster|YellowSlime|1007,15,60000ms,60000ms
-043-1,0,0,0,0|monster|GreenSlime|1005,20,60000ms,60000ms
diff --git a/world/map/npc/043-1/_nodes.txt b/world/map/npc/043-1/_nodes.txt
deleted file mode 100644
index 8c36389e..00000000
--- a/world/map/npc/043-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach nodes
-
-// (no nodes)
diff --git a/world/map/npc/043-1/_warps.txt b/world/map/npc/043-1/_warps.txt
deleted file mode 100644
index 05b4cdc8..00000000
--- a/world/map/npc/043-1/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Beach warps
-
-043-1,43,19|warp|4,-1,003-4,114,116
diff --git a/world/map/npc/043-1/mapflags.txt b/world/map/npc/043-1/mapflags.txt
deleted file mode 100644
index 1650bbdd..00000000
--- a/world/map/npc/043-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-043-1|mapflag|resave|002-1,32,65
diff --git a/world/map/npc/043-3/_import.txt b/world/map/npc/043-3/_import.txt
deleted file mode 100644
index b4b99268..00000000
--- a/world/map/npc/043-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 043-3: Sandy Dungeon Level 1
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 043-3
-npc: npc/043-3/_mobs.txt
-npc: npc/043-3/_nodes.txt
-npc: npc/043-3/_warps.txt
-npc: npc/043-3/mapflags.txt
diff --git a/world/map/npc/043-3/_mobs.txt b/world/map/npc/043-3/_mobs.txt
deleted file mode 100644
index 772c8921..00000000
--- a/world/map/npc/043-3/_mobs.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Sandy Dungeon Level 1 mobs
-
-043-3,39,45,24,17|monster|CaveMaggot|1056,6,20000ms,20000ms
-043-3,44,60,24,17|monster|CaveMaggot|1056,6,20000ms,20000ms
-043-3,41,96,34,26|monster|CaveMaggot|1056,10,20000ms,20000ms
-043-3,52,91,6,7|monster|AngryScorpion|1057,5,30000ms,30000ms
-043-3,102,116,26,19|monster|AngryFireGoblin|1108,10,30000ms,30000ms
-043-3,33,99,6,7|monster|AngryScorpion|1057,5,30000ms,30000ms
-043-3,116,78,25,19|monster|AngryFireGoblin|1108,8,30000ms,30000ms
-043-3,113,47,30,22|monster|RedSlime|1008,15,45000ms,35000ms
-043-3,94,44,40,18|monster|GreenSlime|1005,5,30000ms,15000ms
diff --git a/world/map/npc/043-3/_nodes.txt b/world/map/npc/043-3/_nodes.txt
deleted file mode 100644
index 9b7b7c4e..00000000
--- a/world/map/npc/043-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Sandy Dungeon Level 1 nodes
-
-// (no nodes)
diff --git a/world/map/npc/043-3/_warps.txt b/world/map/npc/043-3/_warps.txt
deleted file mode 100644
index da8eed49..00000000
--- a/world/map/npc/043-3/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Sandy Dungeon Level 1 warps
-
-043-3,31,26|warp|-1,-1,002-3,22,86
-043-3,77,30|warp|-1,-1,043-4,47,67
-043-3,116,36|warp|-1,-1,005-3,78,87
-043-3,32,37|warp|0,-1,005-3,33,85
diff --git a/world/map/npc/043-3/mapflags.txt b/world/map/npc/043-3/mapflags.txt
deleted file mode 100644
index b44307a2..00000000
--- a/world/map/npc/043-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-043-3|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/043-4/_import.txt b/world/map/npc/043-4/_import.txt
deleted file mode 100644
index 4f3ccd45..00000000
--- a/world/map/npc/043-4/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 043-4: Troll Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 043-4
-npc: npc/043-4/_mobs.txt
-npc: npc/043-4/_nodes.txt
-npc: npc/043-4/_warps.txt
-npc: npc/043-4/mapflags.txt
diff --git a/world/map/npc/043-4/_mobs.txt b/world/map/npc/043-4/_mobs.txt
deleted file mode 100644
index 2d410126..00000000
--- a/world/map/npc/043-4/_mobs.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Troll Cave mobs
-
-043-4,139,163,7,6|monster|Terranite|1062,2,240000ms,120000ms
-043-4,133,45,14,16|monster|UndeadTroll|1117,4,100000ms,50000ms
-043-4,91,139,11,10|monster|UndeadTroll|1117,2,100000ms,50000ms
-043-4,35,120,10,11|monster|UndeadTroll|1117,2,100000ms,50000ms
-043-4,43,143,12,11|monster|UndeadWitch|1116,2,120000ms,60000ms
-043-4,102,153,9,9|monster|UndeadWitch|1116,2,120000ms,60000ms
-043-4,142,159,14,12|monster|UndeadWitch|1116,2,120000ms,60000ms
-043-4,150,33,16,15|monster|UndeadWitch|1116,1,120000ms,60000ms
-043-4,103,54,8,23|monster|UndeadTroll|1117,3,100000ms,50000ms
-043-4,47,38,20,10|monster|Troll|1054,7,100000ms,50000ms
-043-4,98,85,8,15|monster|Snake|1010,5,100000ms,50000ms
-043-4,104,57,15,27|monster|Troll|1054,7,100000ms,50000ms
-043-4,89,64,9,11|monster|BlackScorpion|1009,5,100000ms,50000ms
-043-4,143,46,32,28|monster|Troll|1054,7,100000ms,50000ms
-043-4,154,106,26,29|monster|BlackScorpion|1009,8,100000ms,50000ms
-043-4,162,77,15,23|monster|Snake|1010,6,100000ms,50000ms
-043-4,152,143,11,10|monster|BlackScorpion|1009,6,100000ms,50000ms
-043-4,159,161,10,8|monster|Snake|1010,6,100000ms,50000ms
-043-4,98,138,21,21|monster|Troll|1054,5,100000ms,50000ms
-043-4,45,106,18,25|monster|Troll|1054,5,100000ms,50000ms
-043-4,39,138,19,17|monster|BlackScorpion|1009,5,100000ms,50000ms
-043-4,133,123,30,23|monster|Troll|1054,3,100000ms,50000ms
diff --git a/world/map/npc/043-4/_nodes.txt b/world/map/npc/043-4/_nodes.txt
deleted file mode 100644
index 2e89bc1e..00000000
--- a/world/map/npc/043-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Troll Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/043-4/_warps.txt b/world/map/npc/043-4/_warps.txt
deleted file mode 100644
index 27f75e1c..00000000
--- a/world/map/npc/043-4/_warps.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Troll Cave warps
-
-043-4,47,68|warp|-1,-1,043-3,77,31
-043-4,153,27|warp|-1,-1,043-4,193,32
-043-4,193,33|warp|-1,-1,043-4,153,28
-043-4,194,24|warp|-1,-1,043-5,30,107
diff --git a/world/map/npc/043-4/mapflags.txt b/world/map/npc/043-4/mapflags.txt
deleted file mode 100644
index 9acc0b8a..00000000
--- a/world/map/npc/043-4/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-043-4|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/045-1/_import.txt b/world/map/npc/045-1/_import.txt
deleted file mode 100644
index 591b3e37..00000000
--- a/world/map/npc/045-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 045-1: Deep Snow Forest
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 045-1
-npc: npc/045-1/_mobs.txt
-npc: npc/045-1/_nodes.txt
-npc: npc/045-1/_warps.txt
-npc: npc/045-1/mapflags.txt
diff --git a/world/map/npc/045-1/_mobs.txt b/world/map/npc/045-1/_mobs.txt
deleted file mode 100644
index f8a3433c..00000000
--- a/world/map/npc/045-1/_mobs.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Deep Snow Forest mobs
-
-045-1,102,122,23,22|monster|Wolvern|1090,10,100000ms,30000ms
-045-1,98,77,23,22|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,147,63,23,22|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,60,97,23,22|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,106,44,23,22|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,133,93,23,22|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,38,76,18,15|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,60,59,18,15|monster|Wolvern|1090,5,100000ms,30000ms
-045-1,0,0,0,0|monster|Squirrel|1038,40,100000ms,30000ms
-045-1,0,0,0,0|monster|Reinboo|1094,30,100000ms,30000ms
-045-1,0,0,0,0|monster|Fluffy|1020,40,100000ms,30000ms
-045-1,0,0,0,0|monster|WhiteBell|1095,5,100000ms,30000ms
-045-1,47,145,25,25|monster|IceGoblin|1058,4,100000ms,30000ms
-045-1,150,126,25,24|monster|IceGoblin|1058,4,100000ms,30000ms
-045-1,104,149,79,10|monster|IceGoblin|1058,4,100000ms,30000ms
diff --git a/world/map/npc/045-1/_nodes.txt b/world/map/npc/045-1/_nodes.txt
deleted file mode 100644
index 9ef28c87..00000000
--- a/world/map/npc/045-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Deep Snow Forest nodes
-
-// (no nodes)
diff --git a/world/map/npc/045-1/_warps.txt b/world/map/npc/045-1/_warps.txt
deleted file mode 100644
index 0560da40..00000000
--- a/world/map/npc/045-1/_warps.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Deep Snow Forest warps
-
-045-1,175,60|warp|-1,0,034-1,16,30
-045-1,177,132|warp|-1,1,034-1,17,102
-045-1,26,179|warp|2,-1,017-1,182,17
diff --git a/world/map/npc/045-1/mapflags.txt b/world/map/npc/045-1/mapflags.txt
deleted file mode 100644
index c3cbf1da..00000000
--- a/world/map/npc/045-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-045-1|mapflag|resave|017-1,170,25
diff --git a/world/map/npc/046-1/_import.txt b/world/map/npc/046-1/_import.txt
deleted file mode 100644
index 2700ea85..00000000
--- a/world/map/npc/046-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 046-1: Rock Plateau
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 046-1
-npc: npc/046-1/_mobs.txt
-npc: npc/046-1/_nodes.txt
-npc: npc/046-1/_warps.txt
-npc: npc/046-1/mapflags.txt
diff --git a/world/map/npc/046-1/_mobs.txt b/world/map/npc/046-1/_mobs.txt
deleted file mode 100644
index 919cca57..00000000
--- a/world/map/npc/046-1/_mobs.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rock Plateau mobs
-
-046-1,0,7,0,0|monster|Reinboo|1094,40,100000ms,30000ms
-046-1,0,7,0,0|monster|Fluffy|1020,50,100000ms,30000ms
-046-1,0,7,0,0|monster|Squirrel|1038,50,100000ms,30000ms
-046-1,44,35,52,20|monster|Moggun|1061,12,100000ms,30000ms
-046-1,0,7,0,0|monster|Yeti|1072,2,100000ms,30000ms
-046-1,87,101,23,13|monster|Wolvern|1090,5,100000ms,30000ms
-046-1,0,7,0,0|monster|WhiteBell|1095,9,100000ms,30000ms
-046-1,72,59,15,12|monster|Wolvern|1090,2,100000ms,30000ms
-046-1,36,112,10,9|monster|Wolvern|1090,2,100000ms,30000ms
-046-1,115,40,45,33|monster|Wolvern|1090,7,100000ms,30000ms
-046-1,145,67,10,9|monster|Wolvern|1090,2,100000ms,30000ms
diff --git a/world/map/npc/046-1/_nodes.txt b/world/map/npc/046-1/_nodes.txt
deleted file mode 100644
index 9075a159..00000000
--- a/world/map/npc/046-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rock Plateau nodes
-
-// (no nodes)
diff --git a/world/map/npc/046-1/_warps.txt b/world/map/npc/046-1/_warps.txt
deleted file mode 100644
index d593a98e..00000000
--- a/world/map/npc/046-1/_warps.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Rock Plateau warps
-
-046-1,95,124|warp|0,-1,034-1,94,19
-046-1,29,20|warp|-1,-1,047-1,70,178
-046-1,31,20|warp|-1,-1,047-1,70,178
-046-1,78,37|warp|-1,-1,046-3,78,29
-046-1,131,55|warp|-1,-1,046-3,131,47
-046-1,131,62|warp|-1,-1,046-3,131,54
-046-1,139,26|warp|-1,-1,046-3,139,18
-046-1,83,50|warp|-1,-1,046-3,83,42
-046-1,124,116|warp|-1,-1,046-3,124,108
-046-1,62,26|warp|-1,-1,019-4,24,123
diff --git a/world/map/npc/046-1/mapflags.txt b/world/map/npc/046-1/mapflags.txt
deleted file mode 100644
index 8e5720df..00000000
--- a/world/map/npc/046-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-046-1|mapflag|resave|046-1,92,48
diff --git a/world/map/npc/046-3/_import.txt b/world/map/npc/046-3/_import.txt
deleted file mode 100644
index d06b31c5..00000000
--- a/world/map/npc/046-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 046-3: Frosty Underground
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 046-3
-npc: npc/046-3/_mobs.txt
-npc: npc/046-3/_nodes.txt
-npc: npc/046-3/_warps.txt
-npc: npc/046-3/mapflags.txt
diff --git a/world/map/npc/046-3/_mobs.txt b/world/map/npc/046-3/_mobs.txt
deleted file mode 100644
index d75b5f5a..00000000
--- a/world/map/npc/046-3/_mobs.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Frosty Underground mobs
-
-046-3,68,101,12,8|monster|Yeti|1072,2,100000ms,30000ms
-046-3,0,0,0,0|monster|IceGoblin|1058,20,100000ms,30000ms
-046-3,55,61,25,26|monster|Moggun|1061,14,100000ms,30000ms
-046-3,119,104,5,4|monster|IceElement|1071,1,100000ms,30000ms
-046-3,132,71,9,7|monster|WhiteSlime|1093,4,100000ms,30000ms
-046-3,107,85,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-046-3,98,77,6,4|monster|WhiteSlime|1093,4,100000ms,30000ms
-046-3,70,82,6,4|monster|WhiteSlime|1093,6,100000ms,30000ms
-046-3,106,34,6,4|monster|WhiteSlime|1093,4,100000ms,30000ms
-046-3,33,37,6,4|monster|WhiteSlime|1093,4,100000ms,30000ms
-046-3,144,105,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-046-3,152,55,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-046-3,84,53,14,9|monster|BlueSlime|1091,2,100000ms,30000ms
-046-3,47,23,15,10|monster|IceElement|1071,2,100000ms,30000ms
-046-3,113,48,12,8|monster|Yeti|1072,2,100000ms,30000ms
diff --git a/world/map/npc/046-3/_nodes.txt b/world/map/npc/046-3/_nodes.txt
deleted file mode 100644
index 42beb88a..00000000
--- a/world/map/npc/046-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Frosty Underground nodes
-
-// (no nodes)
diff --git a/world/map/npc/046-3/_warps.txt b/world/map/npc/046-3/_warps.txt
deleted file mode 100644
index 2a59857c..00000000
--- a/world/map/npc/046-3/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Frosty Underground warps
-
-046-3,139,19|warp|-1,-1,046-1,139,27
-046-3,78,30|warp|-1,-1,046-1,78,38
-046-3,83,43|warp|-1,-1,046-1,83,51
-046-3,131,48|warp|-1,-1,046-1,131,56
-046-3,131,55|warp|-1,-1,046-1,131,63
-046-3,124,109|warp|-1,-1,046-1,124,117
diff --git a/world/map/npc/046-3/mapflags.txt b/world/map/npc/046-3/mapflags.txt
deleted file mode 100644
index 941f4c1a..00000000
--- a/world/map/npc/046-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-046-3|mapflag|resave|046-1,92,48
diff --git a/world/map/npc/047-1/_import.txt b/world/map/npc/047-1/_import.txt
deleted file mode 100644
index d99b52f5..00000000
--- a/world/map/npc/047-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 047-1: snow Hills
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 047-1
-npc: npc/047-1/_mobs.txt
-npc: npc/047-1/_nodes.txt
-npc: npc/047-1/_warps.txt
-npc: npc/047-1/mapflags.txt
diff --git a/world/map/npc/047-1/_mobs.txt b/world/map/npc/047-1/_mobs.txt
deleted file mode 100644
index 8c709dff..00000000
--- a/world/map/npc/047-1/_mobs.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Hills mobs
-
-047-1,37,175,3,2|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-1,45,75,2,2|monster|BlueSlime|1091,1,100000ms,30000ms
-047-1,0,0,0,0|monster|Reinboo|1094,50,100000ms,30000ms
-047-1,0,0,0,0|monster|Fluffy|1020,60,100000ms,30000ms
-047-1,0,0,0,0|monster|Squirrel|1038,60,100000ms,30000ms
-047-1,81,125,103,56|monster|Moggun|1061,25,100000ms,30000ms
-047-1,189,123,25,36|monster|Wolvern|1090,6,100000ms,30000ms
-047-1,160,115,25,20|monster|Wolvern|1090,6,100000ms,30000ms
-047-1,169,163,48,31|monster|Wolvern|1090,6,100000ms,30000ms
-047-1,58,71,48,31|monster|Wolvern|1090,6,100000ms,30000ms
-047-1,122,116,20,24|monster|Wolvern|1090,6,100000ms,30000ms
-047-1,110,173,25,20|monster|Wolvern|1090,6,100000ms,30000ms
-047-1,108,168,3,2|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-1,108,158,3,2|monster|BlueSlime|1091,1,100000ms,30000ms
-047-1,0,0,0,0|monster|WhiteBell|1095,10,100000ms,30000ms
-047-1,87,119,36,35|monster|Yeti|1072,2,100000ms,30000ms
-047-1,138,22,2,2|monster|WhiteSlime|1093,4,100000ms,30000ms
-047-1,157,66,2,2|monster|WhiteSlime|1093,4,100000ms,30000ms
-047-1,174,46,4,5|monster|BlueSlime|1091,2,100000ms,30000ms
-047-1,143,43,4,5|monster|BlueSlime|1091,2,100000ms,30000ms
-047-1,122,61,2,2|monster|WhiteSlime|1093,4,100000ms,30000ms
-047-1,132,70,4,5|monster|BlueSlime|1091,2,100000ms,30000ms
diff --git a/world/map/npc/047-1/_nodes.txt b/world/map/npc/047-1/_nodes.txt
deleted file mode 100644
index d910c062..00000000
--- a/world/map/npc/047-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Hills nodes
-
-// (no nodes)
diff --git a/world/map/npc/047-1/_warps.txt b/world/map/npc/047-1/_warps.txt
deleted file mode 100644
index a92abff6..00000000
--- a/world/map/npc/047-1/_warps.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// snow Hills warps
-
-047-1,108,165|warp|-1,-1,047-3,110,102
-047-1,108,156|warp|-1,-1,047-3,119,94
-047-1,102,111|warp|-1,-1,047-3,119,58
-047-1,102,107|warp|-1,-1,047-3,128,45
-047-1,154,92|warp|-1,-1,019-4,74,27
-047-1,101,143|warp|-1,-1,047-3,126,180
-047-1,37,173|warp|-1,-1,047-3,33,175
-047-1,45,73|warp|-1,-1,047-3,46,76
-047-1,78,109|warp|-1,-1,047-3,35,41
-047-1,83,123|warp|-1,-1,047-3,108,165
-047-1,71,179|warp|1,-1,046-1,29,21
-047-1,130,50|warp|-1,-1,047-1,130,47
-047-1,130,48|warp|-1,-1,047-1,130,51
-047-1,128,39|warp|-1,-1,048-2,40,48
diff --git a/world/map/npc/047-1/mapflags.txt b/world/map/npc/047-1/mapflags.txt
deleted file mode 100644
index 12a7c9cb..00000000
--- a/world/map/npc/047-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-047-1|mapflag|resave|048-2,26,46
diff --git a/world/map/npc/047-3/_import.txt b/world/map/npc/047-3/_import.txt
deleted file mode 100644
index 5250ad76..00000000
--- a/world/map/npc/047-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 047-3: Snow Hills Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 047-3
-npc: npc/047-3/_mobs.txt
-npc: npc/047-3/_nodes.txt
-npc: npc/047-3/_warps.txt
-npc: npc/047-3/mapflags.txt
diff --git a/world/map/npc/047-3/_mobs.txt b/world/map/npc/047-3/_mobs.txt
deleted file mode 100644
index 2b0f3338..00000000
--- a/world/map/npc/047-3/_mobs.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Hills Cave mobs
-
-047-3,56,135,9,8|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-3,35,153,6,6|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-3,39,104,9,8|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-3,73,153,9,8|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-3,64,104,3,3|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-3,24,168,6,4|monster|BlueSlime|1091,2,100000ms,30000ms
-047-3,87,134,5,3|monster|BlueSlime|1091,2,100000ms,30000ms
-047-3,55,122,5,3|monster|BlueSlime|1091,2,100000ms,30000ms
-047-3,35,128,5,3|monster|BlueSlime|1091,2,100000ms,30000ms
-047-3,53,84,5,3|monster|BlueSlime|1091,2,100000ms,30000ms
-047-3,75,136,21,26|monster|Moggun|1061,5,100000ms,30000ms
-047-3,39,31,42,21|monster|Moggun|1061,12,100000ms,30000ms
-047-3,40,31,5,3|monster|IceSkull|1085,2,100000ms,30000ms
-047-3,122,157,21,16|monster|Yeti|1072,2,100000ms,30000ms
-047-3,102,166,15,13|monster|IceSkull|1085,5,100000ms,30000ms
-047-3,109,81,15,13|monster|IceElement|1071,1,100000ms,30000ms
-047-3,123,90,5,3|monster|BlueSlime|1091,2,100000ms,30000ms
-047-3,109,97,9,8|monster|WhiteSlime|1093,7,100000ms,30000ms
-047-3,119,41,42,21|monster|Moggun|1061,8,100000ms,30000ms
-047-3,51,94,39,14|monster|IceSkull|1085,5,100000ms,30000ms
-047-3,121,172,9,8|monster|WhiteSlime|1093,7,100000ms,30000ms
diff --git a/world/map/npc/047-3/_nodes.txt b/world/map/npc/047-3/_nodes.txt
deleted file mode 100644
index 06534770..00000000
--- a/world/map/npc/047-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Hills Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/047-3/_warps.txt b/world/map/npc/047-3/_warps.txt
deleted file mode 100644
index 3902b4dc..00000000
--- a/world/map/npc/047-3/_warps.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Snow Hills Cave warps
-
-047-3,46,74|warp|-1,-1,047-1,45,75
-047-3,33,176|warp|-1,-1,047-1,37,174
-047-3,126,181|warp|-1,-1,047-1,101,144
-047-3,35,42|warp|-1,-1,047-1,78,110
-047-3,108,163|warp|-1,-1,047-1,83,125
-047-3,110,103|warp|-1,-1,047-1,108,166
-047-3,119,95|warp|-1,-1,047-1,108,157
-047-3,119,59|warp|-1,-1,047-1,102,112
-047-3,128,46|warp|-1,-1,047-1,102,108
diff --git a/world/map/npc/047-3/mapflags.txt b/world/map/npc/047-3/mapflags.txt
deleted file mode 100644
index b3562bf7..00000000
--- a/world/map/npc/047-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-047-3|mapflag|resave|047-1,145,20
diff --git a/world/map/npc/048-2/_import.txt b/world/map/npc/048-2/_import.txt
deleted file mode 100644
index a820b2d4..00000000
--- a/world/map/npc/048-2/_import.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// Map 048-2: Blue Sages' Mansion
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 048-2
-npc: npc/048-2/_mobs.txt
-npc: npc/048-2/_nodes.txt
-npc: npc/048-2/_warps.txt
-npc: npc/048-2/bluesageConfig.txt
-npc: npc/048-2/helperAccused.txt
-npc: npc/048-2/helperBookpages1.txt
-npc: npc/048-2/helperBookpages2.txt
-npc: npc/048-2/helperBookpages3.txt
-npc: npc/048-2/helperChief.txt
-npc: npc/048-2/helperCleaning1.txt
-npc: npc/048-2/helperCleaning2.txt
-npc: npc/048-2/helperCleaning3.txt
-npc: npc/048-2/helperCleaning4.txt
-npc: npc/048-2/helperCleaning5.txt
-npc: npc/048-2/helperJanitor.txt
-npc: npc/048-2/helperMInk.txt
-npc: npc/048-2/helperMReed.txt
-npc: npc/048-2/helperMSilk.txt
-npc: npc/048-2/helperMYetiClaw.txt
-npc: npc/048-2/helperResting1.txt
-npc: npc/048-2/helperResting2.txt
-npc: npc/048-2/mapflags.txt
-npc: npc/048-2/sageNikolai.txt
-npc: npc/048-2/slimes.txt
-npc: npc/048-2/traveler.txt
-npc: npc/048-2/visitors.txt
diff --git a/world/map/npc/048-2/_mobs.txt b/world/map/npc/048-2/_mobs.txt
deleted file mode 100644
index c9f81014..00000000
--- a/world/map/npc/048-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Blue Sages' Mansion mobs
-
diff --git a/world/map/npc/048-2/_nodes.txt b/world/map/npc/048-2/_nodes.txt
deleted file mode 100644
index f5923fb2..00000000
--- a/world/map/npc/048-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Blue Sages' Mansion nodes
-
-// (no nodes)
diff --git a/world/map/npc/048-2/_warps.txt b/world/map/npc/048-2/_warps.txt
deleted file mode 100644
index 807c088a..00000000
--- a/world/map/npc/048-2/_warps.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Blue Sages' Mansion warps
-
-048-2,22,78|warp|0,-1,048-2,84,23
-048-2,60,21|warp|0,-1,048-2,121,26
-048-2,40,50|warp|-1,-1,047-1,128,40
-048-2,84,21|warp|0,-1,048-2,22,76
-048-2,113,23|warp|-1,-1,048-2,147,35
-048-2,122,28|warp|0,-1,048-2,59,22
-048-2,95,23|warp|-1,-1,048-2,178,35
-048-2,147,36|warp|-1,-1,048-2,113,24
-048-2,178,36|warp|-1,-1,048-2,95,24
-048-2,27,141|warp|-1,-1,048-2,52,102
-048-2,60,71|warp|0,-1,048-2,60,104
-048-2,23,73|warp|-1,-1,048-2,85,132
-048-2,55,73|warp|-1,-1,048-2,121,132
-048-2,61,106|warp|0,-1,048-2,59,73
-048-2,52,101|warp|-1,-1,048-2,27,140
-048-2,121,133|warp|-1,-1,048-2,55,74
-048-2,85,133|warp|-1,-1,048-2,23,74
diff --git a/world/map/npc/048-2/bluesageConfig.txt b/world/map/npc/048-2/bluesageConfig.txt
deleted file mode 100644
index 9ab3e711..00000000
--- a/world/map/npc/048-2/bluesageConfig.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-// Blue Sage quest
-// The mansion of the Sage is in disarray, because a magic experiment with the slimes went wrong,
-// the white and blue slimes got out of control, ate most of the books in the library
-// and most of the slimes escaped to the outside world
-// Variable used: QUEST_BlueSage
-// Author: Jenalya
-
-// Subquests:
-
-// Byte 0:
-// Bit 0 - 4: Collect missing book pages
-// some of the helpers are working on recreating the more valuable books
-// they need the missing bookpages for that
-// value gives the number of new pages given to the helpers (up to 31)
-// bit 5: got Grimoire as reward for collecting the bookpages and bringing material to repair the books
-// Bit 6: got reward for defeating the remaining slimes in the library
-// Bit 7: unused
-
-// Nibble 2 as flags: Bring material to repair the books and make new books
-// Bit 0: Reed Bundles
-// Bit 1: Silk Cocoons
-// Bit 2: Yeti Claws
-// Bit 3: Inks (Bottle of Water, Iron Powder, Wisp Powder, Spectre Powder, Poltergeist Powder)
-
-// Nibble 3: Investigation of how the accident could have happened
-// state 1: helper who is considered to have caused the accident asks the player to talk to the chief helper to find out if he's going to loose his job
-// state 2: talked to chief and get the mission to investigate about what exactly happened
-// there are two independent circumstances to gather information about, one is about how the helpers did their job (a) and another about a suspicious visitor shortly before the accident happened (b)
-// this is saved as described here:
-// (a) (b)
-// 0 0 (state 2) started investigation
-// 0 1 (state 3) talked to Janitor
-// 0 2 (state 4) got more information about visitor
-// 1 0 (state 5) talked to Peetu
-// 1 1 (state 6) talked to Peetu and talked to Janitor
-// 1 2 (state 7) talked to Peetu and got more information about visitor
-// 2 0 (state 8) got more information about Peetu
-// 2 1 (state 9) got more information about Peetu and talked to Janitor
-// 2 2 (state 10) got more information about Peetu and got more information about visitor
-// (a) first talk to the helper in the bedroom, who describes how careful he has been
-// (a) and then to at least one of the helpers in the library, who supports that
-// (a) it's possible to talk to more helpers, who will support too, but it suffices to talk to one
-// (b) first talk to the janitor in the entrance room, who mentions the suspicious visitor
-// (b) then talk to at least one of the helpers in the entrance room/library who give more information about the visitor
-// (b) it's possible to talk to more helpers, who will give redundant information, but it suffices to talk to one
-// so to have somed progress in (a) add three to the variable, and for progress in (b) add one
-// state 11: reported to chief helper and got a reward
-// state 12: told Peetu about the result and eventually got another small reward
-
-// Byte 2: Hunt some remaining slimes between the bookshelves
-// Bit 0: started the subquest
-// Bit 1 - 7: each spawn point is unique and saved with a flag
-
--|script|#bluesageconfig|32767
-{
- end;
-
-OnInit:
- set $@Q_BlueSageMinimumLevel, 60;
-
- set $@Q_BlueSageBookPages_MASK, 0x1F;
- set $@Q_BlueSageBookPages_SHIFT, 0;
-
- set $@Q_BlueSageGrimoire, 0x20;
- set $@Q_BlueSageIceSword, 0x40;
-
- set $@Q_BlueSageMaterial_MASK, NIBBLE_2_MASK;
- set $@Q_BlueSageMaterial_SHIFT, NIBBLE_2_SHIFT;
-
- set $@Q_BlueSageMaterialReed, 0x100;
- set $@Q_BlueSageMaterialSilk, 0x200;
- set $@Q_BlueSageMaterialClaw, 0x400;
- set $@Q_BlueSageMaterialInk, 0x800;
-
- set $@Q_BlueSageSlimes_MASK, BYTE_2_MASK;
- set $@Q_BlueSageSlimes_SHIFT, BYTE_2_SHIFT;
- set $@Q_BlueSageSlimesStart, 0x010000;
- set $@Q_BlueSageSlime0, 0x020000;
- set $@Q_BlueSageSlime1, 0x040000;
- set $@Q_BlueSageSlime2, 0x080000;
- set $@Q_BlueSageSlime3, 0x100000;
- set $@Q_BlueSageSlime4, 0x200000;
- set $@Q_BlueSageSlime5, 0x400000;
- set $@Q_BlueSageSlime6, 0x800000;
- //white
- set $@BlueSageSlime0_Amount, 6;
- set $@BlueSageSlime1_Amount, 5;
- set $@BlueSageSlime2_Amount, 4;
- set $@BlueSageSlime3_Amount, 3;
- // blue
- set $@BlueSageSlime4_Amount, 3;
- set $@BlueSageSlime5_Amount, 2;
- set $@BlueSageSlime6_Amount, 1;
- end;
-}
-
-function|script|updateBlueSageBookPages
-{
- set QUEST_BlueSage, (QUEST_BlueSage & ~($@Q_BlueSageBookPages_MASK) | (@bookpages << $@Q_BlueSageBookPages_SHIFT));
- return;
-}
-
-function|script|blueSageNumberOfClearedNests
-{
- set @slimenests, 0;
- if (QUEST_BlueSage & $@Q_BlueSageSlime0)
- set @slimenests, @slimenests+1;
- if (QUEST_BlueSage & $@Q_BlueSageSlime1)
- set @slimenests, @slimenests+1;
- if (QUEST_BlueSage & $@Q_BlueSageSlime2)
- set @slimenests, @slimenests+1;
- if (QUEST_BlueSage & $@Q_BlueSageSlime3)
- set @slimenests, @slimenests+1;
- if (QUEST_BlueSage & $@Q_BlueSageSlime4)
- set @slimenests, @slimenests+1;
- if (QUEST_BlueSage & $@Q_BlueSageSlime5)
- set @slimenests, @slimenests+1;
- if (QUEST_BlueSage & $@Q_BlueSageSlime6)
- set @slimenests, @slimenests+1;
- return;
-}
diff --git a/world/map/npc/048-2/helperAccused.txt b/world/map/npc/048-2/helperAccused.txt
deleted file mode 100644
index 95607656..00000000
--- a/world/map/npc/048-2/helperAccused.txt
+++ /dev/null
@@ -1,145 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Peetu is the person who caused the accident
-// involved investigation sub-quest
-
-048-2,25,135,0|script|Peetu|130
-{
- if (QL_BSAGE_INVESTIGATE == 12) goto L_Thank;
- if (QL_BSAGE_INVESTIGATE > 4 && QL_BSAGE_INVESTIGATE < 13) goto L_Investigate;
- if (QL_BSAGE_INVESTIGATE > 1 && QL_BSAGE_INVESTIGATE < 13) goto L_Query;
- if (QL_BSAGE_INVESTIGATE == 1) goto L_Help;
-
- mes "You see a rather stressed helper, mumbling to himself.";
- if (BaseLevel < $@Q_BlueSageMinimumLevel || !QL_BSAGE_INVESTIGATE)
- goto L_Close;
- mes "[Peetu]";
- mes "\"How could this have happened? I don't understand it... I'm sure I did the sealing correctly. Maybe the ingredients... but that doesn't make sense. They're checked regularly and...\"";
- next;
- mes "He startles as he notices you.";
- mes "[Peetu]";
- mes "\"Oh, hello. What are you doing here? Uh ... visitors usually don't come up here. I mean, I don't mean to be rude, of course. I'm just surprised to see you here.\"";
- menu
- "I'm just having a look around.",L_Close,
- "Sorry, I didn't mean to bother you.",L_Close,
- "Why aren't you downstairs, helping everyone to clean up?",L_Next;
-
-L_Next:
- mes "[Peetu]";
- mes "\"I would, but I'm ... under preliminary suspension.\"";
- mes "He looks close to tears.";
- next;
- mes "[Peetu]";
- mes "\"It's all my fault! It was my job to seal the slimes away for the night, but I somehow messed it up! How could this have happened? And now I'm going to lose my job and I'll have to leave here and no other sage would give me a new appointment and I don't know what else to do! I mean, I spent my whole life on this so far, I don't even know anything else I could do.\"";
- next;
- mes "He seems to be having a nervous breakdown, as he latches onto you and starts sobbing on your shoulder.";
- menu
- "(Try to console him)",L_More,
- "(Shake him and tell him to pull himself together)",L_More,
- "(Push him away from you and leave.)",L_Close;
-
-L_More:
- mes "He calms down a bit.";
- mes "[Peetu]";
- mes "\"Uh. You're probably right. I'm very sorry. I'm just... You know, I wanted to become a scholar of the sages, studying and... Oh, how could I mess that up? Did you see the library? It caused so much damage! What else should they do other than kick me out?\"";
- menu
- "Maybe you should talk to your chief about that?",L_Less,
- "It doesn't make much sense to draw overhasty conclusions.",L_Less,
- "Do you have a clue about what went wrong?",L_Less;
-
-L_Less:
- mes "[Peetu]";
- mes "\"Well ... but ... I mean ... I don't know ... ";
- mes "I have an idea! Would you ... uhm ... would you talk to Chief Oskari for me? And ask him what he plans to do about me? I... I just don't feel capable of doing that myself right now. I'll try to pull myself together in the meanwhile.\"";
- set QL_BSAGE_INVESTIGATE, 1;
- goto L_Close;
-
-L_Help:
- mes "[Peetu]";
- mes "\"Please talk to Chief Oskari for me and find out if I'll get fired.";
- mes "You can probably find him in his office on the second floor.\"";
- goto L_Close;
-
-L_Query:
- mes "[Peetu]";
- mes "\"Did you talk to Chief Oskari?\"";
- menu
- "Yes, and he doesn't plan to fire you.",L_Continue,
- "Not yet.",L_Close;
-
-L_Continue:
- mes "You tell Peetu that Chief Oskari has a good opinion of him and explain your task to find out what exactly happened.";
- next;
- mes "[Peetu]";
- mes "\"Alright, I understand. You see, I'm very confused too, because I usually pay a lot of attention to my work. Especially when doing something as delicate as sealing away the slimes for the night.\"";
- menu
- "Can you describe to me what exactly you did?",L_TextWall;
-
-L_TextWall:
- mes "[Peetu]";
- mes "\"Well, ok, sure. So, as you know we're doing some research on the nature of slimes, their connection to minerals and gemstones, their breeding behavior, and well ... uh ... doing some magical experiments to analyze their reactions to different kinds of magic.";
- mes "These experiments caused some ... mutations, and the Blue and White Slimes developed some behavior different from the slimes of other colors, making them more dangerous.\"";
- next;
- mes "\"This is the reason they have to be magically sealed away for the night, since we didn't want them to get out in the wilderness... Oh, I can only imagine what damage they do to the environment!\"";
- mes "He sighs.";
- next;
- mes "\"However, the sealing involves several steps. I usually start to prepare it while the helpers are still working on their research and experiments. That way, when they're done, they can just come and place the slimes under the seal.";
- mes "I take the ingredients for the spell from the shelves, mix them together and cast the spell shortly before the other helpers finish their daily work.\"";
- next;
- mes "\"You can think of the seal as something like a magical cage. This is a simplified explanation, of course. It's rather advanced magic, a modified version of a shield spell, rather focused on the components that reduce the targets ability to move and... Oh, I seem to be losing you. Never mind then.";
- mes "Anyway, I create and open the 'cage', then I wait for all the helpers to drop in the slimes and close it when all are in. When it is closed, I additionally cast a guarding spell to prevent unauthorized access.\"";
- next;
- mes "\"That night when the slimes escaped, I did all of this as usual. Everything seemed alright after I cast the guarding spell, so I went to bed. But I woke up in the middle of the night because I felt the spells... oh, it's hard to describe... it seems the spell which defines the magical cage started to... inflate itself. That caused the guarding spells to vanish, since they're intended to protect against threats from the outside, not the inside.";
- mes "While expanding, the cage went thinner and thinner until it just... faded out of existence!\"";
- next;
- mes "\"This left all the slimes free in the workshop, right next to the library. Of course I hurried there as fast as I could, yelling to wake up everyone, but that caused so much confusion that we fell over each other in the corridor and when we finally reached the library, the slimes were already spread all over the room, eating the books and dripping out of the windows.\"";
- next;
- mes "\"We tried to block the windows to prevent them escaping, but as most of the helpers aren't experienced in fighting and only some of us have a higher magical education, the slimes are rather dangerous for most of them.";
- mes "We weren't able to get the situation under control until most of the slimes had escaped.\"";
- next;
- mes "\"Since it was my responsibility to seal them away, I was preliminarily suspended and sent to my room. Since then I've been thinking over and over again about the happenings and how I cast the spell, trying to find the mistake I made.";
- mes "But now that I've described the spells to you, I'm sure I cast them correctly. Thinking again about the effect of the seal inflating, I suppose it might have to do with the ingredients I used for the spell.\"";
- next;
- mes "\"I never tried it, because it makes no sense to do that, but theoretically adding some Silk Cocoons could have such an effect. That's pretty basic nature magic.";
- mes "But... how would that have gotten into the ingredients?\"";
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Investigate:
- mes "[Peetu]";
- mes "\"Hello. Did you find out anything else yet?\"";
- if (QL_BSAGE_INVESTIGATE != 11)
- menu
- "I'm still collecting information.",L_Close;
- if (@inventorylist_count == 100)
- goto L_TooMany;
- menu
- "Yes, I have already talked with Chief Oskari.",L_ReallyMore,
- "Not yet.",L_Close;
-
-L_ReallyMore:
- mes "You explain your gained insights to Peetu and what conclusions Chief Oskari drew.";
- mes "[Peetu]";
- mes "\"Oh, I'm so relieved!";
- mes "I mean, this is alarming news, but I'm so glad that this isn't my fault and that he feels I deserve to keep my job.\"";
- next;
- mes "\"It isn't much, but please take these Silk Gloves. We use those when we have to protect our hands, but still need to perform magic.\"";
- set QL_BSAGE_INVESTIGATE, 12;
- getitem "SilkGloves", 1;
- goto L_Close;
-
-L_Thank:
- mes "[Peetu]";
- mes "\"Thanks for all your help.\"";
- goto L_Close;
-
-L_TooMany:
- mes "[Peetu]";
- mes "\"Wow, you have a lot of stuff with you! Isn't that uncomfortable?\"";
- goto L_Close;
-
-L_Close:
- set @inventorylist_count, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperBookpages1.txt b/world/map/npc/048-2/helperBookpages1.txt
deleted file mode 100644
index 11dd1054..00000000
--- a/world/map/npc/048-2/helperBookpages1.txt
+++ /dev/null
@@ -1,142 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Ensio is one of the helpers working on sorting the bookpages, can take bookpages
-// can give second hint about the visitor in investigation subquest
-
-048-2,104,86,0|script|Ensio|365
-{
- set @bookpages, ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
-
- set @old_bookpage_exp, 1000;
- set @new_bookpage_exp, 10000;
-
- if (@bookpages == 31) goto L_Thank;
- if (@bookpages > 26) goto L_Almost;
- if (@bookpages > 18) goto L_Many;
- if (@bookpages > 8) goto L_Some;
- if (@bookpages > 0) goto L_Few;
-
- mes "[Ensio]";
- mes "\"Hello. Did you come here to see the library? There isn't much left... But we're working on recovering the books by collecting the ripped out book pages, sorting them and recreating the books.\"";
- if (BaseLevel < $@Q_BlueSageMinimumLevel)
- goto L_Close;
- menu
- "Good luck with that. See you in ten years or something.",L_Investigate,
- "Can I help somehow?",L_Next;
-
-L_Next:
- mes "[Ensio]";
- mes "\"Oh, would you? That'd be great! You see, the slimes ate most of the books and it is difficult to retrieve the bookpages.";
- mes "If you feel capable of this task, you could go out to hunt the Blue and White Slimes, to get the bookpages back from them.\"";
- goto L_Progress;
-
-L_Few:
- mes "[Ensio]";
- mes "\"So many bookpages are still missing...\"";
- next;
- goto L_Progress;
-
-L_Some:
- mes "[Ensio]";
- mes "\"Thanks for the pages you brought. There are still some missing.\"";
- next;
- goto L_Progress;
-
-L_Many:
- mes "[Ensio]";
- mes "\"Wow, you already found quite a lot of bookpages. Please keep it up!\"";
- next;
- goto L_Progress;
-
-L_Almost:
- mes "[Ensio]";
- mes "\"There are only a few pages missing.\"";
- next;
- goto L_Progress;
-
-L_Progress:
- mes "\"Did you get some bookpages from the slimes?\"";
- menu
- "Yes, have a look.",L_Continue,
- "No.",L_Investigate;
-
-L_Continue:
- if (countitem("BookPage") < 1)
- goto L_NoItem;
- delitem "BookPage", 1;
-
- if (rand(90 - @bookpages) < 36)
- goto L_OldPage;
-
- set @bookpages, @bookpages + 1;
- callfunc "updateBlueSageBookPages";
- getexp @new_bookpage_exp, 0;
- mes "[Ensio]";
- mes "\"Ah, wonderful! This is a page we haven't found yet!\"";
- if (@bookpages < 31)
- goto L_Progress;
- next;
- mes "\"Amazing. I think you found all the missing pages of which we didn't have a copy. This is a great help! I'll mention this to Nikolai.\"";
- goto L_Investigate;
-
-L_OldPage:
- getexp @old_bookpage_exp, 0;
- mes "[Ensio]";
- mes "\"Mh, let me see. We already have a copy of this page, but it's helpful nevertheless. Thank you.\"";
- goto L_Progress;
-
-L_Thank:
- mes "[Ensio]";
- mes "\"We'd never be able to recover our books so quickly without your help. Thanks!\"";
- goto L_Investigate;
-
-L_NoItem:
- mes "[Ensio]";
- mes "\"This isn't funny! Come back when you're serious.\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Ensio]";
- mes "\"Visitor with a mask? Ah, I think I know who are you talking about. Black clothes and a golden mask. Rather strange guy.\"";
- next;
- mes "\"He was looking around in the library a while, and then came to ask about our research. He seemed to be particularly interested in our experiments with the slimes.";
- mes "Heh, I wonder what he would've said if he'd have visited us a little bit later. Mh, now that I think about it, the accident with the slimes happened just the night after he was here.\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Ensio]";
- mes "\"Oh, I can't really tell. I'm mostly working in the library, while he's very involved in the research.\"";
- goto L_Close;
-
-L_Close:
- set @bookpages, 0;
- set @old_bookpage_exp, 0;
- set @new_bookpage_exp, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperBookpages2.txt b/world/map/npc/048-2/helperBookpages2.txt
deleted file mode 100644
index 17de49d5..00000000
--- a/world/map/npc/048-2/helperBookpages2.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Henriikka is one of the helpers working on sorting the bookpages, sends the player to Ensio
-// can be questioned as part of the investigation subquest, but doesn't give hints
-
-048-2,94,86,0|script|Henriikka|363
-{
- set @bookpages, ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
-
- if (@bookpages == 31) goto L_Thank;
- if (@bookpages > 0) goto L_Progress;
-
- mes "You see a helper looking through some papers that have a strange smell.";
- mes "[Henriikka]";
- mes "\"Oh, hey. Welcome to the library, or what's left of it.\"";
- mes "She sighs.";
- menu
- "What are you doing?",L_Next,
- "You seem to be busy. See you.",L_Close;
-
-L_Next:
- mes "[Henriikka]";
- mes "\"We're trying to repair the books by collecting the ripped out bookpages and sorting them and copying them for new books. It's a lot to do, and after being eaten by a slime they stink!";
- mes "And a lot of pages are missing, since most of the slimes escaped. I suppose we'll have to go out and hunt them once we're done here.\"";
- menu
- "Maybe I can help with that?",L_Collect,
- "Good luck.",L_Close;
-
-L_Collect:
- if (BaseLevel < $@Q_BlueSageMinimumLevel)
- goto L_Careful;
- mes "[Henriikka]";
- mes "\"Oh, that'd be awesome! If you find some pages, you can bring them to Ensio.\"";
- goto L_Investigate;
-
-L_Careful:
- mes "[Henriikka]";
- mes "\"Oh, that's very kind, but those slimes are dangerous! Better become a bit stronger first.\"";
- goto L_Close;
-
-L_Progress:
- mes "[Henriikka]";
- mes "\"If you get any bookpages from the slimes, bring them to Ensio. Thanks for your help!\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Henriikka]";
- mes "\"I'm so glad we didn't have to go out to hunt the slimes! Thank you!\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Henriikka]";
- mes "\"With a mask? I don't really remember... We have so many visitors. Though I suppose someone wearing a mask would be noticeable... But I'm so worn out from the past few days that I'm just glad I can even recall my own name! Sorry.\"";
- goto L_Close;
-
-L_Helper:
- mes "[Henriikka]";
- mes "\"Oh, I never really thought about that. He was the one who failed the sealing spell, right? But I heard it's a quite difficult spell, so I suppose this could've happened to anyone. I don't know. Why are you asking such difficult questions?\"";
- next;
- mes "\"I need to go on with sorting the bookpages now.\"";
- goto L_Close;
-
-L_Close:
- set @bookpages, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperBookpages3.txt b/world/map/npc/048-2/helperBookpages3.txt
deleted file mode 100644
index c519b139..00000000
--- a/world/map/npc/048-2/helperBookpages3.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Teuvo is one of the helpers working on sorting the bookpages
-// can give second hint about Peetu in investigation subquest
-
-048-2,99,87,0|script|Teuvo|366
-{
- set @bookpages, ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
-
- if (@bookpages == 31) goto L_Thank;
- if (@bookpages > 0) goto L_Progress;
-
- mes "[Teuvo]";
- mes "\"I always thought it was a bad idea to play around with the slimes. And as if holding them in here isn't bad enough, no, they also had to mess around with magic.\"";
- mes "He seems to be rather upset.";
- goto L_Investigate;
-
-L_Progress:
- mes "[Teuvo]";
- mes "\"Did you find some bookpages? Ensio will take them.\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Teuvo]";
- mes "\"Thanks for helping out here.\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Teuvo]";
- mes "\"With a mask? Hm. I don't remember.\"";
- goto L_Close;
-
-L_Helper:
- mes "[Teuvo]";
- mes "\"Peetu? He's one of those magic wielders who think they can do anything. Heh, you see the result here.";
- mes "But to be fair, from what I've seen Peetu was always very attentive and dutiful.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @bookpages, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperChief.txt b/world/map/npc/048-2/helperChief.txt
deleted file mode 100644
index 5f095aa5..00000000
--- a/world/map/npc/048-2/helperChief.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Chief of the Blue Sage helpers
-// involved in investigation subquest
-
-048-2,146,26,0|script|Oskari|134
-{
- if (QL_BSAGE_INVESTIGATE >= 11 && QL_BSAGE_INVESTIGATE < 13) goto L_Goodjob;
- if (QL_BSAGE_INVESTIGATE > 1 && QL_BSAGE_INVESTIGATE < 13) goto L_Investigate;
-
- mes "[Oskari]";
- mes "\"Hello. Welcome to the residence of the Great Nikolai.";
- mes "You have to excuse me, as you might have heard we're having some trouble at the moment and I, as Chief of Nikolai's helpers, have a lot to do.\"";
- if (QL_BSAGE_INVESTIGATE == 0)
- goto L_Close;
- menu
- "Peetu asked me to talk to you about his mishap.",L_Next,
- "Ok, see you.",L_Close;
-
-L_Next:
- mes "You tell him about your conversation with Peetu, how he's blaming himself and his worries about losing his job.";
- next;
- mes "Oskari keeps silent for a moment after you finish, pondering. Then he talks to you.";
- mes "[Oskari]";
- mes "\"You know, Peetu is one of my most experienced and reliable employees. This whole situation is very disquieting, not to say suspicious.\"";
- next;
- mes "\"Due to all the trouble, I haven't had time to have a talk with him nor to make further investigations. You already showed some good knowledge of human nature by the way you calmed him down and talked to me.\"";
- next;
- mes "\"Would you be willing to talk with Peetu and the other helpers, investigating what actually happened?\"";
- next;
- mes "\"As someone who's not a member of our team you might be able to get a more unbiased view of the situation, besides the fact that all of us are very busy with getting the situation under control again.\"";
- next;
- mes "\"I suggest to start by talking to Peetu again to get a precise idea of his workflow and what he thinks happened.";
- mes "Oh, and please tell him that I'm not considering firing him in the current situation. You might need that to calm him down and get meaningful information.\"";
- next;
- mes "\"You should find out if someone observed anything unusual during the time before the accident happened.\"";
- set QL_BSAGE_INVESTIGATE, 2;
- goto L_Close;
-
-L_Investigate:
- mes "[Oskari]";
- mes "\"Ah, hello. Did you get an overview over the happenings yet?\"";
- if (QL_BSAGE_INVESTIGATE != 10)
- menu
- "I'm still collecting information.",L_Close;
- next;
- mes "You explain who you talked to, the helpers positive opinions of Peetu and what you found out about the suspicious visitor.";
- mes "[Oskari]";
- mes "\"With a mask you say? This reminds me... wait a moment.\"";
- mes "He turns to his desk and searches through some papers.";
- next;
- mes "[Oskari]";
- mes "\"Mh... yes. It fits together.";
- mes "Listen, this is a letter from Chief Warrick on Santa's team. It seems they encountered some sabotaging during their preparations for the Christmas time... the letter mentions a masked person as well.\"";
- next;
- mes "\"And there are some reports about cases of unusal behaviour from native animals in various places of Kaizei that came to the Sages notice.\"";
- next;
- mes "\"And now this accident in our house, also a person with a mask... and given the context of the recent frictions within the Sages...\"";
- mes "Oskari seems rather excited.";
- next;
- mes "[Oskari]";
- mes "\"I think you revealed some important connections. I need to notify Nikolai and the other Sages.\"";
- menu
- "I'm confused now.",L_Continue,
- "What are you talking about?",L_Continue;
-
-L_Continue:
- mes "[Oskari]";
- mes "\"I'm sorry. I think you deserve an explanation. You see, the Sages of Kaizei are a circle of wise wizards who work together for the prosperity of this continent.";
- mes "Recently there was some conflict among the Sages which caused one of the members to leave the circle. It's all very unfortunate.";
- next;
- mes "\"However, taking all these different events into account, I came to the suspicion that there might be a connection. Of course we don't have evidence yet, so I don't want to be too sure. Well, I'll bring this to the Sages' notice.\"";
- next;
- mes "\"You were a great help! I'll inform Nikolai about your involvement in clarifying this matter.\"";
- next;
- mes "\"And you should also talk with Peetu, I'm sure he'll be relieved to hear about the clarification of this matter too.\"";
- set QL_BSAGE_INVESTIGATE, 11;
- goto L_Close;
-
-L_Goodjob:
- mes "[Oskari]";
- mes "\"Thanks again for your investigations.\"";
- menu
- "You're welcome.",L_Close,
- "Can you tell me something about the Sages?",L_MoreText;
-
-L_MoreText:
- mes "[Oskari]";
- mes "\"Oh, sure. I'm a bit busy right now, but you were a great help, so I think I can take a few minutes for you. What do you want to know?\"";
- menu
- "What exactly are the Sages and what do they do?",L_Sages,
- "What was that conflict you were talking about?",L_Conflict,
- "Mh, I changed my mind.",L_Close;
-
-L_Sages:
- mes "[Oskari]";
- mes "\"Well, as I said the Sages are a circle of powerful wizards. There are twelve of them - eh, actually, now there are only eleven of them.\"";
- mes "He sighs.";
- next;
- mes "[Oskari]";
- mes "\"However, they live in different places all over Kaizei, but they meet sometimes to discuss different matters. They work hard for the prosperity of this continent, trying to improve the living conditions by both political work and magical research, with the aid of their helpers.\"";
- next;
- mes "\"The politics on Kaizei are rather complicated. The Sages have great influence, but there are also other organizations and groups. Due to the harsh climate on this continent, villages or towns can be cut off from the rest of the world for several weeks sometimes, so most of them tend to be rather independent.\"";
- next;
- mes "\"Also there's the Order of Ice, an organization which represents the national interests of Kaizei in a rather narrow-minded way compared to the Sages.\"";
- goto L_Close;
-
-L_Conflict:
- mes "[Oskari]";
- mes "\"Oh, I'm not sure if I should talk about that... It's a rather delicate situation.\"";
- next;
- mes "\"Basically there was a disagreement between the Sages. Usually those things can be solved by discussion, but this time... things got rather personal and one of the members accused Santa of valuing his own interests over the general good.\"";
- next;
- mes "\"This, of course, is nonsense. Santa would never do that, and it's more that the person accusing him has been suspected to act this way. The other Sages were on Santa's side and I fear this harsh rejection caused a lot of painful feelings.\"";
- next;
- mes "\"Personally I think that he has been jealous of Santa's influence and high position for quite a while. However, he took this as a reason to leave the Sages and based on our insights, it seems he decided to work against the Sages.";
- mes "It really is a shame.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/048-2/helperCleaning1.txt b/world/map/npc/048-2/helperCleaning1.txt
deleted file mode 100644
index 3b5af0dc..00000000
--- a/world/map/npc/048-2/helperCleaning1.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Pyry works on cleaning the library, can start the slime subquest
-// can give second hint about helper in investigation subquest
-
-048-2,117,106,0|script|Pyry|365
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (@slimes == 255) goto L_Thank;
- if (@slimes > 0) goto L_Progress;
-
- mes "[Pyry]";
- mes "\"Welcome to the library of Sage Nikolai. I'm very sorry, but as you see it's not in a good shape at the moment. Most of the books were eaten by the slimes or damaged and we're working hard on cleaning up the mess.";
- mes "I have to ask you not to go in the deeper parts of the library, since there are still some of the slimes left and they're dangerous.\"";
- if (BaseLevel < $@Q_BlueSageMinimumLevel)
- goto L_Close;
- menu
- "I can fight them.",L_Next,
- "Ok, thanks for the warning.",L_Investigate;
-
-L_Next:
- mes "Pyry seems surprised.";
- mes "[Pyry]";
- mes "\"That... I didn't think about this possibility. But it'd be a great help!";
- mes "Ok, there are some slimes around in the deeper parts of the library. They... erm, developed some very fast breeding behaviour, both the Blue Slimes and the White Slimes, but in a slightly different fashion.\"";
- next;
- mes "\"The Blue ones are able to generate smaller slimes which show a self-destructive behaviour to protect their... parent slime if you want to call it that. You have to kill the big one, but be careful of the smaller ones while trying that.\"";
- next;
- mes "\"The White Slimes appear in groups and when you attack one of them, they also show some self-destructive behaviour to protect their group as a whole. You have to defeat the entire group, otherwise the remaining slimes will breed new slimes to replace their lost.\"";
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlimesStart;
- goto L_Investigate;
-
-L_Progress:
- mes "[Pyry]";
- mes "\"It's very brave of you to fight against those slimes deeper in the library. Remember that you have to kill the entire group to prevent them from breeding.\"";
- callfunc "blueSageNumberOfClearedNests";
- if (@slimenests > 5) goto L_Almost;
- if (@slimenests > 3) goto L_Some;
- if (@slimenests > 1) goto L_Few;
- goto L_Investigate;
-
-L_Almost:
- next;
- mes "\"I think there are only very few left.\"";
- goto L_Investigate;
-
-L_Some:
- next;
- mes "\"The amount of slimes decreased noticably, but there are still some left.\"";
- goto L_Investigate;
-
-L_Few:
- next;
- mes "\"I saw you already started, keep it on!\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Pyry]";
- mes "\"It seems all of the slimes are gone now. I'm so glad! Thanks for your help. I mentioned your assistance to Nikolai.\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Pyry]";
- mes "\"Mh, yes. I remember him. He was very interested in the library and the research we do here. He had an unusual behaviour and appearance. But, well, that isn't a reason to refuse someone, right?\"";
- goto L_Close;
-
-L_Helper:
- mes "[Pyry]";
- mes "\"Peetu? I have always been glad to have him on the team. He's really brought forward our work here.\"";
- next;
- mes "\"I was very surprised when I heard that he's responsible for the failed sealing spell. I'd never have expected that from him.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperCleaning2.txt b/world/map/npc/048-2/helperCleaning2.txt
deleted file mode 100644
index cdd04c00..00000000
--- a/world/map/npc/048-2/helperCleaning2.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Nea works on cleaning the library
-// can give second hint about helper in investigation subquest
-
-048-2,123,87,0|script|Nea|363
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (@slimes == 255) goto L_Thank;
- if (@slimes > 0) goto L_Progress;
-
- mes "[Nea]";
- mes "\"Oh, hello. If I were you I wouldn't go deeper into the library. There are still some of those monsters left. Slipping between the bookshelves.\"";
- mes "She shudders.";
- next;
- mes "[Nea]";
- mes "\"And they can explode! Nothing in the world could make me go in there. I'll just do my work right here, clean the floor and tidy up the books, and I'm keeping my eyes open in case they get over here.\"";
- goto L_Investigate;
-
-L_Progress:
- mes "[Nea]";
- mes "\"Oh, I'm so glad you're taking care of those scary slimes. You're so brave!";
- mes "How many of them are still left, do you think? Will it be safe to go there soon?\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Nea]";
- mes "\"I feel much safer now that you defeated the slimes. Thanks so much!\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Nea]";
- mes "\"With a mask? Mh, I think I know who are you talking about. I vaguely remember that there was someone with a mask... but I can't recall any details, I wasn't really paying attention.\"";
- goto L_Close;
-
-L_Helper:
- mes "[Nea]";
- mes "\"Peetu? Yeah, he's the kind of person who always wants to do things perfectly. That makes it a bit difficult to work with him, since his expectations for others are as high as for himself.\"";
- next;
- mes "\"I really wonder how that accident with the sealing spell could've happened. I'd have never expected him to mess something up like that.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperCleaning3.txt b/world/map/npc/048-2/helperCleaning3.txt
deleted file mode 100644
index 110189cc..00000000
--- a/world/map/npc/048-2/helperCleaning3.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Arvo works on cleaning the library
-// can give second hint about the visitor in investigation subquest
-
-048-2,139,99,0|script|Arvo|366
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (@slimes == 255) goto L_Thank;
- if (@slimes > 0) goto L_Progress;
-
- mes "[Arvo]";
- mes "\"Oh, this is so much work... I can't believe they let this happen! You would think they'd be careful when playing around with such powerful forces. Hah! Big mistake!\"";
- goto L_Investigate;
-
-L_Progress:
- mes "[Arvo]";
- mes "\"We really appreciate your help with the slimes.\"";
- mes "He sighs.";
- goto L_Investigate;
-
-L_Thank:
- mes "[Arvo]";
- mes "\"Good work with the slimes. This will make our task much easier.\"";
- mes "He sighs and takes a careful look around.";
- next;
- mes "[Arvo]";
- mes "\"But it shows that Nikolai's position isn't what it used to be. There's disturbance in the great circle of our Sages and things have changed. About one year ago, Nikolai's helpers wouldn't have needed the help of a mere adventurer - no offense.\"";
- next;
- mes "\"But it appears we were focusing too much on research and this lead to neglect of other duties of a Sage's household. This is dangerous in times of changes. I'm worried about the future.\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Arvo]";
- mes "\"Yes, I remember that one! I welcomed him in the libary and showed him around. But I didn't have the impression he was really listening to what I was saying, though that's hard to tell with the mask.\"";
- next;
- mes "\"But when I left him to look at the books on his own, he sneaked over to the workshop area. Visitors are allowed to have a look there, but only if they don't interfere with any research and experiments. But it seems he was being rather disturbing, since they sent them back to the library part.\"";
- next;
- mes "\"I tried to keep an eye on him after that, but when I got distracted by some newly arriving visitor he went over to the workshop again! Usually I enjoy my job, because I like talking to people, but this guy... was a pain, really.\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Arvo]";
- mes "\"Peetu? That's one of the high rank helpers. As far as I know, he's very talented with magic and takes part in some important research. But I don't really know about those things.\"";
- goto L_Close;
-
-L_Close:
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperCleaning4.txt b/world/map/npc/048-2/helperCleaning4.txt
deleted file mode 100644
index 45108932..00000000
--- a/world/map/npc/048-2/helperCleaning4.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Kristian works on cleaning the library
-// can give second hint about the visitor in investigation subquest
-
-048-2,131,119,0|script|Kristian|366
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (@slimes == 255) goto L_Thank;
- if (@slimes > 0) goto L_Progress;
-
- mes "[Kristian]";
- mes "\"Welcome. Please don't go deeper into the library, there are still some slimes left. But in spite of that we have made quite a bit of progress. You should have seen the mess just after most of the slimes escaped!\"";
- goto L_Investigate;
-
-L_Progress:
- mes "[Kristian]";
- mes "\"Wow, it's really generous of you to fight those slimes for us.\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Kristian]";
- mes "\"I'm so glad that you took care of the remaining slimes. Thanks!\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Kristian]";
- mes "\"Oh, there was such a visitor, yes. Strange guy, and didn't really know how to behave. He sneaked into the workshop area all the time, I think he was rather curious about the things going on there.\"";
- next;
- mes "\"But still, he can't just walk in there, fiddle with the experiments and disturb the helpers doing their work.\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Kristian]";
- mes "\"Peetu? I think he's a good guy. Very focused on his work, I think. I don't have that much to do with him, so I can't really tell.\"";
- goto L_Close;
-
-L_Close:
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperCleaning5.txt b/world/map/npc/048-2/helperCleaning5.txt
deleted file mode 100644
index 9517fde3..00000000
--- a/world/map/npc/048-2/helperCleaning5.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Mirjami is searching for some cleaning supplies
-// can give second hint about visitor in investigation subquest
-
-048-2,100,125,0|script|Mirjami|363
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (@slimes == 255) goto L_Thank;
-
- mes "[Mirjami]";
- mes "\"Where is it? Everything's upside down. These terrible slimes.\"";
- menu
- "What are you doing?",L_Next;
-
-L_Next:
- mes "[Mirjami]";
- mes "\"Oh? I'm just searching for some cleaning supplies. They must be somewhere around here, but everything went upside down when the slimes escaped.\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Mirjami]";
- mes "\"I heard you fought the slimes that were still roaming between the bookshelves. Thank you!\"";
- next;
- mes "\"I was a bit worried that they might ruin our efforts by messing everything up again after we just cleaned.\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Mirjami]";
- mes "\"Ohh, I think I know who you mean. That was a strange guy. He always came over here in the workshop, said he's very interested in the research. I suppose that's ok, but he didn't keep his hands to himself, and touched some experiments and I caught him near some storage racks.\"";
- next;
- mes "\"Visitors should keep away from those!\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Mirjami]";
- mes "\"Oh, eh, why are you asking me? I've only been here a short while and don't really know all of the people well enough yet.\"";
- goto L_Close;
-
-L_Close:
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperJanitor.txt b/world/map/npc/048-2/helperJanitor.txt
deleted file mode 100644
index 817ac165..00000000
--- a/world/map/npc/048-2/helperJanitor.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Elias is the janitor of the mansion
-// part of investigation subquest, gives initial hint on the visitor with the mask
-
-048-2,36,44,0|script|Debug#BlueSage|110
-{
- mes "QUEST_BlueSage: "+ QUEST_BlueSage;
- mes "QL_BSAGE_INVESTIGATE: "+ QL_BSAGE_INVESTIGATE;
- next;
- menu
- "set QL_BSAGE_INVESTIGATE", L_Investigate;
-
-L_Investigate:
- input @state;
- if(@state < 0 || @state > 14) set @state, 0;
- set QL_BSAGE_INVESTIGATE, @state;
- close;
-
-OnInit:
- if (!debug) disablenpc strnpcinfo(0);
- end;
-}
-
-048-2,40,41,0|script|Elias|110,7,6
-{
- if (QL_BSAGE_INVESTIGATE == 11) goto L_Thank;
- if ((QL_BSAGE_INVESTIGATE == 4) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Confirmed;
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 9)) goto L_Worry;
- if (QUEST_BlueSage > 0 && QL_BSAGE_INVESTIGATE < 13) goto L_ShortHello;
-
- mes "[Elias]";
- mes "\"Welcome to the residence of Nikolai, member of the Sages of Kaizei.\"";
- next;
- mes "\"Our house is famous for its extraordinary and well equipped library.";
- mes "Ahm, usually well equipped.\"";
- next;
- mes "\"We had an accident with some magic experiments, that caused some slimes to get out of control. They ate most of the books in the library.\"";
- mes "He sighs with a regretful look on his face.";
- next;
- mes "[Elias]";
- mes "\"So, if you came because of the library, I'll have to disappoint you, because there isn't much left.";
- mes "Though you look like a skilled adventurer. If you'd like to offer your help that'd be greatly appreciated.\"";
- if(QL_BSAGE_INVESTIGATE == 13)
- set QL_BSAGE_INVESTIGATE, 14;
- next;
- mes "\"The library is on the third floor.\"";
- goto L_Close;
-
-OnTouch:
- if (BaseLevel >= $@Q_BlueSageMinimumLevel && !QL_BSAGE_INVESTIGATE)
- set QL_BSAGE_INVESTIGATE, 13;
- end;
-
-L_ShortHello:
- mes "[Elias]";
- mes "\"Welcome back. I heard you're helping with the cleanup efforts in the library.";
- mes "Thank you very much.\"";
- if ((QL_BSAGE_INVESTIGATE != 2) && (QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 8))
- goto L_Close;
- menu
- "Can you tell me if there were any unusual visitors before the accident?",L_Next;
-
-L_Next:
- mes "[Elias]";
- mes "\"Mh, let me think. There were quite a few visitors with different concerns, but that's usual at this time of the year.";
- mes "One of them was a bit odd, he was wearing a mask and had a strange way of talking. He said he comes from Thermin, which is a mining town in the west. I figured his face might have gotten deformed in some mining accident, but I didn't ask, that would've been rude.";
- mes "If I remember correctly he wanted to see the library.\"";
- next;
- mes "Elias gets a bit excited now.";
- mes "[Elias]";
- mes "\"Do you think he may have had something to do with the accident? We're a very hospitable house, so I didn't see a reason to deny him the entrance. I mean, his mask might have been a bit unusual, but hey, there could've been many reasons why someone would wear a mask, don't you think?\"";
-
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
-
- menu
- "Sure, but it's interesting that he was here shortly before the accident.",L_Close,
- "I'll ask some more people about that guy.",L_Close;
-
-L_Worry:
- mes "[Elias]";
- mes "\"After your questions I'm really getting worried about this guy with the mask. In retrospect it really seems suspicous.";
- mes "It might be a good idea to ask around if anyone else observed something odd connected to this person.\"";
- goto L_Close;
-
-L_Confirmed:
- mes "[Elias]";
- mes "\"I heard your investigations reminded other people that they observed suspicious behaviour too.\"";
- next;
- mes "\"It's all my fault, I should've paid more attention! You should talk to Chief Oskari about this.\"";
- goto L_Close;
-
-L_Thank:
- mes "[Elias]";
- mes "\"Now that Chief Oskari knows about the sequence of events, the Sages will take care of it. It's really a shame how malicious people can be.\"";
- next;
- mes "\"Thanks a lot for your help revealing the truth.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/048-2/helperMInk.txt b/world/map/npc/048-2/helperMInk.txt
deleted file mode 100644
index 72978b03..00000000
--- a/world/map/npc/048-2/helperMInk.txt
+++ /dev/null
@@ -1,106 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Eevert asks for material to create inks for the illustrations in the new books
-// can give second hint about Peetu in investigation subquest
-
-048-2,95,103,0|script|Eevert|365
-{
- set @water_amount, 5;
- set @spectre_amount, 3;
- set @poltergeist_amount, 3;
- set @wisp_amount, 3;
- set @ironpowder_amount, 4;
- set @ink_exp, 7000;
-
- if (QUEST_BlueSage & $@Q_BlueSageMaterialInk) goto L_Done;
-
- mes "[Eevert]";
- mes "\"Mh. I wonder how I'm expected to perform my task with this meager equipment. The new books will look pathetic.\"";
- mes "He sighs.";
- if (BaseLevel < $@Q_BlueSageMinimumLevel)
- goto L_Close;
- menu
- "What do you need?",L_Need,
- "Not my problem.",L_Investigate;
-
-L_Need:
- mes "[Eevert]";
- mes "\"I'm doing the covers and illustrations for the new books we create from the pieces of the old ones. But due to all of the chaos from when the slimes escaped, most of the phials of colored ink were broken. How am I supposed to do the illustrations without color?\"";
- next;
- mes "\"I think I'll need at least " + @water_amount + " Bottles of Water, " + @spectre_amount + " Spectre Powders, " + @poltergeist_amount + " Poltergeist Powders, " + @wisp_amount + " Wisp Powders and " + @ironpowder_amount + " Iron Powders to create new ink.\"";
- menu
- "I have those with me!",L_TurnIn,
- "I'll try to get those.",L_Close,
- "Too bad.",L_Investigate;
-
-L_TurnIn:
- if ((countitem("BottleOfWater") < @water_amount) || (countitem("SpectrePowder") < @spectre_amount) || (countitem("PoltergeistPowder") < @poltergeist_amount) || (countitem("WispPowder") < @wisp_amount) || (countitem("IronPowder") < @ironpowder_amount))
- goto L_NoItem;
- delitem "BottleOfWater", @water_amount;
- delitem "SpectrePowder", @spectre_amount;
- delitem "PoltergeistPowder", @poltergeist_amount;
- delitem "WispPowder", @wisp_amount;
- delitem "IronPowder", @ironpowder_amount;
- getexp @ink_exp, 0;
- set QUEST_BlueSage, (QUEST_BlueSage | $@Q_BlueSageMaterialInk);
- mes "[Eevert]";
- mes "\"Wonderful! Now I can prepare the ink for magnificent illustrations! You're very generous.\"";
- goto L_Investigate;
-
-L_Done:
- mes "[Eevert]";
- mes "\"Thanks for your help with the inks! Now I'll be able to fulfill my tasks adequately. Some of these books were really valuable, and it's important to recreate them as good as possible.\"";
- goto L_Investigate;
-
-L_NoItem:
- mes "[Eevert]";
- mes "\"What does this mean? You don't have it!\"";
- goto L_Close;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Eevert]";
- mes "\"A visitor? I don't really pay attention to visitors, unless it's someone notable.\"";
- goto L_Close;
-
-L_Helper:
- mes "[Eevert]";
- mes "\"Ah, Peetu. I really appreciate his sense for high quality work. The requirements to become a helper of a sage are already high, but Peetu is outstanding. He has a talent for magic and combined with his diligence, it's quite remarkable.\"";
- next;
- mes "\"That's why I'm really confused about this situation, since he was the one performing the sealing of the slimes. I wonder what went wrong.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @water_amount, 0;
- set @spectre_amount, 0;
- set @poltergeist_amount, 0;
- set @wisp_amount, 0;
- set @ironpowder_amount, 0;
- set @ink_exp, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperMReed.txt b/world/map/npc/048-2/helperMReed.txt
deleted file mode 100644
index 4cb2eaac..00000000
--- a/world/map/npc/048-2/helperMReed.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Kullervo asks for Reed Bundles to create paper for repairing the books
-// can give second hint about both Peetu and visitor in investigation subquest
-
-048-2,104,78,0|script|Kullervo|366
-{
- set @reed_amount, 20;
- set @reed_exp, 10000;
-
- if (QUEST_BlueSage & $@Q_BlueSageMaterialReed) goto L_Done;
-
- mes "[Kullervo]";
- mes "\"Oh no! What should we do now?\"";
- menu
- "What's wrong?",L_Foo;
-L_Foo:
- mes "[Kullervo]";
- mes "\"We're nearly out of paper. The new books require so much material... And it's not easy to get Reed Bundles to create new paper.\"";
- if (BaseLevel < $@Q_BlueSageMinimumLevel)
- goto L_Close;
- menu
- "I have some.",L_TurnIn,
- "I'll try to get some.",L_Close,
- "Too bad.",L_Investigate;
-
-L_TurnIn:
- if(countitem("ReedBundle") < @reed_amount)
- goto L_NoItem;
- delitem "ReedBundle", @reed_amount;
- getexp @reed_exp, 0;
- set QUEST_BlueSage, (QUEST_BlueSage | $@Q_BlueSageMaterialReed);
- mes "[Kullervo]";
- mes "\"Thank you! That's very generous of you.\"";
- goto L_Investigate;
-
-L_Done:
- mes "[Kullervo]";
- mes "\"Very well, now I can create more paper.\"";
- goto L_Investigate;
-
-L_NoItem:
- mes "[Kullervo]";
- mes "\"Oh, really? Ah, it's not enough. I need " + @reed_amount + " Reed Bundles.\"";
- goto L_Close;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Kullervo]";
- mes "\"Oh, yes. There was such a guy, shortly before the accident I think. He sneaked into the workshop several times, sticking his nose into stuff that shouldn't be his business. We had to send him back to the library area at least three times.\"";
- next;
- mes "\"Maybe he was confused, not sure. He talked very strangely.\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Kullervo]";
- mes "\"Are you asking because people say it's his fault? Listen, I've known him for many years now. We started our service here about the same time. We share our room and are really close friends.";
- mes "And in all these years, I've never seen him messing up anything important. He's a perfectionist. He isn't satisfied with anything less than the best possible result when doing his work.\"";
- next;
- mes "\"I don't understand what went wrong with that spell, but it just has to have another cause than Peetu. I'm worried about him. He must feel very miserable. But I can't leave my duty here.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @reed_amount, 0;
- set @reed_exp, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperMSilk.txt b/world/map/npc/048-2/helperMSilk.txt
deleted file mode 100644
index 7ed3bf47..00000000
--- a/world/map/npc/048-2/helperMSilk.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Janika asks for Silk Cocoons for repairing the books
-// can give second hint about visitor in investigation subquest
-
-048-2,104,103,0|script|Janika|363
-{
- set @silk_amount, 80;
- set @silk_exp, 10000;
-
- if (QUEST_BlueSage & $@Q_BlueSageMaterialSilk) goto L_Done;
- if (BaseLevel >= $@Q_BlueSageMinimumLevel) goto L_Quest;
-
- mes "[Janika]";
- mes "\"This is going to be difficult... oh, hello. I'm working on recreating some of the books that were destroyed.\"";
- goto L_Close;
-
-L_Quest:
- mes "[Janika]";
- mes "\"This is going to be difficult...";
- mes "Oh, hello. You don't have " + @silk_amount + " Silk Cocoons with you, do you? I need them for the book covers and binding of some of the more valuable books we're trying to recreate.\"";
- menu
- "I have!",L_TurnIn,
- "I haven't, but I can try to get some.",L_Investigate,
- "No.",L_Investigate;
-
-L_TurnIn:
- if(countitem("SilkCocoon") < @silk_amount)
- goto L_NoItem;
- delitem "SilkCocoon", @silk_amount;
- getexp @silk_exp, 0;
- set QUEST_BlueSage, (QUEST_BlueSage | $@Q_BlueSageMaterialSilk);
- mes "[Janika]";
- mes "\"Excellent! This is exactly what I need. Thanks a lot. I'll tell Nikolai about your generosity.\"";
- goto L_Investigate;
-
-L_Done:
- mes "[Janika]";
- mes "\"Thanks for the Silk Cocoons. With these the new books are going to be exquisite.\"";
- goto L_Investigate;
-
-L_NoItem:
- mes "[Janika]";
- mes "\"Are you kidding? You don't have it!\"";
- goto L_Close;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Janika]";
- mes "\"Oh, I know who you mean! That impertinent person came over in the workshop area and fiddled about with all kinds of things here! Such a rude person! Didn't he understand that we had delicate things going on here? We had to send him back to the library area several times.\"";
- next;
- mes "She shakes her head.";
- mes "\"Sometimes I think it'd be better not to allow visitors here. But the sages set a high value on keeping contact with the population. Politics.\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Janika]";
- mes "\"Mh, I don't know him closely.\"";
- goto L_Close;
-
-L_Close:
- set @silk_amount, 0;
- set @silk_exp, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperMYetiClaw.txt b/world/map/npc/048-2/helperMYetiClaw.txt
deleted file mode 100644
index f23b7177..00000000
--- a/world/map/npc/048-2/helperMYetiClaw.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Santeri asks for Yeti Claws to make glue for repairing the books
-// can give second hint about Peetu in investigation subquest
-
-048-2,97,78,0|script|Santeri|366
-{
- set @claw_amount, 8;
- set @claw_exp, 10000;
-
- if (QUEST_BlueSage & $@Q_BlueSageMaterialClaw) goto L_Done;
- if (BaseLevel >= $@Q_BlueSageMinimumLevel) goto L_Quest;
-
- mes "[Santeri]";
- mes "\"Hm. Please don't disturb me, I'm trying to concentrate.\"";
- goto L_Close;
-
-L_Quest:
- mes "[Santeri]";
- mes "\"Welcome. Are you an adventurer? I could use some help.\"";
- menu
- "I am. What heroic action is needed?",L_HeroicAction,
- "How can I help?",L_HeroicAction,
- "I'm not interested.",L_Close;
-
-L_HeroicAction:
- mes "[Santeri]";
- mes "\"You see, we're working on repairing all of the damaged books and creating new ones for those that were lost.";
- mes "Therefore we need a lot of glue, but our supplies are nearly used up. I need " + @claw_amount + " Yeti Claws as ingredient to make new glue. Do you have that?\"";
- menu
- "Yes, here you go.",L_TurnIn,
- "I need to look in my storage.",L_Close,
- "No, sorry.",L_Investigate;
-
-L_TurnIn:
- if(countitem("YetiClaw") < @claw_amount)
- goto L_NoItem;
- delitem "YetiClaw", @claw_amount;
- getexp @claw_exp, 0;
- set QUEST_BlueSage, (QUEST_BlueSage | $@Q_BlueSageMaterialClaw);
- mes "[Santeri]";
- mes "\"Great! Thank you!\"";
- goto L_Investigate;
-
-L_Done:
- mes "[Santeri]";
- mes "\"Thanks to you, our glue supply is replenished and we can repair those books.\"";
- goto L_Investigate;
-
-L_NoItem:
- mes "[Santeri]";
- mes "\"What are you telling me? You don't have it!\"";
- goto L_Close;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Santeri]";
- mes "\"There was a visitor with a mask? I didn't notice. You see, I spend most of my time in the workshop, and concentrate on my work. There are other helpers who attend to the visitors. And hopefully keep them from disturbing my concentration.\"";
- goto L_Close;
-
-L_Helper:
- mes "[Santeri]";
- mes "\"Oh, that's an interesting question. I was really surprised when I heard that he was responsible for the sealing spell. I've worked together with him before, and I have to say, it really was a pleasure. He's very accurate and diligent, but also polite and helpful.\"";
- next;
- mes "\"I really wonder what went wrong with that sealing spell. I can't imagine Peetu messing up something so important.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @claw_amount, 0;
- set @claw_exp, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperResting1.txt b/world/map/npc/048-2/helperResting1.txt
deleted file mode 100644
index 76e62fe2..00000000
--- a/world/map/npc/048-2/helperResting1.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Lenita is one of the helpers working on sorting the bookpages, but is currently having a break
-// can give second hint about the visitor in investigation subquest
-
-048-2,36,26,0|script|Lenita|363
-{
- set @bookpages, ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
-
- if (@bookpages == 254) goto L_Thank;
- if (@bookpages > 0) goto L_Progress;
-
- mes "[Lenita]";
- mes "\"Oh, hello. You didn't choose a good time to visit. The library is a total mess. The slimes got out of control and ate most of the books.\"";
- next;
- mes "\"We're trying to repair some of the valuable and important books. It's so much work!";
- mes "I was up until late last night, and woke up so early today... I'm having a break right now.\"";
- goto L_Investigate;
-
-L_Progress:
- mes "[Lenita]";
- mes "\"Teuvo said you're helping to collect some of the missing bookpages to repair the books. That's very kind of you! It's so much work to do, so every bit of help is welcome.\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Lenita]";
- mes "\"Wow, Ensio told me you collected so many of the lost book pages.\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "I need to leave.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "See you later.",L_Close;
-
-L_Ask_Both:
- menu
- "Can you tell me anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Visitor:
- mes "[Lenita]";
- mes "\"With a mask? Yeah, I remember. That was a strange guy. He came to visit the library, but he lurked around at the workshop area and they had to send him back to the books.\"";
- if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 1;
- goto L_Close;
-
-L_Helper:
- mes "[Lenita]";
- mes "\"Mh, I can't really tell since I usually work in the library while he works at the workshop. Maybe you should ask around among the people who work there.\"";
- goto L_Close;
-
-L_Close:
- set @bookpages, 0;
- close;
-}
diff --git a/world/map/npc/048-2/helperResting2.txt b/world/map/npc/048-2/helperResting2.txt
deleted file mode 100644
index c65bc536..00000000
--- a/world/map/npc/048-2/helperResting2.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Miro is one of the helpers cleaning up the library, but it currently having a break
-// can give second hint about the Peetu in investigation subquest
-
-048-2,35,27,0|script|Miro|366
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (@slimes == 255) goto L_Thank;
- if (@slimes > 0) goto L_Progress;
-
- mes "[Miro]";
- mes "\"Hm? Oh, excuse me. I'm feeling so tired. We currently have some problems with some slimes out of control in the library. They ate most of the books and caused total chaos.\"";
- next;
- mes "\"We need to clean up the mess and it's so much to do. I was cleaning the floor for hours and I'm having a break now.\"";
- goto L_Investigate;
-
-L_Progress:
- mes "[Miro]";
- mes "\"Pyry mentioned you're helping with the leftover slimes. You're really brave! I'd be afraid they'd eat me like they ate the books!\"";
- goto L_Investigate;
-
-L_Thank:
- mes "[Miro]";
- mes "\"Wow, the way you took care of the slimes in the library! Amazing! This makes our job there much easier... and safer. Thank you so much!\"";
- goto L_Investigate;
-
-L_Investigate:
- if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
- if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
- if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
- goto L_Close;
-
-L_Ask_Visitor:
- menu
- "Do you know anything about the visitor with the mask?",L_Visitor,
- "See you.",L_Close;
-
-L_Ask_Helper:
- menu
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "Bye.",L_Close;
-
-L_Ask_Both:
- menu
- "Do you know anything about the visitor with the mask?",L_Visitor,
- "What's your opinion of Peetu and how he does his work?",L_Helper,
- "I need to leave.",L_Close;
-
-L_Visitor:
- mes "[Miro]";
- mes "\"With a mask? I really don't know. I'm usually in the workshop and most of the visitors spend their time in the library. Sometimes they come to have a quick look in the workshop too, but I don't really pay attention to that, so... I can't recall a visitor with a mask, sorry.\"";
- goto L_Close;
-
-L_Helper:
- mes "[Miro]";
- mes "\"Peetu? It was his job to seal away the slimes before the night, right? I have to say I'm really surprised about what happened, because he's a very cautious person. I'd have never guessed that he'd mess up something as important as this.\"";
- next;
- mes "\"If Nikolai's helpers weren't so carefully chosen, I'd think this was some kind of a bad joke from someone.\"";
- if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
- goto L_Close;
- set QL_BSAGE_INVESTIGATE, QL_BSAGE_INVESTIGATE + 3;
- goto L_Close;
-
-L_Close:
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/mapflags.txt b/world/map/npc/048-2/mapflags.txt
deleted file mode 100644
index 7059a80b..00000000
--- a/world/map/npc/048-2/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-048-2|mapflag|resave|048-2,26,46
diff --git a/world/map/npc/048-2/sageNikolai.txt b/world/map/npc/048-2/sageNikolai.txt
deleted file mode 100644
index fdc6e76d..00000000
--- a/world/map/npc/048-2/sageNikolai.txt
+++ /dev/null
@@ -1,286 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Sage Nikolai gives hints about the different subquests and rewards
-
-048-2,98,106,0|script|Nikolai|362
-{
- set @halloween_npc_id, $@halloween_npc_nikolai;
- callfunc "TrickOrTreat";
-
- set @bookpages, ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- set @material, ((QUEST_BlueSage & $@Q_BlueSageMaterial_MASK) >> $@Q_BlueSageMaterial_SHIFT);
-
- if ((@bookpages == 31)
- && (QUEST_BlueSage & $@Q_BlueSageMaterialInk)
- && (QUEST_BlueSage & $@Q_BlueSageMaterialClaw)
- && (QUEST_BlueSage & $@Q_BlueSageMaterialReed)
- && (QUEST_BlueSage & $@Q_BlueSageMaterialSilk)
- && !(QUEST_BlueSage & $@Q_BlueSageGrimoire))
- goto L_GrimoireReward;
-
- if ((@slimes == 255) && !(QUEST_BlueSage & $@Q_BlueSageIceSword))
- goto L_SlimesReward;
-
- if ((QUEST_BlueSage & $@Q_BlueSageGrimoire) && (QUEST_BlueSage & $@Q_BlueSageIceSword))
- goto L_Done;
-
- if (QUEST_BlueSage > 0)
- goto L_Hints;
-
- mes "You see a very reputable looking man who is going through some papers. He looks up as you approach.";
- mes "[Nikolai]";
- mes "\"Welcome to my mansion. I am Nikolai, member of the Sages of Kaizei.";
- mes "I assume you came to see our famous library? As you can see, it isn't in very good shape due to some... misfortunes. I'm very sorry.\"";
- if (BaseLevel < $@Q_BlueSageMinimumLevel)
- goto L_Close;
- next;
- mes "\"You seem to be quite an experienced adventurer. I usually wouldn't ask for this, but since my dear friend Santa mentioned his good experiences with hiring additional helpers in times of pressure, I reconsidered.";
- mes "If you don't mind, every bit of help with our current situation would be appreciated.\"";
- next;
- mes "\"There are many things to take care of at the moment, so if you'd like to aid us, the helpers will be able to tell you what they need.\"";
- goto L_Close;
-
-L_Hints:
- mes "[Nikolai]";
- mes "\"I heard you started to help out a bit. That's very kind.\"";
-
- cleararray @choice_idx, 0, 10;
- cleararray @choice$, "", 10;
-
- set @C_startBookpages, 1;
- set @C_bookpages, 2;
- set @C_startMaterials, 3;
- set @C_materials, 4;
- set @C_startSlimes, 5;
- set @C_slimes, 6;
- set @C_startInvestigate, 7;
- set @C_investigate, 8;
- set @C_investigate2, 9;
- set @C_nevermind, 10;
-
- // counter of available answers
- set @choices_nr, 0;
-
- if (@bookpages > 0)
- goto L_NoStartBookpages;
- set @choice_idx[@choices_nr], @C_startBookpages;
- set @choice$[@choices_nr], "I heard the slimes ate most of the books...";
- set @choices_nr, @choices_nr + 1;
- goto L_NoStartBookpages;
-
-L_NoStartBookpages:
- if ((@bookpages == 0) || (@bookpages == 31))
- goto L_NoBookpages;
- set @choice_idx[@choices_nr], @C_bookpages;
- set @choice$[@choices_nr], "I'm collecting lost bookpages.";
- set @choices_nr, @choices_nr + 1;
- goto L_NoBookpages;
-
-L_NoBookpages:
- if (@material > 0)
- goto L_NoStartMaterials;
- set @choice_idx[@choices_nr], @C_startMaterials;
- set @choice$[@choices_nr], "There were many valuable books in your library, right?";
- set @choices_nr, @choices_nr + 1;
- goto L_NoStartMaterials;
-
-L_NoStartMaterials:
- if ((@material == 0) || (@material == 15))
- goto L_NoMaterials;
- set @choice_idx[@choices_nr], @C_materials;
- set @choice$[@choices_nr], "I brought some material to repair the books.";
- set @choices_nr, @choices_nr + 1;
- goto L_NoMaterials;
-
-L_NoMaterials:
- if (@slimes > 0)
- goto L_NoStartSlimes;
- set @choice_idx[@choices_nr], @C_startSlimes;
- set @choice$[@choices_nr], "Those slimes really caused a mess!";
- set @choices_nr, @choices_nr + 1;
- goto L_NoStartSlimes;
-
-L_NoStartSlimes:
- if ((@slimes == 0) || (@slimes == 255))
- goto L_NoSlimes;
- set @choice_idx[@choices_nr], @C_slimes;
- set @choice$[@choices_nr], "I'm hunting the remaining slimes in the library.";
- set @choices_nr, @choices_nr + 1;
- goto L_NoSlimes;
-
-L_NoSlimes:
- if (QL_BSAGE_INVESTIGATE > 0 && QL_BSAGE_INVESTIGATE < 13)
- goto L_NoStartInvestigate;
- set @choice_idx[@choices_nr], @C_startInvestigate;
- set @choice$[@choices_nr], "How did this all happen?";
- set @choices_nr, @choices_nr + 1;
- goto L_NoStartInvestigate;
-
-L_NoStartInvestigate:
- if ((QL_BSAGE_INVESTIGATE < 2) || (QL_BSAGE_INVESTIGATE > 11 && QL_BSAGE_INVESTIGATE < 13))
- goto L_NoInvestigate;
- set @choice_idx[@choices_nr], @C_investigate;
- set @choice$[@choices_nr], "I'm trying to find out how that accident could've happened.";
- set @choices_nr, @choices_nr + 1;
- goto L_NoInvestigate;
-
-L_NoInvestigate:
- if (QL_BSAGE_INVESTIGATE != 11)
- goto L_NoInvestigate2;
- set @choice_idx[@choices_nr], @C_investigate2;
- set @choice$[@choices_nr], "I told Chief Oskari what I found out about the accident.";
- set @choices_nr, @choices_nr + 1;
- goto L_NoInvestigate2;
-
-L_NoInvestigate2:
- set @choice_idx[@choices_nr], @C_nevermind;
- set @choice$[@choices_nr], "Nevermind.";
-
- menu
- @choice$[0],L_MenuChoice,
- @choice$[1],L_MenuChoice,
- @choice$[2],L_MenuChoice,
- @choice$[3],L_MenuChoice,
- @choice$[4],L_MenuChoice,
- @choice$[5],L_MenuChoice,
- @choice$[6],L_MenuChoice,
- @choice$[7],L_MenuChoice,
- @choice$[8],L_MenuChoice,
- @choice$[9],L_MenuChoice;
-
-L_MenuChoice:
- set @menu, @menu - 1;
- if (@choice_idx[@menu] == 0)
- goto L_Close;
- if (@choice_idx[@menu] == @C_startBookpages)
- goto L_StartPagesAdvice;
- if (@choice_idx[@menu] == @C_bookpages)
- goto L_PagesAdvice;
- if (@choice_idx[@menu] == @C_startMaterials)
- goto L_StartMaterialAdvice;
- if (@choice_idx[@menu] == @C_materials)
- goto L_MaterialAdvice;
- if (@choice_idx[@menu] == @C_startSlimes)
- goto L_StartSlimesAdvice;
- if (@choice_idx[@menu] == @C_slimes)
- goto L_SlimesAdvice;
- if (@choice_idx[@menu] == @C_startInvestigate)
- goto L_StartInvAdvice;
- if (@choice_idx[@menu] == @C_investigate)
- goto L_InvestigateAdvice;
- if (@choice_idx[@menu] == @C_investigate2)
- goto L_InvestigateAdvice2;
- if ((@choice_idx[@menu] == @C_nevermind))
- goto L_Close;
- goto L_Close;
-
-L_StartPagesAdvice:
- // I heard the slimes ate most of the books...
- mes "[Nikolai]";
- mes "\"This is true. But while hunting the slimes we discovered that they occasionaly drop bookpages that are still legible.";
- mes "Since we had several copies of nearly all the books, we might be able to recreate most of them if we can get at least one copy of each page.\"";
- goto L_Close;
-
-L_PagesAdvice:
- // I'm collecting lost bookpages.
- mes "[Nikolai]";
- mes "\"Excellent! This will save us a lot of time. Ensio coordinates the sorting of the pages.\"";
- goto L_Close;
-
-L_StartMaterialAdvice:
- // There were many valuable books in your library, right?
- mes "He sighs.";
- mes "[Nikolai]";
- mes "\"Yes. There were some really old and rare pieces.\"";
- next;
- mes "\"We're going to recreate some of them, but I'm not sure if we have all the needed materials. If you'd like to help you could ask around if someone is missing something.\"";
- goto L_Close;
-
-L_MaterialAdvice:
- // I brought some material to repair the books.
- mes "[Nikolai]";
- mes "\"That's very generous! Though I think not everyone has all they need yet.\"";
- goto L_Close;
-
-L_StartSlimesAdvice:
- // Those slimes really caused a mess!
- mes "[Nikolai]";
- mes "\"Indeed. My helpers did great work to clean the worst of it, but there are still some remaining slimes in the deeper parts of the library.\"";
- goto L_Close;
-
-L_SlimesAdvice:
- // I'm hunting the remaining slimes in the library.
- mes "[Nikolai]";
- mes "\"You're a great help! All helpers who would be capable of dealing with the slimes are occupied with other tasks.\"";
- goto L_Close;
-
-L_StartInvAdvice:
- // How did this all happen?
- mes "[Nikolai]";
- mes "\"We're not sure yet. The helper who was responsible for sealing away the slimes has been sent to his room until the situation calms down and we can start an investigation.\"";
- goto L_Close;
-
-L_InvestigateAdvice:
- // I'm trying to find out how that accident could've happened.
- mes "[Nikolai]";
- mes "\"I see. Well, we were too busy to start with that ourselves, but having someone unbiased looking at this case might be a good thing.\"";
- next;
- mes "\"It might be good if you talk to Elias at the reception. He usually has a very good overview of all the things going on and especially about visitors.\"";
- goto L_Close;
-
-L_InvestigateAdvice2:
- // I told Chief Oskari what I found out about the accident.
- mes "[Nikolai]";
- mes "\"Yes, he already let me know. Your investigations were very helpful! This is surely something we need to look into further.\"";
- next;
- mes "\"Did you already talk to Peetu? I'm sure he'll be glad to know about your results as well.\"";
- goto L_Close;
-
-L_GrimoireReward:
- mes "[Nikolai]";
- mes "\"Ah, " + strcharinfo(0) + "! We're making excellent progress with our attempts to recover the important and valuable of the destroyed books, all thanks to you.\"";
- next;
- mes "\"I'd like you to have this as a reward for your help.\"";
- getinventorylist;
- if ((checkweight("Grimoire", 1) == 0) || (@inventorylist_count == 100))
- goto L_Full_Inv;
- getitem "Grimoire", 1;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageGrimoire;
- mes "He hands you a very precious book.";
- next;
- mes "\"This is an artifact of great power, and holding it while attempting to use magic will allow you to access your inner magic power much better. Use it wisely.\"";
- goto L_Close;
-
-L_SlimesReward:
- mes "[Nikolai]";
- mes "\"Ah, I heard you took care of the remaining slimes in the library!\"";
- next;
- mes "\"While looking through some old artifacts that we found during the cleaning, we found this sword. We don't really have a use for it.\"";
- getinventorylist;
- if ((checkweight("IceGladius", 1) == 0) || (@inventorylist_count == 100))
- goto L_Full_Inv;
- getitem "IceGladius", 1;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageIceSword;
- mes "He gives you a sword with a shimmering blue blade.";
- next;
- mes "\"I'm sure you can use this well.\"";
- goto L_Close;
-
-L_Full_Inv:
- mes "[Nikolai]";
- mes "\"You have a very full backback. Please come back when you have more room available.\"";
- goto L_Close;
-
-L_Done:
- mes "[Nikolai]";
- mes "\"Thanks for all of your help.\"";
- goto L_Close;
-
-L_Close:
- set @inventorylist_count, 0;
- set @bookpages, 0;
- set @slimes, 0;
- close;
-}
diff --git a/world/map/npc/048-2/slimes.txt b/world/map/npc/048-2/slimes.txt
deleted file mode 100644
index b07420db..00000000
--- a/world/map/npc/048-2/slimes.txt
+++ /dev/null
@@ -1,635 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// see bluesageConfig for detailed quest description
-// Slime spawns for the slime hunting subquest
-
-// Variables:
-// $@Q_BlueSageSlimeX: Flag to save if a spawn point X is cleared
-// $@BlueSageSlimeX_Amount: Number of slimes spawned at spawn point X
-// $@BlueSageSlimeX_Spawn: Number of slimes alive from spawn point X
-// $@SlimeXVictimID: ID of character that triggered the spawn at X
-
-// @slimes: Value of the byte 2 of QUEST_BlueSage, used only to check if started/complete
-// @spawnSlimeX: Number of slimes killed by the character that triggered the spawn
-
-// white slimes
-048-2,181,95,0|script|#Slime0Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime0::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime0_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime0_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime0))
- end;
-
- set @spawnSlime0, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime0VictimID, getcharid(3);
- donpcevent "#Slime0::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,181,95,0|script|#Slime0|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime0VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime0_Spawn, $@BlueSageSlime0_Amount;
- areamonster "048-2", 178, 92, 184, 98, "", 1093, $@BlueSageSlime0_Spawn, "#Slime0::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime0_Spawn, $@BlueSageSlime0_Spawn - 1;
- if (mobcount("048-2", "#Slime0::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime0_Spawn, 0;
-
- if ($@Slime0VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime0_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime0VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime0, @spawnSlime0 + 1;
- if ($@BlueSageSlime0_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime0, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime0VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime0_Amount - @spawnSlime0) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime0;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime0, 0;
- goto L_Clean;
-}
-
-
-// white slimes
-048-2,164,123,0|script|#Slime1Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime1::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime1_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime1_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime1))
- end;
-
- set @spawnSlime1, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime1VictimID, getcharid(3);
- donpcevent "#Slime1::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,164,123,0|script|#Slime1|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime1VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime1_Spawn, $@BlueSageSlime1_Amount;
- areamonster "048-2", 161, 120, 167, 126, "", 1093, $@BlueSageSlime1_Spawn, "#Slime1::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime1_Spawn, $@BlueSageSlime1_Spawn - 1;
- if (mobcount("048-2", "#Slime1::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime1_Spawn, 0;
-
- if ($@Slime1VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime1_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime1VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime1, @spawnSlime1 + 1;
- if ($@BlueSageSlime1_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime1, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime1VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime1_Amount - @spawnSlime1) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime1;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime1, 0;
- goto L_Clean;
-}
-
-
-// white slimes
-048-2,198,115,0|script|#Slime2Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime2::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime2_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime2_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime2))
- end;
-
- set @spawnSlime2, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime2VictimID, getcharid(3);
- donpcevent "#Slime2::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,198,115,0|script|#Slime2|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime2VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime2_Spawn, $@BlueSageSlime2_Amount;
- areamonster "048-2", 195, 112, 201, 118, "", 1093, $@BlueSageSlime2_Spawn, "#Slime2::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime2_Spawn, $@BlueSageSlime2_Spawn - 1;
- if (mobcount("048-2", "#Slime2::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime2_Spawn, 0;
-
- if ($@Slime2VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime2_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime2VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime2, @spawnSlime2 + 1;
- if ($@BlueSageSlime2_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime2, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime2VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime2_Amount - @spawnSlime2) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime2;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime2, 0;
- goto L_Clean;
-}
-
-
-// white slimes
-048-2,167,79,0|script|#Slime3Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime3::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime3_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime3_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime3))
- end;
-
- set @spawnSlime3, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime3VictimID, getcharid(3);
- donpcevent "#Slime3::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,167,79,0|script|#Slime3|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime3VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime3_Spawn, $@BlueSageSlime3_Amount;
- areamonster "048-2", 164, 76, 170, 82, "", 1093, $@BlueSageSlime3_Spawn, "#Slime3::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime3_Spawn, $@BlueSageSlime3_Spawn - 1;
- if (mobcount("048-2", "#Slime3::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime3_Spawn, 0;
-
- if ($@Slime3VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime3_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime3VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime3, @spawnSlime3 + 1;
- if ($@BlueSageSlime3_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime3, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime3VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime3_Amount - @spawnSlime3) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime3;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime3, 0;
- goto L_Clean;
-}
-
-
-// blue slimes
-048-2,192,86,0|script|#Slime4Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime4::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime4_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime4_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime4))
- end;
-
- set @spawnSlime4, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime4VictimID, getcharid(3);
- donpcevent "#Slime4::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,192,86,0|script|#Slime4|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime4VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime4_Spawn, $@BlueSageSlime4_Amount;
- areamonster "048-2", 189, 83, 195, 89, "", 1091, $@BlueSageSlime4_Spawn, "#Slime4::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime4_Spawn, $@BlueSageSlime4_Spawn - 1;
- if (mobcount("048-2", "#Slime4::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime4_Spawn, 0;
-
- if ($@Slime4VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime4_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime4VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime4, @spawnSlime4 + 1;
- if ($@BlueSageSlime4_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime4, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime4VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime4_Amount - @spawnSlime4) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime4;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime4, 0;
- goto L_Clean;
-}
-
-
-// blue slimes
-048-2,183,110,0|script|#Slime5Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime5::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime5_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime5_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime5))
- end;
-
- set @spawnSlime5, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime5VictimID, getcharid(3);
- donpcevent "#Slime5::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,183,110,0|script|#Slime5|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime5VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime5_Spawn, $@BlueSageSlime5_Amount;
- areamonster "048-2", 180, 107, 186, 113, "", 1091, $@BlueSageSlime5_Spawn, "#Slime5::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime5_Spawn, $@BlueSageSlime5_Spawn - 1;
- if (mobcount("048-2", "#Slime5::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime5_Spawn, 0;
-
- if ($@Slime5VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime5_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime5VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime5, @spawnSlime5 + 1;
- if ($@BlueSageSlime5_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime5, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime5VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime5_Amount - @spawnSlime5) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime5;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime5, 0;
- goto L_Clean;
-}
-
-
-// blue slimes
-048-2,164,102,0|script|#Slime6Trigger|32767,2,2
-{
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
-
- if (mobcount("048-2", "#Slime6::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime6_Spawn, 0;
-
- // if finished or haven't started yet or spawn already active or spawn already done, do nothing
- if ((@slimes == 0) || ($@BlueSageSlime6_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime6))
- end;
-
- set @spawnSlime6, 0;
- set @chance, rand(20);
- if (@chance < 6)
- goto L_End;
- if (@chance < 7)
- goto L_BlowUp;
-
- set $@Slime6VictimID, getcharid(3);
- donpcevent "#Slime6::OnSpawn";
- goto L_End;
-
-L_BlowUp:
- heal -Hp, 0;
- message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
- goto L_End;
-
-L_End:
- set @chance, 0;
- set @slimes, 0;
- end;
-}
-
-048-2,164,102,0|script|#Slime6|32767
-{
- end;
-
-OnSpawn:
- if (attachrid($@Slime6VictimID) == 0)
- goto L_Clean;
- set $@BlueSageSlime6_Spawn, $@BlueSageSlime6_Amount;
- areamonster "048-2", 161, 99, 167, 105, "", 1091, $@BlueSageSlime6_Spawn, "#Slime6::OnSlimeDeath";
- message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
- end;
-
-OnSlimeDeath:
- set $@BlueSageSlime6_Spawn, $@BlueSageSlime6_Spawn - 1;
- if (mobcount("048-2", "#Slime6::OnSlimeDeath") < 0) // returns -1 if no monsters
- set $@BlueSageSlime6_Spawn, 0;
-
- if ($@Slime6VictimID == getcharid(3))
- goto L_Count;
- if ($@BlueSageSlime6_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_Clean:
- set $@Slime6VictimID, 0;
- end;
-
-L_Count:
- set @spawnSlime6, @spawnSlime6 + 1;
- if ($@BlueSageSlime6_Spawn == 0)
- goto L_ClearedPoint;
- end;
-
-L_SlimesEscaped:
- set @spawnSlime6, 0;
- message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
- goto L_Clean;
-
-L_ClearedPoint:
- if (attachrid($@Slime6VictimID) == 0)
- goto L_Clean;
- if (rand($@BlueSageSlime6_Amount - @spawnSlime6) != 0)
- goto L_SlimesEscaped;
- set QUEST_BlueSage, QUEST_BlueSage | $@Q_BlueSageSlime6;
- message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
-
- set @slimes, ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
- if (@slimes == 255)
- message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
- set @slimes, 0;
- set @spawnSlime6, 0;
- goto L_Clean;
-}
diff --git a/world/map/npc/048-2/traveler.txt b/world/map/npc/048-2/traveler.txt
deleted file mode 100644
index 7b654d85..00000000
--- a/world/map/npc/048-2/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-048-2,23,46,0|script|Drake the Traveler|103
-{
- set @npcname$, "Drake";
- set @NpcTravelBit, $@blue_sage_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/048-2/visitors.txt b/world/map/npc/048-2/visitors.txt
deleted file mode 100644
index 742782f2..00000000
--- a/world/map/npc/048-2/visitors.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-// Part of Blue Sage quests
-// author: Jenalya
-// visitors that came to see the library and are now disappointed
-
-048-2,46,44,0|script|Connor|150
-{
- mes "[Connor]";
- mes "\"Oh, hello. There was a big accident in the library! Most of the books were damaged or destroyed!\"";
- next;
- mes "\"As far as I understand it had to do with those weird slimes. They're white and blue! I've never seen slimes of that color.\"";
- next;
- mes "\"I was so excited to get an opportunity to study some of the rare and valuable books and now this.";
- mes "I'd never have expected something like this happening in a Sages household. I thought they're so powerful and wise...\"";
- close;
-}
-
-048-2,28,30,0|script|Parcival|153
-{
- mes "[Parcival]";
- mes "\"Hello young one. Did you also come here to see the library?\"";
- menu
- "Nah, I'm just having a look around.",L_Close,
- "Yes!", L_More;
-
-L_More:
- mes "[Parcival]";
- mes "\"That's very commendable. But you'll be disappointed, there is a huge problem and the library is all upside down.";
- mes "This is very annoying! I was planning this trip for months and now this!\"";
- mes "He sighs.";
- next;
- mes "[Parcival]";
- mes "\"I'll probably have to leave and come back another time. But I want to warm up first.\"";
- next;
- mes "\"I wonder what they did... I can still feel some distortion in the magic pattern within this mansion. I mean, it's twisted anyway, because the Sages have their houses in a shifted dimension - that's why it is so much larger in the inside than from the outside.\"";
- next;
- mes "\"But there's something else... Well, I've heard about the research being done here. Seems there's some very advanced magic involved.\"";
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/051-1/_import.txt b/world/map/npc/051-1/_import.txt
deleted file mode 100644
index 2e99eba9..00000000
--- a/world/map/npc/051-1/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 051-1: Illia outskirts
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 051-1
-npc: npc/051-1/_mobs.txt
-npc: npc/051-1/_nodes.txt
-npc: npc/051-1/_warps.txt
-npc: npc/051-1/desert.txt
-npc: npc/051-1/desertmonsters.txt
-npc: npc/051-1/forest.txt
-npc: npc/051-1/forestmonsters.txt
-npc: npc/051-1/janitor.txt
-npc: npc/051-1/mapflags.txt
diff --git a/world/map/npc/051-1/_mobs.txt b/world/map/npc/051-1/_mobs.txt
deleted file mode 100644
index 7569cce6..00000000
--- a/world/map/npc/051-1/_mobs.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia outskirts mobs
-
-051-1,42,35,42,24|monster|LogHead|1025,30,100000ms,30000ms
-051-1,42,35,41,22|monster|SpikyMushroom|1019,10,100000ms,30000ms
diff --git a/world/map/npc/051-1/_nodes.txt b/world/map/npc/051-1/_nodes.txt
deleted file mode 100644
index 86674b68..00000000
--- a/world/map/npc/051-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia outskirts nodes
-
-// (no nodes)
diff --git a/world/map/npc/051-1/_warps.txt b/world/map/npc/051-1/_warps.txt
deleted file mode 100644
index 1ab90c66..00000000
--- a/world/map/npc/051-1/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia outskirts warps
-
diff --git a/world/map/npc/051-1/desert.txt b/world/map/npc/051-1/desert.txt
deleted file mode 100644
index 73dc7c9a..00000000
--- a/world/map/npc/051-1/desert.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-//-----------------------------------------------------------------------------
-// Souless Desert
-// $@illia_progress = 3
-//
-// Level progress:
-// 0: Did not start the task yet
-// 1: Players are instructed to collect souls
-// 2: Players collected enough souls and gave the souls to the waterfall
-//-----------------------------------------------------------------------------
-
-051-1,142,39,0|script|Bones|367
-{
- mes "You find a ruined paper next to these bones.";
- mes "It says...";
- next;
- mes "\"This waterfall is cursed... it feeds on living souls... I could not get past throught it.\"";
- mes "\"God, they appeared from nowhere...\"";
- mes "\"...\"";
- next;
- mes "The rest isn't legible.";
- close;
-
-}
-
-051-1,170,24,0|script|Cursed Waterfall|400
-{
- set $@illia_num_sealed_souls, 7;
- set @step, 3;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_3_progress == 0 && strcharinfo(0) == $@ILLIA_HERO$) goto L_GiveTask;
- if ($@illia_level_3_progress == 0 && strcharinfo(0) != $@ILLIA_HERO$) goto L_HintToHelpers;
- if ($@illia_level_3_progress == 1) goto L_GiveSouls;
- mes "Jump in the waterfall?";
- menu
- "Yes", L_Warp,
- "No", L_Close;
-
-OnTimer1000:
- npctalk strnpcinfo(0), "Youuuuuuu... Bring me souls... " + $@illia_num_sealed_souls + " fresh souls... Nooooow. And you shall paaass.";
- end;
-
-OnTimer4750:
- mapannounce "051-1", "You hear a loud scream coming from the wind... Something terrifying raised out there.", 0;
- end;
-
-OnTimer6500:
- npctalk strnpcinfo(0), "Nooooo... Do not let these things take them from youuuuuu!";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-L_HintToHelpers:
- mes "[Cursed Waterfall]";
- mes "\"Who are you?... Bring " + $@ILLIA_HERO$ + " to me!\"";
- close;
-
-L_GiveTask:
- set $@illia_level_3_progress, 1;
- mes "[Cursed Waterfall]";
- mes "\"Yooouuuuuu...\"";
- next;
-
- mes "You look around and see this ghostly voice comes from the waterfall.";
- next;
-
- // This message will be in the timed messages,
- // but display it here anyway to be sure the hero sees it.
- mes "\"Youuuuuuu... Bring me souls... " + $@illia_num_sealed_souls + " fresh souls... Nooooow.\"";
- mes "\"And you shall paaass.\"";
-
- // Reset the soul eaters counters.
- set $@SoulEaters0_count, 0;
- set $@SoulEaters1_count, 0;
- set $@SoulEaters2_count, 0;
- set $@SoulEaters3_count, 0;
- set $@SoulEaters4_count, 0;
- // Spawn 7 additional soul snakes in the north building, as a bait.
- areamonster "051-1", 125, 14, 143, 18, "", 1096, 7, "IlliaDMobs051-1::On1096";
- // Same with 5, in the island
- areamonster "051-1", 138, 34, 145, 41, "", 1096, 5, "IlliaDMobs051-1::On1096";
- // Start timed messages
- initnpctimer;
- goto L_Close;
-
-L_GiveSouls:
- if (strcharinfo(0) != $@ILLIA_HERO$)
- goto L_GiveSoulsToHero;
- mes "[Cursed Waterfall]";
- mes "\"Give me the souuuuuuls... Noooooooow!!\"";
- menu
- "Please, have a look at these.", L_CheckSouls,
- "Sorry, I don't have any.", L_Close;
-
-L_GiveSoulsToHero:
- mes "[Cursed Waterfall]";
- mes "\"Who are you?.... I want the souuuuuuls from " + $@ILLIA_HERO$ + "!\"";
- goto L_Close;
-
-L_CheckSouls:
- if (countitem ("SealedSoul") < $@illia_num_sealed_souls)
- goto L_NotEnough;
- delitem "SealedSoul", $@illia_num_sealed_souls;
- set $@illia_level_3_progress, 2;
- set $@illia_progress, 4;
- callfunc "UpdateIlliaProgress";
- set $@illia_max_time, $@illia_max_time + 540;
-
- // Clean all spawned monsters
- killmonster "051-1", "IlliaDMobs051-1::On1096";
- killmonster "051-1", "#SoulEaters0::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters1::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters2::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters3::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters4::OnSoulEaterDeath";
-
-
- mes "\"Goooood... Tasty souuuuuls...\"";
- mes "You shall pass now... before I change my mind...\"";
- next;
- mes "A blinding light appears from inside the waterfall.";
-
- // Display an effect to show the waterfall opens itself / kills remaining monsters
- misceffect FX_MEDIUM_BLINDINGLIGHT;
- goto L_Close;
-
-L_NotEnough:
- mes "[Cursed Waterfall]";
- mes "\"Moooooooooore... Give me more...\"";
- goto L_Close;
-
-L_Warp:
- warp "052-1", 23, 52;
- // Count the player who reached the island.
- set $@illia_players_in_luvia_territory, $@illia_players_in_luvia_territory + 1;
- goto L_Close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/051-1/desertmonsters.txt b/world/map/npc/051-1/desertmonsters.txt
deleted file mode 100644
index a3497055..00000000
--- a/world/map/npc/051-1/desertmonsters.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-051-1,134,36,67,49|monster|SoulSnake|1096,12,100000ms,30000ms,IlliaDMobs051-1::On1096
-
-// The soul snakes release a Sealed Soul at random, once the soul collecting is started
-051-1,0,0,0|script|IlliaDMobs051-1|32767
-{
- end;
-
-On1096:
- if (rand(4) == 0 && $@illia_progress == 3 && $@illia_level_3_progress == 1)
- getitem "SealedSoul", 1;
- set @mobID, 1010;
- callfunc "MobPoints";
- end;
-
-}
-
-// Soul eater spawns. They will eat a Sealed Soul when killed, and when the soul collecting is started.
-
-// Spawn in the island
-051-1,142,38,0|script|#SoulEaters0Trigger|32767,3,3
-{
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if ($@SoulEaters0_count > 0)
- end;
- donpcevent "#SoulEaters0::OnSpawn";
- end;
-}
-
-051-1,142,38,0|script|#SoulEaters0|32767
-{
- end;
-
-OnSpawn:
- set $@SoulEaters0_count, 5;
- areamonster "051-1", 139, 34, 145, 41, "", 1097, $@SoulEaters0_count, "#SoulEaters0::OnSoulEaterDeath";
- end;
-
-OnSoulEaterDeath:
- set $@SoulEaters0_count, $@SoulEaters0_count - 1;
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if (countitem("SealedSoul") == 0)
- end;
- delitem "SealedSoul", countitem("SealedSoul");
- message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying.";
- end;
-}
-
-// Spawn inside the north building
-051-1,134,16,0|script|#SoulEaters1Trigger|32767,9,2
-{
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if ($@SoulEaters1_count > 0)
- end;
- donpcevent "#SoulEaters1::OnSpawn";
- end;
-}
-
-051-1,134,16,0|script|#SoulEaters1|32767
-{
- end;
-
-OnSpawn:
- set $@SoulEaters1_count, 7;
- areamonster "051-1", 125, 14, 143, 18, "", 1097, $@SoulEaters1_count, "#SoulEaters1::OnSoulEaterDeath";
- end;
-
-OnSoulEaterDeath:
- set $@SoulEaters1_count, $@SoulEaters1_count - 1;
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if (countitem("SealedSoul") == 0)
- end;
- delitem "SealedSoul", countitem("SealedSoul");
- message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying.";
- end;
-}
-
-// Spawn in the south grass area
-051-1,137,55,0|script|#SoulEaters2Trigger|32767,5,4
-{
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if ($@SoulEaters2_count > 0)
- end;
- donpcevent "#SoulEaters2::OnSpawn";
- end;
-}
-
-051-1,137,55,0|script|#SoulEaters2|32767
-{
- end;
-
-OnSpawn:
- set $@SoulEaters2_count, 4;
- areamonster "051-1", 134, 54, 139, 58, "", 1097, $@SoulEaters2_count, "#SoulEaters2::OnSoulEaterDeath";
- end;
-
-OnSoulEaterDeath:
- set $@SoulEaters2_count, $@SoulEaters2_count - 1;
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if (countitem("SealedSoul") == 0)
- end;
- delitem "SealedSoul", countitem("SealedSoul");
- message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying.";
- end;
-}
-
-// Spawn near the eastern cliff
-051-1,155,35,0|script|#SoulEaters3Trigger|32767,4,7
-{
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if ($@SoulEaters3_count > 0)
- end;
- donpcevent "#SoulEaters3::OnSpawn";
- end;
-}
-
-051-1,155,35,0|script|#SoulEaters3|32767
-{
- end;
-
-OnSpawn:
- set $@SoulEaters3_count, 4;
- areamonster "051-1", 151, 29, 160, 45, "", 1097, $@SoulEaters3_count, "#SoulEaters3::OnSoulEaterDeath";
- end;
-
-OnSoulEaterDeath:
- set $@SoulEaters3_count, $@SoulEaters3_count - 1;
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if (countitem("SealedSoul") == 0)
- end;
- delitem "SealedSoul", countitem("SealedSoul");
- message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying.";
- end;
-}
-
-// Spawn near the western cliff
-051-1,120,38,0|script|#SoulEaters4Trigger|32767,6,9
-{
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if ($@SoulEaters4_count > 0)
- end;
- donpcevent "#SoulEaters4::OnSpawn";
- end;
-}
-
-051-1,120,38,0|script|#SoulEaters4|32767
-{
- end;
-
-OnSpawn:
- set $@SoulEaters4_count, 4;
- areamonster "051-1", 116, 29, 127, 50, "", 1097, $@SoulEaters4_count, "#SoulEaters4::OnSoulEaterDeath";
- end;
-
-OnSoulEaterDeath:
- set $@SoulEaters4_count, $@SoulEaters4_count - 1;
- if ($@illia_progress != 3 || $@illia_level_3_progress != 1)
- end;
- if (countitem("SealedSoul") == 0)
- end;
- delitem "SealedSoul", countitem("SealedSoul");
- message strcharinfo(0), "The Soul Eater feeds on the Sealed Souls you are carrying.";
- end;
-}
diff --git a/world/map/npc/051-1/forest.txt b/world/map/npc/051-1/forest.txt
deleted file mode 100644
index 870465c3..00000000
--- a/world/map/npc/051-1/forest.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-//-----------------------------------------------------------------------------
-// Forest
-// $@illia_progress = 1
-//
-// Level progress:
-// 0: Did not start the task yet
-// 1: Players are searching for the rock.
-// 2: Players found the rock
-// 3: Players unlocked the door
-//-----------------------------------------------------------------------------
-
-051-1,64,46,0|script|Strange Stone|400
-{
- set @step, 1;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if (isin("051-1", 65,45, 67,48) == 0) end;
- if (strcharinfo(0) != $@ILLIA_HERO$) goto L_HandleHelper;
- if ($@illia_level_1_progress == 0) goto L_GiveTask;
- if ($@illia_level_1_progress == 1) goto L_TaskNotComplete;
- if ($@illia_level_1_progress == 2) goto L_TaskComplete;
- if ($@illia_level_1_progress == 3) goto L_NothingElseToDo;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-L_HandleHelper:
- mes "This stuff sounds complicated.";
- mes "I should ask " + $@ILLIA_HERO$ + " what to do.";
- close;
-
-L_NothingElseToDo:
- mes "The door is opened... What am I waiting for?";
- close;
-
-L_GiveTask:
- mes "You look at the rocks with attention.";
- mes "You are smart enough to notice that there seems to be a missing rock that could activate a mechanism.";
- next;
- menu
- "This rock must not be far... Let's look around.", L_Foo;
-L_Foo:
- set $@illia_level_1_progress, 1;
- set $@illia_level_1_num_deaths, 0;
- close;
-
-L_TaskNotComplete:
- mes "It's not working. I have to find the rock.";
- mes "With all the slimes around here, maybe one absorbed it.";
- close;
-
-L_TaskComplete:
- set $@illia_level_1_progress, 3;
- set $@illia_progress, 2;
- callfunc "UpdateIlliaProgress";
- set $@illia_max_time, $@illia_max_time + 360;
- mes "You insert the rock in the mechanism, then hear an unlock noise. The rocks move by themselves in a rumbling noise, making an opening in the wall.";
- close;
-
-}
-
-// Warp from the forest, to the cave
-051-1,66,44,0|script|#ToCave|32767,1,1
-{
- set @step, 1;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_1_progress < 2) goto L_Blocked;
- if ($@illia_level_1_progress == 2 && strcharinfo(0) == $@ILLIA_HERO$) goto L_SeeStone;
- if ($@illia_level_1_progress == 3) goto L_Warp;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-L_Blocked:
- message strcharinfo(0), "There should be a way to open this... but not with my bare hands.";
- end;
-
-L_SeeStone:
- message strcharinfo(0), "I should take a look at the stone.";
- end;
-
-L_Warp:
- warp "051-3", 24, 60;
- end;
-}
-
diff --git a/world/map/npc/051-1/forestmonsters.txt b/world/map/npc/051-1/forestmonsters.txt
deleted file mode 100644
index 4d646ed3..00000000
--- a/world/map/npc/051-1/forestmonsters.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-051-1,52,32,10,8|monster|GreenSlime|1005,20,100000ms,30000ms,IlliaFMobs051-1::On1005
-
-051-1,0,0,0|script|IlliaFMobs051-1|32767
-{
- end;
-
-On1005:
- if ($@illia_level_1_progress == 1)
- goto L_RockFinding;
- end;
-
-L_RockFinding:
- set $@illia_level_1_num_deaths, $@illia_level_1_num_deaths + 1;
- set @p, 50 - $@illia_level_1_num_deaths;
- if (@p < 0)
- set @p, 0;
- if ($@illia_progress != 1 || $@ILLIA_STATUS != 4 || rand(@p) != 0)
- end;
- message strcharinfo(0), "This slime released a rock with a weird shape, that seems to fit in the mechanism!";
- set $@illia_level_1_progress, 2;
- end;
-
-}
diff --git a/world/map/npc/051-1/janitor.txt b/world/map/npc/051-1/janitor.txt
deleted file mode 100644
index 623690f0..00000000
--- a/world/map/npc/051-1/janitor.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-// Forest janitor
-051-1,1,1,0|script|#IlliaJanitor1|32767
-{
-end;
-
-OnCommandClean:
- // Nothing to do here.
- end;
-
-}
-
-// Desert janitor
-051-1,1,1,0|script|#IlliaJanitor3|32767
-{
-end;
-
-OnCommandClean:
- killmonster "051-1", "IlliaDMobs051-1::On1096";
- // Kill the soul eaters that were spawned
- killmonster "051-1", "#SoulEaters0::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters1::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters2::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters3::OnSoulEaterDeath";
- killmonster "051-1", "#SoulEaters4::OnSoulEaterDeath";
- end;
-
-}
diff --git a/world/map/npc/051-1/mapflags.txt b/world/map/npc/051-1/mapflags.txt
deleted file mode 100644
index ddac528a..00000000
--- a/world/map/npc/051-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-051-1|mapflag|nosave|007-2,36,23
-051-1|mapflag|resave|007-2,36,23
diff --git a/world/map/npc/051-3/_import.txt b/world/map/npc/051-3/_import.txt
deleted file mode 100644
index f4cae902..00000000
--- a/world/map/npc/051-3/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 051-3: Illia Bandit Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 051-3
-npc: npc/051-3/_mobs.txt
-npc: npc/051-3/_nodes.txt
-npc: npc/051-3/_warps.txt
-npc: npc/051-3/ambush.txt
-npc: npc/051-3/jailslimes.txt
-npc: npc/051-3/janitor.txt
-npc: npc/051-3/locks.txt
-npc: npc/051-3/mapflags.txt
-npc: npc/051-3/reinforcements.txt
diff --git a/world/map/npc/051-3/_mobs.txt b/world/map/npc/051-3/_mobs.txt
deleted file mode 100644
index 3b10016f..00000000
--- a/world/map/npc/051-3/_mobs.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia Bandit Cave mobs
-
-051-3,31,52,21,13|monster|RedSlime|1008,8,100000ms,30000ms
-051-3,31,52,19,14|monster|CaveMaggot|1056,3,100000ms,30000ms
-051-3,56,102,3,2|monster|Spider|1012,1,100000ms,250000ms
-051-3,61,102,2,2|monster|Spider|1012,1,100000ms,250000ms
-051-3,65,102,2,2|monster|Spider|1012,1,100000ms,250000ms
-051-3,71,109,4,2|monster|BlackScorpion|1009,1,100000ms,250000ms
-051-3,59,56,12,36|monster|Bandit|1064,47,100000ms,10000ms
-051-3,59,44,13,13|monster|BanditLord|1065,4,100000ms,20000ms
-051-3,60,69,18,9|monster|BanditLord|1065,4,100000ms,20000ms
-051-3,63,94,0,0|monster|SleepingBandit|1099,1,100000ms,60000ms
-051-3,53,93,0,0|monster|SleepingBandit|1099,1,100000ms,60000ms
-051-3,48,71,0,0|monster|SleepingBandit|1099,1,100000ms,60000ms
-051-3,38,30,17,12|monster|Bandit|1064,12,100000ms,10000ms
-051-3,39,33,11,8|monster|BanditLord|1065,2,100000ms,20000ms
-051-3,80,101,10,12|monster|CopperSlime|1098,7,100000ms,60000ms
-051-3,60,94,18,5|monster|CopperSlime|1098,7,100000ms,60000ms
diff --git a/world/map/npc/051-3/_nodes.txt b/world/map/npc/051-3/_nodes.txt
deleted file mode 100644
index 75194dbf..00000000
--- a/world/map/npc/051-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia Bandit Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/051-3/_warps.txt b/world/map/npc/051-3/_warps.txt
deleted file mode 100644
index 37e8dd14..00000000
--- a/world/map/npc/051-3/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia Bandit Cave warps
-
diff --git a/world/map/npc/051-3/ambush.txt b/world/map/npc/051-3/ambush.txt
deleted file mode 100644
index 7d659710..00000000
--- a/world/map/npc/051-3/ambush.txt
+++ /dev/null
@@ -1,182 +0,0 @@
-//-----------------------------------------------------------------------------
-// Bandit cave
-// $@illia_progress = 2
-//
-// Level progress:
-// 0: Did not start the task yet
-// 1: Players are ambushed
-// 2: Players escaped their jails
-// 3: Reinforcements come when they approach the exit of the cave
-// 4: Key of the door found, to leave the cave
-//-----------------------------------------------------------------------------
-
-051-3,40,52,0|script|#WayBlockedTrigger|32767,2,2
-{
- message strcharinfo(0), "There is no way I can pass here. Let's find another way.";
- end;
-}
-
-051-3,31,70,0|script|#AmbushReadyTrigger|32767,2,2
-{
- set @step, 2;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if (strcharinfo(0) == $@ILLIA_HERO$ && $@illia_level_2_progress == 0) goto L_PrepareAmbush;
- end;
-
-L_PrepareAmbush:
- disablenpc "Sneaky Bandit";
- disablenpc "Another Sneaky Bandit";
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-}
-
-051-3,31,93,0|script|#BanditAmbushTrigger|32767,3,3
-{
- set @step, 2;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_2_progress == 0 && strcharinfo(0) == $@ILLIA_HERO$) goto L_MakeAmbush;
- end;
-
-L_MakeAmbush:
- set $@illia_level_2_progress, 1;
- donpcevent "#BndtTl::OnCommandAmbush";
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- message strcharinfo(0), "Your throat got cut by a sneaky bandit!";
- end;
-}
-
-051-3,1,1,0|script|#BndtTl|32767
-{
- end;
-
-OnCommandAmbush:
- initnpctimer;
- end;
-
-OnTimer1000:
- enablenpc "Sneaky Bandit";
- donpcevent "Sneaky Bandit::OnCommandTalk";
- enablenpc "Another Sneaky Bandit";
- donpcevent "Another Sneaky Bandit::OnCommandTalk";
- end;
-
-OnTimer9000:
- areawarp "051-3", 22, 45, 42, 97, "051-3", 101, 13;
- end;
-
-OnTimer11000:
- areatimer 0, "051-3", 22, 12, 102, 97, 500, "#BndtTl::OnOuch";
- areatimer 0, "051-3", 22, 12, 102, 97, 3000, "#BndtTl::OnA";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnOuch:
- message strcharinfo(0), "Ouch my head...";
- end;
-
-OnA:
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_CaptureHero;
- if (strcharinfo(0) == $@ILLIA_HELPER1$)
- goto L_CaptureHelper1;
- if (strcharinfo(0) == $@ILLIA_HELPER2$)
- goto L_CaptureHelper2;
- if (strcharinfo(0) == $@ILLIA_HELPER3$)
- goto L_CaptureHelper3;
- // kill that player otherwise, since not part of the quest.
- heal -Hp, 0;
- end;
-
-L_CaptureHero:
- // Simulate the capture of the player.
- // Unequip all equipments
- nude;
- // put the health at 40%.
- heal MaxHp, 0;
- heal ((MaxHp/100) * -60), 0;
- warp "051-3", 69, 109;
- message strcharinfo(0), "Meh... Where am I?";
- end;
-
-L_CaptureHelper1:
- // Simulate the capture of the player.
- // Unequip all equipments
- nude;
- // put the health at 40%.
- heal MaxHp, 0;
- heal ((MaxHp/100) * -60), 0;
- warp "051-3", 64, 102;
- message strcharinfo(0), "Meh... Where am I?";
- end;
-
-L_CaptureHelper2:
- // Simulate the capture of the player.
- // Unequip all equipments
- nude;
- // put the health at 40%.
- heal MaxHp, 0;
- heal ((MaxHp/100) * -60), 0;
- warp "051-3", 62, 102;
- message strcharinfo(0), "Meh... Where am I?";
- end;
-
-L_CaptureHelper3:
- // Simulate the capture of the player.
- // Unequip all equipments
- nude;
- // put the health at 40%.
- heal MaxHp, 0;
- heal ((MaxHp/100) * -60), 0;
- warp "051-3", 58, 102;
- message strcharinfo(0), "Meh... Where am I?";
- end;
-
-}
-
-051-3,29,94,0|script|Sneaky Bandit|32767
-{
- end;
-
-OnCommandTalk:
- initnpctimer;
- end;
-
-OnTimer100:
- npctalk strnpcinfo(0), "Did you think you could sneak in our den without a problem?";
- end;
-
-OnTimer3600:
- npctalk strnpcinfo(0), "Drop your weapons, and come with us!";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-}
-
-051-3,33,95,0|script|Another Sneaky Bandit|32767
-{
- end;
-
-OnCommandTalk:
- initnpctimer;
- end;
-
-OnTimer1500:
- npctalk strnpcinfo(0), "W00t! More slaves!";
- end;
-
-OnTimer5500:
- npctalk strnpcinfo(0), "Ahaha, that was easy! Ok, knock them out!";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-}
diff --git a/world/map/npc/051-3/jailslimes.txt b/world/map/npc/051-3/jailslimes.txt
deleted file mode 100644
index 8544fb1a..00000000
--- a/world/map/npc/051-3/jailslimes.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-// Separate spawns for the copper slimes in the 4 jails
-051-3,57,104,1,1|monster|CopperSlime|1098,1,60000ms,30000ms,IlliaCMobs051-3::On1098
-051-3,62,104,1,1|monster|CopperSlime|1098,1,60000ms,30000ms,IlliaCMobs051-3::On1098
-051-3,63,104,1,1|monster|CopperSlime|1098,1,60000ms,30000ms,IlliaCMobs051-3::On1098
-051-3,70,111,1,1|monster|CopperSlime|1098,1,60000ms,30000ms,IlliaCMobs051-3::On1098
-
-051-3,0,0,0|script|IlliaCMobs051-3|32767
-{
- end;
-
-On1098:
- if (rand(100) < 80 && $@illia_progress == 2 && ($@illia_level_2_progress == 1 || $@illia_level_2_progress == 2))
- goto L_LockPicks;
- goto L_End;
-
-L_LockPicks:
- if (countitem ("LockPicks") == 0)
- goto L_GiveLockPicks;
- goto L_End;
-
-L_GiveLockPicks:
- message strcharinfo(0), "Hey nice, someone left behind these rusty lock picks.";
- getitem "LockPicks", 1;
- goto L_End;
-
-L_End:
- set @mobID, 1098;
- callfunc "MobPoints";
- end;
-
-}
diff --git a/world/map/npc/051-3/janitor.txt b/world/map/npc/051-3/janitor.txt
deleted file mode 100644
index edef5856..00000000
--- a/world/map/npc/051-3/janitor.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Bandit cave janitor
-051-3,1,1,0|script|#IlliaJanitor2|32767
-{
-end;
-
-OnCommandClean:
- // Kill all remaining bandits spawned during the "reinforcements" event
- killmonster "051-1", "Door::OnB";
- end;
-
-}
diff --git a/world/map/npc/051-3/locks.txt b/world/map/npc/051-3/locks.txt
deleted file mode 100644
index 4fdde75d..00000000
--- a/world/map/npc/051-3/locks.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-051-3,69,107,0|script|Jail Lock 1|400
-{
- if (isin("051-3", 69, 108, 73, 111)) goto L_Do_Lock_Picking;
- end;
-
-L_Do_Lock_Picking:
- callfunc "LockPicking";
- if (@lock_picking_success > 0)
- goto L_OpenDoor;
- close;
-
-L_OpenDoor:
- set @lock_picking_success, 0;
- warp "051-3", 69, 104;
- message strcharinfo(0), "Ok, let's get out of here now.";
- set $@illia_level_2_progress, 2;
- close;
-}
-
-051-3,64,100,0|script|Jail Lock 2|400
-{
- if (isin("051-3", 64, 101, 66, 104)) goto L_Do_Lock_Picking;
- end;
-
-L_Do_Lock_Picking:
- callfunc "LockPicking";
- if (@lock_picking_success > 0)
- goto L_OpenDoor;
- close;
-
-L_OpenDoor:
- set @lock_picking_success, 0;
- warp "051-3", 64, 97;
- close;
-}
-
-051-3,62,100,0|script|Jail Lock 3|400
-{
- if (isin("051-3", 61, 101, 62, 104)) goto L_Do_Lock_Picking;
- end;
-
-L_Do_Lock_Picking:
- callfunc "LockPicking";
- if (@lock_picking_success > 0)
- goto L_OpenDoor;
- close;
-
-L_OpenDoor:
- set @lock_picking_success, 0;
- warp "051-3", 62, 97;
- close;
-}
-
-051-3,58,100,0|script|Jail Lock 4|400
-{
- if (isin("051-3", 57, 101, 58, 104)) goto L_Do_Lock_Picking;
- end;
-
-L_Do_Lock_Picking:
- callfunc "LockPicking";
- if (@lock_picking_success > 0)
- goto L_OpenDoor;
- close;
-
-L_OpenDoor:
- set @lock_picking_success, 0;
- warp "051-3", 58, 97;
- close;
-}
diff --git a/world/map/npc/051-3/mapflags.txt b/world/map/npc/051-3/mapflags.txt
deleted file mode 100644
index 3615db4b..00000000
--- a/world/map/npc/051-3/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-051-3|mapflag|nosave|007-2,36,23
-051-3|mapflag|resave|007-2,36,23
diff --git a/world/map/npc/051-3/reinforcements.txt b/world/map/npc/051-3/reinforcements.txt
deleted file mode 100644
index 5870671c..00000000
--- a/world/map/npc/051-3/reinforcements.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-051-3,47,30,0|script|#BndtRnfrcmtsTrigger|32767,2,3
-{
- set @step, 2;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_2_progress == 2) goto L_CallReinforcements;
- end;
-
-L_CallReinforcements:
- donpcevent "Door::OnRnfrcmts";
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-}
-
-051-3,37,24,0|script|Door|400
-{
- set @step, 2;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- mes "Try open the door?";
- menu
- "Yes", L_TryOpen,
- "Do nothing", L_Close;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-L_TryOpen:
- if ($@illia_level_2_progress < 4)
- goto L_KeyNotFound;
- goto L_Warp;
-
-L_KeyNotFound:
- mes "You do not see a way to open this door.";
- close;
-
-L_Warp:
- mes "You place the key in the door and open the lock.";
- warp "051-1", 118, 55;
- close;
-
-OnRnfrcmts:
- set $@illia_level_2_progress, 3;
- // Spawn 20 bandits
- areamonster "051-3", 29, 25, 48, 39, "", 1064, 18, "Door::OnB";
- // Spawn 4 bandit lords
- areamonster "051-3", 29, 25, 48, 39, "", 1065, 3, "Door::OnB";
- initnpctimer;
- mapannounce "051-3", "Bandit Lords : Do not let them escape!!" , 0;
- areatimer 0, "051-3", 25, 20, 80, 85, 10, "Door::OnDRnfrcmts";
- end;
-
-OnB:
- end;
-
-OnDRnfrcmts:
- message strcharinfo(0), "Oh no, reinforcements! We must kill them all!";
- end;
-
-OnTimer2000:
- setnpctimer 0;
- if ($@illia_level_2_progress != 3 || $@illia_progress != 2)
- end;
- if (mobcount("051-3", "Door::OnB") < 0)
- goto L_OpenDoor;
- end;
-
-L_OpenDoor:
- set $@illia_level_2_progress, 4;
- set $@illia_progress, 3;
- callfunc "UpdateIlliaProgress";
- set $@illia_max_time, $@illia_max_time + 300;
- areatimer 0, "051-3", 25, 20, 80, 85, 10, "Door::OnKeyFound";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnKeyFound:
- message strcharinfo(0), "One of the defeated bandit lords had a door key attached to his belt.";
- end;
-L_Close:
- close;
-}
diff --git a/world/map/npc/052-1/_import.txt b/world/map/npc/052-1/_import.txt
deleted file mode 100644
index 05e7e8e9..00000000
--- a/world/map/npc/052-1/_import.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// Map 052-1: Illia archipelago
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 052-1
-npc: npc/052-1/_mobs.txt
-npc: npc/052-1/_nodes.txt
-npc: npc/052-1/_warps.txt
-npc: npc/052-1/channelling.txt
-npc: npc/052-1/janitor.txt
-npc: npc/052-1/mapflags.txt
diff --git a/world/map/npc/052-1/_mobs.txt b/world/map/npc/052-1/_mobs.txt
deleted file mode 100644
index 96b998eb..00000000
--- a/world/map/npc/052-1/_mobs.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia archipelago mobs
-
-052-1,55,29,43,39|monster|AzulSlime|1100,18,100000ms,20000ms
diff --git a/world/map/npc/052-1/_nodes.txt b/world/map/npc/052-1/_nodes.txt
deleted file mode 100644
index 35ee39e3..00000000
--- a/world/map/npc/052-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia archipelago nodes
-
-// (no nodes)
diff --git a/world/map/npc/052-1/_warps.txt b/world/map/npc/052-1/_warps.txt
deleted file mode 100644
index 834849b3..00000000
--- a/world/map/npc/052-1/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia archipelago warps
-
diff --git a/world/map/npc/052-1/channelling.txt b/world/map/npc/052-1/channelling.txt
deleted file mode 100644
index 59628d0b..00000000
--- a/world/map/npc/052-1/channelling.txt
+++ /dev/null
@@ -1,339 +0,0 @@
-//-----------------------------------------------------------------------------
-// Illia Island
-// $@illia_progress = 4
-//
-// Level progress:
-// 0: Did not start the channelling, or previous channelling failed
-// 1: Channelling started
-// 2: Channelling completed
-//-----------------------------------------------------------------------------
-
-052-1,25,44,0|script|#EnchantDoorTrigger|32767,3,4
-{
- set @step, 4;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if (strcharinfo(0) == $@ILLIA_HERO$ &&
- $@illia_level_4_progress == 0) goto L_EnchantDoor;
- end;
-
-L_EnchantDoor:
- enablenpc "#Enchanted Door";
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-}
-
-052-1,57,29,0|script|#Enchanted Door|369,1,1
-{
- if ($@illia_level_4_progress != 2) goto L_PushBack;
- end;
-
-L_PushBack:
- warp "052-1", 58, 34;
- heal ((MaxHp/100) * -20), 0;
- message strcharinfo(0), "You are pushed back violently. There is probably some way to break this barrier.";
- mes "You are pushed back violently.";
- mes "There is probably some way to break this barrier.";
- close;
-
-OnCommandDS:
- areamonster "052-1", 56, 30, 60, 31, "", 1101, 2 + rand(3), "#Enchanted Door::OnSpawn";
- misceffect FX_EVIL_SUMMON;
- end;
-
-OnSpawn:
- end;
-
-}
-
-052-1,57,29,0|script|#Enchanted Door2|400,1,1
-{
- if ($@illia_level_4_progress == 2) goto L_Warp;
- end;
-
-L_Warp:
- warp "052-2", 33, 40;
- end;
-
-OnCommandDestroy:
- misceffect FX_ENCHANTED_DOOR_BROKEN;
- end;
-
-}
-
-052-1,51,38,0|script|Engravings|400
-{
- mes "You can read some words engraved inside this rock, but some are erased by wind and time:";
- next;
- mes "\".. can use this .. power..´. . .´. . . amplify a spell ..´.";
- mes " . ´´. Don't let .. spell power .´..´ . .. fade away ...";
- mes "´ .Use lazurite stones ´..´. they will appear. ..´ .. drop them inside .. this circle.";
- mes ". ´ power.. drains .. life..´. .´ focus . .not move at all´. .\"";
- next;
- mes "Below this strange writing, you notice a word still deeply engraved in the stone:";
- next;
- mes "\"#catalazuli\"";
- next;
- mes "... that looks like an incantation or something.";
- if ($@illia_level_4_progress == 0)
- goto L_SuggestChannelling;
- close;
-
-L_SuggestChannelling:
- next;
- mes "I think this blue circle right here can be helpful to break the enchantment that blocks the door of the Inn.";
- next;
- mes "Let's see how I can activate it...";
- mes "But I should probably get inside it, first.";
- close;
-
-}
-
-function|script|StartChannelling
-{
- if (isat("052-1",53,38) == 0)
- goto L_Return;
- if ($@illia_level_4_progress > 0)
- goto L_Return;
- set $@illia_level_4_progress, 1;
- set $@illia_char_channelling$, strcharinfo(0);
-
- set @bonus, (Int+1) / 25;
- // Lazurite Stones power, will also depend on the Int of the channelling character
- setarray $@illia_lazurites_power,
- 12 + @bonus, // small
- 32 + @bonus, // regular
- 65 + @bonus; // large
-
- // coordinates where stones will appear
- setarray $@illia_small_lazurites, 50,41, 44,33, 61,42;
- setarray $@illia_regular_lazurites, 68,29, 47,25, 38,45, 70,40;
- setarray $@illia_large_lazurites, 21,40, 34,25;
-
- // amount of initial magic power
- set $@illia_magic_power, 1811 + Int*2;
- // Channelling required power depends on the base Int of the character
- set $@illia_magic_power_required, 5707 - 2*Int;
- // magic power loss depends also on Int
- set $@illia_magic_power_loss, 53 - ((Int+1)*2)/10;
-
- // register the power status to display hints to the players
- // Statuses: 0=critical(below 300), 1=neutral, 2=almost there (max-300)
- set $@illia_magic_power_status, 1;
-
- message strcharinfo(0), "Ok, let's stay focused now!";
- donpcevent "#Power Circle::OnCommandSt";
- goto L_Return;
-
-L_Return:
- return;
-}
-
-052-1,53,38,0|script|#Power Circle|368
-{
- set @step, 4;
- if ($@illia_progress < @step)
- goto L_ShouldNotBeHere;
- if (isat("052-1",53,38) == 0)
- goto L_Hint;
- end;
-
-OnCast:
- callfunc "StartChannelling";
- end;
-
-OnCommandSt:
- initnpctimer;
- end;
-
-L_Hint:
- mes "Magic seems to be flowing from this place. I should find out what it is.";
- close;
-
-OnTimer2000:
- callsub S_CheckChannelling;
- end;
-
-OnTimer4000:
- callsub S_CheckChannelling;
- end;
-
-OnTimer6000:
- // Spawn items at specific place
- callsub S_ItemSpawn;
- callsub S_CheckChannelling;
- end;
-
-OnTimer8000:
- callsub S_CheckChannelling;
- end;
-
-OnTimer10000:
- // Spawn items at specific place
- callsub S_ItemSpawn;
- callsub S_CheckChannelling;
- end;
-
-OnTimer11000:
- setnpctimer 0;
- // Spawn monsters (demonic spirits) near the enchanted door
- donpcevent "#Enchanted Door::OnCommandDS";
- end;
-
-S_ItemSpawn:
- if (!(attachrid(getcharid(3, $@illia_char_channelling$))))
- goto L_Return;
- // spawn items at random
- set $@illia_item_spawn_i, rand(getarraysize($@illia_small_lazurites)/2);
- set $@illia_item_spawn_x, $@illia_small_lazurites[$@illia_item_spawn_i*2];
- set $@illia_item_spawn_y, $@illia_small_lazurites[($@illia_item_spawn_i*2)+1];
- if (rand(10) > 0)
- makeitem 873, rand(4,7), "052-1", $@illia_item_spawn_x, $@illia_item_spawn_y;
-
- set $@illia_item_spawn_i, rand(getarraysize($@illia_regular_lazurites)/2);
- set $@illia_item_spawn_x, $@illia_regular_lazurites[$@illia_item_spawn_i*2];
- set $@illia_item_spawn_y, $@illia_regular_lazurites[($@illia_item_spawn_i*2)+1];
- if (rand(8) > 0)
- makeitem 874, rand(3,4), "052-1", $@illia_item_spawn_x, $@illia_item_spawn_y;
-
- set $@illia_item_spawn_i, rand(getarraysize($@illia_large_lazurites)/2);
- set $@illia_item_spawn_x, $@illia_large_lazurites[$@illia_item_spawn_i*2];
- set $@illia_item_spawn_y, $@illia_large_lazurites[($@illia_item_spawn_i*2)+1];
- if (rand(4) > 0)
- makeitem 875, rand(1,2), "052-1", $@illia_item_spawn_x, $@illia_item_spawn_y;
-
- set $@illia_item_spawn_i, 0;
- set $@illia_item_spawn_x, 0;
- set $@illia_item_spawn_y, 0;
-
- detachrid;
- goto L_Return;
-
-L_Return:
- return;
-
-S_CheckChannelling:
- // Remove stones inside the circle
- set $@illia_magic_power, $@illia_magic_power +
- getareadropitem("052-1", 52, 37, 54, 39, 873, 1)*$@illia_lazurites_power[0] +
- getareadropitem("052-1", 52, 37, 54, 39, 874, 1)*$@illia_lazurites_power[1] +
- getareadropitem("052-1", 52, 37, 54, 39, 875, 1)*$@illia_lazurites_power[2];
-
- // magic power fades over time
- set $@illia_magic_power, $@illia_magic_power - $@illia_magic_power_loss;
-
- set $@illia_magic_power_last_status, $@illia_magic_power_status;
- set $@illia_magic_power_status, 1;
- if ($@illia_magic_power < 300)
- set $@illia_magic_power_status, 0;
- if ($@illia_magic_power > $@illia_magic_power_required - 300)
- set $@illia_magic_power_status, 2;
-
- // Player loses a part of his health while channelling
- if (!(attachrid(getcharid(3, $@illia_char_channelling$))))
- goto L_ChannellingFail;
- // Display an effect showing the drain
- misceffect FX_CHANNELLING_RAISE;
- heal ((MaxHp/100) * -4), 0;
-
- if (isdead())
- goto L_ChannellingDead;
- if (isat("052-1",53,38) == 0)
- goto L_ChannellingMoved;
- // check the magic power
- if ($@illia_magic_power <= 0)
- goto L_ChPwrVanish;
- if ($@illia_magic_power >= $@illia_magic_power_required)
- goto L_ChannellingComplete;
-
- detachrid;
-
- set $@illia_channelling_status_msg$, "";
-
- if ($@illia_magic_power_last_status == 0 && $@illia_magic_power_status == 1)
- set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": I think I'm controlling the spell again now. Keep up!";
- if ($@illia_magic_power_last_status == 1 && $@illia_magic_power_status == 0)
- set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": Guys I'm loosing it! Hurry up!";
- if ($@illia_magic_power_last_status == 1 && $@illia_magic_power_status == 2)
- set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": I almost have the power to cast it! One last effort!";
- if ($@illia_magic_power_last_status == 2 && $@illia_magic_power_status == 1)
- set $@illia_channelling_status_msg$, $@illia_char_channelling$ + ": Damn! It faded a little.";
-
- if ($@illia_channelling_status_msg$ != "")
- areatimer 0, "052-1", 1, 1, 100, 80, 0, "#Power Circle::OnMPSC";
-
- return;
-
-OnMPSC:
- message strcharinfo(0), $@illia_channelling_status_msg$;
- set $@illia_channelling_status_msg$, "";
- end;
-
-L_ChannellingComplete:
- message strcharinfo(0), "You successfully cast the spell and broke the door's enchantment!";
- detachrid;
- stopnpctimer;
- setnpctimer 0;
- set $@illia_magic_power, 0;
- set $@illia_magic_power_required, 0;
- set $@illia_magic_power_last_status, 0;
- set $@illia_magic_power_status, 0;
- set $@illia_magic_power_loss, 0;
- set $@illia_char_channelling$, "";
- set $@illia_level_4_progress, 2;
- set $@illia_progress, 5;
- callfunc "UpdateIlliaProgress";
- set $@illia_max_time, $@illia_max_time + 600;
- // Effect to display the disenchant is cast
- misceffect FX_CHANNELLING_CAST;
- // move away the enchanted door
- donpcevent "#Enchanted Door2::OnCommandDestroy";
- disablenpc "#Enchanted Door";
- end;
-
-L_ChannellingDead:
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- goto L_ChannellingFail;
-
-L_ChannellingMoved:
- // kill the player as part of the process: the magic process drained his life.
- // But only if he is still in the island (otherwise, he probably got warped
- // and does not need being killed)
- if (isin("052-1",1,1,100,80) == 0)
- goto L_ChannellingFail;
- heal -Hp, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- message strcharinfo(0), "You moved out of the power circle. The magic power you accumulated backfires at you!";
- goto L_ChannellingFail;
-
-L_ChPwrVanish:
- // kill the player as part of the process: the magic process drained his life.
- heal -Hp, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- message strcharinfo(0), "The magic power vanished, and your spell backfires at you!";
- goto L_ChannellingFail;
-
-L_ChannellingFail:
- detachrid;
- stopnpctimer;
- setnpctimer 0;
- set $@illia_magic_power, 0;
- set $@illia_magic_power_required, 0;
- set $@illia_magic_power_last_status, 0;
- set $@illia_magic_power_status, 0;
- set $@illia_magic_power_loss, 0;
- set $@illia_char_channelling$, "";
- set $@illia_level_4_progress, 0;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-OnInit:
- registercmd "#catalazuli", strnpcinfo(0)+"::OnCast";
- end;
-}
diff --git a/world/map/npc/052-1/janitor.txt b/world/map/npc/052-1/janitor.txt
deleted file mode 100644
index 6acd12ed..00000000
--- a/world/map/npc/052-1/janitor.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Illia Island janitor
-
-052-1,1,1,0|script|#IlliaJanitor4|32767
-{
-end;
-
-OnCommandClean:
- // Kill all monsters (that includes the spawned Demonic Spirits and Azul Slimes)
- // Note that the loot the slimes may have picked will be deleted at the same time.
- killmonster "052-1", "All";
- // Delete the magic stones that are still laying around.
- // FIXME Syntax error happens if not setting a variable...
- set $@dummy_var, getareadropitem("052-1", 1, 1, 98, 78, 873, 1) +
- getareadropitem("052-1", 1, 1, 98, 78, 874, 1) +
- getareadropitem("052-1", 1, 1, 98, 78, 875, 1);
- set $@dummy_var, 0;
- end;
-
-}
diff --git a/world/map/npc/052-1/mapflags.txt b/world/map/npc/052-1/mapflags.txt
deleted file mode 100644
index c937dc79..00000000
--- a/world/map/npc/052-1/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-052-1|mapflag|nosave|007-2,36,23
-052-1|mapflag|resave|007-2,36,23
diff --git a/world/map/npc/052-2/_import.txt b/world/map/npc/052-2/_import.txt
deleted file mode 100644
index aa01af40..00000000
--- a/world/map/npc/052-2/_import.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Map 052-2: Illia forsaken inn
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 052-2
-npc: npc/052-2/_mobs.txt
-npc: npc/052-2/_nodes.txt
-npc: npc/052-2/_warps.txt
-npc: npc/052-2/chest.txt
-npc: npc/052-2/janitor.txt
-npc: npc/052-2/lobby.txt
-npc: npc/052-2/mapflags.txt
-npc: npc/052-2/partyroom.txt
-npc: npc/052-2/storage.txt
diff --git a/world/map/npc/052-2/_mobs.txt b/world/map/npc/052-2/_mobs.txt
deleted file mode 100644
index 1d91c286..00000000
--- a/world/map/npc/052-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia forsaken inn mobs
-
diff --git a/world/map/npc/052-2/_nodes.txt b/world/map/npc/052-2/_nodes.txt
deleted file mode 100644
index 38010d03..00000000
--- a/world/map/npc/052-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia forsaken inn nodes
-
-// (no nodes)
diff --git a/world/map/npc/052-2/_warps.txt b/world/map/npc/052-2/_warps.txt
deleted file mode 100644
index 06a0dffd..00000000
--- a/world/map/npc/052-2/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Illia forsaken inn warps
-
diff --git a/world/map/npc/052-2/chest.txt b/world/map/npc/052-2/chest.txt
deleted file mode 100644
index d7644054..00000000
--- a/world/map/npc/052-2/chest.txt
+++ /dev/null
@@ -1,181 +0,0 @@
-//-----------------------------------------------------------------------------
-// Illia Forsaken Inn - Chest room
-// $@illia_progress = 8
-//
-// Level progress:
-// No progress: Players pick the rewards, then leave,
-// with the Hero forced to leave last.
-// @illia_got_rewards value:
-// 0: player did not pick his reward yet
-// 1: player picked his common rewards
-// 2: player picked his unique rewards
-// 3: player choosed to leave the room
-//-----------------------------------------------------------------------------
-
-052-2,136,73,0|script|Chest#illia|111
-{
- set @step, 8;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if (@illia_got_rewards > 2) end;
- if (@illia_got_rewards == 2) goto L_AlreadyGotReward;
- if (@illia_current_num_rewards > 0) goto L_ResumePick;
- set @illia_current_num_rewards, 0;
- mes "You find an opened chest which seems full of equipments.";
- next;
- mes "You realize again you were not the first one to visit this place. But where the others failed, you succeeded.";
- goto L_Pick;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-OnInit:
- setarray $@illia_common_rewards$, "SteelShield", "WarlordHelmet", "KnightsHelmet", "InfantryHelmet", "CrusadeHelmet", "ChainmailShirt", "LightPlatemail", "WarlordPlate", "Setzer", "RockKnife", "WarlordBoots", "ForestArmor", "ForestBow", "WoodenStaff", "WizardHat", "ShortSword", "BoneKnife", "JeansChaps", "PointyWitchHat", "AssassinPants", "AssassinGloves", "AssassinBoots";
- setarray $@illia_common_rewards_n$, "Steel Shield", "Warlord Helmet", "Knights Helmet", "Infantry Helmet", "Crusade Helmet", "Chainmail Shirt", "Light Platemail", "Warlord Plate", "Setzer", "Rock Knife", "Warlord Boots", "Forest Armor", "Forest Bow", "Wooden Staff", "Wizard Hat", "Short Sword", "Bone Knife", "Jeans Chaps", "Pointy Witch Hat", "Assassin Pants", "Assassin Gloves", "Assassin Boots";
- setarray $@illia_unique_rewards$, "BullHelmet", "BansheeBow", "HeartOfIsis", "LazuriteRobe", "AssassinShirt";
- setarray $@illia_unique_rewards_n$, "Bull Helmet", "Banshee Bow", "Heart of Isis", "Lazurite Robe", "Assassin Shirt";
- end;
-
-L_ResumePick:
- mes "Ok. I should continue to dig in this chest...";
- menu
- "... and quickly.", L_GetReward,
- "... or maybe not. I am out of time.", L_AskLeaving,
- "... but I can't carry more stuff.", L_AskLeaving,
- "... no, wait a minute.", L_Close;
-
-L_Pick:
- menu
- "Let's take what I deserve for all this.", L_GetReward,
- "Wait.", L_Close;
-
-L_GetReward:
- if (@illia_got_rewards == 0)
- goto L_GetCommonReward;
- if (@illia_got_rewards == 1)
- goto L_GetUniqueReward;
- goto L_Close;
-
-L_GetCommonReward:
- if (@illia_current_num_rewards == $@illia_num_common_reward_items)
- goto L_RewardDone;
- getinventorylist;
- set @index, rand(getarraysize($@illia_common_rewards$));
- set @reward$, $@illia_common_rewards$[@index];
- if ((checkweight(@reward$, 1) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- set @illia_current_num_rewards, @illia_current_num_rewards + 1;
- getitem @reward$, 1;
- mes "You found a " + $@illia_common_rewards_n$[@index] + "!";
- set @reward$, "";
- goto L_GetCommonReward;
-
-L_GetUniqueReward:
- if (@illia_current_num_rewards == $@illia_num_unique_reward_items)
- goto L_RewardDone;
- if (Illia_Uniques_Count >= 2)
- goto L_GetUniqueReward2;
- getinventorylist;
- set @index, rand(getarraysize($@illia_unique_rewards$));
- set @reward$, $@illia_unique_rewards$[@index];
- if ((checkweight(@reward$, 1) == 0) || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- next;
- mes "You notice an interesting shape hidden under a cover...";
- next;
- set @illia_current_num_rewards, @illia_current_num_rewards + 1;
- getitem @reward$, 1;
- mes "You found a " + $@illia_unique_rewards_n$[@index] + "!";
- set Illia_Uniques_Count, Illia_Uniques_Count + 1;
- set @reward$, "";
- goto L_GetUniqueReward;
-
-L_GetUniqueReward2:
- next;
- mes "You find a bunch of gold pieces!";
- next;
- set Zeny, Zeny + 100000*($@illia_num_unique_reward_items - @illia_current_num_rewards);
- getexp 200000*($@illia_num_unique_reward_items - @illia_current_num_rewards), 0;
- set @illia_current_num_rewards, $@illia_num_unique_reward_items;
- goto L_GetUniqueReward;
-
-L_AlreadyGotReward:
- mes "I already took my part.";
- next;
- goto L_AskLeaving;
-
-L_RewardDone:
- set @illia_got_rewards, @illia_got_rewards + 1;
- set @illia_current_num_rewards, 0;
- next;
- if (@illia_got_rewards == 1)
- goto L_GetUniqueReward;
- goto L_AskLeaving; // @illia_got_rewards == 2
-
-L_InventoryNoSpace:
- mes "You cannot carry more stuff. Make some room first.";
- close;
-
-L_AskLeaving:
- mes "It's time to leave this place now.";
- next;
- // Force the hero to leave last, as this event triggers the end of the quest
- // as well as some dialogs from Valia, when the hero returns.
- if (strcharinfo(0) == $@ILLIA_HERO$ && getareausers("052-2", 19, 8, 137, 88) > 1)
- goto L_WaitHelpersLeave;
- goto L_PrepareLeaving;
-
-L_WaitHelpersLeave:
- mes "However, I'd better wait my friends leave before I do.";
- next;
- mes "I prefer to know they left safely this place.";
- close;
-
-L_PrepareLeaving:
- mes "Use Valia's ring to teleport now?";
- menu
- "Yes. Time to make her pay for her trick!", L_Leave,
- "No, I still need to see things here.", L_Close;
-
-L_Leave:
- set @illia_got_rewards, 3;
- set @illia_current_num_rewards, 0;
- addtimer 1000, "Chest#illia::OnMsg1";
- addtimer 4000, "Chest#illia::OnMsg2";
- addtimer 7000, "Chest#illia::OnMsg3";
- addtimer 9000, "Chest#illia::OnFx";
- addtimer 10000, "Chest#illia::OnRing";
- close;
-
-OnMsg1:
- message strcharinfo(0), "At the moment you are wearing the ring, you start to feel dizzy...";
- end;
-
-OnMsg2:
- message strcharinfo(0), "Who is Luvia? Something isn't right... It looks like your memory is rewritten.";
- end;
-
-OnMsg3:
- message strcharinfo(0), "Damn, this ring! That Valia! Someone...";
- end;
-
-OnFx:
- misceffect FX_MAGIC_BLUE_TELEPORT, strcharinfo(0);
- end;
-
-OnRing:
- warp "007-2",31 + rand(0,2),23 + rand(0,2);
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_ScheduleEnd;
- end;
-
-L_ScheduleEnd:
- set $@ILLIA_STATUS, 253;
- startnpctimer "Valia";
- donpcevent "#IlliaDaemon::OnCommandToggle";
- end;
-
-L_Close:
- close;
-
-}
diff --git a/world/map/npc/052-2/janitor.txt b/world/map/npc/052-2/janitor.txt
deleted file mode 100644
index 73858ce4..00000000
--- a/world/map/npc/052-2/janitor.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-// Lobby janitor
-052-2,1,1,0|script|#IlliaJanitor5|32767
-{
-end;
-
-OnCommandClean:
- // For security, kill all.
- killmonster "052-2", "All";
- npcwarp 1, 1, "Luvia?";
- end;
-
-}
-
-// Storage janitor
-052-2,1,1,0|script|#IlliaJanitor6|32767
-{
-end;
-
-OnCommandClean:
- killmonster "052-2", "#ItemsInvoker::OnDeath";
- npcwarp 1, 1, "#ItemsInvoker";
- end;
-
-}
-
-// Final boss janitor
-052-2,1,1,0|script|#IlliaJanitor7|32767
-{
-end;
-
-OnCommandClean:
- killmonster "052-2", "#LuviaDaemon::OnDeath";
- killmonster "052-2", "#LuviaDaemon::OnWGD";
- npcwarp 83, 28, "#LuviaDaemon";
- npcwarp 88, 15, "Luvia";
- end;
-
-}
diff --git a/world/map/npc/052-2/lobby.txt b/world/map/npc/052-2/lobby.txt
deleted file mode 100644
index 1b36d929..00000000
--- a/world/map/npc/052-2/lobby.txt
+++ /dev/null
@@ -1,382 +0,0 @@
-//-----------------------------------------------------------------------------
-// Illia Forsaken Inn - Lobby
-// $@illia_progress = 5
-//
-// Level progress:
-// 0: Initial state
-// 1: Mysterious voice is talking
-// 2: Luvia is appearing
-// 3: Luvia is waiting for a talk, to trigger the fight
-// 4: Hero talked to Luvia. Initiating a talk and demonic spirit waves
-// 5: All Demonic spirits waves are spawned
-// 6: Demonic spirit waves beaten. Talk while preparing the witch guards
-// 7: Luvia is escaping, Witch guards appear
-// 8: Witch guards defeated. Door is open.
-//-----------------------------------------------------------------------------
-
-052-2,40,19,0|script|#InnDoorTrigger|32767,2,2
-{
- set @step, 5;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_5_progress == 8) goto L_Warp;
- message strcharinfo(0), "A magical field prevents you from going further...";
- end;
-
-L_Warp:
- warp "052-2", 23, 71;
- message strcharinfo(0), "This place is full of dust... *coughs*";
- end;
-
-L_ShouldNotBeHere:
- heal -100, 0;
- end;
-
-}
-
-052-2,33,40,0|script|#EntranceTrigger|32767,4,2
-{
- set @step, 5;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_5_progress == 0 && strcharinfo(0) == $@ILLIA_HERO$) goto L_StartVoices;
- end;
-
-L_StartVoices:
- set $@illia_level_5_progress, 1;
- donpcevent "#MysteriousVoice::OnCommandStart";
- end;
-
-L_ShouldNotBeHere:
- heal -100, 0;
- end;
-}
-
-052-2,1,1,0|script|#LuviaShadow|127
-{
-end;
-
-// Escape sequence
-OnCommandEscape:
- initnpctimer;
- end;
-
-OnTimer100:
- if ($@illia_level_5_progress != 7)
- end;
- npcwarp 39, 35, "#LuviaShadow";
- misceffect FX_DARK_TELEPORT;
- npcwarp 1, 1, "Luvia?";
- end;
-
-OnTimer750:
- if ($@illia_level_5_progress != 7)
- end;
- npcwarp 1, 1, "#LuviaShadow";
- stopnpctimer;
- setnpctimer 0;
- end;
-
-// Invoke sequence
-OnCommandInvoke:
- initnpctimer;
- end;
-
-OnTimer650:
- if ($@illia_level_5_progress != 2)
- end;
- npcwarp 39, 35, "#LuviaShadow";
- misceffect FX_EVIL_SUMMON;
- end;
-
-OnTimer1500:
- if ($@illia_level_5_progress != 2)
- end;
- npcwarp 1, 1, "#LuviaShadow";
- npcwarp 39, 35, "Luvia?";
- set $@illia_level_5_progress, 3;
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnNN:
- message strcharinfo(0), "The last guard is down. Let's go after Luvia now!";
- end;
-
-}
-
-052-2,1,1,0|script|#MysteriousVoice|127
-{
-end;
-
-OnInit:
- setarray $@illia_lobby_voices$, "Finally.", "I was...", "Waiting...", "For you!";
- end;
-
-OnCommandStart:
- set $@illia_lobby_voices_index, 0;
- initnpctimer;
- end;
-
-// Voices loop
-OnTimer2000:
- if ($@illia_level_5_progress != 1)
- end;
- npcwarp rand(30,42), rand(32,38), "?";
- donpcevent "?::OnCommandTalk";
- end;
-
-OnTimer3000:
- if ($@illia_level_5_progress != 1)
- end;
- npcwarp 1, 1, "?";
- set $@illia_lobby_voices_index, $@illia_lobby_voices_index + 1;
- // FIXME Uncomment next line, comment the next next, when getarraysize is repaired.
- //if ($@illia_lobby_voices_index < getarraysize($@illia_lobby_voices$)) goto L_Continue;
- if ($@illia_lobby_voices_index < 4)
- goto L_Continue;
- // End the process
- stopnpctimer;
- setnpctimer 0;
- set $@illia_lobby_voices_index, 0;
- set $@illia_level_5_progress, 2;
- donpcevent "#LuviaShadow::OnCommandInvoke";
- end;
-
-L_Continue:
- setnpctimer 0;
- end;
-
-}
-
-// Dummy npc to display the mysterious voice,
-// as a workaround to fakenpcname causing problems
-052-2,1,1,0|script|?|127
-{
-end;
-
-OnCommandTalk:
- npctalk strnpcinfo(0), $@illia_lobby_voices$[$@illia_lobby_voices_index];
- end;
-
-}
-
-052-2,1,1,0|script|Luvia?|371,2,2
-{
- if ($@illia_level_5_progress != 3) end;
- if (isin("052-2", 37,36, 41,39)) goto L_HandleTalk;
- // Notify too far
- mes "You see a strange and frightening, yet beautiful woman.";
- if (strcharinfo(0) == $@ILLIA_HERO$)
- mes "Maybe she knows something about this place.";
- close;
-
-L_HandleTalk:
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_TalkToHero;
- goto L_TalkToHelper;
-
-L_TalkToHelper:
- mes "She gives you a quick look then gives her attention to " + $@ILLIA_HERO$ + ".";
- close;
-
-L_TalkToHero:
- mes "Are you Luvia? Your sister Valia sent me to save you! Where is Ismuth?";
- next;
- set $@illia_level_5_progress, 4;
- initnpctimer;
- close;
-
-// Talk sequence timers
-OnTimer1500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "Yes " + $@ILLIA_HERO$ + ", I am Luvia.";
- end;
-
-OnTimer4500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "How nice of all of you to have come to save me!";
- end;
-
-OnTimer7500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "But I fear...";
- end;
-
-OnTimer10500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "... that you are mistaken about who has to be saved!";
- end;
-
-OnTimer13500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "Don't make these faces...";
- end;
-
-OnTimer16500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "Valia is just helping me by sending new soldiers for my personal army!";
- end;
-
-OnTimer21500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "So, if I may... Let's see what you are made of!";
- end;
-
-// Monster invokes timers
-OnTimer24500:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "Demonotis!";
- misceffect FX_EVIL_SUMMON;
- callsub S_GetHeroRect;
- areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 20 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::OnDSDeath";
- callsub S_ClearHeroRect;
- end;
-
-OnTimer44000:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "Demonotis!";
- misceffect FX_EVIL_SUMMON;
- callsub S_GetHeroRect;
- areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 28 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::OnDSDeath";
- callsub S_ClearHeroRect;
- end;
-
-OnTimer77000:
- if ($@illia_level_5_progress != 4)
- end;
- npctalk strnpcinfo(0), "Demonotis!";
- misceffect FX_EVIL_SUMMON;
- callsub S_GetHeroRect;
- areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1101, 42 + 16 - 480/(30+$Illia_Luvia_Harvest), "Luvia?::OnDSDeath";
- callsub S_ClearHeroRect;
- // That was the last spawn: reset the timer to start the CheckInvoke loop.
- set $@illia_level_5_progress, 5;
- setnpctimer 0;
- end;
-
-// Talk and Witch guard invokes timers
-OnTimer6500:
- if ($@illia_level_5_progress != 6)
- end;
- npctalk strnpcinfo(0), "Okay. You have some skill.";
- end;
-
-OnTimer10000:
- if ($@illia_level_5_progress != 6)
- end;
- npctalk strnpcinfo(0), "But that was only the beginning!";
- end;
-
-OnTimer13000:
- if ($@illia_level_5_progress != 6)
- end;
- npctalk strnpcinfo(0), "I'll leave you in the good hands of your predecessors. Farewell!";
- end;
-
-OnTimer18500:
- if ($@illia_level_5_progress != 6)
- end;
- npctalk strnpcinfo(0), "Demonotis Major!";
- misceffect FX_EVIL_SUMMON;
- misceffect FX_MAGIC_DARK_EXPLOSION;
- callsub S_GetHeroRect;
- areamonster "052-2", $@illia_lobby_x1, $@illia_lobby_y1, $@illia_lobby_x2, $@illia_lobby_y2, "", 1103, 8 + (16 - 480/(30+$Illia_Luvia_Harvest))/3, "Luvia?::OnWGDeath";
- callsub S_ClearHeroRect;
- end;
-
-OnTimer20000:
- if ($@illia_level_5_progress != 6)
- end;
- set $@illia_level_5_progress, 7;
- donpcevent "#LuviaShadow::OnCommandEscape";
- setnpctimer 0;
- end;
-
-// Monsters checks timer loop
-OnTimer2000:
- if ($@illia_progress != 5)
- goto L_Clear;
- if ($@illia_level_5_progress != 5 && $@illia_level_5_progress != 7)
- end;
- setnpctimer 0;
- // Mock players randomly (more or less once every 40 secs) and if still enough mobs running after them
- if ($@illia_level_5_progress == 5 && rand(20) == 0 && (mobcount("052-2", "Luvia?::OnDSDeath") > 20))
- npctalk strnpcinfo(0), "Ahaha! Run... Run!";
- if ($@illia_level_5_progress == 5 && (mobcount("052-2", "Luvia?::OnDSDeath") < 0))
- goto L_AllWavesClear;
- if ($@illia_level_5_progress == 7 && (mobcount("052-2", "Luvia?::OnWGDeath") < 0))
- goto L_AllWavesClear;
- end;
-
-L_Clear:
- stopnpctimer;
- setnpctimer 0;
- killmonster "052-2", "Luvia?::OnDSDeath";
- killmonster "052-2", "Luvia?::OnWGDeath";
- end;
-
-L_AllWavesClear:
- set $@illia_level_5_progress, $@illia_level_5_progress + 1;
- stopnpctimer;
- setnpctimer 0;
- if ($@illia_level_5_progress == 6)
- startnpctimer;
- if ($@illia_level_5_progress == 8)
- goto L_ChaseLuvia;
- end;
-
-L_ChaseLuvia:
- set $@illia_progress, 6;
- callfunc "UpdateIlliaProgress";
- set $@illia_max_time, $@illia_max_time + 360;
- areatimer 0, "052-2", 19, 18, 48, 43, 2000, "#LuviaShadow::OnNN";
- end;
-
-S_GetHeroRect:
- if (!(attachrid($@ILLIA_HERO_ID)))
- goto L_Clear;
- if(!(isin("052-2", 20, 21, 47, 43)))
- goto L_Clear;
-
- set $@illia_lobby_x, getx();
- set $@illia_lobby_y, gety();
-
- set $@illia_lobby_x1, $@illia_lobby_x - 12;
- set $@illia_lobby_y1, $@illia_lobby_y - 8;
- set $@illia_lobby_x2, $@illia_lobby_x + 12;
- set $@illia_lobby_y2, $@illia_lobby_y + 8;
-
- if ($@illia_lobby_x1 < 20)
- set $@illia_lobby_x1, 20;
- if ($@illia_lobby_y1 < 19)
- set $@illia_lobby_y1, 19;
- if ($@illia_lobby_x2 > 47)
- set $@illia_lobby_x2, 47;
- if ($@illia_lobby_y2 > 42)
- set $@illia_lobby_y2, 42;
-
- detachrid;
- return;
-
-S_ClearHeroRect:
- set $@illia_lobby_x1, 20;
- set $@illia_lobby_y1, 19;
- set $@illia_lobby_x2, 47;
- set $@illia_lobby_y2, 42;
- return;
-
-OnDSDeath:
- end;
-
-OnWGDeath:
- end;
-
-}
diff --git a/world/map/npc/052-2/mapflags.txt b/world/map/npc/052-2/mapflags.txt
deleted file mode 100644
index 3fe6852b..00000000
--- a/world/map/npc/052-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-052-2|mapflag|nosave|007-2,36,23
-052-2|mapflag|resave|007-2,36,23
diff --git a/world/map/npc/052-2/partyroom.txt b/world/map/npc/052-2/partyroom.txt
deleted file mode 100644
index ec6d2a64..00000000
--- a/world/map/npc/052-2/partyroom.txt
+++ /dev/null
@@ -1,286 +0,0 @@
-//-----------------------------------------------------------------------------
-// Illia Forsaken Inn - Party room
-// $@illia_progress = 6
-//
-// Level progress:
-// 0: Initial state
-// 1: Luvia is talking, then spawns after a teleport
-// 2: Luvia spawned, and witch guards may spawn to help
-// 3: Luvia is defeated
-//-----------------------------------------------------------------------------
-
-052-2,88,19,0|script|#TriggerDialog|32767,3,2
-{
- set @step, 7;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_7_progress == 0 && strcharinfo(0) == $@ILLIA_HERO$) goto L_SpawnLuvia;
- end;
-
-L_SpawnLuvia:
- set $@illia_level_7_progress, 1;
- donpcevent "Luvia::OnCommandStart";
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-}
-
-// A trigger whose only purpose is to place Luvia npcs back in place.
-// (even though the Janitor 7 will have done this job)
-052-2,77,48,0|script|#TriggerPlaceLuvia|32767,1,1
-{
- if (strcharinfo(0) != $@ILLIA_HERO$) end;
- if ($@illia_progress == 7 && $@illia_level_7_progress == 0) goto L_PlaceLuvia;
- end;
-
-L_PlaceLuvia:
- npcwarp 88, 15, "#LuviaDaemon";
- npcwarp 88, 15, "Luvia";
- end;
-
-}
-
-052-2,88,15,0|script|Luvia|371
-{
- set @step, 7;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_7_progress == 0 && strcharinfo(0) == $@ILLIA_HERO$) goto L_Start;
- end;
-
-OnCommandStart:
- goto L_Start;
-
-L_Start:
- setnpctimer 0;
- if ($@illia_level_7_progress == 1)
- startnpctimer;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-OnTimer1000:
- npctalk strnpcinfo(0), "Oh well, who thought you would survive so far?";
- end;
-
-OnTimer5000:
- npctalk strnpcinfo(0), "All this way, for nothing, only to die from my hands...";
- end;
-
-OnTimer10000:
- npctalk strnpcinfo(0), "Don't worry, you will continue to live, for my sake.";
- end;
-
-OnTimer15000:
- npctalk strnpcinfo(0), "One piece of advice: get prepared!";
- stopnpctimer;
- setnpctimer 0;
- donpcevent "#LuviaDaemon::OnCommandInvoke";
- end;
-
-}
-
-052-2,88,15,0|script|#LuviaDaemon|32767
-{
-end;
-
-OnCommandInvoke:
- setnpctimer 0;
- if ($@illia_level_7_progress == 1)
- startnpctimer;
- end;
-
-OnTimer2000:
- if ($@illia_level_7_progress != 1) end;
- misceffect FX_DARK_TELEPORT;
- // Kill any mob existing on the map
- // That's to terminate any attempt at players mass-summoning mobs
- // and hide in a corner of the map.
- killmonster "052-2", "All";
- npcwarp 1, 1, "Luvia";
- end;
-
-OnTimer100:
- if ($@illia_progress != 7)
- goto L_Clear;
- if ($@illia_level_7_progress != 3)
- end;
- // Trance mode
- callsub S_SpawnWitchGuard;
- end;
-
-OnTimer2600:
- if ($@illia_level_7_progress != 3)
- end;
- npcwarp 1, 1, "#LuviaDaemon";
- setnpctimer 0;
- end;
-
-OnTimer5000:
- if ($@illia_level_7_progress != 1)
- end;
- // Warp to the place to spawn luvia once the teleport sequence is finished
- if (!(attachrid($@ILLIA_HERO_ID)))
- end;
- set $@illia_luvia_x, getx();
- set $@illia_luvia_y, gety();
- npcwarp $@illia_luvia_x, $@illia_luvia_y, "#LuviaDaemon";
-
- detachrid;
- // This is a fix to force the official mana client to display a npc after a warp.
- // Note: the manaplus client do not need this.
- disablenpc "#LuviaDaemon";
- end;
-
-OnTimer5500:
- if ($@illia_level_7_progress != 1) end;
- // See the note above.
- enablenpc "#LuviaDaemon";
- misceffect FX_EVIL_SUMMON;
- misceffect FX_CHANNELLING_CAST;
- monster "052-2", $@illia_luvia_x, $@illia_luvia_y, "", 1102, 1, "#LuviaDaemon::OnDeath";
- set $@illia_luvia_x, 0;
- set $@illia_luvia_y, 0;
- end;
-
-OnTimer9000:
- if ($@illia_level_7_progress != 1) end;
- set $@illia_luvia_trance_delay, 480; // 8 minutes before turning in trance mode
- set $@illia_witch_guard_threshold, 30 + ($Illia_Luvia_Harvest*3)/5;
- if ($@illia_witch_guard_threshold > 100)
- set $@illia_witch_guard_threshold, 100;
- set $@illia_level_7_progress, 2;
- npcwarp 1, 1, "#LuviaDaemon";
- setnpctimer 0;
- end;
-
-// Extra monster spawn
-OnTimer26000:
- if ($@illia_progress != 7)
- goto L_Clear;
- if ($@illia_level_7_progress != 2)
- end;
- // The more players Luvia "harvested", the stronger she is.
- if (rand(100) >= $@illia_witch_guard_threshold)
- end;
- // Decrease her power over time.
- set $@illia_witch_guard_threshold, $@illia_witch_guard_threshold - 7;
- // Keep always a small probability when it reached the minimum
- if ($@illia_witch_guard_threshold <= 0)
- set $@illia_witch_guard_threshold, 6 + $Illia_Luvia_Harvest/5;
- callsub S_SpawnWitchGuard;
- end;
-
-S_SpawnWitchGuard:
- if (!(attachrid($@ILLIA_HERO_ID)))
- end;
- npcwarp getx(), gety(), "#LuviaDaemon";
- misceffect FX_EVIL_SUMMON;
- misceffect FX_GROUND_SPAWN;
- monster "052-2", getx(), gety(), "", 1103, 1, "#LuviaDaemon::OnWGD";
- detachrid;
- areatimer 0, "052-2", 73, 11, 115, 49, 0, "#LuviaDaemon::OnWGS";
- return;
-
-OnTimer30000:
- if ($@illia_level_7_progress != 2)
- end;
- npcwarp 1, 1, "#LuviaDaemon";
- set $@illia_luvia_trance_delay, $@illia_luvia_trance_delay - 30;
- if ($@illia_luvia_trance_delay <= 0)
- goto L_TriggerTrance;
- setnpctimer 0;
- end;
-
-L_TriggerTrance:
- set $@illia_level_7_progress, 3;
- set $@illia_luvia_trance_delay, 0;
- areatimer 0, "052-2", 73, 11, 115, 49, 0, "#LuviaDaemon::OnTT";
- setnpctimer 0;
- end;
-
-L_Clear:
- stopnpctimer;
- setnpctimer 0;
- end;
-
-OnDeath:
- stopnpctimer;
- setnpctimer 0;
- if ($@illia_progress != 7)
- end;
- set $@illia_level_7_progress, 4;
- killmonster "052-2", "#LuviaDaemon::OnWGD";
- mapannounce "052-2", "Luvia : How? By mere humans! But we will see again! Enjoy your victory while it lasts, " + $@ILLIA_HERO$ + "!!", 0;
-
- set $@illia_bp, $Illia_Luvia_Harvest * 16 / 10 + 120;
- areatimer 0, "052-2", 73, 11, 115, 49, 0, "#LuviaDaemon::OnBP";
-
- areatimer 0, "052-2", 73, 11, 115, 49, 2000, "#LuviaDaemon::OnW00t";
-
- set $@illia_progress, 8;
- callfunc "UpdateIlliaProgress";
- // Set the number of common rewards rewards
- if ($Illia_Luvia_Harvest < 15)
- set $@illia_num_common_reward_items, 0;
- if ($Illia_Luvia_Harvest >= 15 && $Illia_Luvia_Harvest < 35)
- set $@illia_num_common_reward_items, 1;
- if ($Illia_Luvia_Harvest >= 35)
- set $@illia_num_common_reward_items, 2;
-
- // Set the number of unique rewards
- if ($Illia_Luvia_Harvest < 40)
- set $@illia_num_unique_reward_items, 1;
- if ($Illia_Luvia_Harvest >= 40)
- set $@illia_num_unique_reward_items, 2;
- set $Illia_Luvia_Harvest, 0;
-
- // Extend the time limit of +7 mins to leave enough time to pick
- // the rewards even if close to the time limit
- set $@illia_max_time, $@illia_max_time + 300;
-
- // Record how many times the quest was finished
- set $Illia_Win_Counter, $Illia_Win_Counter + 1;
-
- end;
-
-OnBP:
- set BOSS_POINTS, BOSS_POINTS + $@illia_bp;
- message strcharinfo(0), "You gain " + $@illia_bp + " Boss Points giving you a total of " + BOSS_POINTS + ".";
- end;
-
-OnWGD:
- end;
-
-OnWGS:
- if ($@illia_level_7_progress == 2)
- message strcharinfo(0), "One of Luvia's guard spawned from the depths to assist her!";
- end;
-
-OnTT:
- if ($@illia_level_7_progress == 3)
- message strcharinfo(0), "Luvia seems to become in trance!";
- end;
-
-OnW00t:
- message strcharinfo(0), "You defeated this evil sorceress... But what about her sister now?";
- end;
-
-}
-
-// Warp from the party room, to the chest room
-052-2,88,12,0|script|#ToLuviaRoomDoor|32767,1,2
-{
- set @step, 7;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_7_progress < 4) end;
- warp "052-2", 133, 84;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-}
diff --git a/world/map/npc/052-2/storage.txt b/world/map/npc/052-2/storage.txt
deleted file mode 100644
index a8582408..00000000
--- a/world/map/npc/052-2/storage.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-//-----------------------------------------------------------------------------
-// Illia Forsaken Inn - Storage
-// $@illia_progress = 6
-//
-// Level progress:
-// 0: Initial state
-// 1: Items and/or mobs are spawned
-// 2: All spawns are done and the players killed all mobs
-//-----------------------------------------------------------------------------
-
-052-2,23,69,0|script|#TriggerItemsInvoker|32767,1,0
-{
- set @step, 6;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if (strcharinfo(0) != $@ILLIA_HERO$) end;
- if ($@illia_level_6_progress == 0) goto L_StartItemInvoker;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-L_StartItemInvoker:
- set $@illia_level_6_progress, 1;
- donpcevent "#ItemsInvoker::OnCommandStart";
- end;
-
-}
-
-052-2,1,1,0|script|#ItemsInvoker|32767
-{
-end;
-
-OnInit:
- setarray $@illia_storage_items, 541, 567, 568, 562;
- setarray $@illia_storage_special_items, 687, 827, 1229;
- // Map coords:* x1,y1, x2,y2, ...
- setarray $@illia_storage_item_points, 20,67, 22,75, 27,71, 30,73, 34,76, 30,64, 34,65, 34,62, 21,61, 22,64;
- end;
-
-OnCommandStart:
- set $@illia_storage_max_items, 20;
- set $@illia_storage_deviation, (8 + ($Illia_Luvia_Harvest*70)/100)*3;
- initnpctimer;
- areatimer 0, "052-2", 19, 60, 35, 78, 10, "#ItemsInvoker::OnStart";
- end;
-
-OnStart:
- message strcharinfo(0), "You feel a strange atmosphere in this room... You sense a strong magic rising from the depth!";
- end;
-
-OnTimer1000:
- if ($@illia_storage_max_items == 0)
- goto L_CheckMobs;
- set $@item_invoke_index, rand(getarraysize($@illia_storage_item_points)/2);
- set $@item_invoke_x, $@illia_storage_item_points[$@item_invoke_index*2];
- set $@item_invoke_y, $@illia_storage_item_points[($@item_invoke_index*2)+1];
- npcwarp $@item_invoke_x, $@item_invoke_y, "#ItemsInvoker";
- // This is a fix to force the official mana client to display a npc after a warp.
- // Note: the manaplus client do not need this.
- disablenpc "#ItemsInvoker";
- end;
-
-OnTimer1500:
- // See the note above.
- enablenpc "#ItemsInvoker";
- areatimer 0, "052-2", 19, 60, 35, 78, 10, "#ItemsInvoker::OnItem";
- misceffect FX_GROUND_SPAWN;
- end;
-
-OnTimer3750:
- setnpctimer 0;
- set $@item_invoke_x, 0;
- set $@item_invoke_y, 0;
- set $@item_invoke_index, 0;
- end;
-
-OnItem:
- if (strcharinfo(0) == $@ILLIA_HERO$)
- goto L_ItemSpawn;
- end;
-
-L_ItemSpawn:
- // This section will decide what to spawn: special monster, monster, item, special item
- // Calculation uses a decreasing variable which introduces a deviation.
- // Its initial value is based on $@Illia_Luvia_Harvest
- // * first decide (50% / 50%) if the deviation will be positive or negative
- // * Apply the deviation to a random number between 0, 100. (note the final value can be < 0 or > 100)
- // The purpose is that, when the initial deviation is high, there are high chances to get either
- // a special monster, or a special item.
- set @m, rand(100);
- if (@m < 50)
- set @r, rand(100) - $@illia_storage_deviation;
- if (@m >= 50)
- set @r, rand(100) + $@illia_storage_deviation;
- // Reduce the deviation
- set $@illia_storage_deviation, $@illia_storage_deviation*83/100;
- if (@r < 5)
- goto L_MakeSpecialMonster;
- if (@r < 50)
- goto L_MakeMonster;
- if (@r > 98)
- goto L_MakeSpecialItem;
- // Normal item
- makeitem $@illia_storage_items[rand(getarraysize($@illia_storage_items))], rand(2, 8), "052-2", $@item_invoke_x, $@item_invoke_y;
- set $@illia_storage_max_items, $@illia_storage_max_items - 1;
- set @r, 0;
- end;
-
-L_MakeSpecialMonster:
- monster "052-2", $@item_invoke_x, $@item_invoke_y, "", 1103, 1, "#ItemsInvoker::OnDeath";
- areatimer 0, "052-2", 19, 60, 35, 78, 10, "#ItemsInvoker::OnWtf";
- set $@illia_storage_max_items, $@illia_storage_max_items - 1;
- end;
-
-L_MakeMonster:
- monster "052-2", $@item_invoke_x, $@item_invoke_y, "", 1101, rand(1, 3), "#ItemsInvoker::OnDeath";
- set $@illia_storage_max_items, $@illia_storage_max_items - 1;
- set @r, 0;
- end;
-
-L_MakeSpecialItem:
- makeitem $@illia_storage_special_items[rand(getarraysize($@illia_storage_special_items))], rand(2, 4), "052-2", $@item_invoke_x, $@item_invoke_y;
- areatimer 0, "052-2", 19, 60, 35, 78, 10, "#ItemsInvoker::OnWow";
- set $@illia_storage_max_items, $@illia_storage_max_items - 1;
- set @r, 0;
- end;
-
-L_CheckMobs:
- if ($@illia_progress != 6)
- goto L_Clear;
- if (mobcount("052-2", "#ItemsInvoker::OnDeath") < 0)
- goto L_Stop;
- setnpctimer 0;
- end;
-
-L_Clear:
- stopnpctimer;
- setnpctimer 0;
- set $@illia_storage_deviation, 0;
- set $@illia_storage_max_items, 0;
- killmonster "052-2", "#ItemsInvoker::OnDeath";
- end;
-
-L_Stop:
- stopnpctimer;
- setnpctimer 0;
- npcwarp 1, 1, "#ItemsInvoker";
- set $@illia_storage_deviation, 0;
- set $@illia_storage_max_items, 0;
- set $@illia_level_6_progress, 2;
- set $@illia_progress, 7;
- callfunc "UpdateIlliaProgress";
- set $@illia_max_time, $@illia_max_time + 900;
- areatimer 0, "052-2", 19, 60, 35, 78, 10, "#ItemsInvoker::OnStop";
- end;
-
-OnDeath:
- end;
-
-OnStop:
- message strcharinfo(0), "The magic seems to quickly dissipate.";
- end;
-
-OnWtf:
- message strcharinfo(0), "Look out!";
- end;
-
-OnWow:
- message strcharinfo(0), "Wow, see what appeared!";
- end;
-
-}
-
-052-2,35,68,0|script|#ToPartyRoom|32767,1,1
-{
- set @step, 6;
- if ($@illia_progress < @step) goto L_ShouldNotBeHere;
- if ($@illia_level_6_progress == 2) goto L_Warp;
- message strcharinfo(0), "The strong magic inside this room prevents you from going further.";
- end;
-
-L_Warp:
- warp "052-2", 73, 48;
- end;
-
-L_ShouldNotBeHere:
- heal -Hp, 0;
- end;
-
-}
diff --git a/world/map/npc/055-1/_import.txt b/world/map/npc/055-1/_import.txt
deleted file mode 100644
index 8760f125..00000000
--- a/world/map/npc/055-1/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 055-1: Woodland Hills
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 055-1
-npc: npc/055-1/_mobs.txt
-npc: npc/055-1/_nodes.txt
-npc: npc/055-1/_warps.txt
-npc: npc/055-1/flowerpentagram4.txt
-npc: npc/055-1/mapflags.txt
-npc: npc/055-1/pumpkins.txt
-npc: npc/055-1/traveler.txt
diff --git a/world/map/npc/055-1/_mobs.txt b/world/map/npc/055-1/_mobs.txt
deleted file mode 100644
index 23eba0b0..00000000
--- a/world/map/npc/055-1/_mobs.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills mobs
-
-055-1,68,72,22,19|monster|Butterfly|1055,16,10000ms,85000ms
-055-1,87,29,55,14|monster|Silkworm|1035,15,10000ms,85000ms
-055-1,79,30,84,17|monster|Squirrel|1038,10,10000ms,45000ms
-055-1,0,0,0,0|monster|Mouboo|1028,15,10000ms,85000ms
-055-1,91,49,6,4|monster|CloverPatch|1037,1,10000ms,180000ms
-055-1,103,54,5,3|monster|CloverPatch|1037,1,10000ms,180000ms
-055-1,64,75,27,16|monster|CloverPatch|1037,1,10000ms,120000ms
-055-1,80,34,82,25|monster|Snail|1041,3,10000ms,85000ms
-055-1,70,72,17,24|monster|AlizarinPlant|1032,2,10000ms,60000ms
-055-1,81,32,81,22|monster|AlizarinPlant|1032,2,10000ms,60000ms
-055-1,0,0,0,0|monster|MauvePlant|1029,7,10000ms,55000ms
-055-1,0,0,0,0|monster|CobaltPlant|1030,3,10000ms,60000ms
-055-1,0,0,0,0|monster|GambogePlant|1031,2,10000ms,60000ms
-055-1,116,60,4,2|monster|PinkFlower|1014,1,10000ms,45000ms
-055-1,97,60,4,2|monster|PinkFlower|1014,1,10000ms,45000ms
-055-1,64,73,23,17|monster|PinkFlower|1014,1,10000ms,45000ms
-055-1,0,0,0,0|monster|SpikyMushroom|1019,7,10000ms,60000ms
diff --git a/world/map/npc/055-1/_nodes.txt b/world/map/npc/055-1/_nodes.txt
deleted file mode 100644
index e6da33ea..00000000
--- a/world/map/npc/055-1/_nodes.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills nodes
-
-055-1,0,0,0|script|Node055-1|32767
-{
- end;
-OnInit:
- setarray .m$, "_N-Pumpkin", "055-1", "055-1", "055-1";
- setarray .x1, "_N-Pumpkin", 129, 133, 41;
- setarray .y1, "_N-Pumpkin", 23, 27, 22;
- setarray .x2, "_N-Pumpkin", 135, 139, 47;
- setarray .y2, "_N-Pumpkin", 26, 33, 30;
- setarray .id, "_N-Pumpkin", 0, 0, 0;
- donpcevent "_N-Pumpkin::OnMaybeStart";
- destroy;
-}
diff --git a/world/map/npc/055-1/_warps.txt b/world/map/npc/055-1/_warps.txt
deleted file mode 100644
index 84e2e188..00000000
--- a/world/map/npc/055-1/_warps.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland Hills warps
-
-055-1,100,83|warp|-1,-1,055-3,30,27
-055-1,100,89|warp|-1,-1,055-3,50,42
-055-1,22,52|warp|-1,2,013-1,135,51
-055-1,137,96|warp|-1,-1,055-3,76,39
-055-1,60,93|warp|-1,-1,055-3,96,70
-055-1,75,20|warp|0,-1,017-1,188,103
-055-1,149,63|warp|-1,1,057-1,20,63
diff --git a/world/map/npc/055-1/flowerpentagram4.txt b/world/map/npc/055-1/flowerpentagram4.txt
deleted file mode 100644
index 1fdd64cf..00000000
--- a/world/map/npc/055-1/flowerpentagram4.txt
+++ /dev/null
@@ -1,125 +0,0 @@
-// Author: Jenalya
-
-055-1,141,89,0|script|#FlowerPentagram4|400
-{
- if (OrumQuest >= 31) goto L_PlacedFifthFlower;
-
- if (OrumQuest > 26) goto L_PlacedFourthFlower;
- if (OrumQuest == 26) goto L_FourthFlower;
-
- message strcharinfo(0), "Something is odd about this place.";
- end;
-
-L_FourthFlower:
- mes "This is the spot where you have to place the fourth of Orum's magical flowers.";
- menu
- "Place the flower.", L_PlaceTheFlower,
- "Leave.", L_Close;
-
-L_PlaceTheFlower:
- if (isin("055-1", 140, 88, 142, 90))
- goto L_Place;
-
- mes "This isn't working, you're too far away.";
- goto L_Close;
-
-L_Place:
- set @localMonsterCount,
- mobcount("055-1", "#FlowerPentagram4::OnSquirrelDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnMushroomDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnBlueparDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnMoubooDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnScorpionDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnRScorpionDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnAScorpionDeath") +
- mobcount("055-1", "#FlowerPentagram4::OnBScorpionDeath") +
- 8; // the mobcount function has an offset of -1, so we add 8 to have the actual amount of monsters
- if (@localMonsterCount > 4)
- goto L_MonstersAlive;
-
- if (countitem("YellowSummonFlower") < 1)
- goto L_NoFlower;
- delitem "YellowSummonFlower", 1;
- mes "Worried about what will shift from the astral plane this time, you prepare yourself and put the flower in place.";
- mes "As expected, you feel the magical tension building up. They're coming.";
- set OrumQuest, 27;
- close2;
- areamonster "055-1", 133, 87, 144, 99, "", 1105, 1, "#FlowerPentagram4::OnSquirrelDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1106, 1, "#FlowerPentagram4::OnMushroomDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1107, 2, "#FlowerPentagram4::OnBlueparDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1104, 2, "#FlowerPentagram4::OnMoubooDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1003, 2, "#FlowerPentagram4::OnScorpionDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1004, 2, "#FlowerPentagram4::OnRScorpionDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1057, 2, "#FlowerPentagram4::OnAScorpionDeath";
- areamonster "055-1", 133, 87, 144, 99, "", 1009, 1, "#FlowerPentagram4::OnBScorpionDeath";
- set @value, 15;
- callfunc "QuestSagathaAnnoy";
- set @value, 0;
- end;
-
-OnSquirrelDeath:
- set @mobID, 1105;
- callfunc "MobPoints";
- end;
-
-OnMushroomDeath:
- set @mobID, 1106;
- callfunc "MobPoints";
- end;
-
-OnBlueparDeath:
- set @mobID, 1107;
- callfunc "MobPoints";
- end;
-
-OnMoubooDeath:
- set @mobID, 1104;
- callfunc "MobPoints";
- end;
-
-OnScorpionDeath:
- set @mobID, 1003;
- callfunc "MobPoints";
- end;
-
-OnRScorpionDeath:
- set @mobID, 1004;
- callfunc "MobPoints";
- end;
-
-OnAScorpionDeath:
- set @mobID, 1057;
- callfunc "MobPoints";
- end;
-
-OnBScorpionDeath:
- set @mobID, 1009;
- callfunc "MobPoints";
- end;
-
-L_MonstersAlive:
- mes "As you get closer to the place, you feel an unnerving presence.";
- mes "This place has recently been used to summon something! And the beings are still nearby!";
- next;
- mes "You should get rid of them before attempting the summoning yourself.";
- goto L_Close;
-
-L_NoFlower:
- mes "You search your belongings for the magical flower. Where is it?";
- mes "If you lost it, you should talk to Orum again.";
- goto L_Close;
-
-L_PlacedFourthFlower:
- mes "You placed the fourth of Orum's magical flowers here.";
- mes "You can still feel the magical power shimmering around this place, waiting to be unleashed.";
- goto L_Close;
-
-L_PlacedFifthFlower:
- mes "This is where you placed the fourth of Orum's magical flowers.";
- mes "However, now that the summoning spell has been cast, everything is back to normal here.";
- goto L_Close;
-
-L_Close:
- set @localMonsterCount, 0;
- close;
-}
diff --git a/world/map/npc/055-1/mapflags.txt b/world/map/npc/055-1/mapflags.txt
deleted file mode 100644
index 31c2f835..00000000
--- a/world/map/npc/055-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-055-1|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/055-1/pumpkins.txt b/world/map/npc/055-1/pumpkins.txt
deleted file mode 100644
index 87dfca4c..00000000
--- a/world/map/npc/055-1/pumpkins.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-055-1,0,0,0|script|_N-Pumpkin|32767
-{
-
-//////////////////////////////////
-// puppet logic below
-
- set @distance_handler, 1; // silent
- set @npc_distance, (1-2); // -1 means attack range
- callfunc "PCtoNPCRange";
- if (@npc_check) end;
-
- if (Quest_Halloween != 1 || !(gettime(6) == 11 && (gettime(5) >= 4 && gettime(5) <= 30)))
- goto L_HeavyPoison;
- if (@discover_poisonous_pumpkin == 0)
- message strcharinfo(0), "Pumpkin : Yuke, this pumpkin released some ugly poison gas!";
- set @discover_poisonous_pumpkin, 1;
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -15, 0;
- sc_start sc_poison, 1, 4;
- if (rand(0,100) < 10)
- getitem "PumpkinSeeds", 1;
-
- if (countitem("PumpkinSeeds") >= $@halloween_num_seeds)
- goto L_EnoughSeeds;
-
- set @mobID, 1063;
- callfunc "MobPoints";
- goto L_Destroy;
-
-L_EnoughSeeds:
- message strcharinfo(0), "Pumpkin : " + $@halloween_num_seeds + " should be enough seeds for Oscar. And this pumpkin gas gets too bad to stand it any longer...";
- set Quest_Halloween, 2;
- // Reset this to get the message for the "heavy" poison
- set @discover_poisonous_pumpkin, 0;
- goto L_Destroy;
-
-L_HeavyPoison:
- if (@discover_poisonous_pumpkin == 0)
- goto L_HeavyPoison0;
- if (@discover_poisonous_pumpkin == 1)
- goto L_HeavyPoison1;
- goto L_HeavyPoison2;
-
-L_HeavyPoison0:
- set @discover_poisonous_pumpkin, @discover_poisonous_pumpkin + 1;
- message strcharinfo(0), "Pumpkin : Ouch, this pumpkin is totally poisonous! Let's get away from them!";
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -150,0;
- sc_start sc_poison, 1, 60;
- goto L_Destroy;
-
-L_HeavyPoison1:
- set @discover_poisonous_pumpkin, @discover_poisonous_pumpkin + 1;
- message strcharinfo(0), "Pumpkin : This is really awful! I should not touch them!";
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -350,0;
- sc_start sc_poison, 1, 120;
- goto L_Destroy;
-
-L_HeavyPoison2:
- set @discover_poisonous_pumpkin, @discover_poisonous_pumpkin + 1;
- misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- heal -Hp, 0;
- goto L_Destroy;
-
-OnAppear:
- fakenpcname strnpcinfo(0), strnpcinfo(0), 1063; // set the sprite (implies enablenpc)
- end;
-
-L_Destroy:
- disablenpc strnpcinfo(0); // makes the npc invisible, unclickable
- addnpctimer .death_t, strnpcinfo(0) + "::OnReallyDestroy"; // schedule a respawn
- end;
-
-OnReallyDestroy:
- set .nodes[.i], get(.nodes[.i], "_N-Pumpkin") - 1, "_N-Pumpkin"; // tell the puppeteer we lost an egg
- destroy;
-
-
-//////////////////////////////////
-// puppeteer logic below
-
-S_MakeNode:
- set .nID, .nID + 1; // give the node an id
- set .@name$, "#_Pkin" + chr(3) + .nID;
- if (.nID == 2147483647)
- set .nID, 0; // start over if id = 0x7FFFFFFF
- goto S_FindXY;
-
-S_FindXY:
- set .@x, rand(.x1[.i], .x2[.i]);
- set .@y, rand(.y1[.i], .y2[.i]);
- if (iscollision(.m$[.i], .@x, .@y) == 1)
- goto S_FindXY;
- goto S_ReallySpawn;
-
-S_ReallySpawn:
- set .@p, puppet(.m$[.i], .@x, .@y, .@name$, 32767); // spawn the node (but not on map, because 32767)
- if (.@p < 1) goto S_MakeNode; // silently retry
- disablenpc .@name$; // make sure it can't be clicked by guessing the being id
- set .i, .i, .@p; // tell the puppet what object contains it
- set .death_t, rand(.death_t/2, .death_t), .@p; // tell the puppet when to die
- set .@timer, if_then_else(.done_initial[.i], rand(.appear_t/2, .appear_t), 0); // timer depends on if first spawn or if respawned after death
- addnpctimer .@timer, .@name$+"::OnAppear"; // we spawn the node instantly but it only appears after the timer
- set .nodes[.i], .nodes[.i] + 1;
- return;
-
-S_IterateObjects:
- if (.min_nodes[.i] == 0)
- set .min_nodes[.i], (.min * min(1, ((.x2[.i] - .x1[.i]) * (.y2[.i] - .y1[.i])) / .divisor));
- if (.max_nodes[.i] == 0)
- set .max_nodes[.i], (.max * max(1, ((.x2[.i] - .x1[.i]) * (.y2[.i] - .y1[.i])) / .divisor));
-
- if (.nodes[.i] >= .max_nodes[.i])
- goto S_NextObject;
-
- callsub S_MakeNode;
- if (.nodes[.i] < if_then_else(.done_initial[.i], .min_nodes[.i], .max_nodes[.i]))
- goto S_IterateObjects;
- goto S_NextObject;
-
-S_NextObject:
- set .done_initial[.i], 1;
- if (.i >= (.count - 1))
- goto S_Return;
- set .i, .i + 1; // object iterator++
- goto S_IterateObjects;
-
-S_Return:
- return;
-
-OnHeartbeat:
- set .i, 0; // object iterator
- freeloop 1;
- callsub S_IterateObjects;
- freeloop 0;
- addnpctimer .spawn_t, strnpcinfo(0) + "::OnHeartbeat"; // heartbeat
- end;
-
-OnMaybeStart:
- if (.x1[1] == 0)
- end;
- set .min, 0; // relative min number of nodes per object => (min * (((x2 - x1) * (y2 - y1)) / divisor))
- set .max, 5; // relative max number of nodes per object => (max * (((x2 - x1) * (y2 - y1)) / divisor))
- set .divisor, 32; // see .min & .max ^
- set .count, getarraysize(.x1); // number of nodes objects in TSX
- set .spawn_t, 18000; // heartbeat rate
- set .death_t, 1000; // rand(timer/2, timer) before a node triggers respawn after death
- set .appear_t, 40000; // rand(timer/2, timer) before a node becomes visible after spawn
- if (.started)
- end;
- set .started, 1;
- addnpctimer 10000, strnpcinfo(0)+"::OnHeartbeat"; // first heartbeat
- end;
-}
diff --git a/world/map/npc/055-1/traveler.txt b/world/map/npc/055-1/traveler.txt
deleted file mode 100644
index 1f36de77..00000000
--- a/world/map/npc/055-1/traveler.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat, wushin
-// cost depending on level and adapted to new scripting guidelines: Jenalya
-
-055-1,135,60,0|script|Sherman the Traveler|103
-{
- set @npcname$, "Sherman";
- set @NpcTravelBit, $@hurns_farms_bit;
- callfunc "Traveler";
- end;
-}
diff --git a/world/map/npc/055-3/_import.txt b/world/map/npc/055-3/_import.txt
deleted file mode 100644
index 82962c3f..00000000
--- a/world/map/npc/055-3/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 055-3: Cave
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 055-3
-npc: npc/055-3/_mobs.txt
-npc: npc/055-3/_nodes.txt
-npc: npc/055-3/_warps.txt
-npc: npc/055-3/mapflags.txt
diff --git a/world/map/npc/055-3/_mobs.txt b/world/map/npc/055-3/_mobs.txt
deleted file mode 100644
index 686b2172..00000000
--- a/world/map/npc/055-3/_mobs.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cave mobs
-
-055-3,45,44,20,14|monster|RedSlime|1008,10,10000ms,60000ms
-055-3,0,0,1,1|monster|Bat|1017,20,10000ms,45000ms
-055-3,53,75,28,40|monster|YellowSlime|1007,10,10000ms,60000ms
-055-3,0,0,1,1|monster|BlackScorpion|1009,8,10000ms,35000ms
-055-3,0,0,1,1|monster|Spider|1012,8,10000ms,35000ms
-055-3,0,0,1,1|monster|Snake|1010,3,10000ms,20000ms
-055-3,46,44,14,18|monster|Spider|1012,3,50000ms,100000ms
-055-3,52,78,36,23|monster|BlackScorpion|1009,3,50000ms,100000ms
diff --git a/world/map/npc/055-3/_nodes.txt b/world/map/npc/055-3/_nodes.txt
deleted file mode 100644
index ed02d5dc..00000000
--- a/world/map/npc/055-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cave nodes
-
-// (no nodes)
diff --git a/world/map/npc/055-3/_warps.txt b/world/map/npc/055-3/_warps.txt
deleted file mode 100644
index 9c7bae77..00000000
--- a/world/map/npc/055-3/_warps.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Cave warps
-
-055-3,77,40|warp|0,-1,055-1,137,97
-055-3,30,26|warp|-1,-1,055-1,100,82
-055-3,50,43|warp|-1,-1,055-1,100,90
-055-3,96,71|warp|0,-1,055-1,60,94
-055-3,58,96|warp|0,-1,055-3,98,115
-055-3,98,114|warp|-1,-1,055-3,57,95
diff --git a/world/map/npc/055-3/mapflags.txt b/world/map/npc/055-3/mapflags.txt
deleted file mode 100644
index 3d62e240..00000000
--- a/world/map/npc/055-3/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-055-3|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/056-2/_import.txt b/world/map/npc/056-2/_import.txt
deleted file mode 100644
index 79dda260..00000000
--- a/world/map/npc/056-2/_import.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-// Map 056-2: Mirak's House
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 056-2
-npc: npc/056-2/_mobs.txt
-npc: npc/056-2/_nodes.txt
-npc: npc/056-2/_warps.txt
-npc: npc/056-2/barrier.txt
-npc: npc/056-2/mapflags.txt
-npc: npc/056-2/mirak.txt
-npc: npc/056-2/notes.txt
diff --git a/world/map/npc/056-2/_mobs.txt b/world/map/npc/056-2/_mobs.txt
deleted file mode 100644
index 487fdc8d..00000000
--- a/world/map/npc/056-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Mirak's House mobs
-
diff --git a/world/map/npc/056-2/_nodes.txt b/world/map/npc/056-2/_nodes.txt
deleted file mode 100644
index 597f2336..00000000
--- a/world/map/npc/056-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Mirak's House nodes
-
-// (no nodes)
diff --git a/world/map/npc/056-2/_warps.txt b/world/map/npc/056-2/_warps.txt
deleted file mode 100644
index 2fa49767..00000000
--- a/world/map/npc/056-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Mirak's House warps
-
-056-2,63,34|warp|-1,-1,056-2,23,32
-056-2,35,30|warp|-1,-1,017-1,169,90
diff --git a/world/map/npc/056-2/barrier.txt b/world/map/npc/056-2/barrier.txt
deleted file mode 100644
index 956dc630..00000000
--- a/world/map/npc/056-2/barrier.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-056-2,23,33,0|script|#Barrier|45,0,0
-{
- if (Mirak_Bantime > gettimetick(2))
- goto L_Block;
- if (BaseLevel < 25)
- goto L_Weak;
- warp "056-2", 63, 35;
- end;
-
-L_Block:
- message strcharinfo(0), "I can't enter.... That old man really made sure that I wouldn't be able to bother him again anytime soon.";
- end;
-
-L_Weak:
- message strcharinfo(0), "I can't enter because this magic field is too strong. Maybe I should train some more....";
- end;
-
-}
diff --git a/world/map/npc/056-2/mapflags.txt b/world/map/npc/056-2/mapflags.txt
deleted file mode 100644
index 02af4171..00000000
--- a/world/map/npc/056-2/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-056-2|mapflag|nosave|017-1,107,70
-056-2|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/056-2/mirak.txt b/world/map/npc/056-2/mirak.txt
deleted file mode 100644
index e1a37347..00000000
--- a/world/map/npc/056-2/mirak.txt
+++ /dev/null
@@ -1,152 +0,0 @@
-056-2,67,24,0|script|Mirak|372
-{
-// Variables to set:
-// @dq_cost - The number of points this quest uses
-// @dq_money - The money reward for doing the quest
-// @dq_exp - Experince gained by doing the quest
-
-// Variables used inside:
-// Mirak_Quest - This variable contains the @annoy level and the storyline (@talk)
-// Mirak_Bantime - Time you cannot come back to the NPC when you upset him
-// Mirak_Questtime - Time you cannot come back once you finished the quest
-// Update Dailyquest Points
- callfunc "DailyQuestPoints";
-
-// Bitmasks
- set @Mirak_MASK, NIBBLE_0_MASK;
- set @Mirak_SHIFT, NIBBLE_0_SHIFT;
-
- set @talk, ((QUEST_Mirak & @Mirak_MASK) >> @Mirak_SHIFT);
-
- set @Mirak_Annoy_MASK, NIBBLE_1_MASK;
- set @Mirak_Annoy_SHIFT, NIBBLE_1_SHIFT;
-
- set @annoy, ((QUEST_Mirak & @Mirak_Annoy_MASK) >> @Mirak_Annoy_SHIFT);
-
-// Bitmasks END
-
- if (Mirak_Questtime > gettimetick(2))
- goto L_TooSoon;
- if (@annoy > 3)
- goto L_Kill;
- if (Mirak_Bantime > gettimetick(2))
- goto L_Ban;
- if (@talk < 3)
- goto L_Talk;
- goto L_Ban;
-
-L_Ban:
- mes "[Mirak]";
- mes "\"How did you get back here?\"";
- goto L_Kill;
-
-L_Talk:
- set Mirak_Bantime, 0;
- set Mirak_Questtime, 0;
- if (@talk == 1)
- goto L_Talk1;
- if (@talk == 2)
- goto L_Talk2;
- mes "The old man reads a book and looks up when he sees you coming.";
- mes "He looks at you angrily.";
- next;
- mes "[Mirak]";
- mes "\"Hi, my name is Mirak. You might have the impression that I am nice, but I am NOT! I want to be left alone to read in peace! I tried that at my mansion in Port City but it did not work. My damn brother, he always kept going on about Bat Wings...\"";
- next;
- mes "Suddenly his face gets red. He breathes slowly three times...";
- next;
- mes "He seems to be calm again.";
- next;
- mes "[Mirak]";
- mes "\"Eh... Ah! That's why I bought this house in this goddamn woods. I hoped nobody would come by here. It seems I was wrong. I believe that you did not read the notes I left behind. Read them on your way out.\"";
- mes "He looks down on his book and ignores you.";
- set @talk, 1;
- callsub S_Update_Mask;
- close;
-
-L_Talk1:
- mes "[Mirak]";
- mes "\"What?! You again? Get going!\"";
- set @talk, 2;
- callsub S_Update_Mask;
- close;
-
-L_Talk2:
- mes "[Mirak]";
- mes "\"What do you want?!\"";
- menu
- "Nothing.", L_Nothing,
- "Money!", L_Quest;
-
-L_Nothing:
- mes "[Mirak]";
- mes "\"Ahhhh! Get lost, or you'll regret it!\"";
- set @annoy, @annoy+1;
- callsub S_Update_Mask_Annoy;
- close;
-
-L_Quest:
- set @dq_cost, DailyQuestPoints;
- set @dq_money, 20;
- set @dq_exp, 20;
- mes "[Mirak]";
- mes "\"If you have some energy left, which I need, I can give you money for it. But only if you will leave me alone!\"";
- menu
- "Okay.", L_Trade,
- "Nah, I won't leave you alone.", L_Kill;
-
-L_TooSoon:
- mes "Mirak looks up, sees you, and gets angry.";
- mes "[Mirak]";
- mes "\"I told you not to bother me again! That's why I paid you!\"";
- goto L_Kill;
-
-L_Kill:
- misceffect sfx_magic_war, strcharinfo(0);
- heal -Hp, 0;
- set @annoy, 0;
- callsub S_Update_Mask_Annoy;
- set Mirak_Bantime, gettimetick(2) + 86400;
- set Mirak_Questtime, 0;
- mes "The old man stands up and looks at you angrier than ever. He mumbles something and your head explodes.";
- next;
- mes "[Mirak]";
- mes "\"That's what you get for annoying me! I studied under the Mages of Tulimshar!";
- mes "I feel better now.\"";
- next;
- mes "The old man sits back down and continues to read.";
- close;
-
-L_Trade:
- if (DailyQuestPoints == 0)
- goto L_NoPoints;
- set Zeny, Zeny + (@dq_money * @dq_cost);
- getexp @dq_exp * @dq_cost, 0;
- set DailyQuestPoints, DailyQuestPoints - @dq_cost;
-
- mes "[" + @dq_money * @dq_cost + " money]";
- mes "[" + @dq_exp * @dq_cost + " experience points]";
- mes "\"Now leave or you'll regret it. Don't come back!\"";
- set Mirak_Questtime, gettimetick(2) + 86400;
- set Mirak_Bantime, 0;
- close;
-
-L_NoPoints:
- mes "[Mirak]";
- mes "\"Why do you bother me!? You have no energy left!\"";
- goto L_Kill;
-
-// Bitmasks
-
-S_Update_Mask_Annoy:
- set QUEST_Mirak,
- (QUEST_Mirak & ~(@Mirak_Annoy_MASK))
- | (@annoy << @Mirak_Annoy_SHIFT);
- return;
-
-S_Update_Mask:
- set QUEST_Mirak,
- (QUEST_Mirak & ~(@Mirak_MASK))
- | (@talk << @Mirak_SHIFT);
- return;
-}
diff --git a/world/map/npc/056-2/notes.txt b/world/map/npc/056-2/notes.txt
deleted file mode 100644
index f48ced08..00000000
--- a/world/map/npc/056-2/notes.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-056-2,77,34,0|script|Warning#mirak|400
-{
- mes "Turn around. Do not come any closer!";
- mes "Go back upstairs and leave! I don't want to see anybody!";
- mes "This is the last warning!";
- mes "- Mirak";
- close;
-}
-056-2,29,30,0|script|Note#mirak|400
-{
- mes "DO NOT GO ANY FURTHER!";
- mes "Put the supplies on the table and do not come downstairs. I don't want to be bothered.";
- mes "- Mirak";
- close;
-}
diff --git a/world/map/npc/057-1/_import.txt b/world/map/npc/057-1/_import.txt
deleted file mode 100644
index 2a668bd7..00000000
--- a/world/map/npc/057-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 057-1: Woodland
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 057-1
-npc: npc/057-1/_mobs.txt
-npc: npc/057-1/_nodes.txt
-npc: npc/057-1/_warps.txt
-npc: npc/057-1/mapflags.txt
diff --git a/world/map/npc/057-1/_mobs.txt b/world/map/npc/057-1/_mobs.txt
deleted file mode 100644
index 865607ee..00000000
--- a/world/map/npc/057-1/_mobs.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland mobs
-
-057-1,0,0,0,0|monster|MauvePlant|1029,5,45000ms,45000ms
-057-1,0,0,0,0|monster|CobaltPlant|1030,3,10000ms,65000ms
-057-1,0,0,0,0|monster|GambogePlant|1031,5,10000ms,45000ms
-057-1,0,0,0,0|monster|AlizarinPlant|1032,7,10000ms,70000ms
-057-1,0,0,0,0|monster|Mouboo|1028,14,10000ms,45000ms
-057-1,95,42,29,9|monster|Butterfly|1055,3,10000ms,40000ms
-057-1,25,48,11,46|monster|Silkworm|1035,7,10000ms,15000ms
-057-1,99,40,22,16|monster|PinkFlower|1014,2,10000ms,45000ms
-057-1,100,30,19,11|monster|Butterfly|1055,2,10000ms,40000ms
-057-1,83,64,12,12|monster|Butterfly|1055,2,10000ms,40000ms
-057-1,59,34,8,11|monster|Butterfly|1055,2,10000ms,40000ms
-057-1,32,45,8,11|monster|Butterfly|1055,2,10000ms,40000ms
-057-1,144,35,12,12|monster|Butterfly|1055,2,10000ms,40000ms
-057-1,104,67,12,11|monster|PinkFlower|1014,2,10000ms,45000ms
-057-1,135,53,12,11|monster|PinkFlower|1014,2,10000ms,45000ms
-057-1,0,0,0,0|monster|SpikyMushroom|1019,10,10000ms,45000ms
-057-1,0,0,0,0|monster|CloverPatch|1037,3,10000ms,180000ms
-057-1,27,46,14,52|monster|Squirrel|1038,6,10000ms,50000ms
diff --git a/world/map/npc/057-1/_nodes.txt b/world/map/npc/057-1/_nodes.txt
deleted file mode 100644
index 3bc0c2e9..00000000
--- a/world/map/npc/057-1/_nodes.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland nodes
-
-057-1,0,0,0|script|Node057-1|32767
-{
- end;
-OnInit:
- setarray .m$, "_N-Pumpkin", "057-1";
- setarray .x1, "_N-Pumpkin", 25;
- setarray .y1, "_N-Pumpkin", 25;
- setarray .x2, "_N-Pumpkin", 35;
- setarray .y2, "_N-Pumpkin", 37;
- setarray .id, "_N-Pumpkin", 0;
- donpcevent "_N-Pumpkin::OnMaybeStart";
- destroy;
-}
diff --git a/world/map/npc/057-1/_warps.txt b/world/map/npc/057-1/_warps.txt
deleted file mode 100644
index 07c6d019..00000000
--- a/world/map/npc/057-1/_warps.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Woodland warps
-
-057-1,19,63|warp|-1,1,055-1,148,63
diff --git a/world/map/npc/057-1/mapflags.txt b/world/map/npc/057-1/mapflags.txt
deleted file mode 100644
index 245bb2fa..00000000
--- a/world/map/npc/057-1/mapflags.txt
+++ /dev/null
@@ -1 +0,0 @@
-057-1|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/069-2/_import.txt b/world/map/npc/069-2/_import.txt
deleted file mode 100644
index b612a57e..00000000
--- a/world/map/npc/069-2/_import.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// Map 069-2: Celestia's Hideout
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 069-2
-npc: npc/069-2/_mobs.txt
-npc: npc/069-2/_nodes.txt
-npc: npc/069-2/_warps.txt
diff --git a/world/map/npc/069-2/_mobs.txt b/world/map/npc/069-2/_mobs.txt
deleted file mode 100644
index f37d0ff5..00000000
--- a/world/map/npc/069-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Celestia's Hideout mobs
-
diff --git a/world/map/npc/069-2/_nodes.txt b/world/map/npc/069-2/_nodes.txt
deleted file mode 100644
index 514d7f41..00000000
--- a/world/map/npc/069-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Celestia's Hideout nodes
-
-// (no nodes)
diff --git a/world/map/npc/069-2/_warps.txt b/world/map/npc/069-2/_warps.txt
deleted file mode 100644
index 61131831..00000000
--- a/world/map/npc/069-2/_warps.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Celestia's Hideout warps
-
-069-2,45,83|warp|2,-1,069-2,106,116
-069-2,107,117|warp|2,-1,069-2,44,84
diff --git a/world/map/npc/070-1/_import.txt b/world/map/npc/070-1/_import.txt
deleted file mode 100644
index e72c5a98..00000000
--- a/world/map/npc/070-1/_import.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// Map 070-1: Underworld
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 070-1
-npc: npc/070-1/_mobs.txt
-npc: npc/070-1/_nodes.txt
-npc: npc/070-1/_warps.txt
diff --git a/world/map/npc/070-1/_mobs.txt b/world/map/npc/070-1/_mobs.txt
deleted file mode 100644
index 5227e3aa..00000000
--- a/world/map/npc/070-1/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Underworld mobs
-
diff --git a/world/map/npc/070-1/_nodes.txt b/world/map/npc/070-1/_nodes.txt
deleted file mode 100644
index 4ee02269..00000000
--- a/world/map/npc/070-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Underworld nodes
-
-// (no nodes)
diff --git a/world/map/npc/070-1/_warps.txt b/world/map/npc/070-1/_warps.txt
deleted file mode 100644
index 3ea59e07..00000000
--- a/world/map/npc/070-1/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Underworld warps
-
diff --git a/world/map/npc/070-3/_import.txt b/world/map/npc/070-3/_import.txt
deleted file mode 100644
index fbb44538..00000000
--- a/world/map/npc/070-3/_import.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// Map 070-3: The Abyss
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 070-3
-npc: npc/070-3/_mobs.txt
-npc: npc/070-3/_nodes.txt
-npc: npc/070-3/_warps.txt
diff --git a/world/map/npc/070-3/_mobs.txt b/world/map/npc/070-3/_mobs.txt
deleted file mode 100644
index fa8157f8..00000000
--- a/world/map/npc/070-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Abyss mobs
-
diff --git a/world/map/npc/070-3/_nodes.txt b/world/map/npc/070-3/_nodes.txt
deleted file mode 100644
index 8cc635b6..00000000
--- a/world/map/npc/070-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Abyss nodes
-
-// (no nodes)
diff --git a/world/map/npc/070-3/_warps.txt b/world/map/npc/070-3/_warps.txt
deleted file mode 100644
index f7b8e16a..00000000
--- a/world/map/npc/070-3/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// The Abyss warps
-
diff --git a/world/map/npc/099-1/_import.txt b/world/map/npc/099-1/_import.txt
deleted file mode 100644
index ef844283..00000000
--- a/world/map/npc/099-1/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 099-1: Keshlam's Adventurer's Guild
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-1
-npc: npc/099-1/_mobs.txt
-npc: npc/099-1/_nodes.txt
-npc: npc/099-1/_warps.txt
-npc: npc/099-1/main.txt
diff --git a/world/map/npc/099-1/_mobs.txt b/world/map/npc/099-1/_mobs.txt
deleted file mode 100644
index 2bb51b59..00000000
--- a/world/map/npc/099-1/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Main mobs
-
diff --git a/world/map/npc/099-1/_nodes.txt b/world/map/npc/099-1/_nodes.txt
deleted file mode 100644
index 0f3ed45e..00000000
--- a/world/map/npc/099-1/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Main nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-1/_warps.txt b/world/map/npc/099-1/_warps.txt
deleted file mode 100644
index a7943182..00000000
--- a/world/map/npc/099-1/_warps.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Keshlam's Adventurer's Guild warps
-
-099-1,29,16|warp|-1,-1,099-2,25,22
-099-1,77,16|warp|-1,-1,099-2,59,21
-099-1,105,8|warp|-1,-1,099-2,90,21
-099-1,91,136|warp|-1,-1,099-2,121,21
-099-1,20,115|warp|-1,-1,099-2,25,49
-099-1,97,85|warp|-1,-1,099-2,59,49
-099-1,119,114|warp|-1,-1,099-3,72,26
-099-1,112,126|warp|-1,-1,099-2,91,49
-099-1,64,114|warp|-1,-1,099-2,121,48
-099-1,64,72|warp|-1,-1,099-2,25,75
-099-1,42,51|warp|-1,-1,099-2,59,75
-099-1,92,44|warp|-1,-1,099-2,91,75
-099-1,15,77|warp|-1,-1,099-2,121,75
-099-1,49,129|warp|-1,-1,099-2,25,101
-099-1,113,61|warp|-1,-1,099-2,60,101
-099-1,131,78|warp|-1,-1,099-2,91,101
-099-1,72,58|warp|-1,-1,099-2,121,101
-099-1,47,92|warp|-1,-1,099-2,26,132
-099-1,102,24|warp|-1,-1,099-2,60,132
-099-1,120,44|warp|-1,-1,099-2,92,132
-099-1,97,105|warp|-1,-1,099-2,121,132
-099-1,48,16|warp|-1,-1,099-3,29,63
-099-1,76,25|warp|-1,-1,099-3,35,63
-099-1,128,17|warp|-1,-1,099-3,41,63
-099-1,110,44|warp|-1,-1,099-3,47,63
-099-1,120,78|warp|-1,-1,099-3,53,63
-099-1,113,97|warp|-1,-1,099-3,59,63
-099-1,125,97|warp|-1,-1,099-3,79,63
-099-1,60,92|warp|-1,-1,099-3,85,63
-099-1,20,54|warp|-1,-1,099-3,91,63
-099-1,14,54|warp|-1,-1,099-3,97,63
-099-1,15,67|warp|-1,-1,099-3,103,63
-099-1,19,93|warp|-1,-1,099-3,109,63
-099-1,57,51|warp|-1,-1,099-3,115,63
-099-1,128,44|warp|-1,-1,099-1,35,30
-099-1,21,16|warp|-1,-1,099-6,121,132
-099-1,39,16|warp|-1,-1,099-1,35,30
-099-1,58,16|warp|-1,-1,099-6,92,132
-099-1,67,16|warp|-1,-1,099-1,35,30
-099-1,85,16|warp|-1,-1,099-6,59,21
-099-1,97,8|warp|-1,-1,099-1,35,30
-099-1,97,31|warp|-1,-1,099-6,26,132
-099-1,104,31|warp|-1,-1,099-6,90,21
-099-1,108,24|warp|-1,-1,099-6,121,101
-099-1,99,44|warp|-1,-1,099-1,35,30
-099-1,82,44|warp|-1,-1,099-6,91,101
-099-1,82,25|warp|-1,-1,099-1,35,30
-099-1,69,25|warp|-1,-1,099-6,60,132
-099-1,95,61|warp|-1,-1,099-6,60,101
-099-1,78,58|warp|-1,-1,099-6,25,22
-099-1,66,58|warp|-1,-1,099-6,25,101
-099-1,105,61|warp|-1,-1,099-1,35,30
-099-1,50,51|warp|-1,-1,099-1,35,30
-099-1,34,51|warp|-1,-1,099-6,121,75
-099-1,27,51|warp|-1,-1,099-6,91,75
-099-1,25,77|warp|-1,-1,099-6,59,75
-099-1,40,104|warp|-1,-1,099-6,25,75
-099-1,29,115|warp|-1,-1,099-1,35,30
-099-1,29,136|warp|-1,-1,099-6,121,48
-099-1,58,129|warp|-1,-1,099-6,91,49
-099-1,84,114|warp|-1,-1,099-6,59,49
-099-1,125,126|warp|-1,-1,099-1,35,30
-099-1,83,105|warp|-1,-1,099-6,25,49
-099-1,88,85|warp|-1,-1,099-1,35,30
-099-1,79,72|warp|-1,-1,099-6,121,21
diff --git a/world/map/npc/099-1/main.txt b/world/map/npc/099-1/main.txt
deleted file mode 100644
index 0508cdfe..00000000
--- a/world/map/npc/099-1/main.txt
+++ /dev/null
@@ -1,278 +0,0 @@
-// Evol script
-// Author:
-// Jesusalva
-// Description:
-// 099-1 and 099-3 KESHLAM ADVENTURER GUILD MAIN CHAMBERS
-// Controls gates and introduction
-/////////////////////////////////////////////////////////////////////////////////
-
-099-1,35,28,0|script|Note#DD5Core|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: Keshlam's Adventurer Guild ::.";
- mes "";
- mes "Welcome to the Adventurers Guild!";
- mes "Sorry I could not wait for you. It's your fault for being late.";
- next;
- mes "So, it has been a long time since you were here.";
- mes "I hope you still remember the directions?";
- mes "Hahaha! There is a lot of fake rooms in this building.";
- next;
- mes "You should have known me for long enough to know I do not take chances.";
- mes "I've put the docks where I'm waiting for you in an overlapping dimension.";
- mes "This should be enough to stop any Sparron who makes back to here.";
- next;
- mes "My dimension, my rules.";
- mes "I've set a rule that anything dying here should not respawn.";
- mes "I'm not sure if it'll work, but I did enough tests on that.";
- next;
- mes "In case you forgot, this is an, *ahem*, \"deleted\" dimension.";
- mes "You'll see notes from the adventurers who used to inhabit here.";
- mes "Maybe you even find something which used to belong to them?";
- next;
- mes "I'm sure they tried to write down possible ways to stop me.";
- mes "I do not like them, so if you find anything which belong to them...";
- mes "...Well, you're free to take it.";
- next;
- mes "I've stationed a guard here and there, to stop intruders.";
- mes "Use invisibility magic if you need to go past them.";
- mes "I'll talk to you later. Do not leave me waiting!";
- next;
- mes "Signed,";
- mes "Xakelbael the Dark";
- close;
-}
-
-099-3,69,38,0|script|Ritual Book#099-31|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: Ritual Book ::.";
- mes "";
- mes "In this maze, sixteen numeric passwords lie.";
- mes "All sixteen passwords must be chanted in their sequence.";
- mes "";
- mes "Chanting can be done on the book at right.";
- mes "##9Only one player may chant all passwords.";
- mes "##9No reward is provided.";
- mes "##9If you get a number wrong, you'll be penalized!";
- close;
-}
-
-099-3,75,38,0|script|Ritual Book#099-32|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- if ($@DD5_OPENSESAME) goto L_Complete;
-
- mes ".:: Ritual Book ::.";
- mes "Perform the ritual?";
- next;
- menu
- "Yes", L_RB_0,
- "No", L_Close;
-
-L_RB_0:
- mes "Say the password - ##B NULL##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[0]) goto L_Failure;
- goto L_RB_1;
-
-L_RB_1:
- mes "Say the password - ##B EIN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[1]) goto L_Failure;
- goto L_RB_2;
-
-L_RB_2:
- mes "Say the password - ##B ZWEI##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[2]) goto L_Failure;
- goto L_RB_3;
-
-L_RB_3:
- mes "Say the password - ##B DREI##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[3]) goto L_Failure;
- goto L_RB_4;
-
-L_RB_4:
- mes "Say the password - ##B VIER##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[4]) goto L_Failure;
- goto L_RB_5;
-
-L_RB_5:
- mes "Say the password - ##B FUNF##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[5]) goto L_Failure;
- goto L_RB_6;
-
-L_RB_6:
- mes "Say the password - ##B SECHS##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[6]) goto L_Failure;
- goto L_RB_7;
-
-L_RB_7:
- mes "Say the password - ##B SIEBEN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[7]) goto L_Failure;
- goto L_RB_8;
-
-L_RB_8:
- mes "Say the password - ##B ACHT##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[8]) goto L_Failure;
- goto L_RB_9;
-
-L_RB_9:
- mes "Say the password - ##B NEUN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[9]) goto L_Failure;
- goto L_RB_10;
-
-L_RB_10:
- mes "Say the password - ##B ZEHN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[10]) goto L_Failure;
- goto L_RB_11;
-
-L_RB_11:
- mes "Say the password - ##B ELF##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[11]) goto L_Failure;
- goto L_RB_12;
-
-L_RB_12:
- mes "Say the password - ##B ZWOLF##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[12]) goto L_Failure;
- goto L_RB_13;
-
-L_RB_13:
- mes "Say the password - ##B DREIZEHN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[13]) goto L_Failure;
- goto L_RB_14;
-
-L_RB_14:
- mes "Say the password - ##B VIERZEHN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[14]) goto L_Failure;
- goto L_RB_15;
-
-L_RB_15:
- mes "Say the password - ##B FUNFZEHN##b";
- input @pass;
-
- if (@pass != $@DD5_PASSWORDS[15]) goto L_Failure;
- goto L_Success;
-
-L_Failure:
- mes "##1THAT WAS WRONG!";
- mes "##1THE RITUAL BACKFIRES!";
- set Hp, 1;
- warp "099-1", 0, 0;
- close;
-
-L_Success:
- set $@DD5_OPENSESAME, 1;
- mes ".:: Ritual Book ::.";
- mes "The portal magic is now active.";
- close;
-
-L_Complete:
- mes ".:: Ritual Book ::.";
- mes "The ritual was already performed.";
- close;
-
-L_Close:
- close;
-}
-
-099-3,72,75,0|script|#WarpToFinalShowdown|424,0,0
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($@DD5_TSWITCH != 18)
- goto L_NotSwitch;
-
- if (!$@DD5_OPENSESAME)
- goto L_NotSesame;
-
- mes "Walk here to go to the ##BFinal Showdown##b.";
- mes "";
- mes "##1##BWARNING:##b##0 Come prepared!";
- close;
-
-L_NotSwitch:
- mes "All 18 switches must be flipped in order to this warp to work!";
- close;
-
-L_NotSesame:
- mes "The ritual need to be performed to use this warp!";
- close;
-
-L_Busy:
- mes "This warp cannot be used while players are on the other side!";
- close;
-
-OnTouch:
- if ($DOOMSDAY_VANILLA)
- goto L_Menu;
-
- if ($@DD5_TSWITCH != 18)
- goto L_NotSwitch;
-
- if (!$@DD5_OPENSESAME)
- goto L_NotSesame;
-
- goto L_Menu;
-
-L_Menu:
- if ($@DD5_STATUS > 1)
- goto L_Busy;
-
- mes "##BGo to the final showdown?##b";
- mes "You cannot return from there!";
- mes "";
- mes "##1Warning: Warp will be unavailable during fights!";
- if (GM < GM_SYSOP)
- close;
-
- menu
- "Yes", L_Yes,
- "No", L_No;
-L_No:
- close;
-L_Yes:
- warp "099-5", 50, 66;
- if (!$@DD5_STATUS)
- donpcevent "#TMWFinalExam::OnWarn0";
- close;
-}
-
diff --git a/world/map/npc/099-2/_import.txt b/world/map/npc/099-2/_import.txt
deleted file mode 100644
index a60bbc10..00000000
--- a/world/map/npc/099-2/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 099-2: Keshlam's Adventurer's Guild Quarters
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-2
-npc: npc/099-2/_mobs.txt
-npc: npc/099-2/_nodes.txt
-npc: npc/099-2/_warps.txt
-npc: npc/099-2/logic.txt
diff --git a/world/map/npc/099-2/_mobs.txt b/world/map/npc/099-2/_mobs.txt
deleted file mode 100644
index 26c1e255..00000000
--- a/world/map/npc/099-2/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'RamRooms mobs
-
diff --git a/world/map/npc/099-2/_nodes.txt b/world/map/npc/099-2/_nodes.txt
deleted file mode 100644
index 9b2c13bb..00000000
--- a/world/map/npc/099-2/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'RamRooms nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-2/_warps.txt b/world/map/npc/099-2/_warps.txt
deleted file mode 100644
index 6d824836..00000000
--- a/world/map/npc/099-2/_warps.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Keshlam's Adventurer's Guild Quarters warps
-
-099-2,25,23|warp|-1,-1,099-1,29,17
-099-2,59,22|warp|-1,-1,099-1,77,17
-099-2,90,22|warp|-1,-1,099-1,105,9
-099-2,121,22|warp|-1,-1,099-1,91,137
-099-2,25,50|warp|-1,-1,099-1,20,116
-099-2,59,50|warp|-1,-1,099-1,97,86
-099-2,91,50|warp|-1,-1,099-1,112,127
-099-2,121,49|warp|-1,-1,099-1,64,115
-099-2,25,76|warp|-1,-1,099-1,64,73
-099-2,59,76|warp|-1,-1,099-1,42,52
-099-2,91,76|warp|-1,-1,099-1,92,45
-099-2,121,76|warp|-1,-1,099-1,15,78
-099-2,25,102|warp|-1,-1,099-1,49,130
-099-2,60,102|warp|-1,-1,099-1,113,62
-099-2,91,102|warp|-1,-1,099-1,131,79
-099-2,121,102|warp|-1,-1,099-1,72,59
-099-2,26,133|warp|-1,-1,099-1,47,93
-099-2,60,133|warp|-1,-1,099-1,102,25
-099-2,92,133|warp|-1,-1,099-1,120,45
-099-2,121,133|warp|-1,-1,099-1,97,106
diff --git a/world/map/npc/099-2/logic.txt b/world/map/npc/099-2/logic.txt
deleted file mode 100644
index e0147a03..00000000
--- a/world/map/npc/099-2/logic.txt
+++ /dev/null
@@ -1,1155 +0,0 @@
-// Evol script
-// Author:
-// Jesusalva
-// Description:
-// 099-2 and 099-6 KESHLAM ADVENTURER GUILD QUARTERS
-// Controls gimmicks in 099-3 as well
-/////////////////////////////////////////////////////////////////////////////////
-
--|script|#099-2_CMD|32767
-{
- end;
-
-OnStorage:
- if ($DOOMSDAY != 3)
- end;
- if (getmap() != "099-5" && getmap() != "099-4" && getmap() != "099-3")
- end;
- if ($@DD5_STATUS != 1 && $@DD5_STATUS != 2 && $@DD5_STATUS != 4 && $@DD5_STATUS != 6 && getmap() != "099-3")
- end;
- openstorage;
- end;
-
-OnInit:
- // Register commands
- registercmd "#storage", strnpcinfo(0)+"::OnStorage";
- end;
-}
-
-099-2,0,0,0|script|#099-2_Prestart|32767
-{
- end;
-
-// FIXME Do not work. Again.
-OnTrial1:
- monster "099-1", 35, 27, "", 1140, 1, strnpcinfo(0)+"::OnTrial2";
- monster "099-1", 35, 27, "", 1141, 1, strnpcinfo(0)+"::OnTrial2";
- getexp 10000, 0;
- getitem "TreasureKey", 1;
- end;
-
-OnTrial2:
- monster "099-1", 35, 27, "", 1143, 1, strnpcinfo(0)+"::OnTrial3";
- getexp 10000, 0;
- getitem "DarkConcentrationPotion", 1;
- end;
-
-OnTrial3:
- getexp 10000, 0;
- getitem "BentNeedle", 1;
- end;
-
-// Janitor Function
-OnTimer30000:
- if (!$@DD5_STATUS)
- end;
- if (getmapusers("099-5") < 1)
- donpcevent "#TMWFinalExam::OnAbort";
- initnpctimer;
- end;
-
-OnInit:
- // Initialize the 18 switches
- set $@DD5_TSWITCH, 0;
- // setarray $@DD5_SWITCH - not needed
-
- // Initialize the 16 passwords
- setarray $@DD5_PASSWORDS,
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000),
- 3555+rand(10000);
-
- // Spawn monsters on maps
- // The infantry
- areamonster "099-2", 20, 20, 130, 130, "", 1159, 10;
- areamonster "099-2", 20, 20, 130, 130, "", 1160, 10;
- areamonster "099-6", 20, 20, 130, 130, "", 1159, 10;
- areamonster "099-6", 20, 20, 130, 130, "", 1160, 10;
- areamonster "099-3", 20, 20, 120, 80, "", 1159, 15;
- areamonster "099-3", 20, 20, 120, 80, "", 1160, 15;
-
- // The small fry
- areamonster "099-1", 20, 20, 130, 130, "", 1156, 30;
- areamonster "099-2", 20, 20, 130, 130, "", 1156, 20;
- areamonster "099-6", 20, 20, 130, 130, "", 1156, 20;
- areamonster "099-3", 20, 20, 120, 80, "", 1156, 60;
- // The advanced mobs
- areamonster "099-1", 20, 20, 130, 130, "", 1152, 15;
- areamonster "099-2", 20, 20, 130, 130, "", 1152, 5;
- areamonster "099-6", 20, 20, 130, 130, "", 1152, 5;
- areamonster "099-3", 20, 20, 120, 80, "", 1152, 20;
-
- // The boss. Used to be 1137 Tormenta but... Well... Better not.
- monster "099-1", 35, 27, "", 1147, 1, "#099-2_Prestart::OnTrial1";
- end;
-
-OnJanitor:
- // Maintain 099-5 (janitor)
- initnpctimer;
- end;
-}
-
-/////////////////////////////////////////////////////
-// Switches subsystem
-// Switches are distributed between three maps
-// There is a total of 18 switches
-099-2,25,17,0|script|#099-2_25_17|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[0]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[0], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-2,90,18,0|script|#099-2_90_18|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[1]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[1], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-2,121,70,0|script|#099-2_121_70|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[2]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[2], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-2,23,95,0|script|#099-2_23_95|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[3]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[3], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-2,57,130,0|script|#099-2_57_130|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[4]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[4], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-6,25,17,0|script|#099-6_25_17|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[5]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[5], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-6,90,18,0|script|#099-6_90_18|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[6]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[6], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-6,121,71,0|script|#099-6_121_71|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[7]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[7], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-6,23,95,0|script|#099-6_23_95|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[8]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[8], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-6,57,130,0|script|#099-6_57_130|422
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[9]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[9], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,29,69,0|script|#099-3_29_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[10]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[10], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,35,69,0|script|#099-3_35_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[11]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[11], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,41,69,0|script|#099-3_41_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[12]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[12], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,59,69,0|script|#099-3_59_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[13]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[13], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,79,69,0|script|#099-3_79_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[14]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[14], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,91,69,0|script|#099-3_91_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[15]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[15], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,97,69,0|script|#099-3_97_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[16]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[16], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-099-3,115,69,0|script|#099-3_115_69|422
-{
- // For the cells I need a smaller distance
- set @npc_distance, 2;
- if(@npc_check) end;
-
- if (!$@DD5_SWITCH[17]) goto L_Enable;
- end;
-
-L_NoItem:
- mes "The switch is stuck, if I only had a Needle or something...";
- close;
-
-L_Enable:
- if ($DOOMSDAY_VANILLA)
- end;
- if (countitem("BentNeedle") == 0) goto L_NoItem;
- delitem "BentNeedle", 1;
- fakenpcname strnpcinfo(0), strnpcinfo(0)+"_", 423;
- set $@DD5_SWITCH[17], 1;
- set $@DD5_TSWITCH, $@DD5_TSWITCH+1;
- getexp 100000, 0;
- message strcharinfo(0), "The switch is now on!";
- end;
-}
-
-
-
-
-
-/////////////////////////////////////////////////////
-// Password subsystem
-// Passwords are distributed between two maps
-// There is a total of 16 passwords
-099-2,119,18,0|script|Writing#2_119_18|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... NULL... It is... "+$@DD5_PASSWORDS[0]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,25,45,0|script|Writing#2_25_45|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... EIN... It is... "+$@DD5_PASSWORDS[1]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,93,42,0|script|Writing#2_93_42|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... ZWEI... It is... "+$@DD5_PASSWORDS[2]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,59,72,0|script|Writing#2_59_72|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... DREI... It is... "+$@DD5_PASSWORDS[3]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,89,66,0|script|Writing#2_89_66|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... VIER... It is... "+$@DD5_PASSWORDS[4]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,123,94,0|script|Writing#2_123_94|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... FUNF... It is... "+$@DD5_PASSWORDS[5]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,62,94,0|script|Writing#2_62_94|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... SECHS... It is... "+$@DD5_PASSWORDS[6]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-2,27,94,0|script|Writing#2_27_94|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... SIEBEN... It is... "+$@DD5_PASSWORDS[7]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,119,18,0|script|Writing#6_119_18|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... ACHT... It is... "+$@DD5_PASSWORDS[8]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,25,45,0|script|Writing#6_25_45|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... NEUN... It is... "+$@DD5_PASSWORDS[9]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,93,42,0|script|Writing#6_93_42|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... ZEHN... It is... "+$@DD5_PASSWORDS[10]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,59,72,0|script|Writing#6_59_72|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... ELF... It is... "+$@DD5_PASSWORDS[11]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,89,66,0|script|Writing#6_89_66|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... ZWOLF... It is... "+$@DD5_PASSWORDS[12]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,123,94,0|script|Writing#6_123_94|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... DREIZEHN... It is... "+$@DD5_PASSWORDS[13]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,62,94,0|script|Writing#6_62_94|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... VIERZEHN... It is... "+$@DD5_PASSWORDS[14]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-099-6,27,94,0|script|Writing#6_27_94|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is a strange writing here. ##0";
- mes "";
- mes "##1Password... FUNFZEHN... It is... "+$@DD5_PASSWORDS[15]+"...";
- mes "The remainder was too blurred to read.";
- close;
-}
-
-
-
-
-
-/////////////////////////////////////////////////////
-// Lore subsystem
-// Lore tidbits are distributed between four maps
-// Strategy notes are mixed as well
-// There is a total of 18 lore parts
-
-099-2,57,17,0|script|???#099-2_57_17|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Flower ::.";
- mes "This orange flower is dangerous!";
- mes "Do not disturb them - they have great range and damage!";
- mes "";
- mes "Whoever designed this artifical flower must have been crazy!";
- mes "Killing it is not fast enough, avoid its nectar at all costs!";
- close;
-}
-
-099-2,123,128,0|script|???#099-2_123_128|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Slime ::.";
- mes "A crazy combat unit made in a crazy laboratory.";
- mes "If you can, just avoid it. It is slow enough.";
- mes "It can be slain, but have a decent defense, so use magic.";
- close;
-}
-
-099-2,95,122,0|script|???#099-2_95_122|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Snake ::.";
- mes "If I find who designed these monsters ... Grr...";
- mes "They are fast. And powerful. Goes down quickly, though.";
- close;
-}
-
-099-2,28,122,0|script|???#099-2_28_122|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "Last night, we were attacked by Xakelbael the Dark.";
- mes "Our attacks could barely do him any harm, and then...";
- mes "He cast \"Fourth Fall\". All our buffed soldiers fell down the same instant.";
- mes "";
- mes "I am gravely injured, but I'm leaving this note here.";
- mes "Comrades, please avenge me!";
- close;
-}
-
-099-2,91,92,0|script|???#099-2_91_92|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: Sasquatch ::.";
- mes "Developed for protection of the Earth Crystal.";
- mes "They are extreme power houses capable to smash intruders.";
- mes "They have very meh defense, though.";
- mes "Also, even then could not harm Xakelbael the Dark.";
- close;
-}
-
-099-2,62,43,0|script|???#099-6_62_43|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "Zax De'Kagen trademark skill, the Bliss of Oblivion.";
- mes "A powerful skill which dispels mana around himself.";
- mes "Monsters will perish the very moment he cast it, and anyone too close";
- mes "will have their mana drained as well, and might die from it.";
- mes "";
- mes "Not only that, but he may become immune to certain sources of damage.";
- mes "It is a killer move which also allows him to assemble an army right after.";
- mes "I do believe there is a weakness, though. Something about excessive fur growth?";
- close;
-}
-
-099-6,57,17,0|script|???#099-6_57_17|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Soldier ::.";
- mes "These units can endure a lot of pain and use bows.";
- mes "They are not dangerous, but do not let they become fodder.";
- mes "A lot of soldiers can be very difficult to kill later on.";
- mes "Random trivia: They are afraid of bone arrows and knifes.";
- close;
-}
-
-099-6,123,128,0|script|???#099-6_123_128|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Mouboo ::.";
- mes "A solid all rounder unit, it has decent health and damage.";
- mes "But it proved useless as a security biopart.";
- mes "Figures out, we could not subvert its peaceful nature.";
- close;
-}
-
-099-6,95,122,0|script|???#099-6_95_122|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: Tengu ::.";
- mes "Developed for protection of the Earth Crystal.";
- mes "There shouldn't be any here, but they have a high defense.";
- mes "They turned out vulnerable to magic, unfortunately.";
- close;
-}
-
-099-6,28,122,0|script|???#099-6_28_122|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Bat ::.";
- mes "They fly very fast and can quickly swarm you.";
- mes "Their damage and health is not important.";
- mes "But if not careful, they will overwhelm you.";
- mes "Also, did you hear about lay on hands on overlapping dimensions?";
- mes "This have nothing to do with bats but is a cool fact!";
- close;
-}
-
-099-6,91,92,0|script|???#099-6_91_92|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: Mana Slayer ::.";
- mes "An anti-magic unit, made to run and slay mages.";
- mes "They look so much like us, that we are afraid of them all time.";
- mes "Not strong against physical damage, but can resist magic pretty well.";
- close;
-}
-
-099-6,62,43,0|script|???#099-6_92_43|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "Do not neglect the potions which you deemed useless until now.";
- mes "Our foe is formidable. Our knowledge is being tested, here.";
- mes "The same techniques which worked for years simply do not apply.";
- mes "";
- mes "Knowing what and when to cast is important in survival.";
- mes "I think what should sense magic, might sense mana devoid-ness as well.";
- mes "In this case, such would be the only way to know how far of killing we are.";
- mes "But I'm not sure if such trick would work except on support role.";
- close;
-}
-
-
-
-///////////////////////////////
-099-1,43,14,0|script|Painting#099-1|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "Reading this is as hard as finding a needle in a haystack.";
- if (debug) goto L_Close;
- if (countitem("FlawedLens") < 1) goto L_Tools;
- mes "Although the painting also has no artistic value on its own...";
- mes "Something tells you there is something ominous with it.";
- next;
- mes "##9 Use [Flawed Lens] on the painting? ##0";
- menu
- "No", L_Close,
- "Yes", L_UseLens;
-
-L_Close:
- close;
-
-L_Tools:
- mes "The painting itself has no artistic value, either.";
- mes "There is something ominous, but you don't know what.";
- close;
-
-L_UseLens:
- delitem "FlawedLens", 1;
- getexp 10000, 10000;
- mes "~~~graphics/images/kirin.png~";
- mes "[@@https://wiki.themanaworld.org/images/5/57/Kirin_by_clef.jpg|There is the image of a woman on it@@].";
- next;
- mes "";
- mes "You can make out the following words on it:";
- mes "In memoriam ..... Kirin De'Kagen.";
- mes ".... help .... stop ... neither .....";
- mes "Went missing .... .... .... The War.";
- mes "";
- mes "Rest in Peace. Damnatio memoriae. Effective immediately.";
- // ;-- TRANSLATORS: Damnatio memoriae - "condemnation of memory", indicating that a person is to be excluded from official accounts. History rewrite if required.
- next;
- mes "The lens break! They were not only poorly effective but also of bad quality.";
- mes "If only we could make the real Lens, we would have been able to find out";
- mes "what is up with this ominous, eerie feeling this picture gives.";
- close;
-}
-
-099-1,35,22,0|script|Fireplace#099-1|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "##9 There is something interesting on this fireplace. ##0";
- mes "##9 It doesn't seems to fit this building. ##0";
- mes "##9 As if it have been taken from another world and put here. ##0";
- next;
- mes "##9 After searching it, you found nothing. ##0";
- mes "##9 It is just a common fireplace, after all. ##0";
- close;
-}
-
-///////////////////////////////
-// Basic Monsters Knowledge
-099-1,20,22,0|script|Bookcase#099-1|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Scorpion ::.";
- mes "The most basic combat unit in Keshlam.";
- mes "They have decent health, damage, and speed.";
- mes "";
- mes ".:: V0id Mushroom ::.";
- mes "The most basic combat unit in Keshlam.";
- mes "They have decent health, damage, and speed, and a higher range.";
- mes "Unlike the scorpions, they can move faster, but attack is slower.";
- close;
-}
-
-099-1,45,22,0|script|Bookcase#099-1b|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: V0id Maggot ::.";
- mes "They are pathetic individually, and slow, a failed experiment.";
- mes "But do not let them overwhelm you, togheter they are formidable!";
- mes "";
- mes ".:: V0id Archant ::.";
- mes "An advanced combat unit, without weak points.";
- mes "They are slow in movement, but other than that, they are good.";
- close;
-}
-
-///////////////////////////////
-// Boss fight general knowledge
-099-3,107,50,0|script|Music Score#099-3|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "There is a nice score here.";
- mes "I assume important info will be sent by SFX only.";
- next;
- mes "Also, the time beats of this score are all in 600ms intervals.";
- mes "Could it be that attack speed is overridden during the fight?!";
- mes "";
- mes "However, potions will still work, hmm.";
- mes "There is also a spell here: \"##B#storage##b\".";
- mes "I assume it only works at specific times.";
- close;
-}
-
-099-3,39,46,0|script|Outstanding Book#099-3|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes "Zax De'Kagen's Diary, entry #27";
- mes "";
- mes "##9 I am all soaking wet. They found my weak point. ##0";
- mes "##9 However it was too late, Fourth Fall brought the end to this. ##0";
- mes "##9 I did not even had to cancel my illusion. ##0";
- next;
- mes "Zax De'Kagen's Diary, entry #34";
- mes "";
- mes "##9 Today my Rubber Bat flew away. Probably shouldn't have given life to it. ##0";
- mes "##9 I'll miss it, my dear friend, I hope one day he returns? ##0";
- next;
- mes "Zax De'Kagen's Diary, entry #42";
- mes "";
- mes "##9 What I wouldn't give for some pickled beets right now... ##0";
- mes "##9 Meh, whatever. I'm not going to Dimond's Cove ever again! ##0";
- close;
-}
-
-099-3,64,62,0|script|Pan#099-3|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if (rand(60) % 2 == 0)
- goto L_Shock;
- goto L_Potion;
-
-L_Shock:
- mes "Some was trying to make Shock Sweets here.";
- mes "However, it doesn't seems to have been finished.";
- next;
- mes "There are the initials \"To stop F.F.\" nearby.";
- mes "One can only wonder who or what F.F. is.";
- close;
-
-L_Potion:
- mes "Some was trying to make a Mana Potion here.";
- mes "However, it doesn't seems to have been finished.";
- next;
- mes "There are the initials \"To stop Bob\" nearby.";
- mes "Well, I assume it is \"Bob\", text is fainted.";
- mes "it could be \"boo\" as well. Maybe from Mouboo?";
- close;
-}
-
diff --git a/world/map/npc/099-3/_import.txt b/world/map/npc/099-3/_import.txt
deleted file mode 100644
index a75c6f6d..00000000
--- a/world/map/npc/099-3/_import.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// Map 099-3: Nu'RamBasement
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-3
-npc: npc/099-3/_mobs.txt
-npc: npc/099-3/_nodes.txt
-npc: npc/099-3/_warps.txt
diff --git a/world/map/npc/099-3/_mobs.txt b/world/map/npc/099-3/_mobs.txt
deleted file mode 100644
index 17190db0..00000000
--- a/world/map/npc/099-3/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'RamBasement mobs
-
diff --git a/world/map/npc/099-3/_nodes.txt b/world/map/npc/099-3/_nodes.txt
deleted file mode 100644
index e28bcf32..00000000
--- a/world/map/npc/099-3/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'RamBasement nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-3/_warps.txt b/world/map/npc/099-3/_warps.txt
deleted file mode 100644
index 37f57051..00000000
--- a/world/map/npc/099-3/_warps.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'RamBasement warps
-
-099-3,72,25|warp|-1,-1,099-1,119,115
-099-3,29,62|warp|-1,-1,099-1,48,17
-099-3,35,62|warp|-1,-1,099-1,76,26
-099-3,41,62|warp|-1,-1,099-1,128,18
-099-3,47,62|warp|-1,-1,099-1,110,45
-099-3,53,62|warp|-1,-1,099-1,120,79
-099-3,59,62|warp|-1,-1,099-1,113,98
-099-3,79,62|warp|-1,-1,099-1,125,98
-099-3,85,62|warp|-1,-1,099-1,60,93
-099-3,91,62|warp|-1,-1,099-1,20,55
-099-3,97,62|warp|-1,-1,099-1,14,55
-099-3,103,62|warp|-1,-1,099-1,15,68
-099-3,109,62|warp|-1,-1,099-1,19,94
-099-3,115,62|warp|-1,-1,099-1,57,52
diff --git a/world/map/npc/099-4/_import.txt b/world/map/npc/099-4/_import.txt
deleted file mode 100644
index c1087feb..00000000
--- a/world/map/npc/099-4/_import.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// Map 099-4: Nu'Ram-Battle
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-4
-npc: npc/099-4/_mobs.txt
-npc: npc/099-4/_nodes.txt
-npc: npc/099-4/_warps.txt
diff --git a/world/map/npc/099-4/_mobs.txt b/world/map/npc/099-4/_mobs.txt
deleted file mode 100644
index 0381696e..00000000
--- a/world/map/npc/099-4/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle mobs
-
diff --git a/world/map/npc/099-4/_nodes.txt b/world/map/npc/099-4/_nodes.txt
deleted file mode 100644
index 22261608..00000000
--- a/world/map/npc/099-4/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-4/_warps.txt b/world/map/npc/099-4/_warps.txt
deleted file mode 100644
index 703b3ca9..00000000
--- a/world/map/npc/099-4/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle warps
-
diff --git a/world/map/npc/099-5/_import.txt b/world/map/npc/099-5/_import.txt
deleted file mode 100644
index 81a454ca..00000000
--- a/world/map/npc/099-5/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 099-5: Nu'Ram-Battle
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-5
-npc: npc/099-5/_mobs.txt
-npc: npc/099-5/_nodes.txt
-npc: npc/099-5/_warps.txt
-npc: npc/099-5/boss.txt
diff --git a/world/map/npc/099-5/_mobs.txt b/world/map/npc/099-5/_mobs.txt
deleted file mode 100644
index 0381696e..00000000
--- a/world/map/npc/099-5/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle mobs
-
diff --git a/world/map/npc/099-5/_nodes.txt b/world/map/npc/099-5/_nodes.txt
deleted file mode 100644
index 22261608..00000000
--- a/world/map/npc/099-5/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-5/_warps.txt b/world/map/npc/099-5/_warps.txt
deleted file mode 100644
index 703b3ca9..00000000
--- a/world/map/npc/099-5/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle warps
-
diff --git a/world/map/npc/099-5/boss.txt b/world/map/npc/099-5/boss.txt
deleted file mode 100644
index d36457d2..00000000
--- a/world/map/npc/099-5/boss.txt
+++ /dev/null
@@ -1,1620 +0,0 @@
-// Evol script
-// Author:
-// Jesusalva
-// Description:
-// 099-5 FINAL EXAM
-// The epic final showdown of The Mana World: Legacy
-/////////////////////////////////////////////////////////////////////////////////
-// $@DD5_STATUS - Status of the battle
-// 0 - Idle
-// 1 - Timer running
-// 2 - Started, first cutscene
-// 3 - First Stage
-// 4 - Started, second cutscene
-// 5 - Second Stage
-// 6 - Started, third cutscene
-// 7 - Third Stage
-// 8 - Epilogue running
-// 9 - Epilogue OK
-///////////////////////////////////////////////////////////////////
-// $@DD5_HP - Real HitPoints bar of the NPC
-// int
-// $@DD5_PTS - Total participation points distributed
-// int
-// $@DD5_BEGIN - Time where the battle begun
-// time
-// $@DD5_MOBC - Amount of monsters to spawn
-// int
-// $@DD5MB_WEAK, $@DD5MB_AVERAGE, $@DD5MB_STRONG, $@DD5MB_BOSSLV
-// int array - Contains lists of monsters to be used
-///////////////////////////////////////////////////////////////////
-// 1151
-// const int - ID of the Void Flower (s1 only)
-// 1155
-// const int - ID of the Void Bat
-// 1142
-// const int - ID of the visuals for Zax De'Kagen
-///////////////////////////////////////////////////////////////////
-// $@DD5_PRIMARY
-// int - 3x the challengers in boss room
-// $@DD5_SUPPORT
-// int - 3x the challengers in waiting room
-// $@DD5_TOTALPC
-// int - Primary + Support, used to ramp up difficulty
-///////////////////////////////////////////////////////////////////
-// $@DD5_RAIN - Is Xakelbael in rain?
-// bool
-// $@DD5_DEFCON - Defensive mode of Zax De'Kagen
-// 0 - Defenseless (#------- TRANSPARENT)
-// 1 - Invencible (except to shearing) (#CC79A7 PURPLE)
-// 2 - All damage is halved (#E69F00 ORANGE)
-// 3 - Immune to potion'ed attackers (#D55E00 BROWN)
-// 4 - Vulnerable only when wet (#56B4E9 CYAN)
-// 5 - Vulnerable only to melee (#999999 GRAY)
-// 6 - Vulnerable to Bone Knife/Bone Arrow (#FFFFFF WHITE)
-// 7 - Regenerate from melee (#009E7E GREEN)
-// 8 - Requires 10 GP per Damage (#F0E442 YELLOW)
-// 9 - (#0072B2 BLUE)
-// @dd5_dmg
-// int - Calculated damage
-// @dd5_shear
-// bool - Damage is from shearing skill
-///////////////////////////////////////////////////////////////////
-// $@DD5_TALLY_ - Max Individual Score at tally time
-// $@DD5_TALLY$ - Player with highest tally
-// Tally is conducted at first epilogue scene
-// Reward is handed out at last epilogue scene
-// If player leaves in-between, reward will be forsaken
-// Players who already got the reward (#DD5_TALLY = True)
-// will not participate on the tally sequence.
-// Tally will not be conducted on Vanilla mode.
-///////////////////////////////////////////////////////////////////
-// mapmask
-// 1 - Show tiles
-// 2 - Epilogue Mode
-// 4 - DEFCON 1 INVENCIBLE
-// 8 - DEFCON 2 DOUBLE DEFENSE
-// 16 - DEFCON 3 POTION IMMUNITY
-// 32 - DEFCON 4 WATER VULNERABLE
-// 64 - DEFCON 5 RANGED INVULNERABILITY
-// 128 - DEFCON 6 BONE VULNERABLE
-// 256 - DEFCON 7 MELEE REGEN
-// 512 - DEFCON 8 GP COST
-// 1024 - DEFCON
-// NOTE: Personal score overflows at 214,000 points
-
-099-5|mapflag|nosave|009-1,52,40
-099-5|mapflag|resave|009-1,52,40
-099-4|mapflag|nosave|009-1,52,40
-099-4|mapflag|resave|009-1,52,40
-
-// Additional mapflags
-099-3|mapflag|nosave|099-7,75,36
-099-3|mapflag|resave|099-7,75,36
-099-2|mapflag|nosave|099-7,75,36
-099-2|mapflag|resave|099-7,75,36
-099-1|mapflag|nosave|099-7,75,36
-099-1|mapflag|resave|099-7,75,36
-
-099-5,0,0,0|script|#TMWFinalExam|32767
-{
- // Main script
- end;
-
-OnAbort:
- stopnpctimer;
- set $@DD5_STATUS, 0;
- set $@DD5_HP, 0;
- set $@DD5_PTS, 0;
- set $@DD5_BEGIN, 0;
- set $@DD5_MOBC, 0;
- set $@DD5_PRIMARY, 0;
- set $@DD5_SUPPORT, 0;
- set $@DD5_TOTALPC, 0;
- set $@DD5_RAIN, 0;
- set $@DD5_DEFCON, 0;
- set $@DD5_TALLY_, 0;
- set $@DD5_TALLY$, "";
- killmonster "099-5", "All";
- killmonster "099-4", "All";
- disablenpc "Gema III";
- disablenpc "Flying Ship";
- disablenpc "Jande#0";
- disablenpc "Tal#0";
- disablenpc "Anon";
- disablenpc "Zax De'Kagen#0";
- disablenpc "Xakelbael the Dark#0";
- donpcevent "Zax De'Kagen#0::OnAbort";
- end;
-
-///////////////////////////////////////////////////////////
-// Map timers, against all players
-OnMTChallenge:
- set @dd5_score, 0;
- set @dd5_timer, gettimetick(0);
- getexp 40000, 0;
- set BOSS_POINTS, BOSS_POINTS + 5;
- message strcharinfo(0), "This battle experience distribution is different, and death is final. Be careful!";
- // Give everyone some participation points simply for continued survival
- set @dd5_score, 1200;
- set $@DD5_PTS, $@DD5_PTS+1200;
- end;
-
-// FIXME not working for some reason
-OnMTWarpTo0:
- message strcharinfo(0), "Your party was defeated.";
- warp "009-1", 54, 40;
- end;
-
-OnMTDispose:
- warp "009-1", 54, 40;
- end;
-
-////////////////////////////
-// First Stage Rewards
-OnMTReward50:
- set @dd5_share, 10000*@dd5_score/$@DD5_PTS;
- if (!@dd5_share)
- end;
- getexp @dd5_share*100, @dd5_share;
- set Zeny, Zeny + @dd5_share;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/100;
- message strcharinfo(0), "Gained "+(@dd5_share/100)+" boss points!";
- goto OnMTMusicOff;
-
-OnMTReward40:
- set @dd5_share, 10000*@dd5_score/$@DD5_PTS;
- if (!@dd5_share)
- end;
- getexp @dd5_share*10, @dd5_share/10;
- set Zeny, Zeny + @dd5_share/10;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/200;
- message strcharinfo(0), "Gained "+(@dd5_share/200)+" boss points!";
- goto OnMTMusicOff;
-
-////////////////////////////
-// Second Stage Rewards
-OnMTReward51:
- set @dd5_share, 10000*@dd5_score/$@DD5_PTS;
- if (!@dd5_share)
- end;
- getexp @dd5_share*200, @dd5_share*2;
- set Zeny, Zeny + (@dd5_share*2);
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/50;
- message strcharinfo(0), "Gained "+(@dd5_share/50)+" boss points!";
- goto OnMTMusicOff;
-
-OnMTReward41:
- set @dd5_share, 10000*@dd5_score/$@DD5_PTS;
- if (!@dd5_share)
- end;
- getexp @dd5_share*20, @dd5_share/5;
- set Zeny, Zeny + @dd5_share/5;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/100;
- message strcharinfo(0), "Gained "+(@dd5_share/100)+" boss points!";
- goto OnMTMusicOff;
-
-////////////////////////////
-// Third Stage Rewards
-OnMTReward52:
- set @dd5_share, 10000*@dd5_score/$@DD5_PTS;
- if (!@dd5_share)
- end;
- getexp @dd5_share*500, @dd5_share*5;
- set Zeny, Zeny + (@dd5_share*5);
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/20;
- message strcharinfo(0), "Gained "+(@dd5_share/20)+" boss points!";
- music "ghoulish-fun.ogg";
- mapmask 1;
-
- // Dispose dead bodies (BUG, should not happen)
- if (isdead())
- goto OnMTDispose;
-
- // Tally rewards
- // FIXME TODO Use a bitwise to save space, this is TMWA
- if (!#DD5_TALLY && !$DOOMSDAY_VANILLA)
- goto OnTally;
- goto OnEpilogue1;
-
-OnMTReward42:
- set @dd5_share, 10000*@dd5_score/$@DD5_PTS;
- if (!@dd5_share)
- end;
- getexp @dd5_share*50, @dd5_share;
- set Zeny, Zeny + @dd5_share;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/50;
- message strcharinfo(0), "Gained "+(@dd5_share/50)+" boss points!";
- music "ghoulish-fun.ogg";
-
- // Warp to 099-5 or dispose dead bodies
- if (isdead())
- goto OnMTDispose;
- warp "099-5", rand(53, 59), rand(37, 41);
-
- // Tally rewards
- // FIXME TODO Use a bitwise to save space, this is TMWA
- if (!#DD5_TALLY && !$DOOMSDAY_VANILLA)
- goto OnTally;
- goto OnEpilogue1;
-
-// Blue Rose tally
-OnTally:
- if (@dd5_score > $@DD5_TALLY_)
- goto OnTallyOK;
- goto OnEpilogue1;
-
-OnTallyOK:
- set $@DD5_TALLY_, @dd5_score;
- set $@DD5_TALLY$, strcharinfo(0);
- goto OnEpilogue1;
-
-////////////////////////////
-// Fourth Fall
-OnMTFourthFall:
- misceffect 52, strcharinfo(0); // FIXME
- addtimer 3000, "#TMWFinalExam::OnFourthFall";
- end;
-
-OnFourthFall:
- //debugmes "FOURTH FALL";
-
- // High Damage
- if (sc_check(sc_raiseattackspeed0))
- goto OnFF01Y;
- goto OnFF01N;
-
-OnFF01Y:
- heal -300, -100;
- goto OnFF01N;
-
-OnFF01N:
- if (sc_check(sc_raiseattackstrength))
- goto OnFF02Y;
- goto OnFF02N;
-
-OnFF02Y:
- heal -300, -100;
- goto OnFF02N;
-
-OnFF02N:
- // Medium Damage
- if (sc_check(SC_PHYS_SHIELD))
- goto OnFF03Y;
- goto OnFF03N;
-
-OnFF03Y:
- heal -250, -50;
- goto OnFF03N;
-
-OnFF03N:
- if (sc_check(SC_MBARRIER))
- goto OnFF04Y;
- goto OnFF04N;
-
-OnFF04Y:
- heal -250, -50;
- goto OnFF04N;
-
-OnFF04N:
- // Low Damage
- if (sc_check(SC_FLYING_BACKPACK))
- goto OnFF05Y;
- goto OnFF05N;
-
-OnFF05Y:
- heal -125, -25;
- goto OnFF05N;
-
-OnFF05N:
- if (sc_check(sc_slowpoison))
- goto OnFF06Y;
- goto OnFF06N;
-
-OnFF06Y:
- heal -125, -25;
- goto OnFF06N;
-
-OnFF06N:
- //debugmes "FOURTH WALL WAS BROKEN";
- misceffect 52, strcharinfo(0); // FIXME
- end;
-
-////////////////////////////
-// Bliss Of Oblivion
-OnMTBlissOblivion:
- misceffect 51, strcharinfo(0);
- misceffect 52, strcharinfo(0); // FIXME
- // Poison
- sc_start sc_poison, 1, 80;
- // Adjust Map Mask
- if ($@DD5_DEFCON == 0)
- mapmask 1;
- if ($@DD5_DEFCON == 1)
- mapmask 1 | 4;
- if ($@DD5_DEFCON == 2)
- mapmask 1 | 8;
- if ($@DD5_DEFCON == 3)
- mapmask 1 | 16;
- if ($@DD5_DEFCON == 4)
- mapmask 1 | 32;
- if ($@DD5_DEFCON == 5)
- mapmask 1 | 64;
- if ($@DD5_DEFCON == 6)
- mapmask 1 | 128;
- if ($@DD5_DEFCON == 7)
- mapmask 1 | 256;
- if ($@DD5_DEFCON == 8)
- mapmask 1 | 512;
- end;
-
-OnBlissOblivion:
- killmonster "099-5", "All";
- killmonster "099-4", "All";
- set $@DD5_DEFCON, rand(0, 8);
- // Keep a few tricks under the sleeve initially
- if ($@DD5_HP > 100000 && $@DD5_DEFCON < 4)
- set $@DD5_DEFCON, rand(4, 8);
- // Re-rolls: Start avoiding initial movements
- if ($@DD5_HP < 50000 && $@DD5_DEFCON > 3 && $@DD5_DEFCON < 7)
- set $@DD5_DEFCON, rand(0, 8);
- // If hurt badly, use invencible a bit more often (shearing is annoying)
- if ($@DD5_HP < 10000 && $@DD5_DEFCON > 2)
- set $@DD5_DEFCON, rand(0, 8);
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTBlissOblivion";
- setnpctimer 119000;
- end;
-
-////////////////////////////
-// Miniboss Spawning
-OnMTWarning:
- misceffect 54, strcharinfo(0);
- end;
-
-OnMTMusicOn:
- music "Dramatic.ogg";
- end;
-
-OnMTMusicOff:
- music "ghoulish-fun.ogg";
- end;
-
-///////////////////////////////////////////////////////////
-// Before the battle begins
-OnWarn0:
- announce "Doomsday : The Final Showdown will start shortly! Make way to the Master Chamber at once!", 0;
- set $@DD5_STATUS, 1;
- set $@DD5_PTS, 0;
- // FIXME DEBUG DEBUG DEBUG FIXME
- if (debug)
- addnpctimer 15000, "#TMWFinalExam::OnBegin";
- else
- addnpctimer 90000, "#TMWFinalExam::OnWarn1";
- end;
-OnWarn1:
- announce "Doomsday : Doors to Zax De'Kagen domains will seal shut in ##1##B5 minutes##b##0, so prepare yourselves!", 0;
- addnpctimer 120000, "#TMWFinalExam::OnWarn2";
- end;
-OnWarn2:
- announce "Doomsday : Doors to Zax De'Kagen domains will seal shut in ##1##B3 minutes##b##0, so prepare yourselves!", 0;
- addnpctimer 120000, "#TMWFinalExam::OnWarn3";
- end;
-OnWarn3:
- announce "Doomsday : Doors to Zax De'Kagen domains will seal shut in ##1##B1 minute##b##0, last call for challengers!", 0;
- addnpctimer 60000, "#TMWFinalExam::OnBegin";
- end;
-OnBegin:
- announce "Doomsday : Final Showdown: BEGIN!", 0;
- set $@DD5_STATUS, 2;
- set $@DD5_BEGIN, gettimetick(2);
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTChallenge";
- addnpctimer 2000, "#TMWFinalExam::OnPrologue1";
- donpcevent "#099-2_Prestart::OnJanitor";
- end;
-
-///////////////////////////////////////////////////////////
-// Prologue
-OnPrologue1:
- // set the sprite (implies enablenpc)
- fakenpcname "Zax De'Kagen#0", "Zax De'Kagen#0", 1142;
- mapannounce "099-5", "Zax De'Kagen : What is that, a bunch of Talpans in my domains?" , 0;
- mapannounce "099-4", "Zax De'Kagen : What is that, a bunch of Talpans in my domains?" , 0;
- npctalk "Zax De'Kagen#0", "What is that, a bunch of Talpans in my domains?";
- addnpctimer 5000, "#TMWFinalExam::OnPrologue2";
- end;
-
-OnPrologue2:
- mapannounce "099-5", "Zax De'Kagen : Don't make me laugh. Do you really think you have what it takes to stop ME?!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Don't make me laugh. Do you really think you have what it takes to stop ME?!" , 0;
- npctalk "Zax De'Kagen#0", "Don't make me laugh. Do you really think you have what it takes to stop ME?!";
- addnpctimer 10000, "#TMWFinalExam::OnPrologue3";
- end;
-
-OnPrologue3:
- mapannounce "099-5", "Zax De'Kagen : Hmpf! We will see about that. Therefore..." , 0;
- mapannounce "099-4", "Zax De'Kagen : Hmpf! We will see about that. Therefore..." , 0;
- npctalk "Zax De'Kagen#0", "Hmpf! We will see about that. Therefore...";
- addnpctimer 5000, "#TMWFinalExam::OnPrologue4";
- end;
-
-OnPrologue4:
- mapannounce "099-5", "Zax De'Kagen : Catch me if you can!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Catch me if you can!" , 0;
- npctalk "Zax De'Kagen#0", "Catch me if you can!";
- set $@DD5_STATUS, 3;
- set $@DD5_HP, 20000+(getmapusers("099-5")*100);
- set $@DD5_PRIMARY, 5+getmapusers("099-5");
- set $@DD5_SUPPORT, 3+getmapusers("099-4");
- set $@DD5_TOTALPC, $@DD5_PRIMARY+$@DD5_SUPPORT;
- // Spawn first assault
- areamonster "099-5", 43, 44, 56, 55, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], $@DD5_TOTALPC, "#TMWFinalExam::OnKillAverage";
- areamonster "099-5", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], $@DD5_PRIMARY, "#TMWFinalExam::OnKillAverage";
- areamonster "099-4", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], $@DD5_SUPPORT, "#TMWFinalExam::OnKillAverage";
- areamonster "099-5", 20, 20, 75, 75, "", 1151, $@DD5_TOTALPC, "#TMWFinalExam::OnKillAverage";
- // Begin timers!
- initnpctimer;
- donpcevent "Zax De'Kagen#0::OnEnable";
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTMusicOn";
- areatimer 0, "099-4", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTMusicOn";
- end;
-
-///////////////////////////////////////////////////////////
-// First Stage
-OnRubberBat:
- if ($@DD5_STATUS != 3)
- end;
- areamonster getmap(), getx()-5, gety()-5, getx()+5, gety()+5, "", 1155, rand(1,2), "#TMWFinalExam::OnKillWeak";
- addtimer 10, "Zax De'Kagen#0::OnAdjustBat";
- end;
-
-OnPickledBeets:
- if ($@DD5_STATUS != 3)
- end;
- addtimer 10, "Zax De'Kagen#0::OnAdjustBeets";
- end;
-
-///////////////////////////////////////////////////////////
-// Second Stage
-OnWarmedUp0:
- stopnpctimer;
- set $@DD5_STATUS, 4;
- set $@DD5_HP, 0;
- killmonster "099-5", "All";
- killmonster "099-4", "All";
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTReward50";
- areatimer 0, "099-4", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTReward40";
-
- mapannounce "099-5", "Zax De'Kagen : Hahaha! Not bad, not bad at all!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Hahaha! Not bad, not bad at all!" , 0;
- npctalk "Zax De'Kagen#0", "Hahaha! Not bad, not bad at all!";
-
- addnpctimer 5000, "#TMWFinalExam::OnWarmedUp1";
- donpcevent "Zax De'Kagen#0::OnDisable";
- end;
-
-OnWarmedUp1:
- mapannounce "099-5", "Zax De'Kagen : However..." , 0;
- mapannounce "099-4", "Zax De'Kagen : However..." , 0;
- npctalk "Zax De'Kagen#0", "However...";
-
- addnpctimer 5000, "#TMWFinalExam::OnWarmedUp2";
- end;
-
-OnWarmedUp2:
- mapannounce "099-5", "Zax De'Kagen : This was only warm up!" , 0;
- mapannounce "099-4", "Zax De'Kagen : This was only warm up!" , 0;
- npctalk "Zax De'Kagen#0", "This was only warm up!";
-
- addnpctimer 10000, "#TMWFinalExam::OnWarmedUp3";
- end;
-
-OnWarmedUp3:
- mapannounce "099-5", "Zax De'Kagen : Look and behold, the form I took on this rewrite..." , 0;
- mapannounce "099-4", "Zax De'Kagen : Look and behold, the form I took on this rewrite..." , 0;
- npctalk "Zax De'Kagen#0", "Look and behold, the form I took on this rewrite...";
-
- addnpctimer 10000, "#TMWFinalExam::OnWarmedUp4";
- end;
-
-OnWarmedUp4:
- mapannounce "099-5", "Zax De'Kagen : The name which I am known is..." , 0;
- mapannounce "099-4", "Zax De'Kagen : The name which I am known is..." , 0;
- npctalk "Zax De'Kagen#0", "The name which I am known is...";
-
- addnpctimer 10000, "#TMWFinalExam::OnWarmedUp5";
- end;
-
-OnWarmedUp5:
- disablenpc "Zax De'Kagen#0";
- fakenpcname "Xakelbael the Dark#0", "Xakelbael the Dark#0", 1161;
- mapannounce "099-5", "Xakelbael the Dark : ...Xakelbael the Dark! PERISH!" , 0;
- mapannounce "099-4", "Xakelbael the Dark : ...Xakelbael the Dark! PERISH!" , 0;
- npctalk "Xakelbael the Dark#0", "...Xakelbael the Dark! PERISH!";
-
- addnpctimer 3000, "#TMWFinalExam::OnWarmedUp6";
- end;
-
-OnWarmedUp6:
- set $@DD5_STATUS, 5;
- set $@DD5_HP, 40000+(getmapusers("099-5")*100);
- set $@DD5_PRIMARY, 1+getmapusers("099-5")*15/10;
- set $@DD5_SUPPORT, 1+getmapusers("099-4")*15/10;
- set $@DD5_TOTALPC, $@DD5_PRIMARY+$@DD5_SUPPORT;
- // Spawn second wave
- areamonster "099-5", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], $@DD5_PRIMARY, "#TMWFinalExam::OnKillAverage";
- areamonster "099-4", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], $@DD5_SUPPORT, "#TMWFinalExam::OnKillAverage";
- // Begin timers
- initnpctimer;
- donpcevent "Xakelbael the Dark#0::OnEnable";
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTMusicOn";
- areatimer 0, "099-4", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTMusicOn";
- end;
-
-OnRainCheck:
- set .@name$, strnpcinfo(0,@target_id);
- explode .@nearby$[0], .@name$, "#";
- if (.@nearby$[0] != "rain" && .@nearby$[1] != "rain") end;
- set $@DD5_RAIN, 1;
- end;
-
-///////////////////////////////////////////////////////////
-// Third Stage
-OnShowdown0:
- stopnpctimer;
- set $@DD5_STATUS, 6;
- set $@DD5_HP, 0;
- killmonster "099-5", "All";
- killmonster "099-4", "All";
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTReward51";
- areatimer 0, "099-4", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTReward41";
- disablenpc "Xakelbael the Dark#0";
- enablenpc "Zax De'Kagen#0";
-
- mapannounce "099-5", "Zax De'Kagen : Hah...! That was a good workout!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Hah...! That was a good workout!" , 0;
- npctalk "Zax De'Kagen#0", "Hah...! That was a good workout!";
-
- addnpctimer 5000, "#TMWFinalExam::OnShowdown1";
- donpcevent "Xakelbael the Dark#0::OnDisable";
- end;
-
-OnShowdown1:
- mapannounce "099-5", "Zax De'Kagen : It was totally worth it! I was incredibly bored!" , 0;
- mapannounce "099-4", "Zax De'Kagen : It was totally worth it! I was incredibly bored!" , 0;
- npctalk "Zax De'Kagen#0", "It was totally worth it! I was incredibly bored!";
-
- addnpctimer 5000, "#TMWFinalExam::OnShowdown2";
- end;
-
-OnShowdown2:
- set $@DD5_TPASSED, (gettimetick(2)-$@DD5_BEGIN);
- set $@DD5_TSPENT$, $@DD5_TPASSED/60+" minute(s) and "+$@DD5_TPASSED%60+" second(s)";
- mapannounce "099-5", "Zax De'Kagen : Well, we still have time! Only "+$@DD5_TSPENT$+" passed!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Well, we still have time! Only "+$@DD5_TSPENT$+" passed!" , 0;
- npctalk "Zax De'Kagen#0", "Well, we still have time! Only "+$@DD5_TSPENT$+" passed!";
-
- set $@DD5_TPASSED, 0;
- set $@DD5_TSPENT$, "";
- addnpctimer 10000, "#TMWFinalExam::OnShowdown3";
- end;
-
-OnShowdown3:
- mapannounce "099-5", "Zax De'Kagen : I will now acknowledge your strength and fight for realz." , 0;
- mapannounce "099-4", "Zax De'Kagen : I will now acknowledge your strength and fight for realz." , 0;
- npctalk "Zax De'Kagen#0", "I will now acknowledge your strength and fight for realz.";
-
- addnpctimer 10000, "#TMWFinalExam::OnShowdown4";
- end;
-
-OnShowdown4:
- mapannounce "099-5", "Zax De'Kagen : Don't blame me if you die!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Don't blame me if you die!" , 0;
- npctalk "Zax De'Kagen#0", "Don't blame me if you die!";
-
- addnpctimer 10000, "#TMWFinalExam::OnShowdown5";
- end;
-
-OnShowdown5:
- mapannounce "099-5", "Zax De'Kagen : Do your best to entretain me!" , 0;
- mapannounce "099-4", "Zax De'Kagen : Do your best to entretain me!" , 0;
- npctalk "Zax De'Kagen#0", "Do your best to entretain me!";
-
- addnpctimer 3000, "#TMWFinalExam::OnShowdown6";
- end;
-
-OnShowdown6:
- set $@DD5_STATUS, 7;
- set $@DD5_HP, 115000+(getmapusers("099-5")*100);
- set $@DD5_PRIMARY, 3+getmapusers("099-5")*15/10;
- set $@DD5_SUPPORT, 3+getmapusers("099-4")*15/10;
- set $@DD5_TOTALPC, $@DD5_PRIMARY+$@DD5_SUPPORT-2;
- areamonster "099-5", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_WEAK))], $@DD5_PRIMARY, "#TMWFinalExam::OnKillWeak";
- initnpctimer;
- set $@DD5_DEFCON, rand(4, 8);
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTBlissOblivion";
- donpcevent "Zax De'Kagen#0::OnFinal";
- end;
-
-///////////////////////////////////////////////////////////
-// Epilogue
-OnEpilogue0:
- stopnpctimer;
- set $@DD5_STATUS, 8;
- set $@DD5_HP, 0;
- killmonster "099-5", "All";
- killmonster "099-4", "All";
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTReward52";
- areatimer 0, "099-4", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTReward42";
- enablenpc "Flying Ship";
-
- set $@DD5_TPASSED, (gettimetick(2)-$@DD5_BEGIN);
- set $@DD5_TSPENT$, $@DD5_TPASSED/60+" minute(s) and "+$@DD5_TPASSED%60+" second(s)";
- set $@DD5_TPASSED2, 2100+$@DD5_TPASSED; // 35 minutes, The Big Bad, Watchmen
- set $@DD5_TSPENT2$, $@DD5_TPASSED2/60+" minute(s)";
- set $@DD5_PRIMARY, 0;
- set $@DD5_SUPPORT, 0;
- donpcevent "Zax De'Kagen#0::OnDisable";
- end;
-
-// Unfortunately we all know that
-// MANAPLUS ALLOWS YOU TO EXPLODE THE MENUS
-// So we need a control addtimer to fire
-// if you exit this illegally
-OnEpilogue1:
- set @dd5_illegalexit, 1;
- addtimer 10, "#TMWFinalExam::OnIllegalExit1";
-
- mes "[Zax De'Kagen]";
- mes "Thanks for the "+$@DD5_TSPENT$+" of fun you gave me!";
- next;
- if (debug) goto L_Epilogue1Part22;
- mes "[Zax De'Kagen]";
- mes "This was not in the plan, but was fun nonetheless. Worth the detour.";
- next;
- mes "[Zax De'Kagen]";
- mes "However, now I need to go. Unlike you, I do not want to be late.";
- next;
- menu
- "We just killed you?", L_Epilogue1Part1,
- "Late? What do you mean?", L_Epilogue1Part1;
-
-L_Epilogue1Part1:
- mes "[Zax De'Kagen]";
- mes "You know villains never lie. Did you notice how I did not attack any of you directly?";
- next;
- mes "[Zax De'Kagen]";
- mes "I already finished my plans "+$@DD5_TSPENT2$+" ago, otherwise I would not be bothering myself with you.";
- next;
- mes "[Zax De'Kagen]";
- mes "I hope you did not hoped to kill me. Wait. You actually did?!";
- next;
- mes "[Zax De'Kagen]";
- mes "HAHAHAHAHAHAHAHA!!";
- next;
- mes "[Zax De'Kagen]";
- mes "Thanks for this, I don't recall laughing so hard the past five years.";
- next;
- mes "[Zax De'Kagen]";
- mes "Tell me... Enumerate me... Which beings on The Mana World remains dead after being killed?";
- next;
- mes "[Zax De'Kagen]";
- mes "Think a bit! Monsters respawn... Adventurers appear near the Soul Menhir...";
- next;
- mes "[Zax De'Kagen]";
- mes "...Or used to, at least; I don't know why that's not true anymore... anyway...";
- next;
- mes "[Zax De'Kagen]";
- mes "Did you really thought you could simply defeat me in combat and expect this to solve all your problems?";
- next;
- menu
- "I did", L_Epilogue1Part21,
- "I didn't", L_Epilogue1Part22;
-
-L_Epilogue1Part21:
- mes "[Zax De'Kagen]";
- mes "HAHAHAHAHAHAHAHA!!";
- next;
- goto L_Epilogue1Part2;
-L_Epilogue1Part22:
- mes "[Zax De'Kagen]";
- mes "So I assume you thought in a way to seal me? Not that it matters anymore.";
- next;
- goto L_Epilogue1Part2;
-
-L_Epilogue1Part2:
- mes "[Zax De'Kagen]";
- mes "I'm not even close to fainting yet.";
- next;
- mes "[Zax De'Kagen]";
- mes "Besides, only a handful of mana beings know how to erase something of existence.";
- next;
- mes "[Zax De'Kagen]";
- mes "Anyway, just look! My ride arrived.";
- next;
-
- set @dd5_illegalexit, 0;
- if (getmap() == "099-5")
- goto OnEpilogue1b;
-
- // What. How? Force script to explode.
- set Hp, 0;
- heal -99999, -99999;
- end;
-
-// If you exited it when convenient, force you to restart interaction
-OnIllegalExit1:
- if (@dd5_illegalexit)
- goto OnEpilogue1;
- end;
-
-// Should we advance or warp map?
-// “Instead of using $@DD5_PRIMARY, use an areatimer
-// sum up like Candor Cave looking for a temporary variable,
-// And only if no one has the temporary variable anymore, advance.â€
-
-// TODO FIXME This looks like it'll explode the first chance it gets
-OnEpilogue1b:
- set $@DD5_SUPPORT, 0;
- // Would this timer ever run if player is on dialog?
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnEpilogue1c";
- close;
-
-OnEpilogue1c:
- if ($@DD5_PRIMARY)
- end;
- if (!@dd5_illegalexit)
- set $@DD5_SUPPORT, $@DD5_SUPPORT+1;
- addtimer 50, "#TMWFinalExam::OnEpilogue1d";
- end;
-
-OnEpilogue1d:
- if ($@DD5_PRIMARY)
- end;
- if ($@DD5_SUPPORT >= getmapusers("099-5"))
- goto OnEpilogue1e;
- set $@DD5_SUPPORT, 0;
- end;
-
-OnEpilogue1e:
- set $@DD5_PRIMARY, 1;
- set $@DD5_SUPPORT, 0;
- addnpctimer 300, "#TMWFinalExam::OnEpilogue2";
- close;
-
-////////////// There are no players in 099-4 now
-OnEpilogue2:
- mapannounce "099-5", "Zax De'Kagen : Now that I know where Nu'Rem is burried, nothing can stop me." , 0;
- npctalk "Zax De'Kagen#0", "Now that I know where Nu'Rem is burried, nothing can stop me.";
-
- // FIXME DEBUG DEBUG DEBUG FIXME
- if (debug)
- addnpctimer 2000, "#TMWFinalExam::OnEpilogue5";
- else
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue3";
- end;
-
-OnEpilogue3:
- mapannounce "099-5", "Zax De'Kagen : Good bye, mortal adventurers." , 0;
- npctalk "Zax De'Kagen#0", "Good bye, mortal adventurers.";
-
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue4";
- end;
-
-OnEpilogue4:
- mapannounce "099-5", "Zax De'Kagen : Heh, not like I wasn't one too, back then..." , 0;
- npctalk "Zax De'Kagen#0", "Heh, not like I wasn't one too, back then...";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue5";
- end;
-
-OnEpilogue5:
- disablenpc "Zax De'Kagen#0";
- disablenpc "Flying Ship";
-
- addnpctimer 10000, "#TMWFinalExam::OnEpilogue6";
- end;
-
-OnEpilogue6:
- enablenpc "Gema III";
- enablenpc "Jande#0";
- enablenpc "Tal#0";
- enablenpc "Anon";
- mapannounce "099-5", "Jande : With Zax gone, I could finally arrive here." , 0;
- npctalk "Jande#0", "With Zax gone, I could finally arrive here.";
-
- // FIXME DEBUG DEBUG DEBUG FIXME
- if (debug)
- addnpctimer 2000, "#TMWFinalExam::OnEpilogue15";
- else
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue7";
- end;
-
-OnEpilogue7:
- mapannounce "099-5", "Tal : I believe some introductions are in order. I am Tal, the Great Dragon of Water." , 0;
- npctalk "Tal#0", "Tal : I believe some introductions are in order. I am Tal, the Great Dragon of Water.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue8";
- end;
-
-OnEpilogue8:
- mapannounce "099-5", "Tal : I also consider myself the creator of the Tritan race. Jande called me to help." , 0;
- npctalk "Tal#0", "Tal : I also consider myself the creator of the Tritan race. Jande called me to help.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue9";
- end;
-
-OnEpilogue9:
- mapannounce "099-5", "Tal : While I do not like this idea myself, we have an enemy in common." , 0;
- npctalk "Tal#0", "Tal : While I do not like this idea myself, we have an enemy in common.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue10";
- end;
-
-OnEpilogue10:
- mapannounce "099-5", "Anon : We prepared another ship, Gema III. This ship will bring you to the damned island." , 0;
- npctalk "Anon", "We prepared another ship, Gema III. This ship will bring you to the damned island.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue11";
- end;
-
-OnEpilogue11:
- mapannounce "099-5", "Anon : Be careful, though. It is the final resting place of the Great Dragon of Air." , 0;
- npctalk "Anon", "Be careful, though. It is the final resting place of the Great Dragon of Air.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue12";
- end;
-
-OnEpilogue12:
- mapannounce "099-5", "Anon : There is no telling on the horrors you'll find there." , 0;
- npctalk "Anon", "There is no telling on the horrors you'll find there.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue13";
- end;
-
-OnEpilogue13:
- mapannounce "099-5", "Jande : A ship is not so fast as a flying one, but I am sure you can make in time." , 0;
- npctalk "Jande#0", "A ship is not so fast a flying one, but I am sure you can make in time.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue14";
- end;
-
-OnEpilogue14:
- mapannounce "099-5", "Jande : Whatever happens, DO NOT let Zax De'Kagen reach the great dragon body. Remember: Zax is wounded!" , 0;
- npctalk "Jande#0", "Whatever happens, DO NOT let Zax De'Kagen reach the great dragon body. Remember: Zax is wounded!";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue15";
- end;
-
-OnEpilogue15:
- set $@DD5_STATUS, 9;
- mapannounce "099-5", "##1(Talk to Gema III to embark)" , 0;
- npctalk "Gema III", "##1(Talk to Gema III to embark)";
- // FIXME DEBUG DEBUG DEBUG FIXME
- if (debug)
- addnpctimer 2000, "#TMWFinalExam::OnEpilogue25";
- else
- addnpctimer 30000, "#TMWFinalExam::OnEpilogue16";
- end;
-
-
-// Conspiracy
-OnEpilogue16:
- npctalk "Jande#0", "(*whisper* Tal, do you think they'll make it?)";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue17";
- end;
-OnEpilogue17:
- npctalk "Tal#0", "Tal : (*whisper* I would be surprised if they survived the trip alone.)";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue18";
- end;
-OnEpilogue18:
- npctalk "Jande#0", "(*whisper* For now, let's hope for the best. I don't want another rewrite...)";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue19";
- end;
-OnEpilogue19:
- npctalk "Tal#0", "Tal : (*whisper* You worry too much. Di'Tal already put measures in place.)";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue20";
- end;
-OnEpilogue20:
- npctalk "Tal#0", "Tal : (*whisper* The same incident from years ago will not repeat itself.)";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue21";
- end;
-OnEpilogue21:
- npctalk "Tal#0", "Tal : (*whisper* Besides, shall they fail - they won't remember any of this.)";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue22";
- end;
-OnEpilogue22:
- npctalk "Jande#0", "(*whisper* We will have a good room to maneuver undercover, then.)";
- addnpctimer 15000, "#TMWFinalExam::OnEpilogue23";
- end;
-
-OnEpilogue23:
- npctalk "Anon", "What are you waiting for? You're running against the clock.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue24";
- end;
-OnEpilogue24:
- npctalk "Anon", "You know Jande and Tal cannot get close to that... that thing.";
- addnpctimer 5000, "#TMWFinalExam::OnEpilogue25";
- end;
-OnEpilogue25:
- npctalk "Anon", "We will do what we can to support you from sidelines. Now go!";
- end;
-
-///////////////////////////////////////////////////////////
-// Spawn Subsystem
-S_DD5PrimarySpawn:
- // Receives: $@DD5_MOBC
- set $@DD5_TMP, rand(270) / 100;
- if ($@DD5_TMP == 0)
- goto L_DD5PSN;
- if ($@DD5_TMP == 1)
- goto L_DD5PSR;
- if ($@DD5_TMP == 2)
- goto L_DD5PSP;
- goto L_DD5PSResume;
-
-L_DD5PSN:
- callfunc "DD5SpawnNoob";
- goto L_DD5PSResume;
-
-L_DD5PSR:
- callfunc "DD5SpawnRegular";
- goto L_DD5PSResume;
-
-L_DD5PSP:
- callfunc "DD5SpawnPro";
- goto L_DD5PSResume;
-
-L_DD5PSResume:
- if ($@DD5_MOBC)
- goto S_DD5PrimarySpawn;
- set $@DD5_TMP, 0;
- return;
-
-///////////////////////////////////////////////////////////
-// Timer Subsystem, spawns every 30 seconds
-OnTimer40000:
- // Imperial Chamber
- areamonster "099-5", 43, 44, 56, 55, "", $@DD5MB_WEAK[rand(getarraysize($@DD5MB_WEAK))], $@DD5_PRIMARY, "#TMWFinalExam::OnKillWeak";
- // Map
- set $@DD5_MOBC, $@DD5_TOTALPC/2+1;
- callsub S_DD5PrimarySpawn;
- // Prologue mobs
- if ($@DD5_STATUS == 3)
- areamonster "099-5", 20, 20, 75, 75, "", 1151, $@DD5_TOTALPC, "#TMWFinalExam::OnKillAverage";
- end;
-
-OnTimer75000:
- // Imperial Chamber
- areamonster "099-5", 43, 44, 56, 55, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], $@DD5_PRIMARY/3+1, "#TMWFinalExam::OnKillAverage";
- // Map
- set $@DD5_MOBC, $@DD5_TOTALPC/2;
- callsub S_DD5PrimarySpawn;
- // Prologue mobs
- if ($@DD5_STATUS == 3)
- areamonster "099-5", 20, 20, 75, 75, "", 1151, $@DD5_TOTALPC, "#TMWFinalExam::OnKillAverage";
- end;
-
-// Warn players about the 110s rule closing in
-// They'll have 10 seconds to prepare themselves to the mini-boss spawn!
-// AND to get ready to the boss HP regeneration (which is small but anyway)
-OnTimer104000:
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTWarning";
- end;
-
-OnTimer120000:
- // Imperial Chamber
- areamonster "099-5", 43, 44, 56, 55, "", $@DD5MB_STRONG[rand(getarraysize($@DD5MB_STRONG))], max(3, 1+$@DD5_PRIMARY/3), "#TMWFinalExam::OnKillStrong";
- areamonster "099-5", 43, 44, 56, 55, "", $@DD5MB_BOSSLV[rand(getarraysize($@DD5MB_BOSSLV))], $@DD5_STATUS/2, "#TMWFinalExam::OnKillStrong";
- // Map
- set $@DD5_MOBC, $@DD5_TOTALPC/3+1;
- callsub S_DD5PrimarySpawn;
- // Prologue mobs
- if ($@DD5_STATUS == 3)
- areamonster "099-5", 20, 20, 75, 75, "", 1151, $@DD5_TOTALPC, "#TMWFinalExam::OnKillAverage";
- // Boss regeneration, which may overflow into infinity.
- // A regular tick takes 7s - so ~13 cycles of regen
- // It'll regen STATUS Hp per tick, so: 39, 65 and 91 HP every 90s
- // Which is a ridiculously low amount, so I buffed it in 3
- // A base healing of 3 HP per tick - So 117, 195 and 273 HP (still low)
- set $@DD5_HP, $@DD5_HP+((13*$@DD5_STATUS)*3);
- initnpctimer;
- end;
-
-///////////////////////////////////////////////////////////
-// Monster Death Label
-OnKillWeak:
- set @dd5_score, @dd5_score+1;
- set $@DD5_PTS, $@DD5_PTS+1;
- end;
-
-OnKillAverage:
- set @dd5_score, @dd5_score+10;
- set $@DD5_PTS, $@DD5_PTS+10;
- end;
-
-OnKillStrong:
- set @dd5_score, @dd5_score+25;
- set $@DD5_PTS, $@DD5_PTS+25;
- end;
-
-///////////////////////////////////////////////////////////
-// Core
-OnInit:
- setarray $@DD5MB_WEAK, 1155, 1156, 1155, 1156, 1155, 1156, 1158;
- setarray $@DD5MB_AVERAGE, 1159, 1160, 1159, 1160, 1159, 1160, 1157, 1158;
- setarray $@DD5MB_STRONG, 1152, 1153, 1154, 1152, 1153, 1154, 1152, 1153, 1154;
- setarray $@DD5MB_BOSSLV, 1146, 1147, 1140, 1141, 1143, 1149, 1148, 1140;
- // Flower 1151, Mouboo 1158
- end;
-
-OnMiteyo:
- if ($DOOMSDAY != 3)
- end;
- if ($@DD5_HP < 1)
- end;
- message strcharinfo(0), "Estimated boss HP: "+($@DD5_HP+rand(-100, 100));
- end;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-function|script|DD5SpawnNoob
-{
- areamonster "099-4", 20, 20, 75, 75, "", $@DD5MB_WEAK[rand(getarraysize($@DD5MB_WEAK))], 3, "#TMWFinalExam::OnKillWeak";
- areamonster "099-5", 20, 20, 75, 75, "", $@DD5MB_WEAK[rand(getarraysize($@DD5MB_WEAK))], 3, "#TMWFinalExam::OnKillWeak";
- set $@DD5_MOBC, $@DD5_MOBC-1;
- return;
-}
-function|script|DD5SpawnRegular
-{
- if (rand(6) % 2 == 0)
- areamonster "099-4", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], 1, "#TMWFinalExam::OnKillAverage";
- areamonster "099-5", 20, 20, 75, 75, "", $@DD5MB_AVERAGE[rand(getarraysize($@DD5MB_AVERAGE))], 2, "#TMWFinalExam::OnKillAverage";
- set $@DD5_MOBC, $@DD5_MOBC-1;
- return;
-}
-function|script|DD5SpawnPro
-{
- if (rand(6) % 2 == 0)
- areamonster "099-4", 20, 20, 75, 75, "", $@DD5MB_STRONG[rand(getarraysize($@DD5MB_STRONG))], 1, "#TMWFinalExam::OnKillStrong";
- areamonster "099-5", 20, 20, 75, 75, "", $@DD5MB_STRONG[rand(getarraysize($@DD5MB_STRONG))], 1, "#TMWFinalExam::OnKillStrong";
- set $@DD5_MOBC, $@DD5_MOBC-1;
- return;
-}
-
-/////////////////////////////////////////////////
-function|script|DD5RainCheck
-{
- set $@DD5_RAIN, 0;
-
- // Search for rain
- set .@p, get(.max_radius, "rain") + 1;
- foreach 1, getmap(), POS_X-.@p, POS_Y-.@p, POS_X+.@p, POS_Y+.@p, "#TMWFinalExam::OnRainCheck";
-
- // Not in rain - nullify damage
- if (!($@DD5_RAIN))
- set @dd5_dmg, 0;
- return;
-}
-
-/////////////////////////////////////////////////
-function|script|DD5DEFCONCheck
-{
- // Shearing magic is active?
- if (@chipchipspell[2] > 0)
- goto L_Shear;
- goto L_Loop;
-
-L_Shear:
- set @dd5_shear, 1;
- addtimer 0, "shear::OnDischarge";
- goto L_Loop;
-
-L_Loop:
- if ($@DD5_DEFCON == 0)
- goto L_DEFCON0;
- if ($@DD5_DEFCON == 1)
- goto L_DEFCON1;
- if ($@DD5_DEFCON == 2)
- goto L_DEFCON2;
- if ($@DD5_DEFCON == 3)
- goto L_DEFCON3;
- if ($@DD5_DEFCON == 4)
- goto L_DEFCON4;
- if ($@DD5_DEFCON == 5)
- goto L_DEFCON5;
- if ($@DD5_DEFCON == 6)
- goto L_DEFCON6;
- if ($@DD5_DEFCON == 7)
- goto L_DEFCON7;
- if ($@DD5_DEFCON == 8)
- goto L_DEFCON8;
- debugmes "ERROR INVALID DEFCON: "+$@DD5_DEFCON;
- goto L_Return;
-
-// DEFCON 0 - Vulnerable
-L_DEFCON0:
- goto L_Return;
-
-// DEFCON 1 - Invulnerable
-L_DEFCON1:
- // FIXME
- if (@dd5_shear)
- goto L_Return;
- set @dd5_dmg, 0;
- goto L_Return;
-
-// DEFCON 2 - Double Defense
-L_DEFCON2:
- set @dd5_dmg, @dd5_dmg/2;
- goto L_Return;
-
-// DEFCON 3 - Potion Immunity
-L_DEFCON3:
- if (sc_check(sc_raiseattackspeed0))
- set @dd5_dmg, 0;
- if (sc_check(sc_raiseattackstrength))
- set @dd5_dmg, 0;
- goto L_Return;
-
-// DEFCON 4 - Water Vulnerable
-L_DEFCON4:
- callfunc "DD5RainCheck";
- goto L_Return;
-
-// DEFCON 5 - Ranged Invulnerable
-L_DEFCON5:
- if (ATTACKRANGE > 2)
- set @dd5_dmg, 0;
- goto L_Return;
-
-// DEFCON 6 - Bone Vulnerable
-L_DEFCON6:
- // Shearing is immune to DEFCON 6
- if (@dd5_shear)
- goto L_Return;
- // Not using the allowed equips
- if (getequipid(equip_arrow) != 1282 && getequipid(equip_hand1) != 570)
- set @dd5_dmg, 0;
- // Lame check for bows because I'm lazy
- if (getequipid(equip_arrow) == 1282 && ATTACKRANGE < 4)
- set @dd5_dmg, 0;
- goto L_Return;
-
-// DEFCON 7 - Melee Absorb
-L_DEFCON7:
- if (ATTACKRANGE < 3)
- set @dd5_dmg, 0-(@dd5_dmg);
- goto L_Return;
-
-// DEFCON 8 - GP Greed
-L_DEFCON8:
- if (Zeny < @dd5_dmg*10)
- set @dd5_dmg, 0;
- set Zeny, Zeny-(@dd5_dmg*10);
- goto L_Return;
-
-L_Return:
- set @dd5_shear, 0;
- return;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-function|script|FinalExamAttack
-{
- // Failsafe
- if ($@DD5_STATUS != 3 && $@DD5_STATUS != 5 && $@DD5_STATUS != 7)
- goto L_Return;
-
- // CD Initial failsafe
- if (!@dd5_timer)
- set @dd5_timer, 1-2147483647-1;
-
- // CD Failsafe
- if (@dd5_timer > 1 && gettimetick(0) < 1)
- set @dd5_timer, gettimetick(0);
-
- // Cooldown
- if (gettimetick(0) < @dd5_timer)
- goto L_Return;
-
- // Verify range
- if (!(isin("099-5", 50-ATTACKRANGE, 49-ATTACKRANGE, 50+ATTACKRANGE, 49+ATTACKRANGE)))
- goto L_Return;
-
- // Assign attack speed delay - 300ms with pots, 600ms without
- set @dd5_timer, if_then_else(sc_check(sc_raiseattackspeed0), gettimetick(0)+300, gettimetick(0)+600);
-
- // Calculate HIT and CRIT rate
- set @dd5_crit, (rand(10000) < CRIT);
- if (rand(400) > HIT && !@dd5_crit)
- goto L_Miss;
-
- // Calculate damage
- set @dd5_dmg, ATK1+BASE_ATK;
-
- // Strength Potion - DMG +50%
- if (sc_check(sc_raiseattackstrength))
- set @dd5_dmg, @dd5_dmg*15/10;
-
- // Boss defense
- set @dd5_dmg, @dd5_dmg*(11-$@DD5_STATUS)/9;
-
- // Consider criticals (no defense disregard, though)
- if (@dd5_crit)
- set @dd5_dmg, @dd5_dmg*2;
-
- // Adjust to Stages
- if ($@DD5_STATUS == 5)
- goto L_Rainy;
- if ($@DD5_STATUS == 7)
- goto L_Defcon;
- goto L_Damage;
-
-L_Rainy:
- callfunc "DD5RainCheck";
- if (!($@DD5_RAIN))
- goto L_Miss;
- goto L_Damage;
-
-L_Defcon:
- callfunc "DD5DEFCONCheck";
- if (@dd5_dmg == 0)
- goto L_Miss;
- if (@dd5_dmg < 1)
- goto L_Absorb;
- goto L_Damage;
-
-L_Absorb:
- // Ops! Zax appreciates the heal!
- set $@DD5_HP, $@DD5_HP-@dd5_dmg;
- message strcharinfo(0), "Battle : Absorbed +"+@dd5_dmg+" HP";
- goto L_Return;
-
-L_Damage:
- // Apply the damage!
- set $@DD5_HP, $@DD5_HP-@dd5_dmg;
- set @dd5_score, @dd5_score+min(25, @dd5_dmg/50);
- set $@DD5_PTS, $@DD5_PTS+min(25, @dd5_dmg/50);
- message strcharinfo(0), "Battle : Damage -"+@dd5_dmg+" HP";
-
- // Fire events if HP < 0
- if ($@DD5_HP <= 0)
- goto L_Slain;
- goto L_Return;
-
-L_Miss:
- message strcharinfo(0), "Battle : Miss";
- return;
-
-L_Slain:
- set @dd5_score, @dd5_score+100;
- set $@DD5_PTS, $@DD5_PTS+100;
- set BOSS_POINTS, BOSS_POINTS + 25;
- if ($@DD5_STATUS == 3)
- donpcevent "#TMWFinalExam::OnWarmedUp0";
- if ($@DD5_STATUS == 5)
- donpcevent "#TMWFinalExam::OnShowdown0";
- if ($@DD5_STATUS == 7)
- donpcevent "#TMWFinalExam::OnEpilogue0";
- message strcharinfo(0), "You gained 25 Boss Points!";
- return;
-
-L_Return:
- return;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Puppets
-099-5,52,35,0|script|Jande#0|426
-{
- message strcharinfo(0), "Jande : What are you waiting for?";
- end;
-OnInit:
- disablenpc strnpcinfo(0);
- end;
-}
-
-// Puppets
-099-5,47,34,0|script|Tal#0|427
-{
- message strcharinfo(0), "Tal : What are you waiting for?";
- end;
-OnInit:
- disablenpc strnpcinfo(0);
- end;
-}
-
-// Puppets
-099-5,49,35,0|script|Anon|425
-{
- message strcharinfo(0), "Anon : What are you waiting for?";
- end;
-OnInit:
- disablenpc strnpcinfo(0);
- end;
-}
-
-// Puppets
-099-5,51,33,0|script|Flying Ship|428
-{
- message strcharinfo(0), "WHAT. IN. NAME. OF. JANDE. IS. THAT. THING?!";
- end;
-OnInit:
- disablenpc strnpcinfo(0);
- end;
-}
-
-// Puppets
-099-5,51,33,0|script|Gema III|395
-{
- if ($@DD5_STATUS != 9)
- goto L_TooEarly;
- if (@dd5_cutscene)
- end;
- mes "##1Embark on Gema III in pursuit?##0";
- mes "You may be unable to return here!";
- next;
- menu
- "Yes",L_Yes,
- "No",L_No;
-
-L_No:
- close;
-
-L_Yes:
- set @dd5_cutscene, 1;
- // Stop rendering the map and Embark
- mapmask 1 | 2;
- music "epilogue.ogg";
- if (debug)
- addtimer 5000, "Gema III::OnDebugPrompt";
- if (!debug)
- addtimer 300, "Gema III::OnStart";
- close;
-
-OnStart:
- specialeffect2 53;
- message strcharinfo(0), "But it might be too late.";
- addtimer 2300, "Gema III::OnFPS01";
- end;
-
-OnFPS01:
- message strcharinfo(0), "Brave adventurers from all around the world,";
- addtimer 2500, "Gema III::OnFPS02";
- end;
-
-OnFPS02:
- message strcharinfo(0), "Marches toward that unknown island,";
- addtimer 2100, "Gema III::OnFPS03";
- end;
-
-OnFPS03:
- message strcharinfo(0), "Said to have the key to stop Zax De'Kagen's ambitions.";
- addtimer 4300, "Gema III::OnFPS04";
- end;
-
-OnFPS04:
- message strcharinfo(0), "Unbeknownst to them, Zax already made his move.";
- addtimer 3200, "Gema III::OnFPS05";
- end;
-
-OnFPS05:
- message strcharinfo(0), "Before anyone can even reach him, he executes the plan,";
- addtimer 3600, "Gema III::OnFPS06";
- end;
-
-OnFPS06:
- message strcharinfo(0), "Carefully written for over a decade.";
- addtimer 3100, "Gema III::OnFPS07";
- end;
-
-OnFPS07:
- message strcharinfo(0), "Using Nu'Rem's body as a catalyst,";
- addtimer 2000, "Gema III::OnFPS08";
- end;
-
-OnFPS08:
- message strcharinfo(0), "The Ether Spirit of Air is finally compromised.";
- addtimer 2900, "Gema III::OnFPS09";
- end;
-
-OnFPS09:
- message strcharinfo(0), "Half from the Etheral Powers of Air,";
- addtimer 2300, "Gema III::OnFPS10";
- end;
-
-OnFPS10:
- message strcharinfo(0), "Are absorbed by The Mana Seal.";
- addtimer 2100, "Gema III::OnFPS11";
- end;
-
-OnFPS11:
- message strcharinfo(0), "The other half collides with the Earth Spirit,";
- addtimer 2400, "Gema III::OnFPS12";
- end;
-
-OnFPS12:
- message strcharinfo(0), "And a new element is born.";
- addtimer 2200, "Gema III::OnFPS13";
- end;
-
-OnFPS13:
- message strcharinfo(0), "History begins to rewrite itself,";
- addtimer 2200, "Gema III::OnFPS14";
- end;
-
-OnFPS14:
- message strcharinfo(0), "Who's Zax? Something is not right.";
- addtimer 3600, "Gema III::OnFPS15";
- end;
-
-OnFPS15:
- message strcharinfo(0), "But what will be of our brave adventurers,";
- addtimer 3400, "Gema III::OnFPS16";
- end;
-
-OnFPS16:
- message strcharinfo(0), "lost midst all this cataclysm?";
- addtimer 2800, "Gema III::OnFPS17";
- end;
-
-OnFPS17:
- message strcharinfo(0), "Will they reach Nu'Rem's grave?";
- addtimer 2400, "Gema III::OnFPS18";
- end;
-
-OnFPS18:
- message strcharinfo(0), "Will they put a stop to Zax's evil ambitions?";
- addtimer 3000, "Gema III::OnFPS19";
- end;
-
-OnFPS19:
- message strcharinfo(0), "Follow their journey, and take back the world, in";
- addtimer 3600, "Gema III::OnFPS20";
- end;
-
-OnFPS20:
- message strcharinfo(0), "##2##BTHE MANA WORLD: REVOLT##b##0";
- //if (debug)
- addtimer 5000, "Gema III::OnDebugPrompt";
- //if (!debug)
- // addtimer 5000, "Gema III::OnPrompt";
- end;
-
-OnPrompt:
- mes ".:: THE MANA WORLD - REVOLT ::.";
- mes "";
- mes "Server Name: ##BThe Mana World##b";
- mes "Server Address: ##Bserver.themanaworld.org##b";
- mes "Server Port: ##BXXXX##b";
- mes "Server Type: ##BEvol2##b";
- mes "Server Description: ##BMain Server for The Mana World##b";
- mes "";
- mes "##BCOMING SOON##b";
- mes "##BMONTH DAY, 18:00 UTC##b";
- next;
- mes "##BPre-register##b here:";
- mes "[@@https://vault.themanaworld.org/|@@]";
- mes "Max. 1 account per player.";
- next;
- goto L_MissionComplete;
-
-OnDebugPrompt:
- mes ".:: THE MANA WORLD - REVOLT ::.";
- mes "";
- mes "##BCOMING SOON##b";
- mes "";
- mes "Thanks for playing!";
- mes "Stay tuned for updates!";
- mes "";
- mes "-- The Mana World Team";
- next;
- goto L_MissionComplete;
-
-L_MissionComplete:
- set @dd5_cutscene, 0;
- warp "009-1", 52, 40;
- getexp 1000000, 0;
- if (strcharinfo(0) == $@DD5_TALLY$)
- goto L_Winner;
- close;
-
-L_Winner:
- getitem "SaviorArmor", 1;
- set $@DD5_TALLY$, "";
- set #DD5_TALLY, 1;
- mes "##2You were the MVP with "+$@DD5_TALLY_+" points!##0";
- //mes "##2Exchange this blue rose with a Game Master!##0";
- close;
-
-L_TooEarly:
- mes "[" + strcharinfo(0) + "]";
- mes "It is Gema III! How did they manage to bring the ship here?!";
- close;
-
-OnInit:
- disablenpc "Gema III";
- end;
-}
-/////////////////////////////////////////////////////
-// Puppets, timers for Stage 2
-099-5,50,49,0|script|Xakelbael the Dark#0|400
-{
- callfunc "FinalExamAttack";
- end;
-OnInit:
- disablenpc "Xakelbael the Dark#0";
- end;
-
-OnTimer50000:
- areatimer 0, "099-5", 20, 20, 75, 75, 10, "#TMWFinalExam::OnMTFourthFall";
- initnpctimer;
- npctalk "Xakelbael the Dark#0", "Fourth Fall!";
- end;
-OnEnable:
- initnpctimer;
- end;
-OnAdjustSweet:
- if ($@DD5_STATUS != 5)
- end;
- setnpctimer min(49000, getnpctimer(0)-rand(2500,5000));
- end;
-OnDisable:
- stopnpctimer;
- end;
-}
-
-// Puppets, the timer on this one is for Stage 1
-099-5,50,49,0|script|Zax De'Kagen#0|400
-{
- callfunc "FinalExamAttack";
- end;
-OnInit:
- disablenpc "Zax De'Kagen#0";
- end;
-
-OnTimer18000:
- if ($@DD5_STATUS != 3)
- end;
- enablenpc strnpcinfo(0);
- end;
-OnTimer24000:
- if ($@DD5_STATUS != 3)
- end;
- initnpctimer;
- disablenpc strnpcinfo(0);
- end;
-OnTimer90000:
- if ($@DD5_STATUS != 7)
- end;
- initnpctimer;
- npctalk "Zax De'Kagen#0", "Bliss Of Oblivion!";
- donpcevent "#TMWFinalExam::OnBlissOblivion";
- end;
-
-OnAdjustBat:
- if (getnpctimer(0) < 18000)
- setnpctimer max(17000, getnpctimer(0)+rand(1000,2500));
- end;
-OnAdjustBeets:
- if (getnpctimer(0) > 18000)
- setnpctimer min(18000, getnpctimer(0)-rand(3000,5000));
- end;
-OnAdjustPotion:
- if ($@DD5_STATUS != 7)
- end;
- setnpctimer max(0, min(75000, getnpctimer(0)-rand(5000, 15000)));
- // If it is me testing then it forwards >.>
- if (debug && strcharinfo(0) == "Jesusalva")
- setnpctimer 75000;
- end;
-
-OnEnable:
- disablenpc "Zax De'Kagen#0";
- initnpctimer;
- end;
-OnDisable:
- enablenpc strnpcinfo(0);
- stopnpctimer;
- end;
-OnFinal:
- initnpctimer;
- end;
-OnAbort:
- stopnpctimer;
- areatimer 0, "099-4", 20, 20, 75, 75, 1000, "#TMWFinalExam::OnMTWarpTo0";
- donpcevent "Xakelbael the Dark#0::OnDisable";
- end;
-}
-
diff --git a/world/map/npc/099-6/_import.txt b/world/map/npc/099-6/_import.txt
deleted file mode 100644
index 0230b16d..00000000
--- a/world/map/npc/099-6/_import.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-// Map 099-6: Nu'Ram-Battle
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-6
-npc: npc/099-6/_mobs.txt
-npc: npc/099-6/_nodes.txt
-npc: npc/099-6/_warps.txt
diff --git a/world/map/npc/099-6/_mobs.txt b/world/map/npc/099-6/_mobs.txt
deleted file mode 100644
index 0381696e..00000000
--- a/world/map/npc/099-6/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle mobs
-
diff --git a/world/map/npc/099-6/_nodes.txt b/world/map/npc/099-6/_nodes.txt
deleted file mode 100644
index 22261608..00000000
--- a/world/map/npc/099-6/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-6/_warps.txt b/world/map/npc/099-6/_warps.txt
deleted file mode 100644
index ccde0124..00000000
--- a/world/map/npc/099-6/_warps.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Keshlam's Adventurer's Guild Quarters warps
-
-099-6,121,132|warp|-1,-1,099-1,21,16
-099-6,92,132|warp|-1,-1,099-1,58,16
-099-6,59,21|warp|-1,-1,099-1,85,16
-099-6,26,132|warp|-1,-1,099-1,97,31
-099-6,90,21|warp|-1,-1,099-1,104,31
-099-6,121,101|warp|-1,-1,099-1,108,24
-099-6,91,101|warp|-1,-1,099-1,82,44
-099-6,60,132|warp|-1,-1,099-1,69,25
-099-6,60,101|warp|-1,-1,099-1,95,61
-099-6,25,22|warp|-1,-1,099-1,78,58
-099-6,25,101|warp|-1,-1,099-1,66,58
-099-6,121,76|warp|-1,-1,099-1,34,51
-099-6,91,75|warp|-1,-1,099-1,27,51
-099-6,59,75|warp|-1,-1,099-1,25,77
-099-6,25,75|warp|-1,-1,099-1,40,104
-099-6,121,48|warp|-1,-1,099-1,29,136
-099-6,91,49|warp|-1,-1,099-1,58,129
-099-6,59,49|warp|-1,-1,099-1,84,114
-099-6,25,49|warp|-1,-1,099-1,83,105
-099-6,121,21|warp|-1,-1,099-1,79,72
diff --git a/world/map/npc/099-7/_import.txt b/world/map/npc/099-7/_import.txt
deleted file mode 100644
index 5e748a47..00000000
--- a/world/map/npc/099-7/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map 099-7: Nu'Ram-Battle
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-7
-npc: npc/099-7/_mobs.txt
-npc: npc/099-7/_nodes.txt
-npc: npc/099-7/_warps.txt
-npc: npc/099-7/boss.txt
diff --git a/world/map/npc/099-7/_mobs.txt b/world/map/npc/099-7/_mobs.txt
deleted file mode 100644
index 0381696e..00000000
--- a/world/map/npc/099-7/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle mobs
-
diff --git a/world/map/npc/099-7/_nodes.txt b/world/map/npc/099-7/_nodes.txt
deleted file mode 100644
index 22261608..00000000
--- a/world/map/npc/099-7/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-7/_warps.txt b/world/map/npc/099-7/_warps.txt
deleted file mode 100644
index 703b3ca9..00000000
--- a/world/map/npc/099-7/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Nu'Ram-Battle warps
-
diff --git a/world/map/npc/099-7/boss.txt b/world/map/npc/099-7/boss.txt
deleted file mode 100644
index 7362690f..00000000
--- a/world/map/npc/099-7/boss.txt
+++ /dev/null
@@ -1,781 +0,0 @@
-// This script controls the Keshlam Swamps
-// Made for Doomsday Event - The 070-3 and original quests were lost due this
-
-027-4,105,61,0|script|#KeshlamClue701|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the left handed singer";
- if (#CRYPT_PASSWORD & 1) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-027-4,91,61,0|script|#KeshlamClue702|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the left handed lone warrior";
- if (#CRYPT_PASSWORD & 1) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southeast a bright sparks.";
- close;
-}
-
-027-4,99,61,0|script|#KeshlamClue703|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the left handed sailor";
- if (#CRYPT_PASSWORD & 1) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At south a bright sparks.";
- close;
-}
-
-027-4,121,61,0|script|#KeshlamClue704|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the left handed gargoyle";
- if (#CRYPT_PASSWORD & 2) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southeast a bright sparks.";
- close;
-}
-
-
-
-027-3,105,88,0|script|#KeshlamClue705|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 4) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At south a bright sparks.";
- close;
-}
-
-027-3,111,88,0|script|#KeshlamClue706|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 4) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southwest a bright sparks.";
- close;
-}
-
-
-
-
-027-3,105,83,0|script|#KeshlamClue707|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 4) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At north a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At west a bright sparks.";
- close;
-}
-
-027-3,111,83,0|script|#KeshlamClue708|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 8) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At east a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At north a bright sparks.";
- close;
-}
-
-
-
-027-3,105,78,0|script|#KeshlamClue709|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 8) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northwest a bright sparks.";
- close;
-}
-
-027-3,111,78,0|script|#KeshlamClue710|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 8) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southwest a bright sparks.";
- close;
-}
-
-
-
-027-3,105,73,0|script|#KeshlamClue711|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 8) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At north a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At west a bright sparks.";
- close;
-}
-
-027-3,111,73,0|script|#KeshlamClue712|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 16) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At east a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At north a bright sparks.";
- close;
-}
-
-
-
-027-3,106,59,0|script|#KeshlamClue713|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 16) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northwest a bright sparks.";
- close;
-}
-
-027-3,111,59,0|script|#KeshlamClue714|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 16) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-
-
-027-3,106,54,0|script|#KeshlamClue715|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 32) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southeast a bright sparks.";
- close;
-}
-
-027-3,111,54,0|script|#KeshlamClue716|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 32) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-////// Second Wing
-027-4,111,61,0|script|#KeshlamClue750|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the right handed sailor";
- if (#CRYPT_PASSWORD & 64) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southeast a bright sparks.";
- close;
-}
-
-027-4,108,61,0|script|#KeshlamClue751|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the right handed duo";
- if (#CRYPT_PASSWORD & 64) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-027-4,115,61,0|script|#KeshlamClue752|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the right handed Kage";
- if (#CRYPT_PASSWORD & 128) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At south a bright sparks.";
- close;
-}
-
-027-4,119,61,0|script|#KeshlamClue753|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "In memory of the right handed lone warrior";
- if (#CRYPT_PASSWORD & 128) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southeast a bright sparks.";
- close;
-}
-
-
-
-027-3,118,88,0|script|#KeshlamClue754|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 256) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At south a bright sparks.";
- close;
-}
-
-027-3,124,88,0|script|#KeshlamClue755|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 256) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southwest a bright sparks.";
- close;
-}
-
-
-
-027-3,118,83,0|script|#KeshlamClue756|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 256) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At north a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At west a bright sparks.";
- close;
-}
-
-027-3,124,83,0|script|#KeshlamClue757|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 256) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At east a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At north a bright sparks.";
- close;
-}
-
-
-
-027-3,118,78,0|script|#KeshlamClue758|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 512) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At north a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At west a bright sparks.";
- close;
-}
-
-027-3,124,78,0|script|#KeshlamClue759|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 512) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At east a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At north a bright sparks.";
- close;
-}
-
-
-
-027-3,118,73,0|script|#KeshlamClue760|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 512) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At northeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southwest a bright sparks.";
- close;
-}
-
-027-3,124,73,0|script|#KeshlamClue761|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 512) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-
-
-027-3,117,59,0|script|#KeshlamClue762|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 1024) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-027-3,122,59,0|script|#KeshlamClue763|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 1024) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southeast a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northwest a bright sparks.";
- close;
-}
-
-
-
-027-3,117,54,0|script|#KeshlamClue764|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 2048) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At south a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At northeast a bright sparks.";
- close;
-}
-
-027-3,122,54,0|script|#KeshlamClue765|400
-{
- if (!#CRYPT_PASSWORD) end;
- if (#CRYPT_PASSWORD & 2048) goto L_On;
- goto L_Off;
-
-L_On:
- mes "A reading says: At southwest a bright sparks.";
- close;
-
-L_Off:
- mes "A reading says: At southeast a bright sparks.";
- close;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-////// Gates
-027-5,68,94,0|script|#KeshlamClue791|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "There's an inscription on the gate.";
- next;
- mes "\"Krukan reads from bottom up. Four clues.\"";
- close;
-}
-
-027-5,68,87,0|script|#KeshlamClue792|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "There's an inscription on the gate.";
- next;
- mes "\"The candle shall lit you, but if you mess up, a different light will show.";
- mes "Alas did you knew, that Razha came before Krukan?\"";
- close;
-}
-
-027-5,68,73,0|script|#KeshlamClue793|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "There's an inscription on the gate.";
- next;
- mes "\"Razha likes to read from left to right. Two clues, Two clues.\"";
- close;
-}
-
-027-5,68,59,0|script|#KeshlamClue794|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "There's an inscription on the gate.";
- next;
- mes "\"The master's candlesticks are like the fingers of his hand.";
- mes "And if it is not to kill, they will never move.\"";
- close;
-}
-
-027-5,68,46,0|script|#KeshlamClue795|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "There's a bloody inscription on the gate.";
- next;
- mes "\"##B"+get(.invocation$, "reapercry")+"##b\"";
- next;
- mes "##9You hear the sounds of battle. Candle lights shines in distance.";
- next;
- mes "##9However, when you turn towards the source - both the light as the sound have already stopped.";
- next;
- mes "##9Is this a clue of some sort?";
- close;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Totally optional Easter Egg :>
-099-7,75,49,0|script|Engraving#Keshlam|400
-{
- mes "There's an engraving on this tree.";
- next;
- if (countitem("FlawedLens") < 1) goto L_Tools;
- mes "Thanks to the lens on your inventory, you can read this:";
- mes "";
- mes "\"Nu'rem perished here, after the fight with Jande, Tal and Di'Tal.";
- mes "For this very reason, this land is plagued forever. We shall give Nu'Rem a proper burrial.\"";
- next;
- mes "-- The Sparron";
- close;
-
-L_Tools:
- mes "It is too faint to read without some good lens, but you can make the following words out of the engraving:";
- next;
- mes "\"Nu'rem .... here .... fight .... Jande ....";
- mes ".... land .... plagued forever. .... Nu'Rem .... proper burrial.\"";
- next;
- mes "-- The ....";
- close;
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-// Monster Script Control
--|script|Keshlam|32767
-{
- close;
-
-OnInit:
- areamonster "099-7", 20, 20, 120, 120, "", 1148, 10, "Keshlam::OnDeath8";
- areamonster "099-7", 20, 20, 120, 120, "", 1149, 10, "Keshlam::OnDeath9";
- monster "099-7", 20, 105, "Grim Reaper", 1068, 1, "Keshlam::OnBoss";
- end;
-
-OnDeath8:
- goto OnDeath;
-
-OnDeath9:
- goto OnDeath;
-
-OnDeath:
- // TODO: Only fire this if timer not running. Set timer to 5min
- initnpctimer;
- end;
-
-OnBoss:
- initnpctimer;
- // If a player is attached, give them 20 Treasure Keys
- getitem "TreasureKey", 20;
- end;
-
-OnTimer150000:
- // 1148
- set $@KeshlamMc, mobcount("099-7", "Keshlam::OnDeath8")+1;
- if ($@KeshlamMc < 10)
- areamonster "099-7", 20, 20, 120, 120, "", 1148, 10-$@KeshlamMc, "Keshlam::OnDeath8";
-
- // 1149
- set $@KeshlamMc, mobcount("099-7", "Keshlam::OnDeath9")+1;
- if ($@KeshlamMc < 10)
- areamonster "099-7", 20, 20, 120, 120, "", 1149, 10-$@KeshlamMc, "Keshlam::OnDeath9";
-
- // Boss (TODO maybe give boss their own timer with 5 minutes)
- set $@KeshlamMc, mobcount("099-7", "Keshlam::OnBoss")+1;
- if ($@KeshlamMc < 1)
- monster "099-7", 20, 105, "Grim Reaper", 1068, 1, "Keshlam::OnBoss";
-
- // Done
- set $@KeshlamMc, 0;
- stopnpctimer;
- end;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Who wants a rare drop?
-099-7,18,110,0|script|Chest#keshlam|111
-{
- if (FLAGS & FLAG_KESHLAM_RAREDROP) goto L_Finished;
- mes "[Chest]";
- mes "Would you try to open it?";
- mes "##1Cost: 1000 Treasure Keys";
- next;
- menu
- "Yes.", L_Yes,
- "No.", L_Close;
-
-L_Yes:
- if (isdead())
- goto L_Not_Enough;
- if(countitem("TreasureKey") < 1000)
- goto L_Not_Enough;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("TreasureKey") > 1000)
- goto L_TooMany;
- delitem "TreasureKey", 1000;
- if (FLAGS & FLAG_KESHLAM_FLAWEDLENS) goto L_Rare;
- goto L_FlawedLens;
-
-L_FlawedLens:
- getitem "FlawedLens", 1;
- getexp 20000000, 0;
- set FLAGS, FLAGS | FLAG_KESHLAM_FLAWEDLENS;
- mes "[Chest]";
- mes "You opened it and found...! Some flawed lens?! Meh.";
- next;
- mes "[Chest]";
- mes "You notice this chest has a hidden section with another lock.";
- mes "You might want try that again later.";
- close;
-
-L_Rare:
- getexp 10000000, 0;
- set FLAGS, FLAGS | FLAG_KESHLAM_RAREDROP;
- if (rand(4) == 1) goto L_Amulet; // 25% chance
- goto L_Ring; // 75% chance
-
-L_Amulet:
- getitem "EnchantersAmulet", 1;
- mes "[Chest]";
- mes "You opened it and found...! An Enchanter's Amulet! Lucky!";
- close;
-
-L_Ring:
- getitem "MageRing", 1;
- mes "[Chest]";
- mes "You opened it and found...! A Mage Ring! Lucky!";
- close;
-
-L_Not_Enough:
- mes "It seems that this is not the right key...";
- close;
-
-L_Finished:
- mes "[Chest]";
- mes "You already opened this chest.";
- close;
-
-L_TooMany:
- mes "[Chest]";
- mes "You don't have room for what ever is inside. Maybe you should try again later.";
- close;
-
-L_Close:
- close;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Who wants experience?
-099-7,95,117,0|script|Knowledgeable Tree|400
-{
- mes "If you kill every monster, this tree can warp you back.";
- mes "You will receive experience points for cleaning the map.";
- mes "";
- mes "But be warned, monsters respawn on their own every five minutes.";
- mes "The boss must also be defeated.";
- next;
- set @KeshlamMc, mobcount("099-7", "Keshlam::OnDeath8")+1;
- set @KeshlamMc, @KeshlamMc+mobcount("099-7", "Keshlam::OnDeath9")+1;
- set @KeshlamMc, @KeshlamMc+mobcount("099-7", "Keshlam::OnBoss")+1;
- if (@KeshlamMc <= 0) goto L_Done;
- mes "There is ##B"+@KeshlamMc+" monsters##b alive.";
- close;
-
-L_Done:
- mes "Go back?";
- menu
- "Yes", L_Yes,
- "No", L_No;
-
-L_Yes:
- getexp 1000000, 0;
- warp "027-2", 50, 29;
- close;
-
-L_No:
- close;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Some minor major bugs
-027-4,107,61,0|script|#NoobJesusalva01|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "(The memorial is at right, behind the column.)";
- close;
-}
-027-4,109,61,0|script|#NoobJesusalva02|400
-{
- if (!#CRYPT_PASSWORD) end;
- mes "(The memorial is at left, behind the column.)";
- close;
-}
-099-7,73,20,0|script|#NoobKytty01|400,0,0
-{
- warp "099-7", 74, 17;
- end;
-}
-099-7,73,17,0|script|#NoobKytty02|400,0,0
-{
- warp "099-7", 72, 20;
- end;
-}
-
diff --git a/world/map/npc/099-8/_import.txt b/world/map/npc/099-8/_import.txt
deleted file mode 100644
index 931f223e..00000000
--- a/world/map/npc/099-8/_import.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-// Map 099-8: Keshlam's Maze
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: 099-8
-npc: npc/099-8/_mobs.txt
-npc: npc/099-8/_nodes.txt
-npc: npc/099-8/_warps.txt
-npc: npc/099-8/expchest.txt
-npc: npc/099-8/mobs.txt
diff --git a/world/map/npc/099-8/_mobs.txt b/world/map/npc/099-8/_mobs.txt
deleted file mode 100644
index 572bf03c..00000000
--- a/world/map/npc/099-8/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Keshlam's Maze mobs
-
diff --git a/world/map/npc/099-8/_nodes.txt b/world/map/npc/099-8/_nodes.txt
deleted file mode 100644
index c3253bb1..00000000
--- a/world/map/npc/099-8/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Keshlam's Maze nodes
-
-// (no nodes)
diff --git a/world/map/npc/099-8/_warps.txt b/world/map/npc/099-8/_warps.txt
deleted file mode 100644
index e6916e13..00000000
--- a/world/map/npc/099-8/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Keshlam's Maze warps
-
diff --git a/world/map/npc/099-8/expchest.txt b/world/map/npc/099-8/expchest.txt
deleted file mode 100644
index 2a2da1d9..00000000
--- a/world/map/npc/099-8/expchest.txt
+++ /dev/null
@@ -1,2201 +0,0 @@
-// This file is generated automatically.
-099-8,373,128,0|script|EXP Chest#00|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[0] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[0], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[0]+" got here first!";
- close;
-}
-099-8,280,208,0|script|EXP Chest#01|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[1] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[1], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[1]+" got here first!";
- close;
-}
-099-8,151,104,0|script|EXP Chest#02|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[2] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[2], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[2]+" got here first!";
- close;
-}
-099-8,233,374,0|script|EXP Chest#03|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[3] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[3], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[3]+" got here first!";
- close;
-}
-099-8,87,258,0|script|EXP Chest#04|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[4] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[4], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[4]+" got here first!";
- close;
-}
-099-8,67,226,0|script|EXP Chest#05|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[5] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[5], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[5]+" got here first!";
- close;
-}
-099-8,142,48,0|script|EXP Chest#06|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[6] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[6], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[6]+" got here first!";
- close;
-}
-099-8,27,93,0|script|EXP Chest#07|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[7] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[7], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[7]+" got here first!";
- close;
-}
-099-8,342,382,0|script|EXP Chest#08|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[8] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[8], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[8]+" got here first!";
- close;
-}
-099-8,163,222,0|script|EXP Chest#09|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[9] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[9], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[9]+" got here first!";
- close;
-}
-099-8,326,140,0|script|EXP Chest#10|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[10] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[10], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[10]+" got here first!";
- close;
-}
-099-8,250,273,0|script|EXP Chest#11|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[11] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[11], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[11]+" got here first!";
- close;
-}
-099-8,365,144,0|script|EXP Chest#12|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[12] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[12], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[12]+" got here first!";
- close;
-}
-099-8,108,214,0|script|EXP Chest#13|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[13] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[13], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[13]+" got here first!";
- close;
-}
-099-8,215,150,0|script|EXP Chest#14|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[14] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[14], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[14]+" got here first!";
- close;
-}
-099-8,180,374,0|script|EXP Chest#15|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[15] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[15], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[15]+" got here first!";
- close;
-}
-099-8,246,94,0|script|EXP Chest#16|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[16] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[16], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[16]+" got here first!";
- close;
-}
-099-8,244,215,0|script|EXP Chest#17|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[17] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[17], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[17]+" got here first!";
- close;
-}
-099-8,243,323,0|script|EXP Chest#18|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[18] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[18], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[18]+" got here first!";
- close;
-}
-099-8,231,279,0|script|EXP Chest#19|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[19] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[19], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[19]+" got here first!";
- close;
-}
-099-8,225,64,0|script|EXP Chest#20|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[20] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[20], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[20]+" got here first!";
- close;
-}
-099-8,310,336,0|script|EXP Chest#21|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[21] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[21], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[21]+" got here first!";
- close;
-}
-099-8,227,314,0|script|EXP Chest#22|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[22] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[22], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[22]+" got here first!";
- close;
-}
-099-8,336,312,0|script|EXP Chest#23|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[23] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[23], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[23]+" got here first!";
- close;
-}
-099-8,52,300,0|script|EXP Chest#24|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[24] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[24], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[24]+" got here first!";
- close;
-}
-099-8,38,327,0|script|EXP Chest#25|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[25] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[25], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[25]+" got here first!";
- close;
-}
-099-8,176,241,0|script|EXP Chest#26|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[26] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[26], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[26]+" got here first!";
- close;
-}
-099-8,312,276,0|script|EXP Chest#27|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[27] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[27], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[27]+" got here first!";
- close;
-}
-099-8,144,368,0|script|EXP Chest#28|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[28] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[28], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[28]+" got here first!";
- close;
-}
-099-8,59,174,0|script|EXP Chest#29|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[29] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[29], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[29]+" got here first!";
- close;
-}
-099-8,32,170,0|script|EXP Chest#30|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[30] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[30], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[30]+" got here first!";
- close;
-}
-099-8,248,48,0|script|EXP Chest#31|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[31] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[31], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[31]+" got here first!";
- close;
-}
-099-8,37,311,0|script|EXP Chest#32|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[32] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[32], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[32]+" got here first!";
- close;
-}
-099-8,206,336,0|script|EXP Chest#33|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[33] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[33], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[33]+" got here first!";
- close;
-}
-099-8,193,161,0|script|EXP Chest#34|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[34] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[34], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[34]+" got here first!";
- close;
-}
-099-8,337,296,0|script|EXP Chest#35|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[35] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[35], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[35]+" got here first!";
- close;
-}
-099-8,235,130,0|script|EXP Chest#36|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[36] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[36], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[36]+" got here first!";
- close;
-}
-099-8,67,162,0|script|EXP Chest#37|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[37] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[37], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[37]+" got here first!";
- close;
-}
-099-8,97,110,0|script|EXP Chest#38|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[38] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[38], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[38]+" got here first!";
- close;
-}
-099-8,380,222,0|script|EXP Chest#39|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[39] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[39], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[39]+" got here first!";
- close;
-}
-099-8,180,28,0|script|EXP Chest#40|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[40] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[40], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[40]+" got here first!";
- close;
-}
-099-8,179,146,0|script|EXP Chest#41|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[41] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[41], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[41]+" got here first!";
- close;
-}
-099-8,124,358,0|script|EXP Chest#42|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[42] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[42], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[42]+" got here first!";
- close;
-}
-099-8,239,49,0|script|EXP Chest#43|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[43] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[43], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[43]+" got here first!";
- close;
-}
-099-8,195,201,0|script|EXP Chest#44|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[44] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[44], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[44]+" got here first!";
- close;
-}
-099-8,168,265,0|script|EXP Chest#45|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[45] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[45], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[45]+" got here first!";
- close;
-}
-099-8,121,232,0|script|EXP Chest#46|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[46] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[46], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[46]+" got here first!";
- close;
-}
-099-8,370,284,0|script|EXP Chest#47|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[47] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[47], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[47]+" got here first!";
- close;
-}
-099-8,243,273,0|script|EXP Chest#48|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[48] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[48], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[48]+" got here first!";
- close;
-}
-099-8,204,203,0|script|EXP Chest#49|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[49] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[49], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[49]+" got here first!";
- close;
-}
-099-8,190,366,0|script|EXP Chest#50|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[50] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[50], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[50]+" got here first!";
- close;
-}
-099-8,25,106,0|script|EXP Chest#51|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[51] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[51], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[51]+" got here first!";
- close;
-}
-099-8,315,206,0|script|EXP Chest#52|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[52] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[52], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[52]+" got here first!";
- close;
-}
-099-8,65,293,0|script|EXP Chest#53|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[53] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[53], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[53]+" got here first!";
- close;
-}
-099-8,382,57,0|script|EXP Chest#54|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[54] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[54], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[54]+" got here first!";
- close;
-}
-099-8,117,288,0|script|EXP Chest#55|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[55] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[55], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[55]+" got here first!";
- close;
-}
-099-8,86,63,0|script|EXP Chest#56|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[56] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[56], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[56]+" got here first!";
- close;
-}
-099-8,257,212,0|script|EXP Chest#57|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[57] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[57], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[57]+" got here first!";
- close;
-}
-099-8,290,210,0|script|EXP Chest#58|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[58] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[58], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[58]+" got here first!";
- close;
-}
-099-8,118,320,0|script|EXP Chest#59|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[59] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[59], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[59]+" got here first!";
- close;
-}
-099-8,332,96,0|script|EXP Chest#60|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[60] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[60], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[60]+" got here first!";
- close;
-}
-099-8,147,33,0|script|EXP Chest#61|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[61] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[61], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[61]+" got here first!";
- close;
-}
-099-8,109,271,0|script|EXP Chest#62|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[62] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[62], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[62]+" got here first!";
- close;
-}
-099-8,217,216,0|script|EXP Chest#63|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[63] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[63], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[63]+" got here first!";
- close;
-}
-099-8,65,136,0|script|EXP Chest#64|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[64] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[64], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[64]+" got here first!";
- close;
-}
-099-8,116,45,0|script|EXP Chest#65|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[65] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[65], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[65]+" got here first!";
- close;
-}
-099-8,279,111,0|script|EXP Chest#66|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[66] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[66], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[66]+" got here first!";
- close;
-}
-099-8,98,100,0|script|EXP Chest#67|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[67] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[67], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[67]+" got here first!";
- close;
-}
-099-8,168,53,0|script|EXP Chest#68|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[68] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[68], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[68]+" got here first!";
- close;
-}
-099-8,235,353,0|script|EXP Chest#69|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[69] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[69], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[69]+" got here first!";
- close;
-}
-099-8,263,109,0|script|EXP Chest#70|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[70] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[70], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[70]+" got here first!";
- close;
-}
-099-8,226,26,0|script|EXP Chest#71|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[71] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[71], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[71]+" got here first!";
- close;
-}
-099-8,352,118,0|script|EXP Chest#72|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[72] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[72], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[72]+" got here first!";
- close;
-}
-099-8,154,270,0|script|EXP Chest#73|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[73] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[73], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[73]+" got here first!";
- close;
-}
-099-8,41,199,0|script|EXP Chest#74|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[74] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[74], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[74]+" got here first!";
- close;
-}
-099-8,208,306,0|script|EXP Chest#75|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[75] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[75], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[75]+" got here first!";
- close;
-}
-099-8,47,55,0|script|EXP Chest#76|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[76] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[76], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[76]+" got here first!";
- close;
-}
-099-8,21,142,0|script|EXP Chest#77|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[77] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[77], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[77]+" got here first!";
- close;
-}
-099-8,94,293,0|script|EXP Chest#78|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[78] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[78], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[78]+" got here first!";
- close;
-}
-099-8,232,214,0|script|EXP Chest#79|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[79] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[79], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[79]+" got here first!";
- close;
-}
-099-8,30,152,0|script|EXP Chest#80|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[80] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[80], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[80]+" got here first!";
- close;
-}
-099-8,374,319,0|script|EXP Chest#81|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[81] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[81], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[81]+" got here first!";
- close;
-}
-099-8,252,289,0|script|EXP Chest#82|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[82] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[82], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[82]+" got here first!";
- close;
-}
-099-8,218,324,0|script|EXP Chest#83|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[83] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[83], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[83]+" got here first!";
- close;
-}
-099-8,24,187,0|script|EXP Chest#84|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[84] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[84], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[84]+" got here first!";
- close;
-}
-099-8,137,65,0|script|EXP Chest#85|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[85] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[85], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[85]+" got here first!";
- close;
-}
-099-8,285,167,0|script|EXP Chest#86|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[86] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[86], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[86]+" got here first!";
- close;
-}
-099-8,154,83,0|script|EXP Chest#87|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[87] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[87], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[87]+" got here first!";
- close;
-}
-099-8,63,239,0|script|EXP Chest#88|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[88] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[88], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[88]+" got here first!";
- close;
-}
-099-8,88,156,0|script|EXP Chest#89|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[89] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[89], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[89]+" got here first!";
- close;
-}
-099-8,320,34,0|script|EXP Chest#90|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[90] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[90], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[90]+" got here first!";
- close;
-}
-099-8,99,334,0|script|EXP Chest#91|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[91] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[91], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[91]+" got here first!";
- close;
-}
-099-8,248,303,0|script|EXP Chest#92|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[92] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[92], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[92]+" got here first!";
- close;
-}
-099-8,71,59,0|script|EXP Chest#93|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[93] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[93], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[93]+" got here first!";
- close;
-}
-099-8,321,254,0|script|EXP Chest#94|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[94] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[94], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[94]+" got here first!";
- close;
-}
-099-8,165,321,0|script|EXP Chest#95|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[95] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[95], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[95]+" got here first!";
- close;
-}
-099-8,94,350,0|script|EXP Chest#96|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[96] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[96], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[96]+" got here first!";
- close;
-}
-099-8,193,265,0|script|EXP Chest#97|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[97] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[97], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[97]+" got here first!";
- close;
-}
-099-8,206,73,0|script|EXP Chest#98|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[98] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[98], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[98]+" got here first!";
- close;
-}
-099-8,62,273,0|script|EXP Chest#99|111
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- if ($DD5A_EXPCHEST$[99] != "") goto L_Claimed;
- if (#DD5A_EXPCHEST > 10) goto L_Greedy;
- mes "(You are the first player to open this chest! THE POWER IS NOW YOURS.)";
- set $DD5A_EXPCHEST$[99], strcharinfo(0);
- set #DD5A_EXPCHEST, #DD5A_EXPCHEST+1;
- getexp 200000, 10000;
- close;
-
-L_Greedy:
- mes "Don't be greedy, let someone else open them, too!";
- close;
-
-L_Claimed:
- mes "Sorry, but "+$DD5A_EXPCHEST$[99]+" got here first!";
- close;
-}
diff --git a/world/map/npc/099-8/mobs.txt b/world/map/npc/099-8/mobs.txt
deleted file mode 100644
index b46efc08..00000000
--- a/world/map/npc/099-8/mobs.txt
+++ /dev/null
@@ -1,237 +0,0 @@
-// This script controls the Keshlam Abandoned Maze
-// Part of Doomsday Event : Act 5
-
-// Monster Script Control
--|script|Keshlam Maze|32767
-{
- close;
-
-OnInit:
- goto L_Main;
-
-// They'll respawn at midday.
-OnClock1200:
- goto L_Main;
-
-L_Main:
- // Do not waste RAM/CPU if we don't need it
- if ($DOOMSDAY_TWARP)
- end;
-
- // 1 MONSTER PER 30 TILES, TOTAL 4320 MONSTERS
- // 1440 monsters of each kind
- // 360 monsters per quadrand; Center is the pillar in (201, 201)
-
- // TYPE 1141, SASQUATCH
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath1")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 20, 20, 201, 201, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath1";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath2")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 201, 20, 372, 201, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath2";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath3")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 20, 201, 201, 402, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath3";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath4")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 201, 201, 372, 402, "", 1141, 360-$@KeshlamMc, "Keshlam Maze::OnDeath4";
-
-
- // TYPE 1140, TENGU
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath5")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 20, 20, 201, 201, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath5";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath6")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 201, 20, 372, 201, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath6";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath7")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 20, 201, 201, 402, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath7";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath8")+1;
- if ($@KeshlamMc < 360)
- areamonster "099-8", 201, 201, 372, 402, "", 1140, 360-$@KeshlamMc, "Keshlam Maze::OnDeath8";
-
-
- /*
- // TYPE 1141, more SASQUATCH
- // Used to be 1143 Mana Slayer
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath9")+1;
- if ($@KeshlamMc < 300)
- areamonster "099-8", 20, 20, 201, 201, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath9";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath10")+1;
- if ($@KeshlamMc < 300)
- areamonster "099-8", 201, 20, 372, 201, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath10";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath11")+1;
- if ($@KeshlamMc < 300)
- areamonster "099-8", 20, 201, 201, 402, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath11";
-
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath12")+1;
- if ($@KeshlamMc < 300)
- areamonster "099-8", 201, 201, 372, 402, "", 1141, 300-$@KeshlamMc, "Keshlam Maze::OnDeath12";
- */
-
-
- // Maintain a minimal MANA SLAYER guarnition
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnDeath13")+1;
- if ($@KeshlamMc < 200)
- areamonster "099-8", 20, 20, 372, 402, "", 1143, 200-$@KeshlamMc, "Keshlam Maze::OnDeath13";
-
-
- // Extra Layer: The bonus layer
- // Density: 50 monsters or 0.04% of the maze
- set $@KeshlamMc, mobcount("099-8", "Keshlam Maze::OnBoss")+1;
- if ($@KeshlamMc < 40)
- areamonster "099-8", 20, 20, 360, 360, "", 1147, 40-$@KeshlamMc, "Keshlam Maze::OnBoss"; // Koyntety
-
- // Done
- set $@KeshlamMc, 0;
- stopnpctimer;
- end;
-
-// Labels
-OnDeath1:
- end;
-OnDeath2:
- end;
-OnDeath3:
- end;
-OnDeath4:
- end;
-OnDeath5:
- end;
-OnDeath6:
- end;
-OnDeath7:
- end;
-OnDeath8:
- end;
-OnDeath9:
- end;
-OnDeath10:
- end;
-OnDeath11:
- end;
-OnDeath12:
- end;
-OnDeath13:
- end;
-
-OnBoss:
- // If a player is attached, give them a reward
- getitem "TreasureKey", 1;
- getexp 50000, 0;
- end;
-}
-
-
-// Oddities
-099-8,201,201,0|script|Central Pillar#DD5|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: KESHLAM MAZE ::.";
- mes "WE KEPT POWERFUL EARTH MONSTERS HERE.";
- mes "IT WOULD BE TERRIBLE IF THE SASQUATCH ESCAPED.";
- mes "";
- mes "WHATEVER HAPPENS: DO NOT OPEN THE GATE!";
- close;
-}
-
-099-8,375,27,0|script|Northeast Pillar#DD5|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: KESHLAM MAZE ::.";
- mes ".:: :: CONTROL PANEL :: ::.";
- mes "";
- mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
- mes "Defensive Measures Level 1: ##1DEFEATED##0";
- mes "Defensive Measures Level 2: ##1DEFEATED##0";
- mes "Defensive Measures Level 3: ##2STAND BY##0";
- next;
- mes "##9The controls seems to have been destroyed!";
- mes "##9The panel says the situtation is critical.";
- mes "##9Why the final defensive measures didn't engage?";
- next;
- mes "What's happening?";
- close;
-}
-
-099-8,87,261,0|script|Southwest Pillar#DD5|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: KESHLAM MAZE ::.";
- mes ".:: :: CONTROL PANEL :: ::.";
- mes "";
- mes "West gate: ##1OPEN##0";
- mes "East gate: ##1OPEN##0";
- mes "North gate: ##1OPEN##0";
- mes "South gate: ##1OPEN##0";
- mes "";
- mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
- next;
- mes "##9The controls seems to have been destroyed!";
- next;
- mes "Where are these gates? I don't recall seeing anything like that.";
- mes "What's happening, after all?";
- close;
-}
-
-
-099-8,285,237,0|script|Southeast Pillar#DD5|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: KESHLAM MAZE ::.";
- mes ".:: :: CONTROL PANEL :: ::.";
- mes "";
- mes "Laboratory: ##1CONTACT LOST##0";
- mes "The Archives: ##1CONTACT LOST##0";
- mes "Crystal Room: ##1CONTACT LOST##0";
- mes "";
- mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
- next;
- mes "##9The controls seems to have been destroyed!";
- mes "##9I wonder where these three rooms are.";
- mes "##9What sort of research was being conducted?";
- mes "##9What is a Crystal Room? I don't saw any passage.";
- next;
- mes "What's happening?";
- close;
-}
-
-099-8,75,105,0|script|Northwest Pillar#DD5|400
-{
- // Default distance is 4 tiles - all we need
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
-
- mes ".:: KESHLAM MAZE ::.";
- mes ".:: :: STATUS REPORT PANEL :: ::.";
- mes "";
- mes "Earth Crystal: ##1NOT FOUND##0";
- mes "Security Level: ##1CRITICAL - WORLD'S EXISTENCE THREATENED##0";
- next;
- mes "##9Earth Crystal? I never heard anything about it.";
- next;
- mes "What's happening?";
- close;
-}
-
diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt
deleted file mode 100644
index eaac6f29..00000000
--- a/world/map/npc/_import.txt
+++ /dev/null
@@ -1,131 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-
-import: npc/001-1/_import.txt
-import: npc/001-2/_import.txt
-import: npc/001-3/_import.txt
-import: npc/002-1/_import.txt
-import: npc/002-2/_import.txt
-import: npc/002-3/_import.txt
-import: npc/002-4/_import.txt
-import: npc/002-5/_import.txt
-import: npc/003-1/_import.txt
-import: npc/003-4/_import.txt
-import: npc/004-1/_import.txt
-import: npc/004-3/_import.txt
-import: npc/004-4/_import.txt
-import: npc/004-5/_import.txt
-import: npc/005-3/_import.txt
-import: npc/006-1/_import.txt
-import: npc/006-2/_import.txt
-import: npc/006-3/_import.txt
-import: npc/007-1/_import.txt
-import: npc/007-2/_import.txt
-import: npc/008-1/_import.txt
-import: npc/009-1/_import.txt
-import: npc/009-2/_import.txt
-import: npc/009-3/_import.txt
-import: npc/009-4/_import.txt
-import: npc/009-5/_import.txt
-import: npc/009-6/_import.txt
-import: npc/009-7/_import.txt
-import: npc/009-8/_import.txt
-import: npc/010-1/_import.txt
-import: npc/010-2/_import.txt
-import: npc/011-1/_import.txt
-import: npc/011-3/_import.txt
-import: npc/011-4/_import.txt
-import: npc/011-6/_import.txt
-import: npc/012-1/_import.txt
-import: npc/012-3/_import.txt
-import: npc/012-4/_import.txt
-import: npc/013-1/_import.txt
-import: npc/013-2/_import.txt
-import: npc/013-3/_import.txt
-import: npc/014-1/_import.txt
-import: npc/014-3/_import.txt
-import: npc/015-1/_import.txt
-import: npc/015-3/_import.txt
-import: npc/016-1/_import.txt
-import: npc/016-2/_import.txt
-import: npc/017-1/_import.txt
-import: npc/017-2/_import.txt
-import: npc/017-3/_import.txt
-import: npc/017-4/_import.txt
-import: npc/017-9/_import.txt
-import: npc/018-1/_import.txt
-import: npc/018-2/_import.txt
-import: npc/018-3/_import.txt
-import: npc/019-1/_import.txt
-import: npc/019-3/_import.txt
-import: npc/019-4/_import.txt
-import: npc/020-1/_import.txt
-import: npc/020-2/_import.txt
-import: npc/020-3/_import.txt
-import: npc/021-3/_import.txt
-import: npc/023-1/_import.txt
-import: npc/023-2/_import.txt
-import: npc/023-3/_import.txt
-import: npc/025-1/_import.txt
-import: npc/025-3/_import.txt
-import: npc/025-4/_import.txt
-import: npc/026-1/_import.txt
-import: npc/026-2/_import.txt
-import: npc/027-1/_import.txt
-import: npc/027-2/_import.txt
-import: npc/027-3/_import.txt
-import: npc/027-4/_import.txt
-import: npc/027-5/_import.txt
-import: npc/027-6/_import.txt
-import: npc/027-7/_import.txt
-import: npc/027-8/_import.txt
-import: npc/028-1/_import.txt
-import: npc/028-3/_import.txt
-import: npc/029-1/_import.txt
-import: npc/029-2/_import.txt
-import: npc/029-3/_import.txt
-import: npc/029-4/_import.txt
-import: npc/030-1/_import.txt
-import: npc/030-2/_import.txt
-import: npc/030-3/_import.txt
-import: npc/030-4/_import.txt
-import: npc/031-1/_import.txt
-import: npc/031-2/_import.txt
-import: npc/031-3/_import.txt
-import: npc/031-4/_import.txt
-import: npc/032-3/_import.txt
-import: npc/033-1/_import.txt
-import: npc/034-1/_import.txt
-import: npc/034-2/_import.txt
-import: npc/035-2/_import.txt
-import: npc/036-2/_import.txt
-import: npc/041-1/_import.txt
-import: npc/042-1/_import.txt
-import: npc/043-1/_import.txt
-import: npc/043-3/_import.txt
-import: npc/043-4/_import.txt
-import: npc/045-1/_import.txt
-import: npc/046-1/_import.txt
-import: npc/046-3/_import.txt
-import: npc/047-1/_import.txt
-import: npc/047-3/_import.txt
-import: npc/048-2/_import.txt
-import: npc/051-1/_import.txt
-import: npc/051-3/_import.txt
-import: npc/052-1/_import.txt
-import: npc/052-2/_import.txt
-import: npc/055-1/_import.txt
-import: npc/055-3/_import.txt
-import: npc/056-2/_import.txt
-import: npc/057-1/_import.txt
-import: npc/069-2/_import.txt
-import: npc/070-1/_import.txt
-import: npc/070-3/_import.txt
-import: npc/099-1/_import.txt
-import: npc/099-2/_import.txt
-import: npc/099-3/_import.txt
-import: npc/099-4/_import.txt
-import: npc/099-5/_import.txt
-import: npc/099-6/_import.txt
-import: npc/099-7/_import.txt
-import: npc/099-8/_import.txt
-import: npc/botcheck/_import.txt
diff --git a/world/map/npc/annuals/check_time.txt b/world/map/npc/annuals/check_time.txt
deleted file mode 100644
index 1d37ecbc..00000000
--- a/world/map/npc/annuals/check_time.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// check a date
-// Wushin
-// $@start_month
-// $@end_month
-// $@start_day
-// $@end_day
-// $@reward_start_month
-// $@reward_start_day
-
-function|script|GetEventTime
-{
- set $@month, gettime(6);
- set $@day, gettime(5);
-
- if ($@start_month > $@end_month)
- goto L_YearWrap;
- goto L_Normal;
-
-L_Normal:
- if(($@month < $@start_month)
- || ($@month == $@start_month && $@day < $@start_day))
- goto L_NoEventTime;
- if(($@month > $@end_month)
- || ($@month == $@end_month && $@day > $@end_day))
- goto L_NoEventTime;
- if(($@month > $@reward_start_month)
- || ($@month == $@reward_start_month && $@day >= $@reward_start_day))
- goto L_RewardTime;
- goto L_EventTime;
-
-L_YearWrap:
- if(($@month == $@reward_start_month && $@day >= $@reward_start_day
- && ($@day <= $@end_day && $@reward_start_month == $@end_month
- || !($@reward_start_month == $@end_month)))
- || ($@month == $@end_month && $@day <= $@end_day
- && ($@day >= $@reward_start_day && $@reward_start_month == $@end_month
- || !($@reward_start_month == $@end_month)))
- || ($@month < $@end_month && $@month > $@reward_start_month))
- goto L_RewardTime;
- if (($@month >= $@start_month && $@day >= $@start_day) || ($@month <= $@end_month && $@day <= $@end_day))
- goto L_EventTime;
- goto L_NoEventTime;
-
-L_NoEventTime:
- set $@event_time, 0;
- return;
-
-L_EventTime:
- set $@event_time, 1;
- return;
-
-L_RewardTime:
- set $@event_time, 2;
- return;
-}
diff --git a/world/map/npc/annuals/fathertime.txt b/world/map/npc/annuals/fathertime.txt
deleted file mode 100644
index 29406f63..00000000
--- a/world/map/npc/annuals/fathertime.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-// Annual Timer
-// One timer to check to enable all holiday events
-017-9,26,28,0|script|#HolidayConfig|32767
-{
- end;
-
-OnInit:
- if (debug >= 2) end;
- donpcevent strnpcinfo(0) + "::OnTimer20000";
- end;
-
-OnTimer20000:
- donpcevent "#XmasConfig::OnCommandRestartQuest";
- donpcevent "#HalloweenConfig::OnCommandRestartQuest";
- donpcevent "Easter Eggs::OnCheckEaster";
- initnpctimer;
- end;
-}
diff --git a/world/map/npc/annuals/halloween/config.txt b/world/map/npc/annuals/halloween/config.txt
deleted file mode 100644
index ffe9dfbe..00000000
--- a/world/map/npc/annuals/halloween/config.txt
+++ /dev/null
@@ -1,361 +0,0 @@
-// Halloween Annual
-// Authors: alastrim, enchilado, o11c, wushin
-// This file initializes global constants, which includes dialog.
-
-// Event Configuration:
-// Generic stuff
-// $@halloween_start_day = the first day in October the quest can be done
-// $@halloween_year = the year this quest is activated, for event necromancers
-// $@halloween_memory_count = Number of masks each NPC remembers
-// $@halloween_min_level = Minimum level to go trick-or-treating
-
-// Global stuff
-// $@halloween_big_reward = The main reward randomly given, usually after the counter has reached 7-10
-// $@halloween_sweets = Array with all the sweets to be given as treats
-// $@halloween_sweets_num = Size of that array
-// $@halloween_mask_IDs = Array with the IDs of all the masks that cover your face + The Scary Axehat
-// $@halloween_scare_factors = Array with the basic scare factor of each mask
-// 678 Noh Mask 2
-// 679 Demon Mask 4
-// 1221 Skull Mask 4
-// 634 Face Mask 4
-// 615 Pumpkin Helmet 2
-// 639 Crusade Helmet 3
-// 769 Guy Fawkes Mask 2
-// 801 Pinkie Helmet 2
-// 1218 Paper Bag 1
-// 1276 Opera Mask 3
-// 1277 Jester Mask 2
-// 1279 Goblin Mask 4
-// 4027 Yeti Mask 4
-
-// Per-NPC stuff
-// $@halloween_npc_<name> = constants for @halloween_npc_id, the index into the array
-// $@halloween_npc_names$ = Array with all NPC names inside brackets, to be used in the function
-// $@halloween_greetings$ = Array with all the NPC initial greetings when you "trick or treat" them
-// $@halloween_trick_notscary$ = Array with the less scary menu options
-// $@halloween_react_notscary$ = Array with all the reactions to the less scary menu options
-// $@halloween_trick_scary$ = Array with scary menu options
-// $@halloween_react_scary$ = Array with all the reactions to the scary menu options
-// $@halloween_trick_veryscary$ = Array with the most scary menu options
-// $@halloween_react_veryscary$ = Array with all the reactions to the very scary menu options
-
-// In the appropriate NPCs, do something like:
-//+ if ($@halloween_time)
-//+ goto L_Halloween;
-//+ goto L_Main;
-//+
-//+L_Halloween:
-//+ set @halloween_npc_id, $@halloween_npc_eurni;
-//+ callfunc "TrickOrTreat";
-//+ goto L_Main;
-//+
-//+L_Main:
-
-// Variables:
-// $@halloween_maskmemory = Sliced Array containing the record of the last masks used to trick or treat each NPC.
-// @halloween_npc_id = NPC id, this variable is set when calling this function by an NPC
-// HALLOWEENTIME = Permanent variable used to control your progress in the quest.
-// The high bits are used to keep track of the NPCs you already tricked while showing your face.
-// The low bits are used to keep track of how many times you've gotten treats.
-// Currently, the vague plan is 16 for each, but we may need to use this variable for the second part of the quest.
-// HALLOWEENYEAR = Keys the player to the year so the annual can be redone.
-
-// !!! IMPORTANT NOTE: a maximum of 14 NPCs can be used for this quest !!!
-// HALLOWEENTIME
-// Byte 0 + 1: Karma (65535)
-// BIT 16: Big Reward
-// BIT 17: Charm Reward
-// BIT 18: NPC #13
-// BIT 19: NPC #12
-// BIT 20: NPC #11
-// BIT 21: NPC #10
-// BIT 22: NPC #9
-// BIT 23: NPC #8
-// BIT 24: NPC #7
-// BIT 25: NPC #6
-// BIT 26: NPC #5
-// BIT 27: NPC #4
-// BIT 28: NPC #3
-// BIT 29: NPC #2
-// BIT 30: NPC #1
-// BIT 31: NPC #0
-
--|script|#HalloweenConfig|32767
-{
- end;
-
-OnCommandRestartQuest:
- goto L_Main;
-
-OnInit:
- goto L_Main;
-
-L_Main:
- // Halloween Key Identifier Set through Botcheck Debug
- if(!($HALLOWEEN_TIME_KEY) || (getarraysize($HALLOWEEN_TIME_KEY) != 6))
- setarray $HALLOWEEN_TIME_KEY, 10,10,11,24,2,gettime(7);
- if(($HALLOWEEN_TIME_KEY[0] == 0) || ($HALLOWEEN_TIME_KEY[0] > 12))
- goto L_HalloweenError;
- if(($HALLOWEEN_TIME_KEY[1] == 0) || ($HALLOWEEN_TIME_KEY[1] > 12))
- goto L_HalloweenError;
- if(($HALLOWEEN_TIME_KEY[2] == 0) || ($HALLOWEEN_TIME_KEY[2] > 12))
- goto L_HalloweenError;
- if(($HALLOWEEN_TIME_KEY[3] == 0) || ($HALLOWEEN_TIME_KEY[3] > 31))
- goto L_HalloweenError;
- if(($HALLOWEEN_TIME_KEY[4] == 0) || ($HALLOWEEN_TIME_KEY[4] > 31))
- goto L_HalloweenError;
- if($HALLOWEEN_TIME_KEY[5] == 0)
- goto L_HalloweenError;
-
- // Event Runs until Reward Period.
- // Month Start/End
- set $@halloween_start_month, $HALLOWEEN_TIME_KEY[0];
- set $@halloween_reward_start_month, $HALLOWEEN_TIME_KEY[1];
- set $@halloween_end_month, $HALLOWEEN_TIME_KEY[2];
-
- // Reward Day Start/End
- set $@halloween_reward_start_day, $HALLOWEEN_TIME_KEY[3];
- set $@halloween_reward_end_day, $HALLOWEEN_TIME_KEY[4];
-
- // Time Settings
- set $@halloween_no_event_time, 0;
- set $@halloween_event_time, 1;
- set $@halloween_reward_time, 2;
-
- // How many, maximum is 8
- set $@halloween_memory_count, 8;
- // Level to go trick-or-treating
- set $@halloween_min_level, 10;
-
- // Number of trick and treats completed to get charm.
- set $@halloween_charm_count, 10;
- set $@halloween_got_charm_reward, (1 << 17);
- setarray $@halloween_big_reward, 905, 1175;
- set $@halloween_got_big_reward, (1 << 16);
- setarray $@halloween_sweets,
- 534, // OrangeCupcake
- 737, // ChocolateCake
- 510, // Candy
- 513, // Cake
- 509, // ChocolateBar
- 519, // CherryCake
- 736, // WhiteCake
- 738, // OrangeCake
- 739, // AppleCake
- 3006, // TonoriDelight
- 3007, // Marshmallow
- 3009, // JellySkull
- 3010, // CandyPumpkin
- 838, // CranberryLollipop
- 839, // GrapeLollipop
- 840; // OrangeLollipop
- set $@halloween_sweets_num, getarraysize($@halloween_sweets);
-
- setarray $@halloween_mask_IDs, 678, 679, 1221, 634, 615, 639, 769, 801, 1218, 1276, 1277, 1279, 4027;
- setarray $@halloween_scare_factors, 2, 4, 4, 4, 2, 3, 2, 2, 1, 3, 2, 4, 4;
-
- if (getarraysize($@halloween_mask_IDs) != getarraysize($@halloween_scare_factors))
- goto L_HalloweenError;
- // temporary counter
- set $@n, 0;
-
- set $@halloween_npc_caretaker, $@n;
- set $@halloween_npc_names$[$@n], "[Caretaker]";
- set $@halloween_greetings$[$@n], "\"Alright, come on then. Show me your trick.\"";
- set $@halloween_trick_notscary$[$@n], "Trick? You must have misheard me. I've come because the Government needs to build a road through your house.";
- set $@halloween_react_notscary$[$@n], "\"And?\"";
- set $@halloween_trick_scary$[$@n], "You look pretty deceased to me, old man. Undead must die! Yaah!";
- set $@halloween_react_scary$[$@n], "\"Now listen here, I'm as alive as you - oh. Say, that was a good trick!\"";
- set $@halloween_trick_veryscary$[$@n], "Your wife... she's - she's - she's DEAD!";
- set $@halloween_react_veryscary$[$@n], "\"But... I live here! My wife l... is dead here. You can't - oh. I DIDN'T mishear you. You really had me fooled!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_eurni, $@n;
- set $@halloween_npc_names$[$@n], "[Eurni the Surgeon]";
- set $@halloween_greetings$[$@n], "\"Oh, right.\"";
- set $@halloween_trick_notscary$[$@n], "I paid good money for your services, and when I get home I find that now I'm not a man OR a woman...";
- set $@halloween_react_notscary$[$@n], "\"Heheh, sucks, buddy. But there's always a risk.\"";
- set $@halloween_trick_scary$[$@n], "Look out! A scorpion!";
- set $@halloween_react_scary$[$@n], "\"Where? Darn things, I think they're what keep scaring away my customers.\"";
- set $@halloween_trick_veryscary$[$@n], "I know about your hobby of performing numerous sex changes on yourself.";
- set $@halloween_react_veryscary$[$@n], "\"Shut up! Look, will you hold your tongue if I give you more treats...?\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_george, $@n;
- set $@halloween_npc_names$[$@n], "[George the Pirate]";
- set $@halloween_greetings$[$@n], "\"Shiver me timbers! What do ye mean?\"";
- set $@halloween_trick_notscary$[$@n], "Well... I do a trick, and then... you give me a treat...";
- set $@halloween_react_notscary$[$@n], "\"Arrrrh, I knew what ye meant, to be sure! I were just kidding with ye, pretending to be a crazy old pirate! Arrrrh!\"";
- set $@halloween_trick_scary$[$@n], "Your eyepatch is on the wrong eye!";
- set $@halloween_react_scary$[$@n], "\"Arrrrh, so it is! Ta for pointing it out, mate - wait, no it isn't! Harhar, what a good trick!\"";
- set $@halloween_trick_veryscary$[$@n], "By the powers, ye're a daft landlubber to be sure, ye barnacle-ridden swab!";
- set $@halloween_react_veryscary$[$@n], "\"Arrrrh, ye scurvy dog! I'm sure my first mate will return with the ship eventually.\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_inac, $@n;
- set $@halloween_npc_names$[$@n], "[Inac]";
- set $@halloween_greetings$[$@n], "\"Oh, yes?\"";
- set $@halloween_trick_notscary$[$@n], "Yes, we monsters moved into the tunnels... and now we're coming out... for revenge!";
- set $@halloween_react_notscary$[$@n], "\"Haha! That's the worse trick I've seen today.\"";
- set $@halloween_trick_scary$[$@n], "One of those monsters you mentioned is crawling out of the well!";
- set $@halloween_react_scary$[$@n], "\"He IS? Where!? Aah! Oh. You were just tricking, right? Hahaha, that was good, I really believed you.\"";
- set $@halloween_trick_veryscary$[$@n], "Yeah, but it's all fossil water. One day it's gonna dry up!";
- set $@halloween_react_veryscary$[$@n], "\"Fossil water? You mean it's turned to STONE? But you can't drink - oh... you were just tricking, right? You WEREN'T? Aaaah!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_kfahr, $@n;
- set $@halloween_npc_names$[$@n], "[Kfahr the Warrior]";
- set $@halloween_greetings$[$@n], "\"Ah, yes!\" He rubs his hands. \"Trick away, then!\"";
- set $@halloween_trick_notscary$[$@n], "Meh... I'm only trick-or-treating you to avoid listening to your BORING stories.";
- set $@halloween_react_notscary$[$@n], "\"Boring?\" He grins. \"You must be mistaking me for someone else.\"";
- set $@halloween_trick_scary$[$@n], "Did you hear the bad news already? They made up a law prohibiting to serve alcoholic drinks! That means no more beer!";
- set $@halloween_react_scary$[$@n], "\"What? But- but- why do they- oh, you tricked me. I was about to really get worried for a moment.\"";
- set $@halloween_trick_veryscary$[$@n], "Have you heard? Tulimshar was destroyed by a giant Desert Worm!";
- set $@halloween_react_veryscary$[$@n], "\"What!?\" Kfahr stares. \"And no one called for me? This is appalling! But - what? That was your trick? Hm, nice one. You almost had me fooled!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_nurse, $@n;
- set $@halloween_npc_names$[$@n], "[Nurse]";
- set $@halloween_greetings$[$@n], "\"I don't know why I let the Mayor trick me into this... well, go on then.\"";
- set $@halloween_trick_notscary$[$@n], "I ate too much Hallowe'en candy, now I'm sick!";
- set $@halloween_react_notscary$[$@n], "\"Well, no one's to blame but yourself, you know. Just make sure you don't eat any more.\"";
- set $@halloween_trick_scary$[$@n], "Hurnscald has been struck by plague! You must come and tend to the dying!";
- set $@halloween_react_scary$[$@n], "\"But I don't know how to deal with plague! Oh no! You must get the Doctor! Unless... you were just tricking me! Whew, that's a relief!\"";
- set $@halloween_trick_veryscary$[$@n], "The Doctor asked me to tell you that he doesn't want to see you any more.";
- set $@halloween_react_veryscary$[$@n], "\"What? But we were getting it on so well. I mean, getting on so well! Oh... that was your trick! Dear me, I believed you!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_pachua, $@n;
- set $@halloween_npc_names$[$@n], "[Chief Pachua]";
- set $@halloween_greetings$[$@n], "\"Ah, the strange custom the Government man told me about.\"";
- set $@halloween_trick_notscary$[$@n], "Look out! A scorpion!";
- set $@halloween_react_notscary$[$@n], "\"Don't mind him, he won't hurt you. Er... so I give you sweets now, or what?\"";
- set $@halloween_trick_scary$[$@n], "Yes, the ritual giving of treats... LOTS of treats... or else!";
- set $@halloween_react_scary$[$@n], "\"Alright, here you go.\"";
- set $@halloween_trick_veryscary$[$@n], "Yes, the ritual giving of treats followed by the sacrifice of the treat-giver...";
- set $@halloween_react_veryscary$[$@n], "\"I do like a good sacrifice, but less so if it's me! I'll give you extra sweets if you forget the sacrifice.\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_yanis, $@n;
- set $@halloween_npc_names$[$@n], "[Yanis]";
- set $@halloween_greetings$[$@n], "\"I am employed by the Tonori Government, make sure you abide the regulations we wrote down for Trick-or-Treaters this year...\"";
- set $@halloween_trick_notscary$[$@n], "Of course I will... not!";
- set $@halloween_react_notscary$[$@n], "\"Hm!\"";
- set $@halloween_trick_scary$[$@n], "Regulations, smegulations. The Tonori Government can go suck a lollipop for all I care!";
- set $@halloween_react_scary$[$@n], "\"!? How dare you - oh, that was your trick! You did have me worried for a moment...\"";
- set $@halloween_trick_veryscary$[$@n], "What regulations?";
- set $@halloween_react_veryscary$[$@n], "\"You mean you haven't even READ - I don't believe - this is ghastly - I - oh... that was your trick... gosh, I believed you for a minute! I thought you really hadn't read them!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_vincent, $@n;
- set $@halloween_npc_names$[$@n], "[Vincent]";
- set $@halloween_greetings$[$@n], "\"Ooh, okay! Trick away!\"";
- set $@halloween_trick_notscary$[$@n], "Look out! A scorpion!";
- set $@halloween_react_notscary$[$@n], "\"They're everywhere in this desert! Don't worry about them.\"";
- set $@halloween_trick_scary$[$@n], "Hey, that action figure you're building just CAME TO LIFE!";
- set $@halloween_react_scary$[$@n], "\"Really? Cool! Where? What? You were tricking me? WAAAH!\"";
- set $@halloween_trick_veryscary$[$@n], "Wow, this is a neat action figure! Haha, check out its moves! Oops! Never mind, I'm sure it'll glue back on.";
- set $@halloween_react_veryscary$[$@n], "\"My Bug Leg action figure! You broke it!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_weellos, $@n;
- set $@halloween_npc_names$[$@n], "[Weellos]";
- set $@halloween_greetings$[$@n], "\"Trick me, then!\"";
- set $@halloween_trick_notscary$[$@n], "Look out! A scorpion!";
- set $@halloween_react_notscary$[$@n], "\"Pesky things, I know, but they're everywhere around here...\"";
- set $@halloween_trick_scary$[$@n], "Actually, it's a fake. It was built just ten years ago.";
- set $@halloween_react_scary$[$@n], "\"No! But I've read all the accounts... oh, haha! Very funny!\"";
- set $@halloween_trick_veryscary$[$@n], "They say the earthquake ruined the foundations of this building, and that it's going to fall down.";
- set $@halloween_react_veryscary$[$@n], "\"B-but it's one of the oldest buildings around! And... wait, I just remembered that it was designed to be earthquake-proof. You were tricking me!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_zack, $@n;
- set $@halloween_npc_names$[$@n], "[Zack]";
- set $@halloween_greetings$[$@n], "\"I thought no one would find me down here, but I'm glad I was wrong! Let's see your trick, then.\"";
- set $@halloween_trick_notscary$[$@n], "You think this is something to do with Hallowe'en? Hands up!";
- set $@halloween_react_notscary$[$@n], "\"Heh... That was ok.\"";
- set $@halloween_trick_scary$[$@n], "And now that I've found you, you die!";
- set $@halloween_react_scary$[$@n], "\"Aah! What did I do? Oh - wait - I see! That was a good one!\"";
- set $@halloween_trick_veryscary$[$@n], "Yes, I have found you. After all these years.";
- set $@halloween_react_veryscary$[$@n], "\"Uncle Henry? But how, I covered my tracks so well! I never told anyone that - wait... that was your trick! You had me worried for a minute!\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_kimarr, $@n;
- set $@halloween_npc_names$[$@n], "[Kimarr]";
- set $@halloween_greetings$[$@n], "\"Many have tried to scare me, all have failed. Try your best, but the frozen wastes contain all manner of horrors.\"";
- set $@halloween_trick_notscary$[$@n], "Look out Yetis!";
- set $@halloween_react_notscary$[$@n], "\"You will have to do better then that.\"";
- set $@halloween_trick_scary$[$@n], "Hrmm Is that your wife calling you?";
- set $@halloween_react_scary$[$@n], "\"What? You haven't se... wait a second. Ok that was good.\"";
- set $@halloween_trick_veryscary$[$@n], "The Kaizeian government declared fluffies an endangered species.";
- set $@halloween_react_veryscary$[$@n], "\"NOooOOOooo!!! The Hunt!!! ... wait a second, you city folk are slick.\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_nikolai, $@n;
- set $@halloween_npc_names$[$@n], "[Nikolai]";
- set $@halloween_greetings$[$@n], "\"Let us see if you are scarier then Kfahr's Fairy Tales.\"";
- set $@halloween_trick_notscary$[$@n], "Your going over their to the store.";
- set $@halloween_react_notscary$[$@n], "\"*You're* *there* Ugh, thats more annoying then scary.\"";
- set $@halloween_trick_scary$[$@n], "Whats White, Blue and slimey? I don't know either but it's right behind you.";
- set $@halloween_react_scary$[$@n], "\"More Slimes, Oh no the books again. O you tricked me, good one.\"";
- set $@halloween_trick_veryscary$[$@n], "I hope you don't mind I used some of this kindling you have on the shelves to start a fire.";
- set $@halloween_react_veryscary$[$@n], "\"AHHHHH!!!! You burned our books!!! *GAH* ... *Eye Twitch*\"";
-
- set $@n, $@n + 1;
-
- set $@halloween_npc_vellamo, $@n;
- set $@halloween_npc_names$[$@n], "[Vellamo]";
- set $@halloween_greetings$[$@n], "\"Ahh yes, more candy related ritual.\"";
- set $@halloween_trick_notscary$[$@n], "Candy? No, I want Parsley.";
- set $@halloween_react_notscary$[$@n], "\"Parsley? is this some kind of monster? I'm not getting this scare at all\"";
- set $@halloween_trick_scary$[$@n], "Chief Warrick says he needs the candy inventory by end of day.";
- set $@halloween_react_scary$[$@n], "\"Ahh, no! I forgot to put a cover sheet on my Candy Production and Storage report.\"";
- set $@halloween_trick_veryscary$[$@n], "I'm sorry, but your doctor says your diabetic.";
- set $@halloween_react_veryscary$[$@n], "\"Darkest day of my life, blacker then the darkest chocolate.\"";
-
- set $@halloween_num_npcs, $@n + 1;
-
- set $@n, 0;
-
- // Age to go trick-or-treating (1 week before the start)
- if ((gettime(6) >= $@halloween_start_month) || (gettime(6) <= $@halloween_end_month))
- set $@halloween_min_age, ((gettime(5) + 7)*86400);
- if (gettime(6) == $@halloween_reward_start_month)
- set $@halloween_min_age, ((gettime(5) + 38)*86400);
-
- set $@start_month, $@halloween_start_month;
- set $@end_month, $@halloween_end_month;
- set $@start_day, 1;
- set $@end_day, $@halloween_reward_end_day;
- set $@reward_start_month, $@halloween_reward_start_month;
- set $@reward_start_day, $@halloween_reward_start_day;
-
- callfunc "GetEventTime";
- set $@halloween_time, $@event_time;
-
- if($@halloween_time == 0 && $HALLOWEEN_TIME_KEY[5] < gettime(7))
- setarray $HALLOWEEN_TIME_KEY, $HALLOWEEN_TIME_KEY[0],$HALLOWEEN_TIME_KEY[1],$HALLOWEEN_TIME_KEY[2],$HALLOWEEN_TIME_KEY[3],$HALLOWEEN_TIME_KEY[4],gettime(7);
- goto L_Return;
-
-L_Return:
- callfunc "SpawnMunro";
- callfunc "ReplaceTrees";
- end;
-
-L_HalloweenError:
- debugmes "Halloween is Dead Jim.";
- mapexit;
-}
diff --git a/world/map/npc/annuals/halloween/debug.txt b/world/map/npc/annuals/halloween/debug.txt
deleted file mode 100644
index b9ca8ac3..00000000
--- a/world/map/npc/annuals/halloween/debug.txt
+++ /dev/null
@@ -1,147 +0,0 @@
-// Halloween Debug
-// Author: Wushin
-
-function|script|HalloweenDebug
-{
- if(debug)
- goto L_Debug;
- goto L_Live;
-
-L_Live:
- menu
- "Debug Time", L_DebugTime,
- "Set Old Event Flag.", L_LastReset,
- "Halloween Time Key Change.", L_HalloweenTimeKey,
- "Reset NPC's mask memory", L_ResetMask,
- "Summon Tormenta", L_Tormenta,
- "Nothing.", L_Close;
-
-L_Debug:
- menu
- "Debug Time", L_DebugTime,
- "Set Old Event Flag.", L_LastReset,
- "Halloween Time Key Change.", L_HalloweenTimeKey,
- "Quest State", L_QuestState,
- "Set NPC trick or treat flag", L_SetTrickOrTreats,
- "Reset my quest state", L_ResetMe,
- "Reset NPC's mask memory", L_ResetMask,
- "Summon Tormenta", L_Tormenta,
- "Nothing.", L_Close;
-
-L_DebugTime:
- mes "--Sever--";
- mes "Event State: " + $@halloween_time;
- mes "Event Start" + $HALLOWEEN_TIME_KEY[0] + "/1";
- mes "Reward Start: " + $HALLOWEEN_TIME_KEY[1] + "/" + $HALLOWEEN_TIME_KEY[3];
- mes "Event End: " + $HALLOWEEN_TIME_KEY[2] + "/" + $HALLOWEEN_TIME_KEY[4];
- mes "Event Time Key (year (CCYY)): " + $HALLOWEEN_TIME_KEY[5];
- next;
- goto L_Debug;
-
-L_LastReset:
- set HALLOWEENTIME, 255;
- set HALLOWEENYEAR, 2012;
- goto L_Debug;
-
-L_HalloweenTimeKey:
- mes "Halloween Time Key Change.";
- mes "Start Month?";
- input @halloween_time_key_smonth;
- if((@halloween_time_key_smonth == 0) || (@halloween_time_key_smonth > 12))
- goto L_HalloweenError;
- mes "Reward Start Month?";
- input @halloween_time_key_srmonth;
- if((@halloween_time_key_srmonth == 0) || (@halloween_time_key_srmonth > 12))
- goto L_HalloweenError;
- mes "End Month?";
- input @halloween_time_key_emonth;
- if((@halloween_time_key_emonth == 0) || (@halloween_time_key_emonth > 12))
- goto L_HalloweenError;
- mes "Reward Start Day?";
- input @halloween_time_key_rsday;
- if((@halloween_time_key_rsday == 0) || (@halloween_time_key_rsday > 31))
- goto L_HalloweenError;
- mes "Reward End Day?";
- input @halloween_time_key_reday;
- if((@halloween_time_key_reday == 0) || (@halloween_time_key_reday > 31))
- goto L_HalloweenError;
- mes "Time Key (CCYY) ";
- input @halloween_time_key_year;
- goto L_SetNewKey;
-
-L_HalloweenError:
- mes "Incorrect Entry. Try again.";
- next;
- goto L_Debug;
-
-L_SetNewKey:
- setarray $HALLOWEEN_TIME_KEY, @halloween_time_key_smonth, @halloween_time_key_srmonth, @halloween_time_key_emonth, @halloween_time_key_rsday, @halloween_time_key_reday, @halloween_time_key_year;
- donpcevent "#HalloweenConfig::OnCommandRestartQuest";
- goto L_Debug;
-
-L_QuestState:
- mes "Karma: " + (HALLOWEENTIME & 65535);
- set @big_reward_status$, " No.";
- if (HALLOWEENTIME & $@halloween_got_big_reward)
- set @big_reward_status$, " Yes.";
- mes "Big Reward: " + @big_reward_status$;
- set @charm_reward_status$, " No.";
- if (HALLOWEENTIME & $@halloween_got_charm_reward)
- set @charm_reward_status$, " Yes.";
- mes "Charm Reward:" + @charm_reward_status$;
- set @npc_check_loop, 0;
- goto L_NpcCheckLoop;
-
-L_NpcCheckLoop:
- set @display_mes$, "NPC ID " + @npc_check_loop + ":" + $@halloween_npc_names$[@npc_check_loop];
- set @npc_status$, " Needed";
- if (HALLOWEENTIME & (1 << (31 - @npc_check_loop)))
- set @npc_status$, " Complete";
- set @display_mes$, @display_mes$ + @npc_status$;
- mes @display_mes$;
- set @display_mes$, "";
- goto L_NpcCheckInc;
-
-L_NpcCheckInc:
- set @npc_check_loop, (@npc_check_loop + 1);
- if (@npc_check_loop >= getarraysize($@halloween_npc_names$))
- goto L_TrickOrTreatCount;
- goto L_NpcCheckLoop;
-
-L_TrickOrTreatCount:
- callfunc "TrickOrTreatTally";
- mes @npc_tally + " out of 14";
- next;
- goto L_Debug;
-
-L_SetTrickOrTreats:
- mes "Enter NPC to set";
- input @halloween_npc_id;
- set HALLOWEENTIME, HALLOWEENTIME | (1 << (31 - @halloween_npc_id));
- goto L_Debug;
-
-L_ResetMe:
- set HALLOWEENTIME, 0;
- set HALLOWEENYEAR, $HALLOWEEN_TIME_KEY[5];
- goto L_Debug;
-
-L_ResetMask:
- mes "Enter NPC to reset:";
- input @halloween_npc_id;
- set $@halloween_maskmemory[8 * @halloween_npc_id], 0;
- goto L_Debug;
-
-L_Tormenta:
- donpcevent "Munro::OnTormenta";
- goto L_Close;
-
-L_Close:
- set @tmp, 0;
- set @mask, 0;
- set @karma, 0;
- set @loop, 0;
- set @menu, 0;
- set @halloween_npc_id, 0;
- close2;
- return;
-}
diff --git a/world/map/npc/annuals/halloween/doomsday.txt b/world/map/npc/annuals/halloween/doomsday.txt
deleted file mode 100644
index 1967f532..00000000
--- a/world/map/npc/annuals/halloween/doomsday.txt
+++ /dev/null
@@ -1,743 +0,0 @@
-// Evol script
-// Year: 2020
-//
-// Controls Doomsday Event - Vanilla Jande's Rescue (Halloween 2020)
-//
-// Operates: 057-1 070-1 003-1
-// See also: npc/annuals/halloween/munro.txt
-// Variables:
-// $@HW2020_SLAIN, array
-// $@HW2020_TIMER, array
-// $@HW2020_HOCUS, integer
-// (0 - Not yet, 1 - Cutscene, 2 - Ambushed, 3 - Completing, 4 - Completed)
-// $@HW2020_CNT, temporary int
-// $@JACKOID, temporary int
-// $@UnderMc, temporary int
-// @TulimMc, temporary int
-// @JACKOID, temporary int
-// @mobID, temporary int
-// @mobAM, temporary int
-
-////////////////////////////////////////////////
-// JackO Central Processing Core ($@JACKOID)
-function|script|HocusJackO
-{
- if (!$@HW2020_SLAIN[$@JACKOID])
- goto L_Return;
-
- if ($@HW2020_TIMER[$@JACKOID] < gettimetick(2))
- goto L_Expired;
-
- // Count the JackO
- set $@HW2020_CNT, $@HW2020_CNT+1;
- set $@JACKOID, 0;
- return;
-
-// Time expired!
-L_Expired:
- set $@HW2020_SLAIN[$@JACKOID], 0;
- // Re-enable the NPC
- if ($@JACKOID == 0)
- enablenpc "JackO#Tybalt";
- if ($@JACKOID == 1)
- enablenpc "JackO#Nicolas";
- if ($@JACKOID == 2)
- enablenpc "JackO#Elanore";
- if ($@JACKOID == 3)
- enablenpc "JackO#Aisha";
- if ($@JACKOID == 4)
- enablenpc "JackO#Nina";
- if ($@JACKOID == 5)
- enablenpc "JackO#Ian";
- if ($@JACKOID == 6)
- enablenpc "JackO#Luca";
- if ($@JACKOID == 7)
- enablenpc "JackO#Ekinu";
- if ($@JACKOID == 8)
- enablenpc "JackO#Ryan";
- if ($@JACKOID == 9)
- enablenpc "JackO#Neko";
- if ($@JACKOID == 10)
- enablenpc "JackO#Ishi";
- if ($@JACKOID == 11)
- enablenpc "JackO#Sandra";
- if ($@JACKOID == 12)
- enablenpc "JackO#Vincent";
- set $@JACKOID, 0;
- return;
-
-L_Return:
- set $@JACKOID, 0;
- return;
-}
-
-////////////////////////////////////////////////
-// Monster Script Control
--|script|HW2020 Mobs|32767
-{
- close;
-
-OnInit:
- goto L_Main;
-
-// They'll respawn at midday.
-OnClock1200:
- goto L_Main;
-
-L_Main:
- // Do not waste RAM/CPU if we don't need it
- if ($DOOMSDAY != 3 || !$@halloween_time)
- end;
- if ($DOOMSDAY_TJANDE || !$DOOMSDAY_TWARP)
- end;
-
- /////////////////////////////////////////////////////////////////////////
- // Underworld Controller
-
- // TYPE 1141, SASQUATCH
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath1")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 20, 20, 75, 100, "", 1141, 20-$@UnderMc, "HW2020 Mobs::OnDeath1";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath2")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 77, 20, 127, 100, "", 1141, 20-$@UnderMc, "HW2020 Mobs::OnDeath2";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath3")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 130, 20, 170, 100, "", 1141, 20-$@UnderMc, "HW2020 Mobs::OnDeath3";
-
- // TYPE 1140, TENGU
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath4")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 20, 20, 75, 100, "", 1140, 20-$@UnderMc, "HW2020 Mobs::OnDeath4";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath5")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 77, 20, 127, 100, "", 1140, 20-$@UnderMc, "HW2020 Mobs::OnDeath5";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath6")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 130, 20, 170, 100, "", 1140, 20-$@UnderMc, "HW2020 Mobs::OnDeath6";
-
- // TYPE 1143, SLAYER
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath7")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 20, 20, 75, 100, "", 1143, 20-$@UnderMc, "HW2020 Mobs::OnDeath7";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath8")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 77, 20, 127, 100, "", 1143, 20-$@UnderMc, "HW2020 Mobs::OnDeath8";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath9")+1;
- if ($@UnderMc < 20)
- areamonster "070-1", 130, 20, 170, 100, "", 1143, 20-$@UnderMc, "HW2020 Mobs::OnDeath9";
-
- // GUARDIANS
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath10")+1;
- if ($@UnderMc < 3)
- areamonster "070-1", 132, 30, 140, 36, "", 1147, 3-$@UnderMc, "HW2020 Mobs::OnDeath10";
-
- set $@UnderMc, mobcount("070-1", "HW2020 Mobs::OnDeath11")+1;
- if ($@UnderMc < 1)
- areamonster "070-1", 134, 32, 135, 34, "", 1146, 1, "HW2020 Mobs::OnDeath10";
-
- /////////////////////////////////////////////////////////////////////////
- // Tulimshar Controller
-
- // Done
- set $@UnderMc, 0;
- end;
-
-// Labels
-OnDeath0:
- end;
-OnDeath1:
- end;
-OnDeath2:
- end;
-OnDeath3:
- end;
-OnDeath4:
- end;
-OnDeath5:
- end;
-OnDeath6:
- end;
-OnDeath7:
- end;
-OnDeath8:
- end;
-OnDeath9:
- end;
-OnDeath10:
- end;
-OnDeath11:
- end;
-OnDeath12:
- end;
-
-OnTimer30000:
- // Check every JackO
- set $@HW2020_CNT, 0;
- set $@JACKOID, 0; callfunc "HocusJackO";
- set $@JACKOID, 1; callfunc "HocusJackO";
- set $@JACKOID, 2; callfunc "HocusJackO";
- set $@JACKOID, 3; callfunc "HocusJackO";
- set $@JACKOID, 4; callfunc "HocusJackO";
- set $@JACKOID, 5; callfunc "HocusJackO";
- set $@JACKOID, 6; callfunc "HocusJackO";
- set $@JACKOID, 7; callfunc "HocusJackO";
- set $@JACKOID, 8; callfunc "HocusJackO";
- set $@JACKOID, 9; callfunc "HocusJackO";
- set $@JACKOID, 10; callfunc "HocusJackO";
- set $@JACKOID, 11; callfunc "HocusJackO";
- set $@JACKOID, 12; callfunc "HocusJackO";
-
- // Check if portal is to be active
- if ($@HW2020_CNT >= 13)
- goto L_Active;
-
- // Janitor
- set $@HW2020_CNT, 0;
- initnpctimer;
- end;
-
-L_Active:
- mapannounce "003-1", "##1There is a loud sound coming from the Bazar.##0" , 0;
- enablenpc "#HW2020Bazar";
- stopnpctimer;
- end;
-
-// Misc functions
-OnStopThere:
- if (getx() > 66 || gety() > 62)
- warp "003-1", 44, 61;
- sendcollision "003-1", 1, 42, 62, 46, 64;
- end;
-
-OnReward:
- set $@HW2020_HOCUS, 4;
- mes "[Jande]";
- mes "Jande was rescued. Numa will take care of him until he recovers.";
- mes "He struggled for words, but the time he spent there did a number on him.";
- mes "";
- mes "What Jande found out? Where is Zax De'Kagen?";
- next;
- mes ".:: DOOMSDAY ACT 5: THE FINAL BATTLE ::.";
- mes "---- ----";
- mes "INTERLUDE III: RESCUING JANDE";
- mes "";
- mes "Continues in ##BOctober 24th, 17:30 UTC##b";
- mes "##1The Final Snapshot will happen at October 31st.##0";
- next;
- // Reward
- set @rand, rand(7);
- if (@rand == 0)
- getitem "Eyepatch", 1; // Classic from HW and Christmas (10% chance)
- if (@rand == 1)
- getitem "MoubooHead", 1; // Replaced from: Circlet
- if (@rand == 2)
- getitem "Goggles", 1;
- if (@rand == 3)
- getitem "LeatherGoggles", 1;
- if (@rand == 4)
- getitem "SailorHat", 1; // Replaced from: Pirate Hat (Rarity)
- if (@rand == 5)
- getitem "SkullMask", 1;
- if (@rand == 6)
- getitem "FaceMask", 1; // Actually Christmas
- warp "009-1", 52, 40;
- message strcharinfo(0), "Numa : Thanks for helping. I know it is not much, but here is a reward for you.";
- close;
-
-}
-
-
-////////////////////////////////////////////////
-// Return gate
-003-1,142,18,0|script|To Underworld|400,1,0
-{
- end;
-OnTouch:
- if ($DOOMSDAY != 3) end;
- if ($DOOMSDAY_TJANDE == 1) end;
- if (!$@halloween_time) end;
-
- warp "070-1", 134, 30;
- close;
-
-OnInit:
- if ($DOOMSDAY != 3)
- disablenpc "To Underworld";
- end;
-}
-
-
-////////////////////////////////////////////////
-003-1,44,64,0|script|#HW2020ActionLess|400,3,0
-{
- end;
-OnTouch:
- if ($@HW2020_HOCUS == 2 || $@HW2020_HOCUS == 3)
- warp "070-1", 0, 0;
- end;
-}
-
-003-1,44,40,0|script|#HW2020Bazar|424,0,0
-{
- close;
-
-OnTouch:
- if ($@HW2020_HOCUS == 0)
- goto L_Ambush;
- if ($@HW2020_HOCUS == 1)
- end;
- if ($@HW2020_HOCUS == 2)
- goto L_Check;
- if ($@HW2020_HOCUS == 3)
- end;
- // GM Special Menu
- if (GM < G_GM)
- warp "009-1", 52, 40;
- if (GM < G_GM)
- end;
- goto L_GMMenu;
-
-// GM Menu
-L_GMMenu:
- mes "This event is already over.";
- mes "However, you are a Game Master.";
- mes "Do you want to allow the battle to happen again?";
- next;
- menu
- "No, I was trying to get to Hurns", L_GMNo,
- "YES, BEGIN THE AMBUSH", L_GMYes,
- "No, it was an accident.", L_GMCancel;
-
-L_GMYes:
- set $@HW2020_HOCUS, 0;
- gmlog strcharinfo(0) + " has reset Halloween 2020 Battle.";
- mes "* BEEEEEEEP *";
- mes "##9(Talk to portal again to ambush)##0";
- close;
-
-L_GMNo:
- warp "009-1", 52, 40;
- close;
-
-L_GMCancel:
- close;
-
-// Main Event
-L_Ambush:
- set $@HW2020_HOCUS, 1;
- mapannounce "003-1", "What, did you thought it would be so easy?" , 0;
- addnpctimer 3000, "#HW2020Bazar::OnAmbush1";
- end;
-
-OnAmbush1:
- mapannounce "003-1", "Hahaha! I am the self-proclaimed sovereign of the underworld..." , 0;
- addnpctimer 3000, "#HW2020Bazar::OnAmbush2";
- end;
-
-OnAmbush2:
- mapannounce "003-1", "...THE LOST! Return to where you come from!!" , 0;
- // Boss and his shrooms
- monster "003-1", 44, 40, "", 1073, 1, "HW2020 Mobs::OnDeath1";
- areamonster "003-1", 20, 20, 60, 60, "", 1106, 12, "HW2020 Mobs::OnDeath2";
- // Collection of nearly every monster you saw thus far :>
- areamonster "003-1", 20, 25, 60, 40, "", 1096, 8, "HW2020 Mobs::OnDeath3";
- areamonster "003-1", 20, 25, 60, 40, "", 1036, 6, "HW2020 Mobs::OnDeath4";
- areamonster "003-1", 20, 20, 60, 35, "", 1103, 6, "HW2020 Mobs::OnDeath5";
- areamonster "003-1", 20, 20, 60, 35, "", 1045, 4, "HW2020 Mobs::OnDeath6";
- areamonster "003-1", 20, 20, 60, 30, "", 1022, 2, "HW2020 Mobs::OnDeath7";
- areamonster "003-1", 20, 20, 60, 30, "", 1075, 2, "HW2020 Mobs::OnDeath8";
- areamonster "003-1", 20, 20, 60, 40, "", 1074, 2, "HW2020 Mobs::OnDeath9";
- areamonster "003-1", 20, 20, 60, 40, "", 1124, 2, "HW2020 Mobs::OnDeath10";
- set $@HW2020_HOCUS, 2;
- areatimer 0, "003-1", 18, 18, 150, 100, 10, "HW2020 Mobs::OnStopThere";
- initnpctimer;
- end;
-
-L_Check:
- set @TulimMc, mobcount("003-1", "HW2020 Mobs::OnDeath1")+1;
- if (@TulimMc)
- goto L_Reaper;
-
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath2")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath3")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath4")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath5")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath6")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath7")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath8")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath9")+1;
- set @TulimMc, @TulimMc+mobcount("003-1", "HW2020 Mobs::OnDeath10")+1;
-
- if (@TulimMc)
- goto L_NotReady;
-
- goto L_Finish;
-
-L_Reaper:
- message strcharinfo(0), "The Lost : Hahaha! Don't you think I can't see you!";
- set @TulimMc, 0;
- end;
-
-L_NotReady:
- message strcharinfo(0), strcharinfo(0) + " : I can still count "+@TulimMc+" monsters which need to be defeated first.";
- set @TulimMc, 0;
- end;
-
-L_Finish:
- set $@HW2020_HOCUS, 3;
- announce "Doomsday : Jande has been rescued from the Underworld." , 0;
- mapannounce "003-1", "The Lost : To be defeated... You should all get lost here forever..." , 0;
- areatimer 0, "003-1", 18, 18, 66, 62, 2000, "HW2020 Mobs::OnReward";
- stopnpctimer;
- end;
-
-OnInit:
- disablenpc "#HW2020Bazar";
- end;
-
-// Players defeated? :(
-OnTimer5000:
- if (getmapusers("003-1") < 1)
- goto L_Janitor;
- initnpctimer;
- end;
-
-L_Janitor:
- killmonster "003-1", "All";
- set $@HW2020_HOCUS, 0;
- cleararray $@HW2020_SLAIN, 0, 20;
- cleararray $@HW2020_TIMER, 0, 20;
- enablenpc "JackO#Tybalt";
- enablenpc "JackO#Nicolas";
- enablenpc "JackO#Elanore";
- enablenpc "JackO#Aisha";
- enablenpc "JackO#Nina";
- enablenpc "JackO#Ian";
- enablenpc "JackO#Luca";
- enablenpc "JackO#Ekinu";
- enablenpc "JackO#Ryan";
- enablenpc "JackO#Neko";
- enablenpc "JackO#Ishi";
- enablenpc "JackO#Sandra";
- enablenpc "JackO#Vincent";
- disablenpc strnpcinfo(0);
- stopnpctimer;
- end;
-}
-
-////////////////////////////////////////////////
-// Hocus Campaign Main Function
-// HocusCampaign( @JACKOID )
-// Use getmap(), getx() and gety() for spawn centering
-// OnBegin:
-// $@HW2020_SLAIN[ JACKOID ] = False
-// $@HW2020_TIMER[ JACKOID ] = gettimetick(2)
-// Have HW2020 Mobs timer controlling all of them (runs every minute for expire)
-// OnFinish:
-// $@HW2020_SLAIN[ JACKOID ] = True
-// Timer NOT updated!!
-function|script|HocusCampaign
-{
- if (@JACKOID < 1)
- goto L_Return;
-
- set @JACKOID, @JACKOID-1;
-
- if ($@HW2020_TIMER[@JACKOID] > gettimetick(2))
- goto L_Check;
-
- mes "[Jack O]";
- mes "Hohoho... I am the JackO who curses this lost soul.";
- mes "Do you want to free this person? Defeat meeeeee....";
- next;
- mes "[Jack O]";
- mes "Hohoho... Prove your worth, defeat meeeeee....";
- mes "Slay all my minions, can you prove yourself to meeeeee....?";
- next;
- mes "##3.:: Mission Goals ::.##0";
- mes "1. Defeat all monsters spawned by JackO";
- mes "2. Talk to JackO after this to lift the curse";
- mes "3. Once all 13 NPCs curse is lifted, go to ?????";
- mes "";
- mes "##1Time Limit: 30 minutes since first JackO monster spawn.";
- next;
- menu
- "Bring it on!", L_Begin,
- "Not now!", L_Abort;
-
-L_Begin:
- if ($@HW2020_TIMER[@JACKOID] > gettimetick(2))
- goto L_Return;
-
- // Assign timer, set JackO to ACTIVE
- set $@HW2020_SLAIN[@JACKOID], 0;
- set $@HW2020_TIMER[@JACKOID], gettimetick(2)+1800;
-
- // Define mob id
- if (@JACKOID % 8 == 0)
- set @mobID, 1096; // Soul Snake
- if (@JACKOID % 8 == 1)
- set @mobID, 1036; // Zombie
- if (@JACKOID % 8 == 2)
- set @mobID, 1103; // Witch Guard
- if (@JACKOID % 8 == 3)
- set @mobID, 1045; // Fallen
- if (@JACKOID % 8 == 4)
- set @mobID, 1022; // JackO
- if (@JACKOID % 8 == 5)
- set @mobID, 1075; // Stalker
- if (@JACKOID % 8 == 6)
- set @mobID, 1074; // Red Bone
- if (@JACKOID % 8 == 7)
- set @mobID, 1124; // Wight
-
- // Define mob amount
- set @mobAM, 8; // Default
- if (@JACKOID % 8 == 0)
- set @mobAM, 12; // Soul Snake must be more
- if (@JACKOID % 8 >= 4)
- set @mobAM, 6; // Stalker, JackO, Red and Wigh must be less
-
- // Spawn the Monsters
- areamonster "003-1", getx()-10, gety()-10, getx()+10, gety()+10, "", @mobID, @mobAM, "HW2020 Mobs::OnDeath"+@JACKOID;
-
- // Announce
- mapannounce "003-1", "JackO : Hohoho... You cannot defeat meeeee!" , 0;
-
- // Clear temporary variables
- set @mobID, 0;
- set @mobAM, 0;
- close2;
- return;
-
-L_Abort:
- close2;
- return;
-
-L_Check:
- // Count Monsters
- set @TulimMc, mobcount("003-1", "HW2020 Mobs::OnDeath"+@JACKOID)+1;
- if (@TulimMc)
- goto L_Information;
-
- // Disable JackO here, the script will catch that
- set $@HW2020_SLAIN[@JACKOID], 1;
-
- mes "[JackO]";
- mes "Hohoho... We'll meet againnnnnnnn!";
- donpcevent "HW2020 Mobs::OnTimer30000";
- close2;
- return;
-
-L_Information:
- message strcharinfo(0), "JackO : Hohoho... Still "+@TulimMc+" monsters alive... Defeat meeeeee.....!";
- set @TulimMc, 0;
- return;
-
-L_Return:
- return;
-
-}
-
-////////////////////////////////////////////////
-// JackOs (13 JackOs)
-003-1,26,73,0|script|JackO#Tybalt|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 1;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,101,31,0|script|JackO#Nicolas|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 2;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,38,66,0|script|JackO#Elanore|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 3;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,56,70,0|script|JackO#Aisha|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 4;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,119,33,0|script|JackO#Nina|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 5;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,32,30,0|script|JackO#Ian|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 6;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,113,43,0|script|JackO#Luca|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 7;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,47,79,0|script|JackO#Ekinu|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 8;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,38,79,0|script|JackO#Ryan|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 9;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,53,45,0|script|JackO#Neko|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 10;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,54,51,0|script|JackO#Ishi|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 11;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,71,61,0|script|JackO#Sandra|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 12;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-003-1,136,35,0|script|JackO#Vincent|133
-{
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- set @JACKOID, 13;
- callfunc "HocusCampaign";
- if ($@HW2020_SLAIN[@JACKOID])
- disablenpc strnpcinfo(0);
- set @JACKOID, 0;
- close;
-}
-
-057-1,126,63,0|script|#HW2020Shroom|400
-{
- // Halloween only
- if (!$@halloween_time) end;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "This is a strange mushroom.";
- mes "Seeing it makes you feel like saying";
- mes "##B" + get(.invocation$, "alonsialonso") + "##b";
- next;
- mes "This never happened before. Must be halloween.";
- mes "I should be careful, it could be related to [@@666|@@]!";
- next;
- mes "##9HINT: Use the spell only in the precise area of interest.##0";
- mes "##9Side effects of spell misuse includes and are not limited to:##0";
- mes "##9death, warp, heal and/or item loss.##0";
- mes "";
- mes "##9The spell will cease to function once Halloween is over.##0";
- close;
-}
-
-070-1,134,30,0|script|#HW2020Chapel|400
-{
- // Halloween only
- if (!$@halloween_time) end;
- callfunc "PCtoNPCRange";
- if(@npc_check) end;
- mes "Past this door lies the crypt where Tormenta was supposed to be.";
- mes "I really should not lock myself up in a place where I cannot leave.";
- next;
- mes "It should be safe to try the following on the door:";
- mes "##B" + get(.invocation$, "alonsialonso") + "##b";
- // NOTE: This door should lead to 070-3, Abyss/Reaper Room.
- // Players from TMW Hardcore would know.
- close;
-}
-
diff --git a/world/map/npc/annuals/halloween/munro.txt b/world/map/npc/annuals/halloween/munro.txt
deleted file mode 100644
index cbbbf233..00000000
--- a/world/map/npc/annuals/halloween/munro.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-// Part of Annual halloween
-026-1,24,37,0|script|Munro|183
-{
- callfunc "HalloweenCheckOld";
- callfunc "TrickOrTreatTally";
- if (($@halloween_time == $@halloween_reward_time) && (@npc_tally >= $@halloween_charm_count) && !(HALLOWEENTIME & $@halloween_got_charm_reward))
- goto L_Halloween;
- goto L_NoReward;
-
-L_NoReward:
- mes "[Munro]";
- mes "\"Greetings mortal.\"";
- next;
- mes "\"Once again we come to that time of year when the veil is thin\"";
- next;
- mes "\"All those who have passed on can part the veil to return.\"";
- next;
- mes "\"A time to celebrate our ancestors and chase evil away.\"";
- next;
- mes "\"Celebrate the holiday with me and I will reward you later.\"";
- goto L_Exit;
-
-L_Halloween:
- mes "[Munro]";
- mes "\"You have shown to have the Halloween spirit. Take this charm.\"";
- set HALLOWEENTIME, HALLOWEENTIME | $@halloween_got_charm_reward;
- getitem "SkeletonCharm",1;
- goto L_Exit;
-
-L_Exit:
- close;
-}
-
-function|script|SpawnMunro
-{
- if ($@halloween_time)
- goto L_EnableMunro;
- goto L_DisableMunro;
-
-L_EnableMunro:
- enablenpc "Munro";
- goto L_Return;
-
-L_DisableMunro:
- disablenpc "Munro";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/annuals/halloween/trick_or_treat.txt b/world/map/npc/annuals/halloween/trick_or_treat.txt
deleted file mode 100644
index 10265382..00000000
--- a/world/map/npc/annuals/halloween/trick_or_treat.txt
+++ /dev/null
@@ -1,332 +0,0 @@
-// Halloween Annual
-// Authors: alastrim, enchilado, o11c, wushin
-// See config
-function|script|TrickOrTreat
-{
- callfunc "HalloweenCheckOld";
- if ($@halloween_time)
- goto L_Halloween;
- goto L_QuickReturn;
-
-L_Halloween:
- if ((gettimetick(2)-TUT_var < $@halloween_min_age) || (BaseLevel < $@halloween_min_level)) //player must be created at least 1 weeks ago
- goto L_QuickReturn;
- menu
- "Trick or Treat", L_HWQuest,
- "[Go to normal NPC dialog]", L_QuickReturn;
-
-L_HWQuest:
- set @mask, getequipid(equip_head);
- goto L_Begin;
-
-L_Begin:
- set @karma, (HALLOWEENTIME & 65535);
- if (@mask > 0)
- goto L_WearingMask;
- goto L_NoMask;
-
-L_WearingMask:
- // set the scare factor of the equipped mask
- set @mask_index, 0;
- set @scare_factor, 1;
- goto L_MaskLoop;
-
-L_MaskLoop:
- if ($@halloween_mask_IDs[@mask_index] == @mask)
- goto L_FoundMask;
- set @mask_index, @mask_index + 1;
- if ($@halloween_mask_IDs[@mask_index])
- goto L_MaskLoop;
- // not a mask in the list
- set @mask, 0;
- goto L_MaskDone;
-
-L_FoundMask:
- set @scare_factor, $@halloween_scare_factors[@mask_index];
- if (@mask != 616)
- goto L_MaskDone;
- mes "\"Aaargh... Gross! This is sick! I can't even look at your face...\"";
- goto L_MaskDone;
-
-L_MaskDone:
- set @mask_index, 0;
- // check if the mask is in the memory
- set @loop, 0;
- // Note: we don't handle remembered faces until they get their candy
- if (!@mask)
- goto L_MaskMemoryNo;
- // check if the mask is remembered
- goto L_MaskMemoryCheck;
-
-L_MaskMemoryCheck:
- set @tmp, $@halloween_maskmemory[8 * @halloween_npc_id + @loop];
- if (!@tmp)
- goto L_MaskMemoryNo;
- if (@tmp == @mask)
- goto L_MaskMemoryYes;
- set @loop, @loop + 1;
- if (@loop != $@halloween_memory_count)
- goto L_MaskMemoryCheck;
- goto L_MaskMemoryNo;
-
-L_MaskMemoryYes:
- // not necessarily true
- mes "\"I remember you, " + getitemlink(getequipid(equip_head)) + " person. No more treats for you!\"";
- goto L_Close;
-
-L_MaskMemoryNo:
- // player will probably get treats
- set @loop, 0;
- set @sweets_types, 0;
- goto L_Count_Sweets;
-
-L_Count_Sweets:
- if ($@halloween_sweets[@loop] == 0)
- goto L_Check_Inventory;
- if (countitem($@halloween_sweets[@loop]))
- set @sweets_types, @sweets_types + 1;
- set @loop, @loop + 1;
- goto L_Count_Sweets;
-
-L_Check_Inventory:
- getinventorylist;
- if (@inventorylist_count + (@loop - @halloween_invy) > 100)
- goto L_Full_Inventory;
- if (@mask)
- goto L_Check_Karma;
- // check if the player's face is remembered
- if (HALLOWEENTIME & (1 << (31 - @halloween_npc_id)))
- goto L_Remember_Face;
- goto L_Tricking_Trick_or_Treat;
-
-L_Check_Karma:
- // NPC Cheater detection starts after max NPCs hit
- if (rand($@halloween_num_npcs, 65535) <= @karma)
- goto L_Cheater;
- // NPC Cheater detection engages at 48 Trick or Treats
- if (@karma >= 48)
- goto L_Cheater;
- if (HALLOWEENTIME & $@halloween_got_big_reward)
- goto L_Tricking_Trick_or_Treat;
- // assert: @karma < $@halloween_num_npcs
- if (rand($@halloween_num_npcs - @karma))
- goto L_Tricking_Trick_or_Treat;
- mes "\"All this candy isn't healthy, here take this to have a break from it.\"";
- getitem $@halloween_big_reward[rand(getarraysize($@halloween_big_reward))], 1;
- set HALLOWEENTIME, HALLOWEENTIME | $@halloween_got_big_reward;
- // you get the big reward first, then the main treats
- // otherwise it would be too complicated, and/or possibly unfair
- goto L_Tricking_Trick_or_Treat;
-
-L_Cheater:
- mes "\"I recognize you despite your mask, you have been taking sweets you do not deserve.\"";
- if (@karma != 65535)
- set HALLOWEENTIME, HALLOWEENTIME + 1;
- goto L_Close;
-
-L_Remember_Face:
- // mes "You've been here before; I remember your face";
- mes "\"I remember your face, " + strcharinfo(0) + ". No more treats for you!\"";
- goto L_Close;
-
-L_Tricking_Trick_or_Treat:
- // moved above
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes $@halloween_greetings$[@halloween_npc_id];
- next;
- // TODO: should we randomize these? (in a subsequent commit)
- menu
- $@halloween_trick_notscary$[@halloween_npc_id], L_Tricking_Notscary,
- $@halloween_trick_scary$[@halloween_npc_id], L_Tricking_Scary,
- $@halloween_trick_veryscary$[@halloween_npc_id], L_Tricking_Veryscary;
-
-L_Tricking_Notscary:
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes $@halloween_react_notscary$[@halloween_npc_id];
- goto L_Tricking_Reward;
-
-L_Tricking_Scary:
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes $@halloween_react_scary$[@halloween_npc_id];
- set @scare_factor, @scare_factor * 2;
- goto L_Tricking_Reward;
-
-L_Tricking_Veryscary:
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes $@halloween_react_veryscary$[@halloween_npc_id];
- set @scare_factor, @scare_factor * 3;
- goto L_Tricking_Reward;
-
-L_Tricking_Reward:
- next;
- if (@karma >= 16)
- set @scare_factor, rand(@scare_factor / 2, @scare_factor);
- if (@karma >= 24)
- set @scare_factor, rand(@scare_factor / 3, @scare_factor);
- if (@scare_factor < 1)
- set @scare_factor, 1;
- goto L_Tricking_Reward_Loop;
-
-L_Tricking_Reward_Loop:
- set @random, rand($@halloween_sweets_num);
- setarray @getitem_ids, $@halloween_sweets[@random];
- setarray @getitem_counts, 1;
- callfunc "CheckInventory";
- if (@check_fail)
- set @scare_factor, 0;
- if (!@scare_factor)
- goto L_Tricking_End;
- // NOTE: it gives out one piece at a time, but can loop several times
- getitem $@halloween_sweets[@random], 1;
- set @scare_factor, @scare_factor - 1;
- goto L_Tricking_Reward_Loop;
-
-L_SetRememberFace:
- set HALLOWEENTIME, HALLOWEENTIME | (1 << (31 - @halloween_npc_id));
- goto L_Close;
-
-L_Tricking_End:
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes "\"That should be enough sweets for you. Thanks for participating!\"";
- if (!@mask)
- goto L_SetRememberFace;
- // add the player's mask to the list
- set @loop, 7;
- goto L_SetRememberMask;
-
-L_SetRememberMask:
- set $@halloween_maskmemory[8 * @halloween_npc_id + @loop], $@halloween_maskmemory[8 * @halloween_npc_id + @loop - 1];
- set @loop, @loop - 1;
- if (@loop)
- goto L_SetRememberMask;
- set $@halloween_maskmemory[8 * @halloween_npc_id], @mask;
- set HALLOWEENTIME, HALLOWEENTIME + 1;
- goto L_Close;
-
-L_Full_Inventory:
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes "\"You are trying to collect candy but you have no space to carry all the kinds of stuff that I have to offer! Please, save room for more stuff and come back.\"";
- goto L_Close;
-
-L_NoMask:
- mes $@halloween_npc_names$[@halloween_npc_id];
- mes "\"Hey " + strcharinfo(0) + ", are you trying to scare me with your face? Interesting! hahaha...\"";
- goto L_Close;
-
-L_Close:
- set @tmp, 0;
- set @mask, 0;
- set @karma, 0;
- set @loop, 0;
- set @menu, 0;
- set @halloween_npc_id, 0;
- return;
-
-L_QuickReturn:
- set @halloween_npc_id, 0;
- return;
-}
-function|script|TrickOrTreatTally
-{
- set @npc_loop, 0;
- set @npc_tally, 0;
- goto L_LoopCheck;
-
-L_LoopCheck:
- if (HALLOWEENTIME & (1 << (31 - @npc_loop)))
- set @npc_tally, (@npc_tally + 1);
- goto L_IncLoop;
-
-L_IncLoop:
- set @npc_loop, (@npc_loop + 1);
- if (@npc_loop >= 15)
- goto L_Return;
- goto L_LoopCheck;
-
-L_Return:
- return;
-}
-// Checks for an expired event key
-// Each new annual event needs a new key
-// or it will allow completion from last year
-function|script|HalloweenCheckOld
-{
- if(HALLOWEENYEAR == $HALLOWEEN_TIME_KEY[5])
- goto L_Return;
- goto L_OldMatch;
-
-L_OldMatch:
- set HALLOWEENTIME, 0;
- set HALLOWEENYEAR, $HALLOWEEN_TIME_KEY[5];
- goto L_Return;
-
-L_Return:
- return;
-}
-function|script|HalloweenTree
-{
- mes "[Confused Tree]";
- if ((HALLOWEENTIME & 65535) > ($@halloween_num_npcs * 3))
- mes "\"Whoa slow down greedy, leave some candy for the reset of us!\"";
- if ((HALLOWEENTIME & 65535) > $@halloween_num_npcs)
- mes "\"I see you have ben enjoying trick or treating, I hope you don't get a stomach ache.\"";
- if ((HALLOWEENTIME & 65535) <= $@halloween_num_npcs)
- mes "\"I love halloween, wearing masks and going trick or treating is so much fun.\"";
- goto L_StartMenu;
-
-L_StartMenu:
- menu
- "Whats Halloween?", L_Explain,
- "Me too!", L_CheckDressed,
- "Meh, I like Christmas Better.", L_XmasBetter;
-
-L_Explain:
- mes "\"I've convinced some people throughout the world to help with trick or treating.\"";
- next;
- set @npc_check_loop, 0;
- goto L_NpcCheckLoop;
-
-L_NpcCheckLoop:
- mes $@halloween_npc_names$[@npc_check_loop];
- next;
- goto L_NpcCheckInc;
-
-L_NpcCheckInc:
- set @npc_check_loop, (@npc_check_loop + 1);
- if (@npc_check_loop >= getarraysize($@halloween_npc_names$))
- goto L_ContinueExplain;
- goto L_NpcCheckLoop;
-
-L_ContinueExplain:
- mes "\"Find each person and put on a mask then try to scare them.\"";
- next;
- mes "\"The scarier you are, the more treats you will be awarded.\"";
- next;
- mes "\"If you are really scary you could get a rare reward.\"";
- next;
- goto L_StartMenu;
-
-L_CheckDressed:
- set @head, getequipid(equip_head);
- set @chest, getequipid(equip_torso);
- set @leg, getequipid(equip_legs);
- set @random_mes$, "\" I like your costume.\"";
- if ((@head <= 0) && (@chest <= 0) && (@leg <= 0))
- set @random_mes$, "\"Birthday Suit, always a classic.\"";
- if ((@head == 615) && (@chest == 870))
- set @random_mes$, "\"How embrassing... we are wearing the same costume.\"";
- if ((@head == 617) || (@head == 622) || (@head == 621))
- set @random_mes$, "\"Yar, matey I see that.\"";
- if ((@head == 633) || (@head == 1205) || (@chest == 1183) || (@chest == 1184) || (@chest == 1185) || (@chest == 1186) || (@chest == 1187))
- set @random_mes$, "\"Your sense of humor offends me, it's way to early for that.\"";
- mes @random_mes$;
- goto L_Return;
-
-L_XmasBetter:
- mes "\"Bah, Humbug, Show your Halloween spirit! OOooooOooo\"";
- misceffect 302, strcharinfo(0);
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/annuals/tree_beard.txt b/world/map/npc/annuals/tree_beard.txt
deleted file mode 100644
index 8d24930c..00000000
--- a/world/map/npc/annuals/tree_beard.txt
+++ /dev/null
@@ -1,137 +0,0 @@
-// Annual Environment changes
-020-1,90,78,0|script|#GhostTreeOne|133
-{
- callfunc "HalloweenTree";
- close;
-}
-
-020-1,90,78,0|script|#Tree|380
-{
- end;
-}
-
-020-1,90,78,0|script|#XmasTree|379
-{
- end;
-}
-
-020-1,90,79,0|script|Present#1|386
-{
- callfunc "XmasStates";
- callfunc "XmasMainItemReward";
- close;
-}
-
-009-1,54,38,0|script|#GhostTreeTwo|133
-{
- callfunc "HalloweenTree";
- close;
-}
-
-009-1,54,38,0|script|#TreeNoSnow|394
-{
- end;
-}
-
-009-1,54,38,0|script|#XmasTreeNoSnow|381
-{
- end;
-}
-
-009-1,54,39,0|script|Present#2|386
-{
- callfunc "XmasStates";
- callfunc "XmasMainItemReward";
- close;
-}
-
-001-1,57,75,0|script|#GhostTreeThree|133
-{
- callfunc "HalloweenTree";
- close;
-}
-
-001-1,58,75,0|script|#PalmTree|384
-{
- end;
-}
-
-001-1,58,76,0|script|Present#3|386
-{
- callfunc "XmasStates";
- callfunc "XmasMainItemReward";
- close;
-}
-
-001-1,58,75,0|script|#XmasPalmTree|383
-{
- end;
-}
-
-function|script|SpawnMobs
-{
- donpcevent "XmasSpawnManager::OnCommandSpawnStart";
- return;
-}
-
-function|script|PresentHandler
-{
- if($@xmas_time == $@xmas_reward_time)
- goto L_DeliverPresents;
- goto L_DisablePresents;
-
-L_DeliverPresents:
- enablenpc "Present#1";
- enablenpc "Present#2";
- enablenpc "Present#3";
- goto L_Return;
-
-L_DisablePresents:
- disablenpc "Present#1";
- disablenpc "Present#2";
- disablenpc "Present#3";
- goto L_Return;
-
-L_Return:
- return;
-}
-
-function|script|ReplaceTrees
-{
- disablenpc "#Tree";
- disablenpc "#TreeNoSnow";
- disablenpc "#PalmTree";
- disablenpc "#GhostTreeOne";
- disablenpc "#GhostTreeTwo";
- disablenpc "#GhostTreeThree";
- disablenpc "#XmasTree";
- disablenpc "#XmasTreeNoSnow";
- disablenpc "#XmasPalmTree";
-
- if ($@xmas_time)
- goto L_XmasTree;
- if ($@halloween_time)
- goto L_HalloweenLive;
- goto L_Tree;
-
-L_XmasTree:
- enablenpc "#XmasTree";
- enablenpc "#XmasTreeNoSnow";
- enablenpc "#XmasPalmTree";
- goto L_Return;
-
-L_HalloweenLive:
- enablenpc "#GhostTreeOne";
- enablenpc "#GhostTreeTwo";
- enablenpc "#GhostTreeThree";
- goto L_Return;
-
-L_Tree:
- enablenpc "#Tree";
- enablenpc "#TreeNoSnow";
- enablenpc "#PalmTree";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/annuals/xmas/2020.txt b/world/map/npc/annuals/xmas/2020.txt
deleted file mode 100644
index 0490d1a7..00000000
--- a/world/map/npc/annuals/xmas/2020.txt
+++ /dev/null
@@ -1,835 +0,0 @@
-// The Mana World Scripts
-// Christmas 2020
-// (C) Jesusalva, Hocus, Ledmitz, toams, monwarez, jak1, Hello=) et. al., 2020
-// Licensed under the GPLv2 or later
-// XXmas is not a typo, "XX" is twenty and the year is twenty-twenty.
-
-034-1,0,0,0|script|XXmas0341|32767
-{
- end;
-
-OnHit2:
- goto OnHit;
-
-OnHit:
- // Not Christmas yet
- if (!$@xmas_time)
- end;
- // Reward time
- if ($@xmas_time == $@xmas_reward_time)
- end;
- // player must be created at least two weeks ago
- if ((BaseLevel < 30) || (gettimetick(2) - TUT_var < 2*7*86400))
- end;
-
- // Not equipped to hunt Grinchboos
- //if (getequipid(equip_arrow) != 5260)
- // end;
- if (getequipid(equip_hand1) != 5261)
- end;
-
- // tell the spells they were discharged
- // XXX: maybe we could make it do area damage when you discharge (release your energy all of a sudden)
- addtimer 0, "::OnDischarge"; // seeks OnDischarge in ALL npcs
-
- // Magic cheat
- if (@wandspell[4])
- end;
- if (@ingravspell[2])
- end;
- if (@chizaspell[2])
- end;
- if (@flarspell[2])
- end;
- if (@phlexspell[3])
- end;
- if (@chipchipspell[2])
- end;
- if (@upmarmuspell[1])
- end;
-
- // By last, check for Arrow Hail
- set @nearby, 0;
- foreach 1, getmap(), @away[0] - 14, @away[1] - 14, @away[0] + 14, @away[1] + 14,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (@nearby)
- end;
-
- // Grinchboo slain
- set XMAS2020, XMAS2020 + 1;
- set $XMAS2020_BOO, $XMAS2020_BOO + 1;
- set @loop, 0;
- set @rank, 0;
- goto L_MaybeInsertNext;
-
-L_MaybeInsertNext:
- if (XMAS2020 > $Record_XXmas_Kills[@rank])
- goto L_InsertScore;
- // you already had a better score
- if (strcharinfo(0) == $Record_XXmas_Name$[@rank])
- goto L_Reward1;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_Reward1;
- goto L_MaybeInsertNext;
-
-L_InsertScore:
- set @loop, @rank;
- goto L_FindLastScore;
-
-L_FindLastScore:
- // comment this out to allow the player to be in the list more than once
- // though actually, it might be better just to assume the list is full
- if (strcharinfo(0) == $Record_XXmas_Name$[@loop])
- goto L_MoveStuff;
-
- set @loop, @loop + 1;
- if (@loop == MAX_HIGH_SCORES)
- goto L_MoveStuff;
- goto L_FindLastScore;
-
-L_MoveStuff:
- if (@loop == @rank)
- goto L_FinallyInsertMe;
- set $Record_XXmas_Kills[@loop], $Record_XXmas_Kills[@loop - 1];
- set $Record_XXmas_Name$[@loop], $Record_XXmas_Name$[@loop - 1];
- set $Record_XXmas_Date$[@loop], $Record_XXmas_Date$[@loop - 1];
- set @loop, @loop - 1;
- goto L_MoveStuff;
-
-L_FinallyInsertMe:
- set $Record_XXmas_Kills[@rank], XMAS2020;
- set $Record_XXmas_Name$[@rank], strcharinfo(0);
- callfunc "time_stamp";
- set $Record_XXmas_Date$[@rank], @ts_date$ + " " + @ts_time$;
- set @ts_date$, "";
- set @ts_time$, "";
- goto L_Reward1;
-
-L_Reward1:
- // Maybe we should tell you how many you purified?
- if (XMAS2020 % 10 == 0 || XMAS2020 == 1)
- goto L_Warning;
- end;
-
-L_Warning:
- message strcharinfo(0), "Grinchboos purified: "+XMAS2020;
- end;
-
-OnTimer15000:
- areamonster "034-1", 20, 20, 160, 110, "", 1162, 18, "XXmas0341::OnHit2";
- // Only happens until :15, and every 15 minutes, for a total of 60 cycles.
- if (gettime(2) > 15)
- end;
- initnpctimer;
- end;
-
-L_Abort:
- end;
-
-OnClock1800:
- if (!$@xmas_time)
- goto L_Abort;
- if ($@xmas_time == $@xmas_reward_time)
- goto L_Abort;
- initnpctimer;
- // WARNING: Do not duplicate!!
- announce "Santa : Ho ho ho, I see a huge movement by the grinchboos!", 0;
- end;
-
-OnClock1830:
- killmonster "034-1", "XXmas0341::OnHit2";
- stopnpctimer;
- end;
-
-// Additional timers
-OnClock0000:
- goto OnClock1800;
-OnClock0030:
- goto OnClock1830;
-OnClock0600:
- goto OnClock1800;
-OnClock0630:
- goto OnClock1830;
-
-OnNearbyNpc:
- explode .@nearby$[0], strnpcinfo(0,@target_id), "#";
- if(.@nearby$[0] == "arrow-hail" || .@nearby$[1] == "arrow-hail")
- set @nearby, @nearby + 1;
- end;
-}
-
-// Scatter the grinchboos
-// Nivalis
-034-1,0,0,0,0|monster|Grinchboo|1162,14,100000ms,30000ms,XXmas0341::OnHit
-//030-1,0,0,0,0|monster|Grinchboo|1162,7,100000ms,30000ms,XXmas0341::OnHit
-//031-1,0,0,0,0|monster|Grinchboo|1162,2,100000ms,30000ms,XXmas0341::OnHit
-033-1,0,0,0,0|monster|Grinchboo|1162,5,100000ms,30000ms,XXmas0331::OnHit
-//019-1,0,0,0,0|monster|Grinchboo|1162,2,100000ms,30000ms,XXmas0341::OnHit
-// Thermin
-//045-1,0,0,0,0|monster|Grinchboo|1162,10,100000ms,30000ms,XXmas0341::OnHit
-046-1,0,0,0,0|monster|Grinchboo|1162,8,100000ms,30000ms,XXmas0461::OnHit
-047-1,0,0,0,0|monster|Grinchboo|1162,6,100000ms,30000ms,XXmas0471::OnHit
-
-// Bring Santa back!!! With speeches from all previous events because I'M LAZY
-// Same place as he was in 2009, instead of his room in 030-2,197,62
-020-1,78,85,0|script|Santa|105
-{
- if (Sex)
- set @honorific$, "Young Hero";
- if (!Sex)
- set @honorific$, "Young Heroine";
-
-
- // Not Christmas yet
- if (!$@xmas_time)
- goto L_PreXmas;
- // Past Christmas
- if ($@xmas_time == $@xmas_reward_time)
- goto L_Reward;
- // Already equipped, so...
- if (countitem("SnowLauncher") > 0)
- goto L_Doing;
-
- // Begin exactly like it was in 2009
- mes "[Santa Claus]";
- mes "\"ho-hum ho-hum ho-hum, I'm sorry, " + @honorific$ + " Not really in the Christmas spirit.";
- mes "That Evil Jack Frost has stolen all the Christmas ornaments!";
- mes "He will never get off the Naughty List!";
- mes "How can we have Christmas without a proper Christmas tree?\"";
- mes "\"The Elves are too depressed to work";
- mes "Christmas will be ruined!\"";
- next;
- // But this is not 2009...
- mes "[Santa Claus]";
- mes "\"OOPS! That was Christmas 2009! We are in 2020, how could I forget? Ho! Ho! Ho!\"";
- next;
- mes "[Santa Claus]";
- mes "\"But still! Can you believe Jack Frost turned all my Reinboos into Grinchboos?! Christmas will be ruined!\"";
- next;
- mes "[Santa Claus]";
- mes "\"Say, Why don't you help me?";
- mes "In fact, You are just the " + @honorific$ + " I am looking for!\"";
- mes "\"What do you say, will you help save Christmas?\"";
- next;
- menu
- "I won't.", L_Close,
- "How can I help?", L_Help;
-
-L_Help:
- // player must be created at least two weeks ago
- if ((BaseLevel < 30) || (gettimetick(2) - TUT_var < 2*7*86400))
- goto L_Young;
- mes "[Santa Claus]";
- mes "\"Oh that is excellent news!";
- mes "Thank you.\"";
- mes "##9Santa shakes your hand with delight.##0";
- next;
- mes "[Santa Claus]";
- mes "\"You see, if you hit the grinchboos with snowballs, they can be purified! (Don't ask me how it works, Christmas is weird this year!)\"";
- next;
- mes "[Santa Claus]";
- mes "\"However, you cannot just throw snowballs at them. But I have the ideal tool for this task!\"";
- next;
- mes "[Santa Claus]";
- mes "\"You can use this super ##BCandy-Caned Anti-Grinch-Rifle 2020â„¢##b! Hit as many as you can! Ho ho ho!\"";
- menu
- "Many thanks, Santa!", L_Item,
- "I already have one, I'll get to work!", L_Close;
-
-L_Young:
- mes "[Santa]";
- mes "\"That's a very friendly offer! But I don't think we need any help.\"";
- goto L_Close;
-
-L_Item:
- getinventorylist;
- if (@inventorylist_count == 100) goto L_Full;
- getitem "SnowLauncher", 1;
- mes "[Santa Claus]";
- mes "\"Ho Ho Ho Merry Christmas!\"";
- close;
-
-L_Close:
- close;
-
-L_Full:
- mes "[Santa Claus]";
- mes "\"Your backpack seems to be full. You should get rid of some unused stuff before you get my gifts, or maybe try one super resistant red bag, my personal favorite! Hoh-hoh!\"";
- close;
-
-L_PreXmas:
- mes "[Santa Claus]";
- mes "\"Ho, Ho... See you later " +@honorific$+ "!\"";
- close;
-
-L_ShowRecord:
- mes "[Santa Claus]";
- mes "You have purified "+XMAS2020+" Grinchboos thus far.";
- mes "All players have purified "+$XMAS2020_BOO+" Grinchboos in total.";
- set @rank, 0;
- set @loop, 0;
- goto L_ShowNextRecord;
-
-L_ShowNextRecord:
- if ($Record_XXmas_Kills[@loop] == 0)
- goto L_Close;
- mes (@loop + 1) + " - " + $Record_XXmas_Name$[@loop] + " - " + $Record_XXmas_Kills[@loop] + " Grinchboos saved at " + $Record_XXmas_Date$[@loop];
- set @loop, @loop + 1;
- if (MAX_HIGH_SCORES > 4 && (@loop % 5) == 0 && $Record_XXmas_Kills[@loop] > 0)
- goto L_NextShowNextRecord;
- goto L_ShowNextRecord;
-
-L_NextShowNextRecord:
- next;
- goto L_ShowNextRecord;
-
-L_Doing:
- mes "[Santa]";
- mes "\"Hello " + strcharinfo(0) + ". I heard about your efforts to help. I'm very happy to hear that.\"";
- next;
- mes "[Santa]";
- mes "\"Be careful at 18:00, 00:00 and 06:00, those are the most active times for my reinboos.\"";
- next;
- menu
- "I'll go back to work.", L_Close,
- "What are current highscores?", L_ShowRecord;
-
-L_Done:
- mes "[Santa]";
- mes "\"Hello " + strcharinfo(0) + ". I heard about your efforts to help. I'm very happy to hear that.\"";
- next;
- menu
- "Santa, you are the best!", L_Close,
- "What were the highscores?", L_ShowRecord;
-
-L_Reward:
- if (XMAS2020 <= 0)
- goto L_Done;
- mes "[Santa Claus]";
- mes "\"You are so generous! I believe I can give you one of the hats from this bag. I know you like these silly hats. Yes, Santa knows this kind of thing... Ho-Ho-Ho! Put your hand here and pick one hat...\"";
- next;
- getinventorylist;
- if (@inventorylist_count > 95) goto L_Full;
- mes "You have purified "+XMAS2020+" Grinchboos thus far.";
- mes "All players have purified "+$XMAS2020_BOO+" Grinchboos in total.";
- set @rank, 0;
- set @loop, 0;
- goto L_FindRank;
-
-L_FindRank:
- if (strcharinfo(0) == $Record_XXmas_Name$[@rank])
- goto L_Continue;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_Continue;
- goto L_FindRank;
-
-L_Continue:
- getinventorylist;
- if (@inventorylist_count > 95) goto L_Full;
- set XMAS2020, 0;
- setarray @oldstock$, "PlushMouboo", "StickReinboo", "Doll", "LeatherBall", "SantaSnowGlobe", "SnowmanSnowGlobe", "RedOrnament", "YellowOrnament", "GreenOrnament", "AquaOrnament", "BlueOrnament", "MagentaOrnament";
- getitem @oldstock$[rand(getarraysize(@oldstock$))], 1;
- cleararray @oldstock$, "", getarraysize(@oldstock$);
- if (@rank < 15)
- goto L_Extra1;
- close;
-
-// TOP 15 reward
-L_Extra1:
- mes "[Santa Claus]";
- mes "\"The official Christmas 2009 headgear!";
- mes "Ho Ho Ho Merry Christmas!\"";
- getitem "SnowGoggles", 1;
- if (@rank < 10)
- goto L_Extra2;
- close;
-
-// TOP 10 reward
-L_Extra2:
- setarray @oldstock$, "PlushMouboo", "StickReinboo", "Doll", "LeatherBall", "SantaSnowGlobe", "SnowmanSnowGlobe", "RedOrnament", "YellowOrnament", "GreenOrnament", "AquaOrnament", "BlueOrnament", "MagentaOrnament";
- getitem @oldstock$[rand(getarraysize(@oldstock$))], 1;
- cleararray @oldstock$, "", getarraysize(@oldstock$);
- if (@rank < 5)
- goto L_Extra3;
- close;
-
-// TOP 5 reward
-L_Extra3:
- setarray @oldstock$, "MoubooHead", "MushHat", "ChristmasElfHat", "FunkyHat", "ShroomHat", "ElfNightcap", "BowlerHat", "TopHat";
- getitem @oldstock$[rand(getarraysize(@oldstock$))], 1;
- cleararray @oldstock$, "", getarraysize(@oldstock$);
- if (@rank < 2)
- goto L_Extra4;
- close;
-
-// TOP 2 reward
-L_Extra4:
- setarray @oldstock$, "SantaBeardHat", "ChristmasTreeHat", "EyePatch", "AntlerHat";
- getitem @oldstock$[rand(getarraysize(@oldstock$))], 1;
- cleararray @oldstock$, "", getarraysize(@oldstock$);
- close;
-
-/* FIXME requires player attached bcz TMWA is crazy, so better not.
-// Spawn 10~30 snowballs in Nivalis square
-OnClock2359:
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- makeitem 5260, rand(1,3), "020-1", rand(69, 82), rand(78, 91);
- end;
-
-// Duplicates
-OnClock0001:
- goto OnClock2359;
-OnClock1759:
- goto OnClock2359;
-OnClock1801:
- goto OnClock2359;
-OnClock0559:
- goto OnClock2359;
-OnClock0601:
- goto OnClock2359;
-OnClock2124:
- goto OnClock2359;
-OnClock0024:
- goto OnClock2359;
-*/
-}
-
-
-
-////////////////////////////////
-033-1,0,0,0|script|XXmas0331|32767
-{
- end;
-
-OnHit2:
- goto OnHit;
-
-OnHit:
- // Not Christmas yet
- if (!$@xmas_time)
- end;
- // Reward time
- if ($@xmas_time == $@xmas_reward_time)
- end;
- // player must be created at least two weeks ago
- if ((BaseLevel < 30) || (gettimetick(2) - TUT_var < 2*7*86400))
- end;
-
- // Magic cheat
- if (@wandspell[4])
- end;
- if (@ingravspell[2])
- end;
- if (@chizaspell[2])
- end;
- if (@flarspell[2])
- end;
- if (@phlexspell[3])
- end;
- if (@chipchipspell[2])
- end;
- if (@upmarmuspell[1])
- end;
-
- // Not equipped to hunt Grinchboos
- //if (getequipid(equip_arrow) != 5260)
- // end;
- if (getequipid(equip_hand1) != 5261)
- end;
-
- // By last, check for Arrow Hail
- set @nearby, 0;
- foreach 1, getmap(), @away[0] - 14, @away[1] - 14, @away[0] + 14, @away[1] + 14,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (@nearby)
- end;
-
- // Grinchboo slain
- set XMAS2020, XMAS2020 + 1;
- set $XMAS2020_BOO, $XMAS2020_BOO + 1;
- set @loop, 0;
- set @rank, 0;
- goto L_MaybeInsertNext;
-
-L_MaybeInsertNext:
- if (XMAS2020 > $Record_XXmas_Kills[@rank])
- goto L_InsertScore;
- // you already had a better score
- if (strcharinfo(0) == $Record_XXmas_Name$[@rank])
- goto L_Reward1;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_Reward1;
- goto L_MaybeInsertNext;
-
-L_InsertScore:
- set @loop, @rank;
- goto L_FindLastScore;
-
-L_FindLastScore:
- // comment this out to allow the player to be in the list more than once
- // though actually, it might be better just to assume the list is full
- if (strcharinfo(0) == $Record_XXmas_Name$[@loop])
- goto L_MoveStuff;
-
- set @loop, @loop + 1;
- if (@loop == MAX_HIGH_SCORES)
- goto L_MoveStuff;
- goto L_FindLastScore;
-
-L_MoveStuff:
- if (@loop == @rank)
- goto L_FinallyInsertMe;
- set $Record_XXmas_Kills[@loop], $Record_XXmas_Kills[@loop - 1];
- set $Record_XXmas_Name$[@loop], $Record_XXmas_Name$[@loop - 1];
- set $Record_XXmas_Date$[@loop], $Record_XXmas_Date$[@loop - 1];
- set @loop, @loop - 1;
- goto L_MoveStuff;
-
-L_FinallyInsertMe:
- set $Record_XXmas_Kills[@rank], XMAS2020;
- set $Record_XXmas_Name$[@rank], strcharinfo(0);
- callfunc "time_stamp";
- set $Record_XXmas_Date$[@rank], @ts_date$ + " " + @ts_time$;
- set @ts_date$, "";
- set @ts_time$, "";
- goto L_Reward1;
-
-L_Reward1:
- // Maybe we should tell you how many you purified?
- if (XMAS2020 % 10 == 0 || XMAS2020 == 1)
- goto L_Warning;
- end;
-
-L_Warning:
- message strcharinfo(0), "Grinchboos purified: "+XMAS2020;
- end;
-
-OnTimer15000:
- areamonster "033-1", 20, 20, 120, 110, "", 1162, 18, "XXmas0331::OnHit2";
- // Only happens until :15, and every 15 minutes, for a total of 60 cycles.
- if (gettime(2) > 15)
- end;
- initnpctimer;
- end;
-
-OnClock1800:
- initnpctimer;
- end;
-
-OnClock1830:
- killmonster "033-1", "XXmas0331::OnHit2";
- stopnpctimer;
- end;
-
-// Additional timers
-OnClock0000:
- goto OnClock1800;
-OnClock0030:
- goto OnClock1830;
-OnClock0600:
- goto OnClock1800;
-OnClock0630:
- goto OnClock1830;
-
-OnNearbyNpc:
- explode .@nearby$[0], strnpcinfo(0,@target_id), "#";
- if(.@nearby$[0] == "arrow-hail" || .@nearby$[1] == "arrow-hail")
- set @nearby, @nearby + 1;
- end;
-}
-
-046-1,0,0,0|script|XXmas0461|32767
-{
- end;
-
-OnHit2:
- goto OnHit;
-
-OnHit:
- // Not Christmas yet
- if (!$@xmas_time)
- end;
- // Reward time
- if ($@xmas_time == $@xmas_reward_time)
- end;
- // player must be created at least two weeks ago
- if ((BaseLevel < 30) || (gettimetick(2) - TUT_var < 2*7*86400))
- end;
-
- // Magic cheat
- if (@wandspell[4])
- end;
- if (@ingravspell[2])
- end;
- if (@chizaspell[2])
- end;
- if (@flarspell[2])
- end;
- if (@phlexspell[3])
- end;
- if (@chipchipspell[2])
- end;
- if (@upmarmuspell[1])
- end;
-
- // Not equipped to hunt Grinchboos
- //if (getequipid(equip_arrow) != 5260)
- // end;
- if (getequipid(equip_hand1) != 5261)
- end;
-
- // By last, check for Arrow Hail
- set @nearby, 0;
- foreach 1, getmap(), @away[0] - 14, @away[1] - 14, @away[0] + 14, @away[1] + 14,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (@nearby)
- end;
-
- // Grinchboo slain
- set XMAS2020, XMAS2020 + 1;
- set $XMAS2020_BOO, $XMAS2020_BOO + 1;
- set @loop, 0;
- set @rank, 0;
- goto L_MaybeInsertNext;
-
-L_MaybeInsertNext:
- if (XMAS2020 > $Record_XXmas_Kills[@rank])
- goto L_InsertScore;
- // you already had a better score
- if (strcharinfo(0) == $Record_XXmas_Name$[@rank])
- goto L_Reward1;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_Reward1;
- goto L_MaybeInsertNext;
-
-L_InsertScore:
- set @loop, @rank;
- goto L_FindLastScore;
-
-L_FindLastScore:
- // comment this out to allow the player to be in the list more than once
- // though actually, it might be better just to assume the list is full
- if (strcharinfo(0) == $Record_XXmas_Name$[@loop])
- goto L_MoveStuff;
-
- set @loop, @loop + 1;
- if (@loop == MAX_HIGH_SCORES)
- goto L_MoveStuff;
- goto L_FindLastScore;
-
-L_MoveStuff:
- if (@loop == @rank)
- goto L_FinallyInsertMe;
- set $Record_XXmas_Kills[@loop], $Record_XXmas_Kills[@loop - 1];
- set $Record_XXmas_Name$[@loop], $Record_XXmas_Name$[@loop - 1];
- set $Record_XXmas_Date$[@loop], $Record_XXmas_Date$[@loop - 1];
- set @loop, @loop - 1;
- goto L_MoveStuff;
-
-L_FinallyInsertMe:
- set $Record_XXmas_Kills[@rank], XMAS2020;
- set $Record_XXmas_Name$[@rank], strcharinfo(0);
- callfunc "time_stamp";
- set $Record_XXmas_Date$[@rank], @ts_date$ + " " + @ts_time$;
- set @ts_date$, "";
- set @ts_time$, "";
- goto L_Reward1;
-
-L_Reward1:
- // Maybe we should tell you how many you purified?
- if (XMAS2020 % 10 == 0 || XMAS2020 == 1)
- goto L_Warning;
- end;
-
-L_Warning:
- message strcharinfo(0), "Grinchboos purified: "+XMAS2020;
- end;
-
-OnTimer15000:
- areamonster "046-1", 20, 20, 160, 115, "", 1162, 18, "XXmas0461::OnHit2";
- // Only happens until :15, and every 15 minutes, for a total of 60 cycles.
- if (gettime(2) > 15)
- end;
- initnpctimer;
- end;
-
-OnClock1800:
- initnpctimer;
- end;
-
-OnClock1830:
- killmonster "046-1", "XXmas0461::OnHit2";
- stopnpctimer;
- end;
-
-// Additional timers
-OnClock0000:
- goto OnClock1800;
-OnClock0030:
- goto OnClock1830;
-OnClock0600:
- goto OnClock1800;
-OnClock0630:
- goto OnClock1830;
-
-OnNearbyNpc:
- explode .@nearby$[0], strnpcinfo(0,@target_id), "#";
- if(.@nearby$[0] == "arrow-hail" || .@nearby$[1] == "arrow-hail")
- set @nearby, @nearby + 1;
- end;
-}
-
-047-1,0,0,0|script|XXmas0471|32767
-{
- end;
-
-OnHit2:
- goto OnHit;
-
-OnHit:
- // Not Christmas yet
- if (!$@xmas_time)
- end;
- // Reward time
- if ($@xmas_time == $@xmas_reward_time)
- end;
- // player must be created at least two weeks ago
- if ((BaseLevel < 30) || (gettimetick(2) - TUT_var < 2*7*86400))
- end;
-
- // Magic cheat
- if (@wandspell[4])
- end;
- if (@ingravspell[2])
- end;
- if (@chizaspell[2])
- end;
- if (@flarspell[2])
- end;
- if (@phlexspell[3])
- end;
- if (@chipchipspell[2])
- end;
- if (@upmarmuspell[1])
- end;
-
- // Not equipped to hunt Grinchboos
- //if (getequipid(equip_arrow) != 5260)
- // end;
- if (getequipid(equip_hand1) != 5261)
- end;
-
- // By last, check for Arrow Hail
- set @nearby, 0;
- foreach 1, getmap(), @away[0] - 14, @away[1] - 14, @away[0] + 14, @away[1] + 14,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (@nearby)
- end;
-
- // Grinchboo slain
- set XMAS2020, XMAS2020 + 1;
- set $XMAS2020_BOO, $XMAS2020_BOO + 1;
- set @loop, 0;
- set @rank, 0;
- goto L_MaybeInsertNext;
-
-L_MaybeInsertNext:
- if (XMAS2020 > $Record_XXmas_Kills[@rank])
- goto L_InsertScore;
- // you already had a better score
- if (strcharinfo(0) == $Record_XXmas_Name$[@rank])
- goto L_Reward1;
- set @rank, @rank + 1;
- if (@rank == MAX_HIGH_SCORES)
- goto L_Reward1;
- goto L_MaybeInsertNext;
-
-L_InsertScore:
- set @loop, @rank;
- goto L_FindLastScore;
-
-L_FindLastScore:
- // comment this out to allow the player to be in the list more than once
- // though actually, it might be better just to assume the list is full
- if (strcharinfo(0) == $Record_XXmas_Name$[@loop])
- goto L_MoveStuff;
-
- set @loop, @loop + 1;
- if (@loop == MAX_HIGH_SCORES)
- goto L_MoveStuff;
- goto L_FindLastScore;
-
-L_MoveStuff:
- if (@loop == @rank)
- goto L_FinallyInsertMe;
- set $Record_XXmas_Kills[@loop], $Record_XXmas_Kills[@loop - 1];
- set $Record_XXmas_Name$[@loop], $Record_XXmas_Name$[@loop - 1];
- set $Record_XXmas_Date$[@loop], $Record_XXmas_Date$[@loop - 1];
- set @loop, @loop - 1;
- goto L_MoveStuff;
-
-L_FinallyInsertMe:
- set $Record_XXmas_Kills[@rank], XMAS2020;
- set $Record_XXmas_Name$[@rank], strcharinfo(0);
- callfunc "time_stamp";
- set $Record_XXmas_Date$[@rank], @ts_date$ + " " + @ts_time$;
- set @ts_date$, "";
- set @ts_time$, "";
- goto L_Reward1;
-
-L_Reward1:
- // Maybe we should tell you how many you purified?
- if (XMAS2020 % 10 == 0 || XMAS2020 == 1)
- goto L_Warning;
- end;
-
-L_Warning:
- message strcharinfo(0), "Grinchboos purified: "+XMAS2020;
- end;
-
-OnTimer15000:
- areamonster "047-1", 20, 20, 200, 180, "", 1162, 48, "XXmas0471::OnHit2";
- // Only happens until :15, and every 15 minutes, for a total of 60 cycles.
- if (gettime(2) > 15)
- end;
- initnpctimer;
- end;
-
-OnClock1800:
- initnpctimer;
- end;
-
-OnClock1830:
- killmonster "047-1", "XXmas0471::OnHit2";
- stopnpctimer;
- end;
-
-// Additional timers
-OnClock0000:
- goto OnClock1800;
-OnClock0030:
- goto OnClock1830;
-OnClock0600:
- goto OnClock1800;
-OnClock0630:
- goto OnClock1830;
-
-OnNearbyNpc:
- explode .@nearby$[0], strnpcinfo(0,@target_id), "#";
- if(.@nearby$[0] == "arrow-hail" || .@nearby$[1] == "arrow-hail")
- set @nearby, @nearby + 1;
- end;
-}
-
diff --git a/world/map/npc/annuals/xmas/barriers.txt b/world/map/npc/annuals/xmas/barriers.txt
deleted file mode 100644
index 8460e7bf..00000000
--- a/world/map/npc/annuals/xmas/barriers.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-
-function|script|ThrowOutTheBum
-{
- set @getout, 0;
- if((@xmas_thrown_out) && ($@xmas_time))
- goto L_SideOut;
- goto L_Return;
-
-L_SideOut:
- if(@xmas_helper_start_state)
- goto L_Warp;
- goto L_Hint;
-
-L_Hint:
- message strcharinfo(0), "I said get out! We've got no time for your kind here.";
- mes "[Orum's Homunculus]";
- mes "\"What are you doing? Come, see me in the caves below!\"";
- mes "\"I said go south till you reach the snowman. Then head into the cave to the east.\"";
- close2;
- warp "020-1",33,94;
- set @getout, 1;
- goto L_Return;
-
-L_Warp:
- message strcharinfo(0), "I said get out, We've no time for your kind here.";
- warp "020-1",33,94;
- set @getout, 1;
- goto L_Return;
-
-L_Return:
- return;
-}
-
-// Annual Xmas Boss Fight Door
-030-2,153,21,0|script|#DarkDoor|45,0,0
-{
- callfunc "XmasStates";
-
- if((@xmas_boss_door_state) && ($@xmas_time))
- goto L_XmasMain;
- goto L_NotActive;
-
-L_XmasMain:
- mes "You get the strange sensation that this might go terribly wrong. You had better bring some of your strongest comrades to help you in that case.";
- mes "Open the warehouse door?";
- menu
- "Yes, I feel brave.", L_Open,
- "No, It's quite nice out here.", L_Close;
-
-L_Open:
- if ($@XmasBattleStatus) goto L_BattleInProgress;
- warp "030-4",34,48;
- goto L_Close;
-
-L_BattleInProgress:
- mes "You can hear shouts and screams of despair from behind the door. But trying to open it fails.";
- next;
- mes "You will have to wait till someone from the inside opens the door again.";
- goto L_Close;
-
-L_NotActive:
- message strcharinfo(0), "This door appears locked by magical forces.";
- end;
-
-L_Close:
- close;
-}
-
-// Annual Xmas secret passage to a trapdoor in Santa's Inn Basement
-
-030-3,27,24,0|script|SmallCrack#XmasPassage|400,0,1
-{
- callfunc "XmasStates";
-
- if((@xmas_basement_passage) && ($@xmas_time))
- goto L_XmasMain;
- goto L_NotActive;
-
-L_NotActive:
- mes "You don't notice anything special.";
- goto L_Close;
-
-L_XmasMain:
- mes "You notice a small creak in the wall, what do you want to do?";
- next;
- goto L_EnterDialogue;
-
-L_EnterDialogue:
- menu
- "Nothing.", L_Close,
- "Bang my head against it repeatedly.", L_Tux9th,
- "Oh, not very much, I do not see anynthing there.", L_Close,
- "Hit it with my strong fist.", L_Enter;
-
-L_Tux9th:
- heal -20, 0;
- message strcharinfo(0), "Ouch, that hurt!";
- setlook LOOK_HAIR_STYLE, rand(20);
- goto L_Fail;
-
-L_Enter:
- if (getequipid(equip_hand1) > 0 || getequipid(equip_hand2) > 0) goto L_Sword;
- if (getequipid(equip_gloves) <= 0) goto L_Gloves;
- goto L_QueryWarp;
-
-L_Sword:
- mes "That is not your fist silly,";
- mes "use your fist, alright?";
- goto L_Close;
-
-L_Gloves:
- mes "Wow! Next time you plan to hit a wall,";
- mes "you had better equip some decent gloves in advance.";
- heal -20, 0;
- message strcharinfo(0), "Ouch, that hurt!";
- goto L_QueryWarp;
-
-L_QueryWarp:
- mes "You gaze into a black hole, do you want to enter?";
- mes " ";
- menu
- "Yes", L_Warp,
- "No", L_Close;
-
-L_Warp:
- warp "030-2",47,44;
- goto L_Close;
-
-L_Fail:
- mes "Seems like that won't work out as you planned.";
- goto L_Close;
-
-L_Close:
- close;
-}
-
-// Annual Xmas Escape Hatch
-030-2,48,44,0|script|#BasementDoor|45,0,0
-{
- callfunc "XmasStates";
-
- if((@xmas_basement_passage) && ($@xmas_time))
- goto L_XmasMain;
- goto L_NotActive;
-
-L_XmasMain:
- mes "Descend into the caves?";
- menu
- "Yes.", L_Open,
- "No.", L_Close;
-
-L_Open:
- warp "030-3",27,26;
- goto L_Close;
-
-L_NotActive:
- message strcharinfo(0), "This door appears locked by magical forces.";
- end;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/annuals/xmas/config.txt b/world/map/npc/annuals/xmas/config.txt
deleted file mode 100644
index 31068889..00000000
--- a/world/map/npc/annuals/xmas/config.txt
+++ /dev/null
@@ -1,291 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-
-// NPC behavior depending on time:
-// No Event Time: The event didn't start yet or already ended - the house is closed and the outside NPCs give generic dialogue
-// Event Time: Christmas preparation is in progress, main quest can be done
-// Reward Time: Christmas is over, if the main quest was finished, the reward can be taken
-// for now variable xmas used
-// Main quest states: XMASTIME
-// NIBBLE_0
-// 0-15: Main Quest States
-// Nibble_1: @xmas_karma, Event Behavior
-// 0-15: 0: Naughty, 15: Nice
-// List BITS:
-// 8: 021-1,87,66,0|script|Ayasha|258
-// 9: 021-1,63,107,0|script|Latif|262
-// 10: 021-1,123,116,0|script|Charda|260
-// 11: 021-1,78,87,0|script|Faris|259
-// 12: 021-1,98,25,0|script|Rasin|263
-// 13: 021-1,155,25,0|script|Ghada|265
-// 14: 025-1,80,88,0|script|Rossy|114
-// 15: 001-2,76,59,0|script|Kadiya|174
-// Helper Bit
-// 16: Bedding End
-// 17: Bedding Starts
-// 18: Glitter End
-// 19: Glitter Start
-// 20: Storage Helper
-// 21: Roasted Acorns
-// 22: Santa's Helper
-// 23: - free -
-// 24: Basement Passage
-// 25: Thrown Out
-// 26: Boss started Once by Player
-// 27: Boss won on hard mode
-// 28: Perfect Helpers
-// 29: Prefect List
-// 30: Helper Bit
-// 31: Side Choosen: Naughty vs. Nice
-
--|script|#XmasConfig|32767
-{
- end;
-
-OnCommandRestartQuest:
- goto L_Main;
-
-OnInit:
- goto L_Main;
-
-L_Main:
- // Xmas Key Identifier Set through Botcheck Debug
- if(!($XMAS_TIME_KEY) || (getarraysize($XMAS_TIME_KEY) != 6))
- setarray $XMAS_TIME_KEY, 12,12,1,25,6,gettime(7);
- if(($XMAS_TIME_KEY[0] == 0) || ($XMAS_TIME_KEY[0] > 12))
- goto L_XmasError;
- if(($XMAS_TIME_KEY[1] == 0) || ($XMAS_TIME_KEY[1] > 12))
- goto L_XmasError;
- if(($XMAS_TIME_KEY[2] == 0) || ($XMAS_TIME_KEY[2] > 12))
- goto L_XmasError;
- if(($XMAS_TIME_KEY[3] == 0) || ($XMAS_TIME_KEY[3] > 31))
- goto L_XmasError;
- if(($XMAS_TIME_KEY[4] == 0) || ($XMAS_TIME_KEY[4] > 31))
- goto L_XmasError;
- if($XMAS_TIME_KEY[5] == 0)
- goto L_XmasError;
-
- // Event Runs until Reward Period.
- // Month Start/End
- set $@xmas_start_month, $XMAS_TIME_KEY[0];
- set $@xmas_reward_start_month, $XMAS_TIME_KEY[1];
- set $@xmas_end_month, $XMAS_TIME_KEY[2];
-
- // Reward Day Start/End
- set $@xmas_reward_start_day, $XMAS_TIME_KEY[3];
- set $@xmas_reward_end_day, $XMAS_TIME_KEY[4];
-
- // Time Settings
- set $@xmas_no_event_time, 0;
- set $@xmas_event_time, 1;
- set $@xmas_reward_time, 2;
-
- // Main Quest Settings
- // Bit used to Set Which one of the 2 quests you are on
- set $@xmas_side_bit, (1 << 31);
- set $@xmas_base_bonus_xp, 4;
- set $@xmas_karma_bonus, 1;
- set $@xmas_reward_max_karma, 15;
- set $@xmas_reward_hero_boss, 15;
- set $@xmas_reward_all_lists, 10;
- set $@xmas_reward_all_helpers, 10;
- set $@xmas_reward_tally_rare, 80;
- set $@xmas_reward_tally_common, 40;
- // Guidance System
- set $@xmas_route_bit, (1 << 23);
- // Basement Passage way
- set $@xmas_basement_passage, (1 << 24);
- // Thrown Out
- set $@xmas_thrown_out_bit, (1 << 25);
- // Quest Start (@xmas_state)
- set $@xmas_list_path2_state, 1;
- set $@xmas_list_path1_state, 2;
- set $@xmas_list_both_state, 3;
- set $@xmas_list_complete_state, 4;
- set $@xmas_list_deliver_state, 5;
- // Helper SubQuest
- set $@xmas_helpers_start_state, 6;
- set $@xmas_helpers_done_state, 7;
- // Reagents
- set $@xmas_reagents_start, 8;
- set $@xmas_reagents_done, 9;
- // Boss Door State
- set $@xmas_boss_door_open_state, 10;
- // Reward State
- set $@xmas_reward_start, 11;
- set $@xmas_reward1_done, 12;
- set $@xmas_reward2_done, 13;
- set $@xmas_reward_done, 14;
-
- // Boss Fight Required Level for Hard Mode
- set $@BossHardLevel, 70;
- set $@xmas_boss_start_bit, (1 << 26);
- set $@xmas_boss_hero_bit, (1 << 27);
- set $@xmas_boss_start_shift, 26;
- set $@xmas_boss_hero_shift, 27;
- setarray $@xmas_boss_req$, "IronPotion", "DarkCrystal";
- setarray $@xmas_boss_amount, 15, 10;
- if(getarraysize($@xmas_boss_amount) != getarraysize($@xmas_boss_req$))
- goto L_XmasError;
- // Santas Helper quest rewards
- setarray $@SantasHelper_Annual_Reward$,
- "RedTurtleneck",
- "YellowTurtleneck",
- "LightBlueTurtleneck",
- "PinkTurtleneck",
- "OrangeTurtleneck",
- "PurpleTurtleneck",
- "KnitCap",
- "KnitCap";
-
- // Main Quest rewards
- setarray $@xmas_present_from$, "Santa", "Orum";
- setarray $@xmas_rare_reward$, "FunkyChristmasSweater", "DarkChristmasSweater";
- setarray $@xmas_uncommon_reward$, "NutcrackerHat", "AmberChristmasSweater", "RedStockings", "PinkChristmasSweater", "BlueChristmasSweater";
- // Quest Side 0 Settings
- setarray $@xmas_zero_reagents$, "ShockSweet", "EmptyBottle", "EmeraldPowder";
- setarray $@xmas_zero_reagents_names$, "Shock Sweet", "Empty Bottles", "Emerald Powders";
- setarray $@xmas_zero_reagents_amounts, 1, 4, 10;
- if(getarraysize($@xmas_zero_reagents_amounts) != getarraysize($@xmas_zero_reagents$))
- goto L_XmasError;
-
- // Quest Side 1 Settings
- setarray $@xmas_one_reagents$, "DarkCrystal", "IronPotion", "EmeraldPowder";
- setarray $@xmas_one_reagents_names$, "Dark Crystal", "Iron Potions", "Emerald Powders";
- setarray $@xmas_one_reagents_amounts, 1, 4, 10;
- if(getarraysize($@xmas_one_reagents_amounts) != getarraysize($@xmas_one_reagents$))
- goto L_XmasError;
-
- // List Bits
- set $@xmas_all_lists_bit, (1 << 29);
- setarray $@xmas_child_list, (1 << 8), (1 << 9), (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15);
- setarray $@xmas_child_list_name$, "Ayasha", "Latif", "Charda", "Faris", "Rasin", "Ghada", "Rossy", "Kadiya";
- if(getarraysize($@xmas_child_list) != getarraysize($@xmas_child_list_name$))
- goto L_XmasError;
-
- set $@xmas_perfect_list_count, getarraysize($@xmas_child_list);
- set $@xmas_required_list_count, (getarraysize($@xmas_child_list) / 2);
-
- // Santa's Helper
- set $@xmas_sh_bit, (1 << 22);
- set $@xmas_sh_purple_amount, 25;
- set $@xmas_sh_blue_amount, 20;
- set $@xmas_sh_green_amount, 5;
-
- // Main Helper Bit
- set $@xmas_helper_bit, (1 << 30);
- set $@xmas_all_helpers_bit, (1 << 28);
-
- // Acorns
- set $@xmas_helper_bit_acorns, (1 << 21);
- set $@xmas_acorn_amount, 10;
- set $@xmas_iron_potion_amount, 1;
-
- // Bedding
- set $@xmas_helper_bit_bed_starts, (1 << 16);
- set $@xmas_helper_bit_bed_ends, (1 << 17);
- set $@xmas_bedding_amount, 10;
-
- // Boxes
- set $@xmas_log_amount, 2;
-
- // Wrap
- set $@xmas_reed_amount, 2;
- set $@xmas_water_amount, 1;
- set $@xmas_wrap_reward, 1;
-
- // Wrap Dye Amounts
- set $@xmas_poa_amount, 2;
- set $@xmas_wrap_yellow_amount, 2;
- set $@xmas_wrap_ltblue_amount, 2;
- set $@xmas_wrap_purple_amount, 2;
- set $@xmas_wrap_green_amount, 2;
-
- // Present Return
- set $@xmas_present_amount, 5;
-
- // Shipping
- set $@xmas_wrap_amount, 1;
- set $@xmas_empty_box_amount, 1;
- set $@xmas_ship_present_amount, 1;
-
- // Glitter
- set $@xmas_helper_bit_glitter_starts, (1 << 18);
- set $@xmas_helper_bit_glitter_ends, (1 << 19);
- set $@xmas_red_amount, 5;
- set $@xmas_yellow_amount, 5;
-
- // Storage (Daily Xmas)
- set $@xmas_helper_bit_storage, (1 << 20);
- // Good Daily Ammounts
- set $@xmas_good_level, 30;
- set $@xmas_good_cost, 12;
- set $@xmas_good_count, 3;
- set $@xmas_good_name$, "Candy";
- set $@xmas_good_friendly_name$, "Candies";
- set $@xmas_good_money, 500;
- set $@xmas_good_exp, 200;
-
- // Bad Daily Ammounts
- set $@xmas_bad_level, 30;
- set $@xmas_bad_cost, 12;
- set $@xmas_bad_count, 3;
-
- set $@xmas_bad_name$, "RedApple";
- set $@xmas_bad_friendly_name$, "Red Apples";
- set $@xmas_bad_money, 500;
- set $@xmas_bad_exp, 200;
-
- //Boss Fight Reward
- set $@xmas_boss_bp, 50;
-
- // Helpers Flags needed to set $@xmas_all_helpers_bit
- setarray $@xmas_helper_list, $@xmas_helper_bit_bed_ends, $@xmas_helper_bit_glitter_ends, $@xmas_helper_bit_storage, $@xmas_helper_bit_acorns, $@xmas_sh_bit;
- set $@xmas_perfect_helpers_count, getarraysize($@xmas_helper_list);
- set $@xmas_required_helpers_count, (getarraysize($@xmas_helper_list) / 2);
-
- // MobManager
- //setarray $@xmas_mob_names$, "Santa Slime", "Candied Slime", "Candied Slime";
- setarray $@xmas_mob_spawns, "1015", "1111", "1111";
- setarray $@xmas_mob_counts, 10, 5, 5;
- setarray $@xmas_map_spawns$, "019-1", "019-3", "030-3";
- if(getarraysize($@xmas_mob_spawns) != getarraysize($@xmas_map_spawns$))
- goto L_XmasError;
- //if(getarraysize($@xmas_mob_names$) != getarraysize($@xmas_map_spawns$))
- // goto L_XmasError;
- if(getarraysize($@xmas_mob_counts) != getarraysize($@xmas_map_spawns$))
- goto L_XmasError;
-
- set $@xmas_spawn_x1, 54;
- set $@xmas_spawn_y1, 48;
- set $@xmas_spawn_x2, 79;
- set $@xmas_spawn_y2, 89;
- set $@xmas_respawn_count, 9;
-
- set $@start_month, $@xmas_start_month;
- set $@end_month, $@xmas_end_month;
- set $@start_day, 1;
- set $@end_day, $@xmas_reward_end_day;
- set $@reward_start_month, $@xmas_reward_start_month;
- set $@reward_start_day, $@xmas_reward_start_day;
-
- callfunc "GetEventTime";
- set $@xmas_time, $@event_time;
-
- if($@xmas_time == 0 && $XMAS_TIME_KEY[5] < gettime(7))
- setarray $XMAS_TIME_KEY, $XMAS_TIME_KEY[0],$XMAS_TIME_KEY[1],$XMAS_TIME_KEY[2],$XMAS_TIME_KEY[3],$XMAS_TIME_KEY[4],gettime(7);
- goto L_Return;
-
-L_Return:
- // technically this only needs to skip the npctimer in SpawnMobs,
- // but this is a low-level debug setting so whatever.
- if (debug >= 2) end;
- callfunc "SpawnMobs";
- callfunc "PresentHandler";
- callfunc "ReplaceTrees";
- end;
-
-L_XmasError:
- debugmes "Xmas is Dead Jim.";
- mapexit;
-}
diff --git a/world/map/npc/annuals/xmas/core.txt b/world/map/npc/annuals/xmas/core.txt
deleted file mode 100644
index 4e628bb4..00000000
--- a/world/map/npc/annuals/xmas/core.txt
+++ /dev/null
@@ -1,252 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-
-function|script|XmasNaughty
-{
- set @xmas_karma, ((XMASTIME & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
- if((@xmas_karma - @karma_bonus) >= 0)
- goto L_SetNaughty;
- goto L_ResetNaughty;
-
-L_SetNaughty:
- set @xmas_karma, (@xmas_karma - @karma_bonus);
- goto L_Return;
-
-L_ResetNaughty:
- set @xmas_karma, 0;
- goto L_Return;
-
-L_Return:
- set XMASTIME, (XMASTIME & ~(NIBBLE_1_MASK) | (@xmas_karma << NIBBLE_1_SHIFT));
- set @karma_bonus, 0;
- return;
-}
-
-function|script|XmasNice
-{
- set @xmas_karma, ((XMASTIME & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
- if((@xmas_karma + @karma_bonus) < 16)
- goto L_SetNice;
- goto L_ResetNice;
-
-L_SetNice:
- set @xmas_karma, (@karma_bonus + @xmas_karma);
- goto L_Return;
-
-L_ResetNice:
- set @xmas_karma, 15;
- goto L_Return;
-
-L_Return:
- set XMASTIME, (XMASTIME & ~(NIBBLE_1_MASK) | (@xmas_karma << NIBBLE_1_SHIFT));
- set @karma_bonus, 0;
- return;
-}
-
-// Called for a basic reward for quests state completion
-function|script|XmasXpReward
-{
- if (BaseLevel >= 10)
- goto L_HigherLevel;
- goto L_LowLevel;
-
-L_HigherLevel:
- getexp ((BaseLevel / 10) * ($@xmas_base_bonus_xp * BaseLevel)), 0;
- goto L_Return;
-
-L_LowLevel:
- getexp ($@xmas_base_bonus_xp * BaseLevel), 0;
- goto L_Return;
-
-L_Return:
- return;
-}
-
-function|script|XmasSetState
-{
- set XMASTIME, (XMASTIME & ~(NIBBLE_0_MASK) | (@xmas_state << NIBBLE_0_SHIFT));
- return;
-}
-
-function|script|XmasSetSide
-{
- set XMASTIME, XMASTIME | $@xmas_side_bit;
- return;
-}
-
-function|script|XmasSetRoute
-{
- set XMASTIME, XMASTIME | $@xmas_route_bit;
- return;
-}
-
-function|script|XmasThrowOut
-{
- set XMASTIME, XMASTIME | $@xmas_thrown_out_bit;
- return;
-}
-
-function|script|XmasSetBossStart
-{
- set XMASTIME, XMASTIME | $@xmas_boss_start_bit;
- return;
-}
-
-function|script|XmasSetBossHero
-{
- set XMASTIME, XMASTIME | $@xmas_boss_hero_bit;
- return;
-}
-
-// Tallys the players quest
-function|script|XmasSetReward
-{
- set @xmas_endgame, 0;
- set @xmas_reward_side, 0;
- set @xmas_reward_tally, 0;
- if(@xmas_side)
- goto L_SetSide;
- goto L_NotSetSide;
-
-L_SetSide:
- set @xmas_reward_side, 1;
- set @xmas_reward_tally, (@xmas_reward_tally + ($@xmas_reward_max_karma - @xmas_karma));
- goto L_SetRewardBonus;
-
-L_NotSetSide:
- set @xmas_reward_tally, (@xmas_reward_tally + @xmas_karma);
- goto L_SetRewardBonus;
-
-L_SetRewardBonus:
- if(@xmas_boss_hero)
- set @xmas_reward_tally, (@xmas_reward_tally + $@xmas_reward_hero_boss);
- if(@xmas_all_helpers)
- set @xmas_reward_tally, (@xmas_reward_tally + $@xmas_reward_all_helpers);
- if(@xmas_all_lists)
- set @xmas_reward_tally, (@xmas_reward_tally + $@xmas_reward_all_lists);
- //formula should:
- if (@xmas_reward_tally > 5)
- set @xmas_reward_lower_bound, 2 * @xmas_reward_tally - rand(5);
- if (@xmas_reward_tally <= 5)
- set @xmas_reward_lower_bound, @xmas_reward_tally;
- set @xmas_reward_upper_bound, @xmas_reward_lower_bound + ((Luk) / 5);
- set @xmas_reward, (rand(@xmas_reward_lower_bound, @xmas_reward_upper_bound));
- set @xmas_reward_lower_bound, 0;
- set @xmas_reward_upper_bound, 0;
- return;
-}
-
-// Main quest completion reward
-function|script|XmasMainXpBpReward
-{
- callfunc "XmasSetReward";
-
- if(BaseLevel >= 135)
- goto L_EndGameReward;
- goto L_LevelingReward;
-
-L_EndGameReward:
- set @xmas_bp_reward, 100 + rand(@xmas_reward, 2 * @xmas_reward);
- set BOSS_POINTS, BOSS_POINTS + @xmas_bp_reward;
- message strcharinfo(0), "You gain " + @xmas_bp_reward + " Bosspoints, giving you a total of " + BOSS_POINTS + ".";
- set @xmas_bp_reward, 0;
- return;
-
-L_LevelingReward:
- if(@xmas_reward >= $@xmas_reward_tally_rare)
- goto L_XmasLevel;
- goto L_XmasExp;
-
-L_XmasLevel:
- set BaseLevel, BaseLevel + 1;
- return;
-
-L_XmasExp:
- getexp ((@xmas_reward * BaseLevel * (BaseLevel + 10)) / 10), 0;
- return;
-}
-
-// Final Item reward
-function|script|XmasMainItemReward
-{
- callfunc "XmasSetReward";
-
- if (($@xmas_time == $@xmas_reward_time) && ((@xmas_reward_start_state) || (@xmas_reward1_done_state)))
- goto L_FinalGift;
- if (($@xmas_time == $@xmas_reward_time) && ((@xmas_reward_done_state) || (@xmas_reward2_done_state)))
- goto L_GotGift;
- if ($@xmas_time == $@xmas_reward_time)
- goto L_NoGift;
- goto L_Return;
-
-L_GotGift:
- mes "Hey, this is not for you!";
- goto L_Return;
-
-L_NoGift:
- mes "Oh someone got a present. Maybe you can get one too if help the right person?";
- goto L_Return;
-
-L_FinalGift:
- mes "[To: " + strcharinfo(0) + "]";
- mes "[From: " + $@xmas_present_from$[@xmas_reward_side] + "]";
- mes "O look, a present from " + $@xmas_present_from$[@xmas_reward_side];
- next;
- getinventorylist;
- if (@inventorylist_count > 97)
- goto L_FullInv;
- set @xmas_reward, (@xmas_reward + ((BaseLevel + 10)/10));
- if (debug > 0)
- message strcharinfo(0), "Reward variable: " + @xmas_reward;
- set @xmas_uncommon_slot1, rand(getarraysize($@xmas_uncommon_reward$));
- set @xmas_uncommon_slot2, rand(getarraysize($@xmas_uncommon_reward$));
- if(@xmas_reward >= $@xmas_reward_tally_rare)
- set @xmas_reward_item$, $@xmas_rare_reward$[@xmas_reward_side];
- if(@xmas_reward >= $@xmas_reward_tally_common)
- set @xmas_reward_item1$, $@xmas_uncommon_reward$[@xmas_uncommon_slot1];
- set @xmas_reward_item2$, $@xmas_uncommon_reward$[@xmas_uncommon_slot2];
- if(checkweight("Iten", 1) == 0)
- goto L_FullInv;
- if(@xmas_reward >= $@xmas_reward_tally_rare)
- getitem @xmas_reward_item$, 1;
- if(@xmas_reward >= $@xmas_reward_tally_common)
- getitem @xmas_reward_item1$, 1;
- getitem @xmas_reward_item2$, 1;
- set @xmas_uncommon_slot1, 0;
- set @xmas_uncommon_slot2, 0;
- set @xmas_reward_item$, "";
- set @xmas_reward_item1$, "";
- set @xmas_reward_item2$, "";
- if (@xmas_reward_start_state)
- set @xmas_state, $@xmas_reward2_done;
- if (@xmas_reward1_done_state)
- set @xmas_state, $@xmas_reward_done;
- callfunc "XmasSetState";
- goto L_Return;
-
-L_FullInv:
- mes "\"You have no place to put the present.\"";
- goto L_Return;
-
-L_Return:
- return;
-}
-
-// Checks for an expired event key
-// Each new annual event needs a new key
-// or it will allow completion from last year
-function|script|XmasCheckOld
-{
- if(XMASYEAR == $XMAS_TIME_KEY[5])
- goto L_Return;
- goto L_OldMatch;
-
-L_OldMatch:
- set XMASTIME, 0;
- set XMASYEAR, $XMAS_TIME_KEY[5];
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/annuals/xmas/debug.txt b/world/map/npc/annuals/xmas/debug.txt
deleted file mode 100644
index 6c513ff1..00000000
--- a/world/map/npc/annuals/xmas/debug.txt
+++ /dev/null
@@ -1,228 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-
-function|script|XmasDebug
-{
- if(debug)
- goto L_Debug;
- goto L_Live;
-
-L_Live:
- mes "What do you want to do?";
- menu
- "Debug Vars", L_DebugLive,
- "Xmas Time Key Change.", L_XmasTimeKey,
- "Reset Xmas Chamber.", L_XmasChamberReset,
- "Do nothing.", L_Close;
-
-L_DebugLive:
- mes "--Sever--";
- mes "Event State: " + $@xmas_time;
- mes "Event Start" + $XMAS_TIME_KEY[0] + "/1";
- mes "Reward Start: " + $XMAS_TIME_KEY[1] + "/" + $XMAS_TIME_KEY[3];
- mes "Event End: " + $XMAS_TIME_KEY[2] + "/" + $XMAS_TIME_KEY[4];
- mes "Event Time Key (year (CCYY)): " + $XMAS_TIME_KEY[5];
- goto L_Close;
-
-L_Debug:
- mes "What do you want to do?";
- menu
- "Debug Vars", L_DebugVars,
- "Set Quest State.", L_XmasState,
- "Set Karma. [0-15] 15 Nice", L_XmasKarma,
- "Set All Lists", L_SetAllLists,
- "Set All Helpers", L_SetAllHelpers,
- "Set Boss Hero", L_SetBossHero,
- "Reset Quest State.", L_Reset,
- "Set Old Event Flag.", L_LastReset,
- "Xmas Time Key Change.", L_XmasTimeKey,
- "Reset Xmas Chamber.", L_XmasChamberReset,
- "Do nothing.", L_Close;
-
-L_DebugVars:
- callfunc "XmasStates";
- mes "--Sever--";
- mes "Event State: " + $@xmas_time;
- mes "Event Start" + $XMAS_TIME_KEY[0] + "/1";
- mes "Reward Start: " + $XMAS_TIME_KEY[1] + "/" + $XMAS_TIME_KEY[3];
- mes "Event End: " + $XMAS_TIME_KEY[2] + "/" + $XMAS_TIME_KEY[4];
- mes "Event Time Key (year (CCYY)): " + $XMAS_TIME_KEY[5];
- next;
- mes "--Player--";
- mes "Player Event Time Key " + XMASYEAR;
- mes "xmas_state: " + @xmas_state;
- mes "xmas_karma: " + @xmas_karma;
- mes "xmas_side: " + @xmas_side;
- next;
- mes "xmas_list_gather: " + @xmas_list_gather;
- mes "xmas_list_complete: " + @xmas_list_complete;
- mes "xmas_list_deliver: " + @xmas_list_deliver;
- mes "xmas_helper_start_state: " + @xmas_helper_start_state;
- mes "xmas_helper_done_state: " + @xmas_helper_done_state;
- mes "xmas_reagent_start_state: " + @xmas_reagent_start_state;
- mes "xmas_reagent_done_state: " + @xmas_reagent_done_state;
- mes "xmas_boss_door_state: " + @xmas_boss_door_state;
- mes "xmas_reward_start_state " + @xmas_reward_start_state;
- mes "xmas_reward1_done_state " + @xmas_reward1_done_state;
- mes "xmas_reward2_done_state " + @xmas_reward2_done_state;
- mes "xmas_reward_done_state: " + @xmas_reward_done_state;
- next;
- mes "xmas_basement_passage: " + @xmas_basement_passage;
- mes "xmas_thrown_out: " + @xmas_thrown_out;
- mes "xmas_hard_mode: " + @xmas_boss_hero;
- next;
- mes "xmas_sweater: " + @xmas_sh_done;
- next;
- mes "xmas_all_lists: " + @xmas_all_lists;
- next;
- mes "xmas_helper_bit: " + @xmas_helper_bit;
- mes "xmas_all_helpers: " + @xmas_all_helpers;
- mes "xmas_helper_acorn: " + @xmas_helper_acorn;
- mes "xmas_helper_bedding: " + @xmas_helper_bedding;
- mes "xmas_helper_glitter: " + @xmas_helper_glitter;
- mes "xmas_helper_storage: " + @xmas_helper_storage;
- mes "xmas_knows_route: " + @xmas_knows_route;
- goto L_Close;
-
-L_LastReset:
- set XMASTIME, 255;
- set XMASYEAR, 2012;
- goto L_Close;
-
-L_Reset:
- set XMASTIME, 0;
- set XMASYEAR, $XMAS_TIME_KEY[5];
- goto L_Close;
-
-L_XmasTimeKey:
- mes "Xmas Time Key Change.";
- mes "Start Month?";
- input @xmas_time_key_smonth;
- if((@xmas_time_key_smonth == 0) || (@xmas_time_key_smonth > 12))
- goto L_XmasError;
- mes "Reward Start Month?";
- input @xmas_time_key_srmonth;
- if((@xmas_time_key_srmonth == 0) || (@xmas_time_key_srmonth > 12))
- goto L_XmasError;
- mes "End Month?";
- input @xmas_time_key_emonth;
- if((@xmas_time_key_emonth == 0) || (@xmas_time_key_emonth > 12))
- goto L_XmasError;
- mes "Reward Start Day?";
- input @xmas_time_key_rsday;
- if((@xmas_time_key_rsday == 0) || (@xmas_time_key_rsday > 31))
- goto L_XmasError;
- mes "Reward End Day?";
- input @xmas_time_key_reday;
- if((@xmas_time_key_reday == 0) || (@xmas_time_key_reday > 31))
- goto L_XmasError;
- mes "Time Key (CCYY) ";
- input @xmas_time_key_year;
- goto L_SetNewKey;
-
-L_XmasError:
- mes "Incorrect Entry. Try again.";
- goto L_Close;
-
-L_SetNewKey:
- setarray $XMAS_TIME_KEY, @xmas_time_key_smonth, @xmas_time_key_srmonth, @xmas_time_key_emonth, @xmas_time_key_rsday, @xmas_time_key_reday, @xmas_time_key_year;
- donpcevent "#XmasConfig::OnCommandRestartQuest";
- goto L_Close;
-
-L_XmasChamberReset:
- donpcevent "AniManOMat::OnCommandChamberReset";
- goto L_Close;
-
-L_XmasState:
- mes "Quest state?";
- input @xmas_state;
- callfunc "XmasSetState";
- goto L_Close;
-
-L_XmasKarma:
- mes "Karma (0-15) 0: Naughty, 15: Good";
- input @xmas_karma;
- set XMASTIME, (XMASTIME & ~(NIBBLE_1_MASK) | (@xmas_karma << NIBBLE_1_SHIFT));
- goto L_Close;
-
-L_SetAllLists:
- set XMASTIME, XMASTIME | $@xmas_all_lists_bit;
- goto L_Close;
-
-L_SetAllHelpers:
- set XMASTIME, XMASTIME | $@xmas_all_helpers_bit;
- goto L_Close;
-
-L_SetBossHero:
- set XMASTIME, XMASTIME | $@xmas_boss_hero_bit;
- goto L_Close;
-
-L_Close:
- set @xmas_state, 0;
- set @xmas_karma, 0;
- set @xmas_hard_mode, 0;
- set @xmas_time_key_smonth, 0;
- set @xmas_time_key_emonth, 0;
- set @xmas_time_key_rsday, 0;
- set @xmas_time_key_reday, 0;
- set @xmas_time_key_year, 0;
- close2;
- return;
-}
-
-020-1,86,76,0|script|XmasDebug#1|105
-{
- callfunc "XmasDebug";
- goto L_End;
-
-OnInit:
- if(!(debug))
- disablenpc "XmasDebug#1";
- goto L_End;
-
-L_End:
- end;
-}
-
-030-2,193,62,0|script|XmasDebug#2|105
-{
- callfunc "XmasDebug";
- goto L_End;
-
-OnInit:
- if(!(debug))
- disablenpc "XmasDebug#2";
- goto L_End;
-
-L_End:
- end;
-}
-
-030-3,26,26,0|script|XmasDebug#3|105
-{
- callfunc "XmasDebug";
- goto L_End;
-
-OnInit:
- if(!(debug))
- disablenpc "XmasDebug#3";
- goto L_End;
-
-L_End:
- end;
-}
-
-030-4,30,30,0|script|XmasDebug#4|111
-{
- callfunc "XmasDebug";
- goto L_End;
-
-OnInit:
- if(!(debug))
- disablenpc "XmasDebug#4";
- goto L_End;
-
-L_End:
- end;
-}
diff --git a/world/map/npc/annuals/xmas/helpers.txt b/world/map/npc/annuals/xmas/helpers.txt
deleted file mode 100644
index 0d566de7..00000000
--- a/world/map/npc/annuals/xmas/helpers.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-// TODO: Make Helpers static functions
-
-function|script|XmasHelperPoints
-{
- set @xmas_helper_count, 0;
- set @xmas_helper_loop, 0;
- if((@xmas_helper_done_state) || !(@xmas_helper_start_state))
- goto L_Return;
- goto L_Loop;
-
-L_Loop:
- if(XMASTIME & $@xmas_helper_list[@xmas_helper_loop])
- goto L_AddOne;
- goto L_LoopAgain;
-
-L_AddOne:
- set @xmas_helper_count, (@xmas_helper_count + 1);
- goto L_LoopAgain;
-
-L_LoopAgain:
- if((@xmas_helper_loop + 1) == getarraysize($@xmas_helper_list))
- goto L_HelperTally;
- set @xmas_helper_loop, (@xmas_helper_loop + 1);
- goto L_Loop;
-
-L_HelperTally:
- if(@xmas_helper_count == $@xmas_perfect_helpers_count)
- goto L_PerfectHelpers;
- if(@xmas_helper_count > $@xmas_required_helpers_count)
- goto L_SetHelperState;
- goto L_Return;
-
-L_PerfectHelpers:
- set XMASTIME, XMASTIME | $@xmas_all_helpers_bit;
- goto L_SetHelperState;
-
-L_SetHelperState:
- set @xmas_state, $@xmas_helpers_done_state;
- callfunc "XmasSetState";
- goto L_Return;
-
-L_Return:
- set @xmas_helper_count, 0;
- set @xmas_helper_loop, 0;
- return;
-}
diff --git a/world/map/npc/annuals/xmas/list.txt b/world/map/npc/annuals/xmas/list.txt
deleted file mode 100644
index 1805e6a8..00000000
--- a/world/map/npc/annuals/xmas/list.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-
-function|script|XmasCheckList
-{
- set @xmas_list_count, 0;
- set @xmas_list_loop, 0;
-
- if((@xmas_list_deliver) || !(@xmas_list_gather))
- goto L_Return;
- goto L_Loop;
-
-L_Loop:
- if(XMASTIME & $@xmas_child_list[@xmas_list_loop])
- goto L_AddOne;
- goto L_LoopAgain;
-
-L_AddOne:
- set @xmas_list_count, (@xmas_list_count + 1);
- goto L_LoopAgain;
-
-L_LoopAgain:
- if((@xmas_list_loop + 1) == getarraysize($@xmas_child_list))
- goto L_ListTally;
- set @xmas_list_loop, (@xmas_list_loop + 1);
- goto L_Loop;
-
-L_ListTally:
- if(@xmas_list_count == $@xmas_perfect_list_count)
- goto L_PerfectList;
- if(@xmas_list_count > $@xmas_required_list_count)
- goto L_SetListState;
- goto L_Return;
-
-L_PerfectList:
- set XMASTIME, XMASTIME | $@xmas_all_lists_bit;
- goto L_SetListState;
-
-L_SetListState:
- set @xmas_state, $@xmas_list_complete_state;
- callfunc "XmasSetState";
- goto L_Return;
-
-L_Return:
- set @xmas_list_loop, 0;
- return;
-}
-
-function|script|XmasList
-{
- callfunc "XmasStates";
-
- if(($@xmas_time) && (@xmas_list_gather) && !(@xmas_list_complete))
- goto L_QuestTime;
- goto L_Return;
-
-L_QuestTime:
- if(XMASTIME & $@xmas_child_list[@child_number])
- goto L_Return;
- goto L_GetList;
-
-L_GetList:
- menu
- "Hey, I have come to collect your wish list for Santa", L_List,
- "Oh sorry, what were you going to say?", L_Return;
-
-L_List:
- mes "[" + $@xmas_child_list_name$[@child_number] + "]";
- mes "Here is my list. Make sure it gets delivered, please!";
- next;
- mes "You store " + $@xmas_child_list_name$[@child_number] + "'s wish list carefully in a hidden pocket of your backpack.";
- set XMASTIME, XMASTIME | $@xmas_child_list[@child_number];
- callfunc "XmasXpReward";
- menu
- "I really should be going.", L_Return;
-
-L_Return:
- return;
-}
-
-function|script|XmasListList
-{
- set @xmas_list_loop, 0;
- set @xmas_child_loop, 0;
- goto L_Loop;
-
-L_Loop:
- set @xmas_child_loop, ($@xmas_child_list[@xmas_list_loop]);
- if ((XMASTIME & @xmas_child_loop) != 0) goto L_LoopAgain;
- mes "\"" + $@xmas_child_list_name$[@xmas_list_loop] + "\"";
- next;
- goto L_LoopAgain;
-
-L_LoopAgain:
- if((@xmas_list_loop + 1) == getarraysize($@xmas_child_list_name$))
- goto L_Return;
- set @xmas_list_loop, (@xmas_list_loop + 1);
- goto L_Loop;
-
-L_Return:
- set @xmas_list_loop, 0;
- return;
-}
diff --git a/world/map/npc/annuals/xmas/mobmanager.txt b/world/map/npc/annuals/xmas/mobmanager.txt
deleted file mode 100644
index bb9f2a3f..00000000
--- a/world/map/npc/annuals/xmas/mobmanager.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-// Spawns mobs
-
-019-1,0,0,0|script|XmasSpawnManager|400
-{
- end;
-
-OnCommandSpawnStart:
- if ($@xmas_spawn_started)
- goto L_End;
- set $@xmas_spawn_started, 1;
- goto L_InitSpawn;
-
-L_InitSpawn:
- initnpctimer;
- set $@xmas_current_count, 0;
- set $@xmas_map_loop, 0;
- goto L_StartLoop;
-
-L_StartLoop:
- set $@xmas_mob_lck, 1;
- set $@mob_count, mobcount($@xmas_map_spawns$[$@xmas_map_loop], "XmasSpawnCounter#" + $@xmas_map_loop + "::OnTally");
- set $@spawn_amount, ($@xmas_mob_counts[$@xmas_map_loop] - ($@mob_count + 1));
- if ($@spawn_amount)
- goto L_Spawn;
- goto L_NextMap;
-
-L_Spawn:
- areamonster $@xmas_map_spawns$[$@xmas_map_loop], $@xmas_spawn_x1, $@xmas_spawn_y1, $@xmas_spawn_x2, $@xmas_spawn_y2, $@xmas_mob_names$[$@xmas_map_loop], $@xmas_mob_spawns[$@xmas_map_loop], $@spawn_amount, "XmasSpawnCounter#" + $@xmas_map_loop + "::OnTally";
- set $@xmas_current_count, ($@xmas_current_count + $@spawn_amount);
- goto L_NextMap;
-
-L_NextMap:
- if (($@xmas_map_loop + 1) == getarraysize($@xmas_map_spawns$))
- goto L_End;
- set $@xmas_map_loop, ($@xmas_map_loop + 1);
- goto L_StartLoop;
-
-OnCommandTally:
- set $@xmas_map_loop, 0;
- set $@xmas_current_count, ($@xmas_current_count - 1);
- if (($@xmas_current_count < $@xmas_respawn_count) && !($@xmas_mob_lck))
- goto L_StartLoop;
- goto L_End;
-
-OnTimer110000:
- initnpctimer;
- goto L_StartLoop;
-
-L_End:
- set $@mob_count, 0;
- set $@spawn_amount, 0;
- set $@xmas_mob_lck, 0;
- set $@xmas_map_loop, 0;
- end;
-}
-
-019-1,0,0,0|script|XmasSpawnCounter#0|400
-{
- end;
-
-OnTally:
- donpcevent "XmasSpawnManager::OnCommandTally";
- end;
-}
-
-019-3,0,0,0|script|XmasSpawnCounter#1|400
-{
- end;
-
-OnTally:
- donpcevent "XmasSpawnManager::OnCommandTally";
- end;
-}
-
-030-3,0,0,0|script|XmasSpawnCounter#2|400
-{
- end;
-
-OnTally:
- donpcevent "XmasSpawnManager::OnCommandTally";
- end;
-}
diff --git a/world/map/npc/annuals/xmas/reagents.txt b/world/map/npc/annuals/xmas/reagents.txt
deleted file mode 100644
index 4adcaf12..00000000
--- a/world/map/npc/annuals/xmas/reagents.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-
-function|script|CheckReagents
-{
- set @xmas_reagent_loop, 0;
- if((@xmas_reagent_done_state) || !(@xmas_reagent_start_state))
- goto L_Return;
- if(@xmas_side)
- goto L_OneLoop;
- goto L_ZeroLoop;
-
-L_ZeroLoop:
- if(countitem($@xmas_zero_reagents$[@xmas_reagent_loop]) >= $@xmas_zero_reagents_amounts[@xmas_reagent_loop])
- goto L_ZeroLoopAgain;
- goto L_Return;
-
-L_ZeroLoopAgain:
- if((@xmas_reagent_loop + 1) == getarraysize($@xmas_zero_reagents$))
- goto L_AllReagents;
- set @xmas_reagent_loop, (@xmas_reagent_loop + 1);
- goto L_ZeroLoop;
-
-L_OneLoop:
- if(countitem($@xmas_one_reagents$[@xmas_reagent_loop]) >= $@xmas_one_reagents_amounts[@xmas_reagent_loop])
- goto L_OneLoopAgain;
- goto L_Return;
-
-L_OneLoopAgain:
- if((@xmas_reagent_loop + 1) == getarraysize($@xmas_one_reagents$))
- goto L_AllReagents;
- set @xmas_reagent_loop, (@xmas_reagent_loop + 1);
- goto L_OneLoop;
-
-L_AllReagents:
- set @xmas_state, $@xmas_reagents_done;
- callfunc "XmasSetState";
- goto L_Return;
-
-L_Return:
- return;
-}
-
-function|script|DeleteReagents
-{
- set @xmas_reagent_loop, 0;
- if(@xmas_side)
- goto L_OneLoop;
- goto L_ZeroLoop;
-
-L_ZeroLoop:
- delitem $@xmas_zero_reagents$[@xmas_reagent_loop], $@xmas_zero_reagents_amounts[@xmas_reagent_loop];
- goto L_ZeroLoopAgain;
-
-L_ZeroLoopAgain:
- if((@xmas_reagent_loop + 1) == getarraysize($@xmas_zero_reagents$))
- goto L_Return;
- set @xmas_reagent_loop, (@xmas_reagent_loop + 1);
- goto L_ZeroLoop;
-
-L_OneLoop:
- delitem $@xmas_one_reagents$[@xmas_reagent_loop], $@xmas_one_reagents_amounts[@xmas_reagent_loop];
- goto L_OneLoopAgain;
-
-L_OneLoopAgain:
- if((@xmas_reagent_loop + 1) == getarraysize($@xmas_one_reagents$))
- goto L_Return;
- set @xmas_reagent_loop, (@xmas_reagent_loop + 1);
- goto L_OneLoop;
-
-L_Return:
- return;
-}
-
-function|script|ListReagents
-{
- set @xmas_reagent_loop, 0;
- mes "\"I'm going to need \"";
- next;
-
- if(@xmas_side)
- goto L_OneLoop;
- goto L_ZeroLoop;
-
-L_ZeroLoop:
- mes "\"" + $@xmas_zero_reagents_amounts[@xmas_reagent_loop] + " " + $@xmas_zero_reagents_names$[@xmas_reagent_loop] + "\"";
- next;
- goto L_ZeroLoopAgain;
-
-L_ZeroLoopAgain:
- if((@xmas_reagent_loop + 1) == getarraysize($@xmas_zero_reagents$))
- goto L_AllReagents;
- set @xmas_reagent_loop, (@xmas_reagent_loop + 1);
- goto L_ZeroLoop;
-
-L_OneLoop:
- mes "\"" + $@xmas_one_reagents_amounts[@xmas_reagent_loop] + " " + $@xmas_one_reagents_names$[@xmas_reagent_loop] + "\"";
- next;
- goto L_OneLoopAgain;
-
-L_OneLoopAgain:
- if((@xmas_reagent_loop + 1) == getarraysize($@xmas_one_reagents$))
- goto L_AllReagents;
- set @xmas_reagent_loop, (@xmas_reagent_loop + 1);
- goto L_OneLoop;
-
-L_AllReagents:
- return;
-}
-
-function|script|BadPowderMake
-{
- if(countitem("PileOfAsh") < ($@xmas_red_amount + $@xmas_yellow_amount))
- goto L_NotEnough;
- if(countitem("RedDye") < $@xmas_red_amount)
- goto L_NotEnough;
- if(countitem("YellowDye") < $@xmas_yellow_amount)
- goto L_NotEnough;
- getinventorylist;
- if (@inventorylist_count > 100)
- goto L_FullInv;
- goto L_MakePowder;
-
-L_MakePowder:
- delitem "PileOfAsh", ($@xmas_red_amount + $@xmas_yellow_amount);
- delitem "RedDye", $@xmas_red_amount;
- delitem "YellowDye", $@xmas_yellow_amount;
- getitem "RedPowder", $@xmas_red_amount;
- getitem "YellowPowder", $@xmas_yellow_amount;
- mes "\"Here is your powder, now move!\"";
- goto L_Return;
-
-L_FullInv:
- mes "\"... Excuse me but where did you expect you were going to hold these powders...\"";
- mes "\"WAIT! no, I don't want to know. Just come back when you have some room.\"";
- goto L_Return;
-
-L_NotEnough:
- mes "\"You don't have enough of eagents to make the powders.\"";
- mes "\"To replace the glitter we will need get " + ($@xmas_red_amount + $@xmas_yellow_amount) + " Piles of Ash, " + $@xmas_red_amount + " Red Dyes and " + $@xmas_yellow_amount + " Yellow Dyes\"";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/annuals/xmas/states.txt b/world/map/npc/annuals/xmas/states.txt
deleted file mode 100644
index 49f51000..00000000
--- a/world/map/npc/annuals/xmas/states.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file is part of Christmas Event
-// author: Jenalya, Chayenne, cinderweb, wushin
-// please see #XmasConfig
-
-function|script|XmasStates
-{
- // Check for Old Quest Line Keys. Reset Quest if so.
- callfunc "XmasCheckOld";
- // Main Quest
- set @xmas_state, ((XMASTIME & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- set @xmas_karma, ((XMASTIME & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
- set @xmas_side, XMASTIME & $@xmas_side_bit;
-
- set @xmas_list_gather, (@xmas_state >= $@xmas_list_path2_state);
- set @xmas_list_path2, (@xmas_state == $@xmas_list_path2_state);
- set @xmas_list_path1, (@xmas_state == $@xmas_list_path1_state);
- set @xmas_list_both, (@xmas_state == $@xmas_list_both_state);
- set @xmas_list_complete, (@xmas_state >= $@xmas_list_complete_state);
- set @xmas_list_deliver, (@xmas_state >= $@xmas_list_deliver_state);
- set @xmas_helper_start_state, (@xmas_state >= $@xmas_helpers_start_state);
- set @xmas_helper_done_state, (@xmas_state >= $@xmas_helpers_done_state);
- set @xmas_reagent_start_state, (@xmas_state >= $@xmas_reagents_start);
- set @xmas_reagent_done_state, (@xmas_state >= $@xmas_reagents_done);
- set @xmas_boss_door_state, (@xmas_state >= $@xmas_boss_door_open_state);
- set @xmas_reward_start_state, (@xmas_state == $@xmas_reward_start);
- set @xmas_reward1_done_state, (@xmas_state == $@xmas_reward1_done);
- set @xmas_reward2_done_state, (@xmas_state == $@xmas_reward2_done);
- set @xmas_reward_done_state, (@xmas_state == $@xmas_reward_done);
-
- // Basement Passage
- set @xmas_basement_passage, XMASTIME & $@xmas_basement_passage;
- // Thrown Out
- set @xmas_thrown_out, XMASTIME & $@xmas_thrown_out_bit;
- // Learned Route to Orum
- set @xmas_knows_route, XMASTIME & $@xmas_route_bit;
- // Santas Helper
- set @xmas_sh_done, XMASTIME & $@xmas_sh_bit;
- // List Quest
- set @xmas_all_lists, XMASTIME & $@xmas_all_lists_bit;
- // Helper Quest
- set @xmas_helper_bit, XMASTIME & $@xmas_helper_bit;
- set @xmas_all_helpers, XMASTIME & $@xmas_all_helpers_bit;
- // Acorns
- set @xmas_helper_acorn, XMASTIME & $@xmas_helper_bit_acorns;
- // Bedding
- set @xmas_helper_bedding, XMASTIME & $@xmas_helper_bit_bed_starts;
- // Glitter
- set @xmas_helper_glitter, XMASTIME & $@xmas_helper_bit_glitter_starts;
- // Storage
- set @xmas_helper_storage, XMASTIME & $@xmas_helper_bit_storage;
- // Bosses
- set @xmas_boss_start, XMASTIME & $@xmas_boss_start_bit;
- set @xmas_boss_hero, XMASTIME & $@xmas_boss_hero_bit;
- return;
-}
diff --git a/world/map/npc/botcheck/_import.txt b/world/map/npc/botcheck/_import.txt
deleted file mode 100644
index 85374e51..00000000
--- a/world/map/npc/botcheck/_import.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-// Map botcheck: Botcheck Area
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-map: botcheck
-npc: npc/botcheck/_mobs.txt
-npc: npc/botcheck/_nodes.txt
-npc: npc/botcheck/_warps.txt
-npc: npc/botcheck/mapflags.txt
diff --git a/world/map/npc/botcheck/_mobs.txt b/world/map/npc/botcheck/_mobs.txt
deleted file mode 100644
index 66a9726f..00000000
--- a/world/map/npc/botcheck/_mobs.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Botcheck Area mobs
-
diff --git a/world/map/npc/botcheck/_nodes.txt b/world/map/npc/botcheck/_nodes.txt
deleted file mode 100644
index e72a6332..00000000
--- a/world/map/npc/botcheck/_nodes.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Botcheck Area nodes
-
-// (no nodes)
diff --git a/world/map/npc/botcheck/_warps.txt b/world/map/npc/botcheck/_warps.txt
deleted file mode 100644
index bd960df1..00000000
--- a/world/map/npc/botcheck/_warps.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Botcheck Area warps
-
diff --git a/world/map/npc/botcheck/mapflags.txt b/world/map/npc/botcheck/mapflags.txt
deleted file mode 100644
index 9f7777da..00000000
--- a/world/map/npc/botcheck/mapflags.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-botcheck|mapflag|resave|botcheck,37,37
-botcheck|mapflag|nosave|botcheck,37,37
diff --git a/world/map/npc/commands/_import.txt b/world/map/npc/commands/_import.txt
deleted file mode 100644
index 8655f774..00000000
--- a/world/map/npc/commands/_import.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-npc: npc/commands/_procedures.txt
-npc: npc/commands/zeny.txt
-npc: npc/commands/marry.txt
-npc: npc/commands/debug.txt
-npc: npc/commands/changesex.txt
-npc: npc/commands/class.txt
-npc: npc/commands/pullrabbit.txt
-npc: npc/commands/numa.txt
-npc: npc/commands/destroynpc.txt
-npc: npc/commands/remotecmd.txt
-npc: npc/commands/hug.txt
-npc: npc/commands/warp.txt
-npc: npc/commands/mute.txt
-npc: npc/commands/npctalk.txt
-npc: npc/commands/music.txt
-npc: npc/commands/python.txt
-npc: npc/commands/gm.txt
-npc: npc/commands/automod.txt
-npc: npc/commands/valentine.txt
-npc: npc/commands/bosspoints.txt
-npc: npc/commands/deaths.txt
-npc: npc/commands/divorce.txt
-npc: npc/commands/exp.txt
diff --git a/world/map/npc/commands/_procedures.txt b/world/map/npc/commands/_procedures.txt
deleted file mode 100644
index 9f26a7cd..00000000
--- a/world/map/npc/commands/_procedures.txt
+++ /dev/null
@@ -1,151 +0,0 @@
-// ARGV Splitter
-// takes @args$ and splits it properly so that '@cmd "foo bar" baz' is ['foo bar','baz'] instead of ['"foo','bar"','baz']
-// input: @args$ (string)
-// output: @argv$ (array) and @argv (array)
-function|script|argv_splitter
-{
- explode .@fragments$, @args$, " ";
- set .@e, 0;
- set .@total, getarraysize(.@fragments$);
- set .@NULL$, chr(3); // HACK: we use .@NULL$ as a workaround because we can't do "\0"
- cleararray @argv$[0], "", 20; // I don't think any atcommand will EVER need more than 20 args, and 20 is already generous
- cleararray @argv[0], 0, 20;
- goto L_Check;
-
-L_Check:
- setarray .@check$[0], "", .@NULL$, .@NULL$;
- explode .@check$, .@fragments$[.@e], "\""; // check if the fragment contains a quote
- if (.@check$[0] == "" && .@check$[1] != .@NULL$ && .@check$[1] != "" && .@check$[2] == .@NULL$)
- set .@string$, .@check$[1]; // begin substring
- elif (.@check$[0] != "" && .@check$[1] == "" && .@check$[2] == .@NULL$)
- goto L_EndSubString; // end substring
- elif (.@string$ != "" && .@check$[0] != "" && .@check$[1] == .@NULL$ && .@check$[2] == .@NULL$)
- set .@string$, .@string$ +" "+ .@check$[0]; // part of the substring
- elif (.@check$[2] != .@NULL$) goto L_Set2; // the the argument is quoted but there is no space
- else goto L_Set;
- goto L_CheckAfter;
-
-L_Set:
- setarray @argv$[.@t], .@check$[0]; // not in a substring so push right away
- setarray @argv[.@t], .@check$[0]; // not in a substring so push right away
- set .@t, .@t + 1;
- goto L_CheckAfter;
-
-L_Set2:
- setarray @argv$[.@t], .@check$[1]; // not in a substring so push right away
- setarray @argv[.@t], .@check$[1]; // not in a substring so push right away
- set .@t, .@t + 1;
- goto L_CheckAfter;
-
-L_EndSubString:
- set .@string$, .@string$ + " " + .@check$[0];
- setarray @argv$[.@t], .@string$; // push in the array
- setarray @argv[.@t], .@string$; // push in the array
- set .@t, .@t + 1;
- set .@string$, ""; // clean
- goto L_CheckAfter;
-
-L_CheckAfter:
- set .@e, .@e + 1;
- if (.@e > .@total) goto L_Done; // the @argv$ array is built
- goto L_Check; // not done yet
-
-L_Done:
- return;
-}
-
-// Map2Anchor
-// translates map aliases to actual maps
-function|script|map2anchor
-{
- if (@map_anchor$[0] == "" && @argv$[0] != "")
- set @map_anchor$[0], @argv$[0];
-
- if (@map_anchor$[2] == "" && @argv[1] > 1 && @argv[2] > 1)
- set @map_anchor$[1], @argv[1], @argv[2];
-
- set .@a$, @map_anchor$[0]; // anchor name // FIXME: I really want a str2lower() builtin
-
- if (.@a$ == "hurnscald" || .@a$ == "hurn" || .@a$ == "hurns")
- setarray @map_anchor$[0], "009-1", 55, 37;
-
- elif (.@a$ == "nivalis" || .@a$ == "niv")
- setarray @map_anchor$[0], "020-1", 74, 83;
-
- elif (.@a$ == "tulimshar" || .@a$ == "tulim" || .@a$ == "tul")
- setarray @map_anchor$[0], "001-1", 64, 101;
-
- elif (.@a$ == "candor" || .@a$ == "newbington" || .@a$ == "noob")
- setarray @map_anchor$[0], "029-1", 52, 93;
-
- elif (.@a$ == "oldwizard" || .@a$ == "wizard" || .@a$ == "oldwiz")
- setarray @map_anchor$[0], "013-1", 41, 92;
-
- elif (.@a$ == "desert" || .@a$ == "pachua")
- setarray @map_anchor$[0], "006-1", 34, 99;
-
- elif (.@a$ == "forest" || .@a$ == "katze")
- setarray @map_anchor$[0], "015-1", 58, 35;
-
- elif (.@a$ == "dimond" || .@a$ == "dimondscove")
- setarray @map_anchor$[0], "010-2", 31, 39;
-
- elif (.@a$ == "asphodel" || .@a$ == "swamp" || .@a$ == "swampvillage" || .@a$ == "undeadtown")
- setarray @map_anchor$[0], "026-1", 32, 33;
-
- elif (.@a$ == "gy" || .@a$ == "graveyard")
- setarray @map_anchor$[0], "027-1", 71, 87;
-
- elif (.@a$ == "krukan" || .@a$ == "generalkrukan")
- setarray @map_anchor$[0], "027-6", 39, 47;
-
- elif (.@a$ == "razha" || .@a$ == "generalrazha")
- setarray @map_anchor$[0], "027-7", 39, 35;
-
- elif (.@a$ == "terogan" || .@a$ == "generalterogan")
- setarray @map_anchor$[0], "027-8", 39, 52;
-
- elif (.@a$ == "gmisland" || .@a$ == "eventisland" || .@a$ == "easterisland" || .@a$ == "island")
- setarray @map_anchor$[0], "028-1", 99, 40;
-
- elif (.@a$ == "auditorium" || .@a$ == "scene")
- setarray @map_anchor$[0], "028-1", 119, 69;
-
- elif (.@a$ == "theater")
- setarray @map_anchor$[0], "017-2", 26, 23;
-
- elif (.@a$ == "lounge" || .@a$ == "gmlounge" || .@a$ == "gm" || .@a$ == "backstage")
- setarray @map_anchor$[0], "017-9", 26, 23;
-
- elif (.@a$ == "cindy" || .@a$ == "cindycave")
- setarray @map_anchor$[0], "031-3", 47, 26;
-
- elif (.@a$ == "terranite" || .@a$ == "terra" || .@a$ == "terracave")
- setarray @map_anchor$[0], "012-3", 448, 65;
-
- elif (.@a$ == "terranitesafe" || .@a$ == "terrasafe" || .@a$ == "safeterra")
- setarray @map_anchor$[0], "012-4", 473, 184;
-
- elif (.@a$ == "bluesage" || .@a$ == "blue")
- setarray @map_anchor$[0], "048-2", 40, 46;
-
- elif (.@a$ == "xmasinn" || .@a$ == "xmas")
- setarray @map_anchor$[0], "030-2", 85, 46;
-
- elif (.@a$ == "barbarians" || .@a$ == "barbarian" || .@a$ == "fluffy")
- setarray @map_anchor$[0], "033-1", 71, 33;
-
- elif (.@a$ == "park" || .@a$ == "porttown" || .@a$ == "farms")
- setarray @map_anchor$[0], "057-1", 100, 77;
-
- elif (.@a$ == "hills" || .@a$ == "orum")
- setarray @map_anchor$[0], "017-1", 112, 49;
-
- elif (.@a$ == "batcave" || .@a$ == "bat")
- setarray @map_anchor$[0], "011-3", 30, 26;
-
- else
- set @map_anchor$[3], "no"; // did not use an anchor
-
- return;
-}
diff --git a/world/map/npc/commands/automod.txt b/world/map/npc/commands/automod.txt
deleted file mode 100644
index 09544852..00000000
--- a/world/map/npc/commands/automod.txt
+++ /dev/null
@@ -1,90 +0,0 @@
--|script|@automod|32767
-{
- end;
-
-OnCall:
- if (GM < CMD_AUTOMOD && GM < G_SYSOP) goto L_GM;
- set @PREV_AUTOMOD, AUTOMOD;
- if (@args$ == "") goto L_Info;
- elif (@args$ == "off") goto L_Off;
- elif (@args$ == "kill") goto L_Kill;
- elif (@args$ == "move") goto L_Move;
- elif (@args$ == "block") goto L_Block;
- elif (@args$ == "kick") goto L_Kick;
-
- message strcharinfo(0), "automod : invalid mode.";
- goto L_Info;
-
-L_Off:
- set AUTOMOD, 0;
- set ##AUTOMOD, AUTOMOD;
- message strcharinfo(0), "automod : mode changed to ##Boff##b";
- // send a fixpos to remove the current collision, if any
- if (@PREV_AUTOMOD == 3) set Sex, Sex;
- end;
-
-L_Kill:
- set AUTOMOD, 1;
- set ##AUTOMOD, AUTOMOD;
- message strcharinfo(0), "automod : mode changed to ##Bkill##b";
- message strcharinfo(0), "automod : players sitting on you will automatically be killed and then moved.";
- // send a fixpos to remove the current collision, if any
- if (@PREV_AUTOMOD == 3) set Sex, Sex;
- end;
-
-L_Move:
- set AUTOMOD, 2;
- set ##AUTOMOD, AUTOMOD;
- message strcharinfo(0), "automod : mode changed to ##Bmove##b";
- message strcharinfo(0), "automod : players sitting on you will automatically be moved.";
- // send a fixpos to remove the current collision, if any
- if (@PREV_AUTOMOD == 3) set Sex, Sex;
- end;
-
-L_Block:
- set AUTOMOD, 3;
- set ##AUTOMOD, AUTOMOD;
- message strcharinfo(0), "automod : mode changed to ##Bblock##b";
- message strcharinfo(0), "automod : players will be unable to sit or walk over you while you are sitting. (experimental)";
- set Sex, Sex;
- end;
-
-L_Kick:
- set AUTOMOD, 4;
- set ##AUTOMOD, AUTOMOD;
- message strcharinfo(0), "automod : mode changed to ##Bkick##b";
- message strcharinfo(0), "automod : players sitting on you will automatically be kicked from the server.";
- // send a fixpos to remove the current collision, if any
- if (@PREV_AUTOMOD == 3) set Sex, Sex;
- end;
-
-L_GM:
- message strcharinfo(0), "automod : GM command is level "+ CMD_AUTOMOD +", but you are level " + GM;
- end;
-
-L_Info:
- if (AUTOMOD == 0)
- message strcharinfo(0), "automod : current mode: ##Boff##b kill move block kick";
- elif (AUTOMOD == 1)
- message strcharinfo(0), "automod : current mode: off ##Bkill##b move block kick";
- elif (AUTOMOD == 2)
- message strcharinfo(0), "automod : current mode: off kill ##Bmove##b block kick";
- elif (AUTOMOD == 3)
- message strcharinfo(0), "automod : current mode: off kill move ##Bblock##b kick";
- elif (AUTOMOD == 4)
- message strcharinfo(0), "automod : current mode: off kill move block ##Bkick##b";
- message strcharinfo(0), "automod : you can change mode by doing @automod (mode)";
- end;
-
-OnPCLoginEvent:
- if (GM >= CMD_AUTOMOD && ##AUTOMOD)
- set AUTOMOD, ##AUTOMOD;
- elif (##AUTOMOD)
- set ##AUTOMOD, 0;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "automod", strnpcinfo(0) + "::OnCall";
- registercmd chr(ATCMD_SYMBOL) + "automode", strnpcinfo(0) + "::OnCall";
- end;
-}
diff --git a/world/map/npc/commands/bosspoints.txt b/world/map/npc/commands/bosspoints.txt
deleted file mode 100644
index d7a8e0ab..00000000
--- a/world/map/npc/commands/bosspoints.txt
+++ /dev/null
@@ -1,11 +0,0 @@
--|script|@bosspoints|32767
-{
- message strcharinfo(0), "Boss Points : You currently have " + BOSS_POINTS + " Boss Points.";
- close;
-
-OnInit:
- // TODO: allow event managers to give and take boss points
- registercmd chr(ATCMD_SYMBOL) + "bosspoints", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "bosspoint", strnpcinfo(0); // for typos
- end;
-}
diff --git a/world/map/npc/commands/changesex.txt b/world/map/npc/commands/changesex.txt
deleted file mode 100644
index fca27645..00000000
--- a/world/map/npc/commands/changesex.txt
+++ /dev/null
@@ -1,32 +0,0 @@
--|script|@changesex|32767
-{
- callfunc "argv_splitter";
- set .@n$, if_then_else(@argv$[1] != "", "char", "") + "changesex";
- if (GM < CMD_CHANGESEX && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- if (@argv$[1] != "") set .@target_id, getcharid(3, @argv$[1]);
- if (@argv$[1] != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
- if (@argv$[1] != "" && GM < CMD_CHARCHANGESEX && GM < G_SYSOP) goto L_GM; // when target is not self, use charchangesex permission
-
- set .@s, 3; // default to non-binary
- if (@argv$[0] == "M" || @argv$[0] == "m") set .@s, 1;
- if (@argv$[0] == "F" || @argv$[0] == "f") set .@s, 0;
- set Sex, .@s, .@target_id;
- gmlog "@"+.@n$+" " + @args$;
- message strcharinfo(0), .@n$+" : The operation succeeded.";
- end;
-
-L_Failed:
- // XXX: should we allow GMs to change sex of users that are not logged in?
- message strcharinfo(0), .@n$+" : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), .@n$+" : GM command is level "+ if_then_else(@argv$[1] != "", CMD_CHARCHANGESEX, CMD_CHANGESEX) +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "changesex", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "charchangesex", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/class.txt b/world/map/npc/commands/class.txt
deleted file mode 100644
index 339f6226..00000000
--- a/world/map/npc/commands/class.txt
+++ /dev/null
@@ -1,36 +0,0 @@
--|script|@class|32767
-{
- callfunc "argv_splitter";
- set .@n$, if_then_else(@argv$[1] != "", "char", "") + "class";
- if (GM < CMD_CLASS && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- if (@argv$[1] != "") set .@target_id, getcharid(3, @argv$[1]);
- if (@argv$[1] != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
- if (@argv$[1] != "" && GM < CMD_CHARCLASS && GM < G_SYSOP) goto L_GM; // when target is not self, use charclass permission
-
- set .@c, 1; // default to human
- if (@argv[0] >= 1 || @argv[0] <= 32767) set .@c, @argv[0];
- set Class, .@c, .@target_id;
- if (.@c < 10) addtimer 0, strnpcinfo(0) + "::OnFixHead", .@target_id;
- gmlog "@"+.@n$+" " + @args$;
- message strcharinfo(0), .@n$+" : The operation succeeded.";
- end;
-
-OnFixHead:
- callfunc "fixHeadStyles";
- end;
-
-L_Failed:
- // XXX: should we allow GMs to change class of users that are not logged in?
- message strcharinfo(0), .@n$+" : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), .@n$+" : GM command is level "+ if_then_else(@argv$[1] != "", CMD_CHARCLASS, CMD_CLASS) +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "class", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "charclass", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/deaths.txt b/world/map/npc/commands/deaths.txt
deleted file mode 100644
index 94189748..00000000
--- a/world/map/npc/commands/deaths.txt
+++ /dev/null
@@ -1,11 +0,0 @@
--|script|@deaths|32767
-{
- message strcharinfo(0), "Deaths : You have died " + PC_DIE_COUNTER + " times in total.";
- close;
-
-OnInit:
- // TODO: allow event managers to query deaths
- registercmd chr(ATCMD_SYMBOL) + "deaths", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "death", strnpcinfo(0); // for typos
- end;
-}
diff --git a/world/map/npc/commands/debug.txt b/world/map/npc/commands/debug.txt
deleted file mode 100644
index 19ac4114..00000000
--- a/world/map/npc/commands/debug.txt
+++ /dev/null
@@ -1,992 +0,0 @@
-// Authors: alastrim, Jenalya, Ali-G
-
-function|script|Debug
-{
- if(!@debug_npc) goto L_Begin;
- mes "The debug NPCs have been deprecated. Please use this command instead:";
- mes "";
- mes "%%E ##a@debug##0";
- set @debug_npc, 0;
- goto L_Close;
-
-L_Begin:
- set @debug_mask, 65535;
- set @debug_shift, 0;
- set @mexp, ((MAGIC_EXPERIENCE & @debug_mask) >> @debug_shift);
- mes "What do you want to do?";
- menu
- "Change my level.", L_Level,
- "Change my stats.", L_Status,
- "Change my basic skills.", L_BasicSkills,
- "Change my focus skills.", L_FocusSkills,
- "Change my magic skills.", L_MagicSkills,
- "Add everything.", L_AddAll,
- "Reset everything.", L_ResetAll,
- "Close.", L_Close;
-
-L_Level:
- mes "What level do you want to be (min: 1 - max: 99)?";
- input @lvl;
- if (@lvl < 1)
- goto L_LevelTooLow;
- if (@lvl > 99)
- goto L_LevelTooHigh;
- if (BaseLevel == @lvl)
- goto L_SameLevel;
- set BaseLevel, @lvl;
- resetstatus;
- mes "You are now level " + BaseLevel + ".";
- goto L_Begin;
-
-L_LevelTooLow:
- mes "Bad choice. Minimum level is 1.";
- next;
- goto L_Begin;
-
-L_LevelTooHigh:
- mes "Bad choice. Maximum level is 99.";
- next;
- goto L_Begin;
-
-L_SameLevel:
- mes "You already are level " + @lvl + ".";
- next;
- goto L_Begin;
-
-L_Status:
- mes "What do you want to do?";
- menu
- "Set all of my stats myself.", L_ChangeStrength,
- "Set one of my stats myself.", L_ChangeSingleStat,
- "Get maximum points in all stats.", L_ChangeAllStats,
- "Reset my status points.", L_ResetStatusPoints,
- "Back to the main menu.", L_Begin,
- "Close.", L_Close;
-
-L_ChangeAllStats:
- set Str, 99;
- set Agi, 99;
- set Vit, 99;
- set Int, 99;
- set Dex, 99;
- set Luk, 99;
- mes "You now have 99 in all stats.";
- next;
- goto L_Begin;
-
-L_ChangeStrength:
- mes "How much strength do you want to have (min: 1 - max: 99)?";
- input @str;
- if (@str < 1)
- goto L_StatTooLow;
- if (@str > 99)
- goto L_StatTooHigh;
- set Str, @str;
- goto L_ChangeAgility;
-
-L_ChangeAgility:
- mes "How much agility do you want to have (min: 1 - max: 99)?";
- input @agi;
- if (@agi < 1)
- goto L_StatTooLow;
- if (@agi > 99)
- goto L_StatTooHigh;
- set Agi, @agi;
- goto L_ChangeVitality;
-
-L_ChangeVitality:
- mes "How much vitality do you want to have (min: 1 - max: 99)?";
- input @vit;
- if (@vit < 1)
- goto L_StatTooLow;
- if (@vit > 99)
- goto L_StatTooHigh;
- set Vit, @vit;
- goto L_ChangeIntelligence;
-
-L_ChangeIntelligence:
- mes "How much intelligence do you want to have (min: 1 - max: 99)?";
- input @int;
- if (@int < 1)
- goto L_StatTooLow;
- if (@int > 99)
- goto L_StatTooHigh;
- set Int, @int;
- goto L_ChangeDexterity;
-
-L_ChangeDexterity:
- mes "How much dexterity do you want to have (min: 1 - max: 99)?";
- input @dex;
- if (@dex < 1)
- goto L_StatTooLow;
- if (@dex > 99)
- goto L_StatTooHigh;
- set Dex, @dex;
- goto L_ChangeLuck;
-
-L_ChangeLuck:
- mes "How much luck do you want to have (min: 1 - max: 99)?";
- input @luk;
- if (@luk < 1)
- goto L_StatTooLow;
- if (@luk > 99)
- goto L_StatTooHigh;
- set Luk, @luk;
- mes "You now have " + Str + " in strength.";
- mes "You now have " + Agi + " in agility.";
- mes "You now have " + Vit + " in vitality.";
- mes "You now have " + Int + " in intelligence.";
- mes "You now have " + Dex + " in dexterity.";
- mes "You now have " + Luk + " in luck.";
- next;
- goto L_Begin;
-
-L_StatTooLow:
- mes "Bad choice. Minimum stat value is 1. Aborting.";
- next;
- goto L_Status;
-
-L_StatTooHigh:
- mes "Bad choice. Maximum stat value is 99. Aborting.";
- next;
- goto L_Status;
-
-L_ChangeSingleStat:
- mes "Which stat do you want to change?";
- menu
- "Strength.", L_ChangeStrengthSingle,
- "Agility.", L_ChangeAgilitySingle,
- "Vitality.", L_ChangeVitalitySingle,
- "Intelligence.", L_ChangeIntelligenceSingle,
- "Dexterity.", L_ChangeDexteritySingle,
- "Luck.", L_ChangeLuckSingle,
- "Back to the main menu.", L_Begin,
- "Close.", L_Close;
-
-L_ChangeStrengthSingle:
- mes "How much strength do you want to have (min: 1 - max: 99)?";
- input @str;
- if (@str < 1)
- goto L_StatTooLow;
- if (@str > 99)
- goto L_StatTooHigh;
- set Str, @str;
- mes "You now have " + Str + " in strength.";
- next;
- goto L_Begin;
-
-L_ChangeAgilitySingle:
- mes "How much agility do you want to have (min: 1 - max: 99)?";
- input @agi;
- if (@agi < 1)
- goto L_StatTooLow;
- if (@agi > 99)
- goto L_StatTooHigh;
- set Agi, @agi;
- mes "You now have " + Agi + " in agility.";
- next;
- goto L_Begin;
-
-L_ChangeVitalitySingle:
- mes "How much vitality do you want to have (min: 1 - max: 99)?";
- input @vit;
- if (@vit < 1)
- goto L_StatTooLow;
- if (@vit > 99)
- goto L_StatTooHigh;
- set Vit, @vit;
- mes "You now have " + Vit + " in vitality.";
- next;
- goto L_Begin;
-
-L_ChangeIntelligenceSingle:
- mes "How much intelligence do you want to have (min: 1 - max: 99)?";
- input @int;
- if (@int < 1)
- goto L_StatTooLow;
- if (@int > 99)
- goto L_StatTooHigh;
- set Int, @int;
- mes "You now have " + Int + " in intelligence.";
- next;
- goto L_Begin;
-
-L_ChangeDexteritySingle:
- mes "How much dexterity do you want to have (min: 1 - max: 99)?";
- input @dex;
- if (@dex < 1)
- goto L_StatTooLow;
- if (@dex > 99)
- goto L_StatTooHigh;
- set Dex, @dex;
- mes "You now have " + Dex + " in dexterity.";
- next;
- goto L_Begin;
-
-L_ChangeLuckSingle:
- mes "How much luck do you want to have (min: 1 - max: 99)?";
- input @luk;
- if (@luk < 1)
- goto L_StatTooLow;
- if (@luk > 99)
- goto L_StatTooHigh;
- set Luk, @luk;
- mes "You now have " + Luk + " in luck.";
- next;
- goto L_Begin;
-
-L_ResetStatusPoints:
- resetstatus;
- mes "Stats successfully resetted.";
- next;
- goto L_Begin;
-
-L_BasicSkills:
- set @emote, getskilllv(SKILL_EMOTE);
- set @trade, getskilllv(SKILL_TRADE);
- set @party, getskilllv(SKILL_PARTY);
- menu
- "Overview of my basic skills.", L_BasicSkillsOverview,
- "Add basic skills.", L_AddBasicSkills,
- "Reset basic skills.", L_ResetBasicSkills,
- "Back to main menu.", L_Begin,
- "Close.", L_Close;
-
-L_BasicSkillsOverview:
- mes "Your level in the emote skill is " + @emote + ".";
- mes "Your level in the trade skill is " + @trade + ".";
- mes "Your level in the party skill is " + @party + ".";
- next;
- goto L_BasicSkills;
-
-L_AddBasicSkills:
- menu
- "Emote", L_ChangeEmoteSkill,
- "Trade.", L_ChangeTradeSkill,
- "Party.", L_ChangePartySkill,
- "All basic skills to their maximum level.", L_AllBasicSkills,
- "Back to the basic skills menu.", L_BasicSkills,
- "Close.", L_Close;
-
-L_ChangeEmoteSkill:
- mes "Your level in the emote skill is " + @emote + ". What do you want to do?";
- menu
- "Get level 0.", L_Next,
- "Get level 1.", L_ChangeEmoteSkill1;
-
-L_Next:
- if (@menu == 1)
- setskill SKILL_EMOTE, 0;
- mes "Emote skill changed to level 0.";
- next;
- goto L_BasicSkills;
-
-L_ChangeEmoteSkill1:
- setskill SKILL_EMOTE, 1;
- mes "Emote skill changed to level 1.";
- next;
- goto L_BasicSkills;
-
-L_ChangeTradeSkill:
- mes "Your level in the trade skill is " + @trade + ". What do you want to do?";
- menu
- "Get level 0.", L_Next1,
- "Get level 1.", L_ChangeTradeSkill1;
-
-L_Next1:
- if (@menu == 1)
- setskill SKILL_TRADE, 0;
- mes "Trade skill changed to level 0.";
- next;
- goto L_BasicSkills;
-
-L_ChangeTradeSkill1:
- setskill SKILL_TRADE, 1;
- mes "Trade skill changed to level 1.";
- next;
- goto L_BasicSkills;
-
-L_ChangePartySkill:
- mes "Your level in the party skill is " + @trade + ". What do you want to do?";
- menu
- "Get level 0.", L_Next2,
- "Get level 1.", L_ChangePartySkill1,
- "Get level 2.", L_ChangePartySkill2;
-
-L_Next2:
- if (@menu == 1)
- setskill SKILL_PARTY, 0;
- mes "Party skill changed to level 0.";
- next;
- goto L_BasicSkills;
-
-L_ChangePartySkill1:
- setskill SKILL_PARTY, 1;
- mes "Party skill changed to level 1.";
- next;
- goto L_BasicSkills;
-
-L_ChangePartySkill2:
- setskill SKILL_PARTY, 2;
- mes "Party skill changed to level 2.";
- next;
- goto L_BasicSkills;
-
-L_AllBasicSkills:
- setskill SKILL_EMOTE, 1;
- setskill SKILL_TRADE, 1;
- setskill SKILL_PARTY, 2;
- mes "Basic skills added.";
- next;
- goto L_BasicSkills;
-
-L_ResetBasicSkills:
- setskill SKILL_EMOTE, 0;
- setskill SKILL_TRADE, 0;
- setskill SKILL_PARTY, 0;
- mes "Basic skills removed.";
- next;
- goto L_BasicSkills;
-
-L_FocusSkills:
- set @pool, getskilllv(SKILL_POOL);
- set @mallard, getskilllv(SKILL_MALLARDS_EYE);
- set @brawling, getskilllv(SKILL_BRAWLING);
- set @speed, getskilllv(SKILL_SPEED);
- set @poison, getskilllv(SKILL_RESIST_POISON);
- set @astralsoul, getskilllv(SKILL_ASTRAL_SOUL);
- set @raging, getskilllv(SKILL_RAGING);
- menu
- "Overview of my focus skills.", L_SeeFocusSkills,
- "Focus or unfocus.", L_Unfocus,
- "Add focus skills.", L_ChangeFocusSkills,
- "Reset focus skills.", L_ResetFocusSkills,
- "Back to the main menu.", L_Begin,
- "Close.", L_Close;
-
-L_SeeFocusSkills:
- cleararray @skilllist_name$[0], "", 8;
- cleararray @skilllist_id[0], 0, 8;
- cleararray @skilllist_count[0], 0, 8;
- getactivatedpoolskilllist;
- if (@skilllist_count == 0)
- goto L_NotFocusedMessage;
- if (@skilllist_count != 0)
- mes "You are currently focused on the " + @skilllist_name$[@skilllist_count-1] + " skill.";
- goto L_FocusSkills;
-
-L_NotFocusedMessage:
- mes "You are not focused on any skill right now.";
- goto L_FocusSkillsOverview;
-
-L_FocusSkillsOverview:
- mes "Your focusing skill level is " + @pool + ".";
- mes "Your mallard's eye skill level is " + @mallard + ".";
- mes "Your brawling skill level is " + @brawling + ".";
- mes "Your speed skill level is " + @speed + ".";
- mes "Your resist poison skill level is " + @poison + ".";
- mes "Your astral soul skill level is " + @astralsoul + ".";
- mes "Your raging skill level is " + @raging + ".";
- next;
- goto L_FocusSkills;
-
-L_Unfocus:
- cleararray @skilllist_name$[0], "", 8;
- cleararray @skilllist_id[0], 0, 8;
- cleararray @skilllist_count[0], 0, 8;
- if (getskilllv(SKILL_POOL) == 0)
- setskill SKILL_POOL, 1;
- getactivatedpoolskilllist;
- if (@skilllist_count == 0)
- goto L_Focus;
- getactivatedpoolskilllist;
- if (@skilllist_count != 0)
- goto L_AskUnfocus;
- mes "You are not focused on a skill at the moment.";
- goto L_FocusSkills;
-
-L_Focus:
- cleararray @skilllist_name$[0], "", 8;
- cleararray @skilllist_id[0], 0, 8;
- cleararray @skilllist_count[0], 0, 8;
- getunactivatedpoolskilllist;
- if (@skilllist_count == 0)
- goto L_NoFocusSkills;
- set @skilllist_id[@skilllist_count], 0;
- set @skilllist_name$[@skilllist_count], "Back to the focus skills menu.";
- mes "You are not focused on any focus skill right now. Which one do you want to focus on?";
- menu
- @skilllist_name$[0], L_MenuItems,
- @skilllist_name$[1], L_MenuItems,
- @skilllist_name$[2], L_MenuItems,
- @skilllist_name$[3], L_MenuItems,
- @skilllist_name$[4], L_MenuItems,
- @skilllist_name$[5], L_MenuItems,
- @skilllist_name$[6], L_MenuItems,
- @skilllist_name$[7], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
- poolskill @skilllist_id[@menu];
- goto L_FocusSkills;
-
-L_NoFocusSkills:
- mes "You have no skills to focus on or unfocus from.";
- goto L_FocusSkills;
-
-L_AskUnfocus:
- mes "Unfocus " + @skilllist_name$[@skilllist_count-1] + "?";
- menu
- "Yes.", L_Next3,
- "No.", L_FocusSkills;
-
-L_Next3:
- unpoolskill @skilllist_id[@skilllist_count-1];
- goto L_FocusSkills;
-
-L_ChangeFocusSkills:
- menu
- "Focusing.", L_ChangeFocusingSkill,
- "Mallard's Eye.", L_ChangeMallardsEyeSkill,
- "Brawling.", L_ChangeBrawlingSkill,
- "Speed.", L_ChangeSpeedSkill,
- "Resist Poison.", L_ChangeResistPoisonSkill,
- "Astral Soul.", L_ChangeAstralSoulSkill,
- "Raging.", L_ChangeRagingSkill,
- "All focus skills to their maximum level.", L_AllFocusSkills,
- "Back to the focus skills menu.", L_FocusSkills,
- "Close.", L_Close;
-
-L_BadSkillLevel:
- mes "Invalid skill level.";
- next;
- goto L_ChangeFocusSkills;
-
-L_ChangeFocusingSkill:
- mes "Enter the level you want to be in this skill (min: 0 - max: 1).";
- input @lvl;
- if (@lvl > 1)
- goto L_BadSkillLevel;
- setskill SKILL_POOL, @lvl;
- next;
- goto L_FocusSkills;
-
-L_ChangeMallardsEyeSkill:
- mes "Enter the level you want to be in this skill (min: 0 - max: 9).";
- input @lvl;
- if (@lvl > 9)
- goto L_BadSkillLevel;
- setskill SKILL_MALLARDS_EYE, @lvl;
- next;
- goto L_FocusSkills;
-
-L_ChangeBrawlingSkill:
- mes "Enter the lvl you want to be in this skill (min: 0 - max: 9).";
- input @lvl;
- if (@lvl > 9)
- goto L_BadSkillLevel;
- setskill SKILL_BRAWLING, @lvl;
- next;
- goto L_FocusSkills;
-
-L_ChangeSpeedSkill:
- mes "Enter the lvl you want to be in this skill (min: 0 - max: 9).";
- input @lvl;
- if (@lvl > 9)
- goto L_BadSkillLevel;
- setskill SKILL_SPEED, @lvl;
- next;
- goto L_FocusSkills;
-
-L_ChangeResistPoisonSkill:
- mes "Enter the lvl you want to be in this skill (min: 0 - max: 9).";
- input @lvl;
- if (@lvl > 9)
- goto L_BadSkillLevel;
- setskill SKILL_RESIST_POISON, @lvl;
- next;
- goto L_FocusSkills;
-
-L_ChangeAstralSoulSkill:
- mes "Enter the lvl you want to be in this skill (min: 0 - max: 9).";
- input @lvl;
- if (@lvl > 9)
- goto L_BadSkillLevel;
- setskill SKILL_ASTRAL_SOUL, @lvl;
- next;
- goto L_FocusSkills;
-
-L_ChangeRagingSkill:
- mes "Enter the lvl you want to be in this skill (min: 0 - max: 9).";
- input @lvl;
- if (@lvl > 9)
- goto L_BadSkillLevel;
- setskill SKILL_RAGING, @lvl;
- next;
- goto L_FocusSkills;
-
-L_AllFocusSkills:
- setskill SKILL_POOL, 1;
- setskill SKILL_MALLARDS_EYE, 9;
- setskill SKILL_BRAWLING, 9;
- setskill SKILL_SPEED, 9;
- setskill SKILL_RESIST_POISON, 9;
- setskill SKILL_ASTRAL_SOUL, 9;
- setskill SKILL_RAGING, 9;
- mes "Focus skills added.";
- next;
- goto L_FocusSkills;
-
-L_ResetFocusSkills:
- setskill SKILL_POOL, 0;
- setskill SKILL_MALLARDS_EYE, 0;
- setskill SKILL_BRAWLING, 0;
- setskill SKILL_SPEED, 0;
- setskill SKILL_RESIST_POISON, 0;
- setskill SKILL_ASTRAL_SOUL, 0;
- setskill SKILL_RAGING, 0;
- mes "Focus skills removed.";
- next;
- goto L_FocusSkills;
-
-L_MagicSkills:
- set @general, getskilllv(SKILL_MAGIC);
- set @life, getskilllv(SKILL_MAGIC_LIFE);
- set @war, getskilllv(SKILL_MAGIC_WAR);
- set @trans, getskilllv(SKILL_MAGIC_TRANSMUTE);
- set @nature, getskilllv(SKILL_MAGIC_NATURE);
- set @astral, getskilllv(SKILL_MAGIC_ASTRAL);
- set @dark, getskilllv(SKILL_MAGIC_DARK);
- menu
- "Overview of my magical skills.", L_MagicSkillsOverview,
- "Get magic skills.", L_ChangeMagicSkills,
- "Get magic experience.", L_MagicExperience,
- "All magic skills to their maximum level and maximum magic experience.", L_GetAllMagic,
- "Reset magic skills and experience.", L_ResetMagicSkills,
- "Back to the main menu.", L_Begin,
- "Close.", L_Close;
-
-L_MagicSkillsOverview:
- mes "Your current magic experience skill is " + @mexp + ".";
- mes "Your level in the general magic skill is " + @general + ".";
- mes "Your level in the life magic skill is " + @life + ".";
- mes "Your level in the war magic skill is " + @war + ".";
- mes "Your level in the transmutation magic skill is " + @trans + ".";
- mes "Your level in the nature magic skill is " + @nature + ".";
- mes "Your level in the astral magic skill is " + @astral + ".";
- mes "Your level in the dark magic skill is " + @dark + ".";
- next;
- goto L_MagicSkills;
-
-L_MagicExperience:
- mes "Your current magic experience is " + @mexp + ".";
- if (@general == 0
- && @life == 0
- && @war == 0
- && @trans == 0
- && @nature == 0
- && @astral == 0
- && @dark == 0)
- goto L_NoMagicSkills;
-
- goto L_ChangeMagicExperience;
-
-L_NoMagicSkills:
- mes "You can't have magic experience, since you have no magic skills yet.";
- goto L_MagicSkills;
-
-L_ChangeMagicExperience:
- mes "Set the desired magic experience (min: 0 - max: 8000).";
- input @value;
- if (@value < 0 || @value > 8000)
- goto L_WrongMagicExperience;
- set @mexp, @value;
- callsub S_Update_Mask;
- mes "You now have " + @mexp + " magic experience points.";
- goto L_MagicSkills;
-
-L_WrongMagicExperience:
- mes "Wrong value informed. Aborting.";
- goto L_MagicSkills;
-
-L_ChangeMagicSkills:
- menu
- "General Magic.", L_ChangeGeneralMagicSkill,
- "Life Magic.", L_ChangeLifeMagicSkill,
- "War Magic.", L_ChangeWarMagicSkill,
- "Transmutation Magic.", L_ChangeTransmutationMagicSkill,
- "Nature Magic.", L_ChangeNatureMagicSkill,
- "Astral Magic.", L_ChangeAstralMagicSkill,
- "Dark Magic.", L_ChangeDarkMagicSkill,
- "Back to the magic skills menu.", L_MagicSkills,
- "Close.", L_Close;
-
-L_ChangeGeneralMagicSkill:
- mes "Your level in the general magic skill is " + @general + ". What do you want to do?";
- menu
- "Get level 0.", L_Next4,
- "Get level 1.", L_ChangeGeneralMagicSkill1,
- "Get level 2.", L_ChangeGeneralMagicSkill2;
-
-L_Next4:
- if (@menu == 1)
- setskill SKILL_MAGIC, 0;
- mes "General Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeGeneralMagicSkill1:
- setskill SKILL_MAGIC, 1;
- mes "General Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeGeneralMagicSkill2:
- setskill SKILL_MAGIC, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "General Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-L_ChangeLifeMagicSkill:
- mes "Your level in the life magic skill is " + @life + ". What do you want to do?";
- menu
- "Get level 0.", L_Next5,
- "Get level 1.", L_ChangeLifeMagicSkill1,
- "Get level 2.", L_ChangeLifeMagicSkill2;
-
-L_Next5:
- if (@menu == 1)
- setskill SKILL_MAGIC_LIFE, 0;
- mes "Life Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeLifeMagicSkill1:
- setskill SKILL_MAGIC_LIFE, 1;
- mes "Life Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeLifeMagicSkill2:
- setskill SKILL_MAGIC_LIFE, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "Life Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-L_ChangeWarMagicSkill:
- mes "Your level in the war magic skill is " + @war + ". What do you want to do?";
- menu
- "Get level 0.", L_Next6,
- "Get level 1.", L_ChangeWarMagicSkill1,
- "Get level 2.", L_ChangeWarMagicSkill2;
-
-L_Next6:
- if (@menu == 1)
- setskill SKILL_MAGIC_WAR, 0;
- mes "War Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeWarMagicSkill1:
- setskill SKILL_MAGIC_WAR, 1;
- mes "War Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeWarMagicSkill2:
- setskill SKILL_MAGIC_WAR, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "War Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-L_ChangeTransmutationMagicSkill:
- mes "Your level in the transmutation magic skill is " + @trans + ". What do you want to do?";
- menu
- "Get level 0.", L_Next7,
- "Get level 1.", L_ChangeTransmutationMagicSkill1,
- "Get level 2.", L_ChangeTransmutationMagicSkill2;
-
-L_Next7:
- if (@menu == 1)
- setskill SKILL_MAGIC_TRANSMUTE, 0;
- mes "Transmutation Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeTransmutationMagicSkill1:
- setskill SKILL_MAGIC_TRANSMUTE, 1;
- mes "Transmutation Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeTransmutationMagicSkill2:
- setskill SKILL_MAGIC_TRANSMUTE, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "Transmutation Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-L_ChangeNatureMagicSkill:
- mes "Your level in the nature magic skill is " + @nature + ". What do you want to do?";
- menu
- "Get level 0.", L_Next8,
- "Get level 1.", L_ChangeNatureMagicSkill1,
- "Get level 2.", L_ChangeNatureMagicSkill2;
-
-L_Next8:
- if (@menu == 1)
- setskill SKILL_MAGIC_NATURE, 0;
- mes "Nature Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeNatureMagicSkill1:
- setskill SKILL_MAGIC_NATURE, 1;
- mes "Nature Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeNatureMagicSkill2:
- setskill SKILL_MAGIC_NATURE, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "Nature Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-L_ChangeAstralMagicSkill:
- mes "Your level in the astral magic skill is " + @astral + ". What do you want to do?";
- menu
- "Get level 0.", L_Next9,
- "Get level 1.", L_ChangeAstralMagicSkill1,
- "Get level 2.", L_ChangeAstralMagicSkill2;
-
-L_Next9:
- if (@menu == 1)
- setskill SKILL_MAGIC_ASTAL, 0;
- mes "Astral Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeAstralMagicSkill1:
- setskill SKILL_MAGIC_ASTRAL, 1;
- mes "Astral Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeAstralMagicSkill2:
- setskill SKILL_MAGIC_ASTRAL, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "Astral Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-L_ChangeDarkMagicSkill:
- mes "Your level in the dark magic skill is " + @dark + ". What do you want to do?";
- menu
- "Get level 0.", L_Next10,
- "Get level 1.", L_ChangeDarkMagicSkill1,
- "Get level 2.", L_ChangeDarkMagicSkill2;
-
-L_Next10:
- if (@menu == 1)
- setskill SKILL_MAGIC_DARK, 0;
- mes "Dark Magic skill changed to level 0.";
- next;
- goto L_MagicSkills;
-
-L_ChangeDarkMagicSkill1:
- setskill SKILL_MAGIC_DARK, 1;
- mes "Dark Magic skill changed to level 1.";
- next;
- goto L_MagicSkills;
-
-L_ChangeDarkMagicSkill2:
- setskill SKILL_MAGIC_DARK, 2;
- if (@mexp < 100)
- set @mexp, 100;
- callsub S_Update_Mask;
- mes "Dark Magic skill changed to level 2.";
- next;
- goto L_MagicSkills;
-
-S_Update_Mask:
- set MAGIC_EXPERIENCE,
- (MAGIC_EXPERIENCE & ~(@debug_mask))
- | (@mexp << @debug_shift);
- return;
-
-L_GetAllMagic:
- setskill SKILL_MAGIC, 5;
- setskill SKILL_MAGIC_LIFE, 5;
- setskill SKILL_MAGIC_WAR, 5;
- setskill SKILL_MAGIC_TRANSMUTE, 5;
- setskill SKILL_MAGIC_NATURE, 5;
- setskill SKILL_MAGIC_ASTRAL, 5;
- setskill SKILL_MAGIC_DARK, 5;
- set @mexp, 8000;
- callsub S_Update_Mask;
- mes "Magic skills added.";
- next;
- goto L_MagicSkills;
-
-L_ResetMagicSkills:
- setskill SKILL_MAGIC, 0;
- setskill SKILL_MAGIC_LIFE, 0;
- setskill SKILL_MAGIC_WAR, 0;
- setskill SKILL_MAGIC_TRANSMUTE, 0;
- setskill SKILL_MAGIC_NATURE, 0;
- setskill SKILL_MAGIC_ASTRAL, 0;
- setskill SKILL_MAGIC_DARK, 0;
- set @mexp, 0;
- callsub S_Update_Mask;
- mes "Magic skills removed.";
- next;
- goto L_MagicSkills;
-
-L_AddAll:
- setskill SKILL_EMOTE, 1;
- setskill SKILL_TRADE, 1;
- setskill SKILL_PARTY, 2;
- setskill SKILL_POOL, 1;
- setskill SKILL_MALLARDS_EYE, 9;
- setskill SKILL_BRAWLING, 9;
- setskill SKILL_SPEED, 9;
- setskill SKILL_RESIST_POISON, 9;
- setskill SKILL_ASTRAL_SOUL, 9;
- setskill SKILL_RAGING, 9;
- setskill SKILL_MAGIC, 5;
- setskill SKILL_MAGIC_LIFE, 5;
- setskill SKILL_MAGIC_WAR, 5;
- setskill SKILL_MAGIC_TRANSMUTE, 5;
- setskill SKILL_MAGIC_NATURE, 5;
- setskill SKILL_MAGIC_ASTRAL, 5;
- setskill SKILL_MAGIC_DARK, 5;
- set @mexp, 8000;
- resetstatus;
- set BaseLevel, 99;
- mes "All skills added to their maximum level.";
- mes "Maximum number of Magic Experience points.";
- mes "You are now level " + BaseLevel + ".";
- next;
- goto L_Begin;
-
-L_ResetAll:
- cleararray @skilllist_name$[0], "", 8;
- cleararray @skilllist_id[0], 0, 8;
- cleararray @skilllist_count[0], 0, 8;
- setskill SKILL_EMOTE, 0;
- setskill SKILL_TRADE, 0;
- setskill SKILL_PARTY, 0;
- setskill SKILL_POOL, 0;
- setskill SKILL_MALLARDS_EYE, 0;
- setskill SKILL_BRAWLING, 0;
- setskill SKILL_SPEED, 0;
- setskill SKILL_RESIST_POISON, 0;
- setskill SKILL_ASTRAL_SOUL, 0;
- setskill SKILL_RAGING, 0;
- setskill SKILL_MAGIC, 0;
- setskill SKILL_MAGIC_LIFE, 0;
- setskill SKILL_MAGIC_WAR, 0;
- setskill SKILL_MAGIC_TRANSMUTE, 0;
- setskill SKILL_MAGIC_NATURE, 0;
- setskill SKILL_MAGIC_ASTRAL, 0;
- setskill SKILL_MAGIC_DARK, 0;
- set @mexp, 0;
- callsub S_Update_Mask;
- resetstatus;
- set BaseLevel, 1;
- mes "All skills removed.";
- mes "Minimum number of Magic Experience points.";
- mes "You are now level " + BaseLevel + ".";
- next;
- goto L_Begin;
-
-L_Close:
- close2;
- return;
-
-}
-
--|script|Debug Spell|32767
-{
- if(!debug && getgmlevel() < CMD_DEBUG) end;
- callfunc "Debug";
- end;
-OnDeprecated:
- message strcharinfo(0), "Debug : ##3The #debug spell has been superseded by the ##B@debug##b command.";
- end;
-OnInit:
- registercmd "@debug", "Debug Spell";
- registercmd "#debug", "Debug Spell::OnDeprecated";
- end;
-}
-
-029-2,30,26,0|script|Debug#0|154
-{
- set @debug_npc, 1;
- callfunc "Debug";
- end;
-OnInit:
- if (!debug)
- disablenpc "Debug#0";
- end;
-}
-
-001-1,53,47,0|script|Debug#1|154
-{
- set @debug_npc, 1;
- callfunc "Debug";
- end;
-OnInit:
- if (!debug)
- disablenpc "Debug#1";
- end;
-}
-
-009-1,45,33,0|script|Debug#2|154
-{
- set @debug_npc, 1;
- callfunc "Debug";
- end;
-OnInit:
- if (!debug)
- disablenpc "Debug#2";
- end;
-}
-
-020-1,75,85,0|script|Debug#3|154
-{
- set @debug_npc, 1;
- callfunc "Debug";
- end;
-OnInit:
- if (!debug)
- disablenpc "Debug#3";
- end;
-}
-
-027-2,125,103,0|script|Debug#5|154
-{
- set @debug_npc, 1;
- callfunc "Debug";
- end;
-OnInit:
- if (!debug)
- disablenpc "Debug#5";
- end;
-}
diff --git a/world/map/npc/commands/destroynpc.txt b/world/map/npc/commands/destroynpc.txt
deleted file mode 100644
index 1ebede9e..00000000
--- a/world/map/npc/commands/destroynpc.txt
+++ /dev/null
@@ -1,35 +0,0 @@
--|script|@destroynpc|32767
-{
- callfunc "argv_splitter";
- if (GM < CMD_DESTROYNPC && GM < G_SYSOP)
- goto L_GM;
-
- set .@id, getnpcid(@argv$[0]);
- if (@argv$[0] == "" || .@id < 1)
- goto L_Failed;
- if (gettimetick(2) - @destroynpc[0] > 300 || @destroynpc[1] != .@id)
- goto L_Confirm;
-
- gmlog "@destroynpc " + @args$;
- message strcharinfo(0), "destroynpc : The operation succeeded.";
- debugmes "!!! => npc destroyed: `"+@argv$[0]+"` ("+.@id+")";
- if (1==1) destroy .@id; // FIXME: allow destroy to work as a non-terminator when arg0 is given (TMWA)
- end;
-
-L_Confirm:
- message strcharinfo(0), "destroynpc : ##BDANGER ZONE!##b This command permanently destroys a npc and its puppets (if any). Use the command again to confirm.";
- setarray @destroynpc[0], gettimetick(2), .@id;
- end;
-
-L_Failed:
- message strcharinfo(0), "destroynpc : Impossible to find the target npc. Did you try putting the name in \"quotation marks\"? Some npcs also have an invisible postfix in their name, ie `#_M`.";
- end;
-
-L_GM:
- message strcharinfo(0), "destroynpc : GM command is level "+ CMD_DESTROYNPC +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "destroynpc", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/divorce.txt b/world/map/npc/commands/divorce.txt
deleted file mode 100644
index 2a3c43f3..00000000
--- a/world/map/npc/commands/divorce.txt
+++ /dev/null
@@ -1,29 +0,0 @@
--|script|@divorce|32767
-{
- callfunc "argv_splitter";
- set .@n$, if_then_else(@argv$[0] != "", "char", "") + "divorce";
- if (GM < CMD_DIVORCE && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- if (@argv$[0] != "") set .@target_id, getcharid(3, @argv$[0]);
- if (@argv$[0] != "" && !(isloggedin(.@target_id))) set .@target_id, getcharid(3, @args$);
- if (@argv$[0] != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
- if (@argv$[0] != "" && GM < CMD_CHARDIVORCE && GM < G_SYSOP) goto L_GM; // when target is not self, use chardivorce permission
-
- set PARTNER, 0, .@target_id;
- gmlog "@"+.@n$+" " + @args$;
- message strcharinfo(0), .@n$+" : The operation succeeded.";
- end;
-
-L_Failed:
- message strcharinfo(0), .@n$+" : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), .@n$+" : GM command is level "+ if_then_else(@argv$[0] != "", CMD_CHARDIVORCE, CMD_DIVORCE) +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "divorce", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "chardivorce", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/exp.txt b/world/map/npc/commands/exp.txt
deleted file mode 100644
index 069f98d1..00000000
--- a/world/map/npc/commands/exp.txt
+++ /dev/null
@@ -1,42 +0,0 @@
--|script|@getexp|32767
-{
- callfunc "argv_splitter";
- set .@n$, if_then_else(@argv$[1] != "", "char", "") + "getexp";
- if (GM < CMD_ZENY && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- set .@caster_id, BL_ID;
- if (@argv$[1] != "") set .@target_id, getcharid(3, @argv$[1]);
- if (@argv$[1] != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
- if (@argv$[1] != "" && GM < CMD_CHARZENY && GM < G_SYSOP) goto L_GM; // when target is not self, use charzeny permission
- set .@delta, @argv[0]; // ± exp
-
- if (.@delta > .max_int) goto L_OutOfBounds;
- if (!(attachrid(.@target_id))) goto L_Failed;
- getexp .@delta, 0;
- if (!(attachrid(.@caster_id))) goto L_Failed;
- goto L_Success;
-
-L_OutOfBounds:
- // XXX: can getexp even work with a negative number?
- message strcharinfo(0), .@n$+" : Impossible to proceed! This would cause the player to have less than 0 xp or more than " + .max_int + ".";
- end;
-
-L_Failed:
- message strcharinfo(0), .@n$+" : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_Success:
- gmlog "@" + .@n$ + " " + @args$;
- message strcharinfo(0), .@n$+" : The operation succeeded.";
- end;
-
-L_GM:
- message strcharinfo(0), .@n$+" : GM command is level "+ if_then_else(@argv$[1] != "", CMD_CHARZENY, CMD_ZENY) +", but you are level " + GM;
- end;
-
-OnInit:
- set .max_int, 2147483647; // max int32 value
- registercmd chr(ATCMD_SYMBOL) + "getexp", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "chargetexp", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/gm.txt b/world/map/npc/commands/gm.txt
deleted file mode 100644
index 075ceea0..00000000
--- a/world/map/npc/commands/gm.txt
+++ /dev/null
@@ -1,39 +0,0 @@
--|script|@group|32767
-{
- end;
-
-OnHide:
- if (GM < 10 && GM < G_SYSOP) end;
-
- if (GM >= 98) set GM, 98;
- else set GM, (GM - (GM % 10)) + 1;
-
- message strcharinfo(0), "hidelevel : Your GM level is now hidden.";
- end;
-
-OnShow:
- if (GM < 10 && GM < G_SYSOP) end;
-
- if (GM >= 98) set GM, 99;
- else set GM, GM - (GM % 10);
-
- message strcharinfo(0), "showlevel : Your GM level is now visible.";
- end;
-
-OnPCLoginEvent:
- if (GM == 1 && HIDDEN == 0)
- set HIDDEN, 1;
- elif (GM != 1 && GM < 10 && HIDDEN == 1)
- set HIDDEN, 0;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "showgroup", strnpcinfo(0) + "::OnShow";
- registercmd chr(ATCMD_SYMBOL) + "showgm", strnpcinfo(0) + "::OnShow";
- registercmd chr(ATCMD_SYMBOL) + "showlevel", strnpcinfo(0) + "::OnShow";
-
- registercmd chr(ATCMD_SYMBOL) + "hidegroup", strnpcinfo(0) + "::OnHide";
- registercmd chr(ATCMD_SYMBOL) + "hidegm", strnpcinfo(0) + "::OnHide";
- registercmd chr(ATCMD_SYMBOL) + "hidelevel", strnpcinfo(0) + "::OnHide";
- end;
-}
diff --git a/world/map/npc/commands/hug.txt b/world/map/npc/commands/hug.txt
deleted file mode 100644
index f97c81e4..00000000
--- a/world/map/npc/commands/hug.txt
+++ /dev/null
@@ -1,25 +0,0 @@
--|script|nonmagic-hug|32767
-{
- explode .@name$[0], @args$, "*"; // strip the trailing *
- set @target_id, if_then_else(.@name$[0] != "", getcharid(3, .@name$[0]), BL_ID);
- if (@target_id < 1 || !(isloggedin(@target_id))) set @target_id, BL_ID; // fallback to self
- if (.@name$[0] == "Tree" || .@name$[0] == "tree") set @target_id, .tree_id;
- set .@range, if_then_else(@target_id == .tree_id, 3, 6);
- if (distance(BL_ID, @target_id) >= .@range) end;
- if (gettimetick(2) - @hugspell_time < 3) end;
-
- set @hugspell_time, gettimetick(2);
- misceffect FX_HUG, strcharinfo(0);
- if (@target_id != BL_ID) misceffect FX_HUG, @target_id;
-
- if (@target_id != .tree_id) end;
- set @flag, 2;
- callfunc "QuestTreeTrigger";
- close;
-
-OnInit:
- set .tree_id, getnpcid("#DruidTree0#_M");
- registercmd "*hugs", strnpcinfo(0); // eq: /me hugs (target)
- registercmd "*hugs*", strnpcinfo(0); // eq: /me hugs
- end;
-}
diff --git a/world/map/npc/commands/marry.txt b/world/map/npc/commands/marry.txt
deleted file mode 100644
index 39efe6b8..00000000
--- a/world/map/npc/commands/marry.txt
+++ /dev/null
@@ -1,69 +0,0 @@
--|script|special-marry|32767
-{
- set .@target_id, getcharid(3, @args$);
- if (.@target_id < 1 || !(isloggedin(.@target_id)) || .@target_id == BL_ID) goto L_NotFound;
- if (PARTNER || get(PARTNER, .@target_id)) goto L_AlreadyMarried;
- if (isin("014-1",29,36,34,39) == 0 && isin("001-1",20,27,22,27) == 0) goto L_NotInArea;
- if (distance(BL_ID, .@target_id) != 1) goto L_AwayFromPartner;
- if (BaseLevel < WEDDING_MIN_LEVEL || get(BaseLevel, .@target_id) < WEDDING_MIN_LEVEL) goto L_TooYoung;
- if (getequipid(equip_shield) != 702 || getequipid(equip_shield, @args$) != 702) goto L_NoRing;
-
- if (get(@marriage[0], .@target_id) == BL_ID) goto L_Proceed;
-
- setarray @marriage[0], .@target_id, gettimetick(2);
- addtimer (.timeout * 1000), strnpcinfo(0) + "::OnTimeout";
- announce strcharinfo(0) + " is asking " + strcharinfo(0, .@target_id) + " for marriage.", 2;
- message strcharinfo(0, .@target_id), "Marriage : ##3##B" + strcharinfo(0) + " wishes to marry you. To accept, write `##1#marry "+strcharinfo(0)+"##3` within the next "+.timeout+" seconds.";
- end;
-
-L_NotFound:
- message strcharinfo(0), "Marriage : ##3##BThe target player is either not found or yourself.";
- end;
-
-L_TooYoung:
- message strcharinfo(0), "Marriage : ##3##BYou and your partner need to be at least level "+ WEDDING_MIN_LEVEL +".";
- end;
-
-L_NoRing:
- message strcharinfo(0), "Marriage : ##3##BYou and your partner need to have ["+ getitemlink("WeddingRing") +"] equipped.";
- end;
-
-L_AwayFromPartner:
- message strcharinfo(0), "Marriage : ##3##BYou and your partner need to be standing next to each other.";
- end;
-
-L_NotInArea:
- message strcharinfo(0), "Marriage : ##3##BYou are not standing in a designated marriage area.";
- end;
-
-L_Proceed:
- if ((gettimetick(2) - .timeout) > get(@marriage[1], .@target_id)) goto L_TooLate;
- set PARTNER, CHAR_ID, .@target_id;
- if (PARTNER == get(CHAR_ID, .@target_id)) goto L_Success;
- set PARTNER, 0, .@target_id;
- set PARTNER, 0;
- end;
-
-L_Success:
- announce strcharinfo(0) + " and " + strcharinfo(0, .@target_id) + " are now married.", 2;
- end;
-
-OnTimeout:
- goto L_TooLate;
-
-L_TooLate:
- message strcharinfo(0), "Marriage : ##3##BThe proposal expired. Please try again.";
- message strcharinfo(0, @marriage[0]), "Marriage : ##3##BThe proposal expired. Please try again.";
- set @marriage[0], 0, @marriage[0];
- set @marriage[0], 0;
- end;
-
-L_AlreadyMarried:
- message strcharinfo(0), "Marriage : ##3##BYou"+ if_then_else(PARTNER, " are", "r partner is") +" already married.";
- end;
-
-OnInit:
- set .timeout, 30; // timeout for proposal
- registercmd "#marry", strnpcinfo(0); // we NEED to use a # before `marry` because otherwise manaplus does not strip colors
- end;
-}
diff --git a/world/map/npc/commands/music.txt b/world/map/npc/commands/music.txt
deleted file mode 100644
index cbd9fed1..00000000
--- a/world/map/npc/commands/music.txt
+++ /dev/null
@@ -1,34 +0,0 @@
--|script|@music|32767
-{
- callfunc "argv_splitter";
- if (GM < CMD_MUSIC && GM < G_SYSOP) goto L_GM;
- if (@argv$[0] == "") goto L_Failed;
-
- gmlog "@music " + @args$;
- set .@find, array_search(@argv$[0], .find$);
- if (.@find >= 0)
- set @argv$[0], .replace$[max(.@find, 0)];
- set .file$, @argv$[0];
- areatimer 0, getmap(), (POS_X - .range), (POS_Y - .range), (POS_X + .range), (POS_Y + .range), 0, strnpcinfo(0)+"::OnPC";
- message strcharinfo(0), "music : The music has ben temporarily changed.";
- end;
-
-OnPC:
- music .file$ + ".ogg";
- end;
-
-L_Failed:
- message strcharinfo(0), "music : You must specify a music file.";
- end;
-
-L_GM:
- message strcharinfo(0), "music : GM command is level "+ CMD_MUSIC +", but you are level " + GM;
- end;
-
-OnInit:
- setarray .find$, "this", "cave", "chilling", "clouds", "dimond", "explorers", "gy", "reid", "magick", "mystique", "night", "ride", "sail", "snow", "forest", "xmas";
- setarray .replace$, "this", "cavesong", "chilling-environment", "clouds-calling", "dimonds-cove", "explorers-melody", "graveyard", "inquisitive-inn", "magick-real", "mystique-forest", "night-is-calling", "ride-of-the-valkyries", "sail-away", "snow-village", "the-forest", "white-christmas";
- set .range, 14; // FIXME: make this a const
- registercmd chr(ATCMD_SYMBOL) + "music", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/mute.txt b/world/map/npc/commands/mute.txt
deleted file mode 100644
index 8216a9c7..00000000
--- a/world/map/npc/commands/mute.txt
+++ /dev/null
@@ -1,93 +0,0 @@
--|script|@mute|32767
-{
- callfunc "argv_splitter";
- if (GM < CMD_MUTE && GM < G_SYSOP) goto L_GM;
- if (@argv$[1] == "") goto L_Failed;
-
- set .@target_id, getcharid(3, @argv$[1]);
- if (.@target_id < 1 || !(isloggedin(.@target_id))) goto L_Failed;
-
- if (@argv[0] > 120)
- set @argv[0], 120; // max 2 hours
-
- gmlog "@mute " + @args$;
- if (@argv[0] == 0) goto L_UnMute;
-
- message strcharinfo(0, .@target_id), "Server : ##BYou have been muted by a GM for "+@argv[0]+" minutes.";
- set MUTE_GLOBAL, 1, .@target_id;
- set #MUTE_UNTIL, (gettimetick(2) + (@argv[0] * 60)), .@target_id;
- addtimer (@argv[0] * 60000) + 100, strnpcinfo(0) + "::OnCheckMute", .@target_id;
- message strcharinfo(0), "mute : Player `"+strcharinfo(0, .@target_id)+"` has been muted for "+@argv[0]+" minutes.";
- end;
-
-OnSTFU:
- if (GM < CMD_MUTE && GM < G_SYSOP) goto L_GM;
- callfunc "argv_splitter";
- if (@argv[0] < 1) set @argv[0], 1;
- if (@argv[0] > 10) set @argv[0], 10;
- gmlog "@stfu " + @argv[0];
- set @stfu_nr, 0;
- foreach 0, getmap(), (POS_X - .range), (POS_Y - .range), (POS_X + .range), (POS_Y + .range), strnpcinfo(0)+"::OnSTFUPC";
- message strcharinfo(0), "mute : Every player within "+.range+" tiles have been muted for "+@argv[0]+" minutes. ["+@stfu_nr+"]";
- set @stfu_nr, 0;
- end;
-
-OnSTFUPC:
- if (@target_id == BL_ID) end;
- set .@future, (gettimetick(2) + (@argv[0] * 60));
- if (get(#MUTE_UNTIL, @target_id) > .@future) end; // if player already has a mute, don't reduce it
- set MUTE_GLOBAL, 1, @target_id;
- set #MUTE_UNTIL, .@future, @target_id;
- addtimer (@argv[0] * 60000) + 100, strnpcinfo(0) + "::OnCheckMute", @target_id;
- set @stfu_nr, @stfu_nr + 1;
- end;
-
-OnPCLoginEvent:
- if (#MUTE_UNTIL < 1) end;
- set .@s, (#MUTE_UNTIL - gettimetick(2));
- if (.@s < 5) goto L_ClearMute;
- set .@m, .@s / 60;
- message strcharinfo(0), "Server : ##BYou have been muted for "+ max(1, .@m) +" minutes.";
- set MUTE_GLOBAL, 1;
- addtimer (.@s * 1000) + 100, strnpcinfo(0) + "::OnCheckMute";
- end;
-
-L_ClearMute:
- message strcharinfo(0), "Server : ##BYour mute has expired while you were away. You have been automatically unmuted.";
- if ((#MUTE_UNTIL - gettimetick(2)) >= (0 - 900))
- wgm "=> Player `"+ strcharinfo(0) +"` has been automatically unmuted."; // only send if unmuted 15 minutes ago or less
- set #MUTE_UNTIL, 0;
- end;
-
-OnCheckMute:
- if (#MUTE_UNTIL < 1) end;
- if (gettimetick(2) - #MUTE_UNTIL < 0) end;
- message strcharinfo(0), "Server : ##BYou have been automatically unmuted.";
- wgm "=> Player `"+ strcharinfo(0) +"` has been automatically unmuted.";
- set MUTE_GLOBAL, 0;
- set #MUTE_UNTIL, 0;
- end;
-
-L_UnMute:
- if (get(MUTE_GLOBAL, .@target_id))
- message strcharinfo(0, .@target_id), "Server : ##BYou have been unmuted by a GM.";
- set MUTE_GLOBAL, 0, .@target_id;
- set #MUTE_UNTIL, 0, .@target_id;
- message strcharinfo(0), "mute : Player `"+strcharinfo(0, .@target_id)+"` has been unmuted.";
- end;
-
-L_Failed:
- message strcharinfo(0), "mute : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), "mute : GM command is level "+ CMD_MUTE +", but you are level " + GM;
- end;
-
-OnInit:
- set .range, 14; // FIXME: this should be a const
- registercmd chr(ATCMD_SYMBOL) + "mute", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "stfu", strnpcinfo(0) + "::OnSTFU";
- registercmd chr(ATCMD_SYMBOL) + "areamute", strnpcinfo(0) + "::OnSTFU"; // alias of STFU
- end;
-}
diff --git a/world/map/npc/commands/npctalk.txt b/world/map/npc/commands/npctalk.txt
deleted file mode 100644
index 215e91ca..00000000
--- a/world/map/npc/commands/npctalk.txt
+++ /dev/null
@@ -1,23 +0,0 @@
--|script|@npctalk|32767
-{
- callfunc "argv_splitter";
- if (GM < CMD_NPCTALK && GM < G_SYSOP) goto L_GM;
- if (@argv$[0] == "" || @argv$[1] == "") goto L_Failed;
- if (getnpcid(@argv$[0]) < 1) goto L_Failed;
-
- gmlog "@npctalk " + @args$;
- npctalk @argv$[0], @argv$[1];
- end;
-
-L_Failed:
- message strcharinfo(0), "npctalk : Impossible to attach to the target npc. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), "npctalk : GM command is level "+ CMD_NPCTALK +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "npctalk", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/numa.txt b/world/map/npc/commands/numa.txt
deleted file mode 100644
index b8d24aea..00000000
--- a/world/map/npc/commands/numa.txt
+++ /dev/null
@@ -1,150 +0,0 @@
-// all-in-one debug
-// author: meko
-
--|script|SuperDebug|32767
-{
- if (GM < MAP_LOUNGE && GM < G_SYSOP && !debug) goto L_GM2; // make sure you can enter the gm lounge
- if (target(BL_ID,getnpcid("Numa"),1)) goto L_Main;
- npcaction 6, 12;
- title "Numa";
- goto L_Main;
-
-L_GM2:
- message strcharinfo(0), "numa : GM command is level "+ MAP_LOUNGE +", but you are level " + GM;
- end;
-
-L_Main:
- mes "How may I help you?";
- next;
- menu
- "Announcements", L_StoneBoard,
- "MOTD", L_MOTD,
- "Holiday debug", L_Holiday,
- "Event debug", L_Event,
- "Quest debug", L_Quest,
- "Who are you?", L_WhoAmI,
- "Close", L_Close;
- // todo: generic npcs
- // todo: map list
-
-L_WhoAmI:
- mes "I am Numa, also known as `SuperDebug`.";
- mes "My sole purpose is to assist TMW staff from behind-the-scene.";
- mes "Using me, you can access several debug menus.";
- mes "You can call me from anywhere using the ##B@numa##b spell, or you can come see me in person.";
- next;
- goto L_Main;
-
-L_Holiday:
- if (GM < DBG_HOLIDAY && GM < G_SYSOP) goto L_GM;
- mes "What holiday do you want to debug?";
- next;
- menu
- "Xmas.", L_XmasDebug,
- "Halloween.", L_HalloweenDebug,
- "Easter.", L_EasterDebug;
-
-L_XmasDebug:
- gmlog strcharinfo(0) + " accessed the Xmas debug.";
- callfunc "XmasDebug";
- goto L_Close;
-
-L_HalloweenDebug:
- gmlog strcharinfo(0) + " accessed the Halloween debug.";
- callfunc "HalloweenDebug";
- goto L_Close;
-
-L_EasterDebug:
- gmlog strcharinfo(0) + " accessed the Easter debug.";
- callfunc "Easter Debug";
- goto L_Close;
-
-L_Event:
- if (GM < EVT_DEBUG && GM < G_EVENT) goto L_GM;
- gmlog strcharinfo(0) + " accessed the GM event debug.";
- callfunc "GmDebug";
- goto L_Close;
-
-L_StoneBoard:
- if (GM < DBG_SCHEDULED && GM < G_SYSOP) goto L_GM;
- callfunc "SBConfig";
- goto L_Close;
-
-L_MOTD:
- if (GM < DBG_MOTD && GM < G_SYSOP) goto L_GM;
- callfunc "MOTDConfig";
- goto L_Close;
-
-L_GM:
- mes "I'm awfully sorry.";
- mes "You do not have the required GM level to perform this action.";
- goto L_Close;
-
-L_Quest:
- callfunc "QuestDebug";
- goto L_Close;
-
-L_Close:
- close;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "numa", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "superdebug", strnpcinfo(0);
- if (puppet("017-9", 30, 28, "Numa", 393) < 1) mapexit;
- end;
-}
-
-function|script|QuestDebug
-{
- goto L_ChooseContinent;
-
-L_ChooseContinent:
- mes "Choose a continent.";
- next;
- menu
- "Argeas", L_Argeas,
- "World", L_World,
- "Close", L_Return;
-
-L_Argeas:
- mes "Choose an area.";
- next;
- menu
- "Woodland", L_Woodland,
- "Choose a continent", L_ChooseContinent,
- "Close", L_Return;
-
-L_Woodland:
- mes "Choose a quest.";
- next;
- menu
- "Illia Sisters", L_Valia,
- "Choose an area", L_Argeas,
- "Close", L_Return;
-
-L_World:
- mes "Choose an event.";
- next;
- menu
- "Doomsday", L_Doomsday,
- "Kimarr", L_Fluffy,
- "Choose a continent", L_ChooseContinent,
- "Close", L_Return;
-
-L_Return:
- return;
-
-//////////////////////////////
-
-L_Valia:
- callfunc "IlliaDebug";
- goto L_Return;
-
-L_Doomsday:
- callfunc "DoomsdayDebug";
- goto L_Return;
-
-L_Fluffy:
- callfunc "FluffyDebug";
- goto L_Return;
-}
diff --git a/world/map/npc/commands/pullrabbit.txt b/world/map/npc/commands/pullrabbit.txt
deleted file mode 100644
index 9c3634a4..00000000
--- a/world/map/npc/commands/pullrabbit.txt
+++ /dev/null
@@ -1,26 +0,0 @@
--|script|@pullrabbit|32767
-{
- if (GM < EVT_KILLTHEGM && GM < G_SYSOP) end;
- if (getequipid(equip_head) != 888) end;
- getinventorylist;
- if ((checkweight("MurdererCrown", 1) == 0) || (@inventorylist_count == 100))
- goto L_Inventory;
- // Get the current reward of the event. This may be changed later
- getitem "MurdererCrown", 1;
- // Set HP and SP to max
- heal MaxHp, MaxSp;
- // Display an effect
- misceffect FX_CHANNELLING_CAST, strcharinfo(0);
- // Log the usage of this spell
- gmlog strcharinfo(0)+" used the Magic GM Top Hat.";
- end;
-
-L_Inventory:
- message strcharinfo(0), "You cannot create this item. You're too heavy or you don't have a free slot.";
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "pullrabbit", strnpcinfo(0);
- registercmd chr(MAGIC_SYMBOL) + "pullrabbit", strnpcinfo(0); // former pullrabbit invocation
- end;
-}
diff --git a/world/map/npc/commands/python.txt b/world/map/npc/commands/python.txt
deleted file mode 100644
index 4f4fcc05..00000000
--- a/world/map/npc/commands/python.txt
+++ /dev/null
@@ -1,47 +0,0 @@
--|script|python-foot|32767
-{
- if (GM < 40 && GM < G_SYSOP) goto L_Prank;
- set @python[0], if_then_else(@args$ != "", getcharid(3, @args$), BL_ID);
- if (@python[0] < 1 || !(isloggedin(@python[0]))) set @python[0], BL_ID; // fallback to self
- if (distance(BL_ID, @python[0]) >= 14) end;
- if (gettimetick(2) - @python[1] < 3) end;
-
- set @python[1], gettimetick(2);
- misceffect 69, @python[0];
- addtimer 380, strnpcinfo(0) + "::OnKill";
- end;
-
-OnKill:
- if (!(isloggedin(@python[0]))) end;
- gmlog "stomped " + if_then_else(@python[0] == BL_ID, "themselves", strcharinfo(0, @python[0])) + " with a giant foot!";
- set Hp, 0, @python[0];
- end;
-
-L_Prank:
- if (gettime(6) == 4 && gettime(5) == 1)
- goto L_DoPrank;
- end;
-
-L_DoPrank:
- if (#APRILPRANK == gettime(7))
- message strcharinfo(0), "You already stomped someone today.";
- if (#APRILPRANK == gettime(7))
- end;
-
- set @python[0], if_then_else(@args$ != "", getcharid(3, @args$), BL_ID);
- if (@python[0] < 1 || !(isloggedin(@python[0]))) set @python[0], BL_ID; // fallback to self
- if (distance(BL_ID, @python[0]) >= 14) end;
- if (gettimetick(2) - @python[1] < 3) end;
-
- // Execute the prank
- set #APRILPRANK, gettime(7);
- set @python[1], gettimetick(2);
- misceffect 69, @python[0];
- addtimer 380, strnpcinfo(0) + "::OnKill";
- end;
-
-
-OnInit:
- registercmd "#python", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/remotecmd.txt b/world/map/npc/commands/remotecmd.txt
deleted file mode 100644
index b8c47f35..00000000
--- a/world/map/npc/commands/remotecmd.txt
+++ /dev/null
@@ -1,62 +0,0 @@
--|script|@remotecmd|32767
-{
- callfunc "argv_splitter";
- if (GM < CMD_REMOTECMD && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- set .@t$, @argv$[1];
- setarray @remotecmd[0], 0, 1, 1; // nr, to_self, multi_target
- if (.@t$ == "map") goto L_Map;
- if (.@t$ == "map!") goto L_AllMap;
- if (.@t$ == "area") goto L_Area;
- if (.@t$ == "area!") goto L_AllArea;
- if (.@t$ != "") set .@target_id, getcharid(3, @argv$[1]);
- if (.@t$ != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
-
- set @target_id, .@target_id;
- set @remotecmd[2], 0; // only one target
- addtimer 0, strnpcinfo(0) + "::OnPC";
- end;
-
-L_Map:
- set @remotecmd[1], 0; // do not include self
- goto L_AllMap;
-
-L_AllMap:
- foreach 0, getmap(), 0, 0, 32767, 32767, strnpcinfo(0)+"::OnPC";
- goto L_Success;
-
-L_Area:
- set @remotecmd[1], 0; // do not include self
- goto L_AllMap;
-
-L_AllArea:
- foreach 0, getmap(), (POS_X - .range), (POS_Y - .range), (POS_X + .range), (POS_Y + .range), strnpcinfo(0)+"::OnPC";
- goto L_Success;
-
-OnPC:
- if (@target_id == BL_ID && @remotecmd[1] < 1)
- end;
- remotecmd @argv$[0], strcharinfo(0, @target_id);
- set @remotecmd[0], @remotecmd[0] + 1;
- if (@remotecmd[2] < 1)
- goto L_Success;
- end;
-
-L_Success:
- gmlog "@remotecmd " + @args$;
- message strcharinfo(0), "remotecmd : The operation succeeded. ["+ @remotecmd[0] + "]";
- end;
-
-L_Failed:
- message strcharinfo(0), "remotecmd : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), "remotecmd : GM command is level "+ CMD_REMOTECMD +", but you are level " + GM;
- end;
-
-OnInit:
- set .range, 14; // visible range
- registercmd chr(ATCMD_SYMBOL) + "remotecmd", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/valentine.txt b/world/map/npc/commands/valentine.txt
deleted file mode 100644
index 426847c6..00000000
--- a/world/map/npc/commands/valentine.txt
+++ /dev/null
@@ -1,143 +0,0 @@
--|script|@givelvlplz|32767
-{
- end;
-
-OnValentine:
- if (#VALENTINE20_INDEX > 0)
- goto L_AlreadyDone;
- message strcharinfo(0), "Valentine Event is already over.";
- end;
- //goto L_Register;
-
-L_AlreadyDone:
- message strcharinfo(0), "You are already registered for Valentine Event.";
- // Handle exp ports
- if (strcharinfo(0) == "dangerDuck")
- getexp 818051, 0;
- if (strcharinfo(0) == "Rill")
- getexp 488725, 0;
- if (strcharinfo(0) == "Blue Sky")
- getexp 518399, 0;
- if (strcharinfo(0) == "+seeds")
- getexp 373416, 0;
- if (strcharinfo(0) == "karen123")
- getexp 627846, 0;
- if (strcharinfo(0) == "luanaf")
- getexp 540955, 0;
- if (strcharinfo(0) == "Cirno9")
- getexp 3241, 0;
- if (strcharinfo(0) == "mifritscher")
- getexp 19723, 0;
- if (strcharinfo(0) == "Jesusalva")
- getexp 79880, 0;
- message strcharinfo(0), "Rewards have already been claimed.";
- set #VALENTINE20_INDEX, 0;
- end;
-
-L_Register:
- set @ml_login$, "";
- set @ml_char$, "";
- mes "##1You can only port one char level per person!##0";
- mes "##1Are you sure you want to port level "+BaseLevel+" for Valentine?##0";
- next;
- mes ".:: MOUBOOTAUR LEGENDS DATA ::.";
- mes "What is your login name?";
- mes "(Please leave the field blank to cancel. Case-sensitive.)";
- input @ml_login$;
- if (@ml_login$ == "")
- goto L_Abort;
- mes "";
- mes ".:: MOUBOOTAUR LEGENDS DATA ::.";
- mes "What is your char name?";
- mes "(The char name must be on the account login you've provided earlier. Case-sensitive.)";
- input @ml_char$;
- if (@ml_char$ == "")
- goto L_Abort;
- next;
- if (strcharinfo(0) == @ml_char$)
- goto L_Warning;
- goto L_Review;
-
-L_Warning:
- mes "##1##BWARNING##b##0";
- mes "Make sure you are inserting your data ##BOn Moubootaur Legends Server##b.";
- mes "";
- mes "##BIf you provide invalid data, you will need to contact a GM.##0";
- next;
- goto L_Review;
-
-L_Review:
- mes "";
- mes ".:: Data Review ::.";
- mes "ML Login: "+@ml_login$;
- mes "ML Char: "+@ml_char$;
- mes "Level: "+BaseLevel;
- mes "";
- mes "Is the data correct?";
- mes "##1##BThis cannot be changed later.##0";
- next;
- menu
- "Actually, can I start over?", L_Register,
- "Yes, this is how I login on ML and my char name", L_Save,
- "I'm not sure. Sorry.", L_Abort;
-
-L_Save:
- set @rank, 0;
- set @loop, 0;
- goto L_Search;
-
-L_Search:
- if ($VALENTINE20_LVL[@loop] == 0)
- goto L_Finished;
- set @loop, @loop + 1;
- goto L_Search;
-
-L_Finished:
- mes "";
- set #VALENTINE20_INDEX, @loop+1; // 0 is a valid index
- set $VALENTINE20_LOGIN$[@loop], @ml_login$;
- set $VALENTINE20_NAME$[@loop], @ml_char$;
- set $VALENTINE20_LVL[@loop], BaseLevel;
- goto L_Abort;
-
-L_Abort:
- mes "";
- set @ml_login$, "";
- set @ml_char$, "";
- set @loop, 0;
- set @rank, 0;
- close;
-
-OnReport:
- if (GM < 60 && GM < G_SYSOP) end;
- goto L_Report;
-
-L_Report:
- set @rank, 0;
- set @loop, 0;
- mes "ID - Login / Char - Level";
- mes "-------------------------";
- goto L_ShowNextRecord;
-
-L_ShowNextRecord:
- if ($VALENTINE20_LVL[@loop] == 0)
- goto L_Close;
- mes (@loop + 1) + " - " + $VALENTINE20_LOGIN$[@loop] + " / " + $VALENTINE20_NAME$[@loop] + " - Lv. " + $VALENTINE20_LVL[@loop];
- set @loop, @loop + 1;
- if ((@loop % 10) == 0 && $VALENTINE20_LVL[@loop] > 0)
- goto L_NextShowNextRecord;
- goto L_ShowNextRecord;
-
-L_NextShowNextRecord:
- next;
- goto L_ShowNextRecord;
-
-L_Close:
- close;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "givelvlplz", strnpcinfo(0) + "::OnValentine";
- registercmd chr(ATCMD_SYMBOL) + "valentine2020", strnpcinfo(0) + "::OnValentine";
- registercmd chr(ATCMD_SYMBOL) + "moubootaurs", strnpcinfo(0) + "::OnReport";
- end;
-}
diff --git a/world/map/npc/commands/warp.txt b/world/map/npc/commands/warp.txt
deleted file mode 100644
index 0e2a7ab7..00000000
--- a/world/map/npc/commands/warp.txt
+++ /dev/null
@@ -1,49 +0,0 @@
--|script|@warp|32767
-{
- callfunc "argv_splitter";
- if (@argv$[3] == "" && @argv$[2] == "" && @argv$[1] != "" && @argv[1] < 2)
- set @argv$[3], @argv$[1];
-
- set .@n$, if_then_else(@argv$[3] != "", "char", "") + "warp";
- if (GM < CMD_WARP && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- if (@argv$[3] != "") set .@target_id, getcharid(3, @argv$[3]);
- if (@argv$[3] != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
- if (@argv$[3] != "" && GM < CMD_CHARWARP && GM < G_SYSOP) goto L_GM; // when target is not self, use charwarp permission
-
- if (@argv$[0] == "")
- set @argv$[0], getmap();
-
- setarray @map_anchor$[0], "", "", "", "";
- callfunc "map2anchor";
-
- gmlog "@"+.@n$+" " + @args$;
- if (.@target_id != BL_ID)
- message strcharinfo(0), .@n$+" : The operation succeeded.";
-
- set @GMWARP_map$, @map_anchor$[0];
- set @GMWARP_x, if_then_else(@argv[1] > 1, @argv[1], @map_anchor$[1]);
- set @GMWARP_y, if_then_else(@argv[2] > 1, @argv[2], @map_anchor$[2]);
- addtimer 0, strnpcinfo(0) + "::OnWarp", .@target_id;
- end;
-
-OnWarp:
- warp @GMWARP_map$, @GMWARP_x, @GMWARP_y;
- set @GMWARP_map$, "";
- set @GMWARP_x, 0;
- set @GMWARP_y, 0;
- end;
-
-L_Failed:
- message strcharinfo(0), .@n$+" : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_GM:
- message strcharinfo(0), .@n$+" : GM command is level "+ if_then_else(@argv$[1] != "", CMD_CHARWARP, CMD_WARP) +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "warp", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "charwarp", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/commands/zeny.txt b/world/map/npc/commands/zeny.txt
deleted file mode 100644
index 513330b5..00000000
--- a/world/map/npc/commands/zeny.txt
+++ /dev/null
@@ -1,79 +0,0 @@
--|script|@zeny|32767
-{
- callfunc "argv_splitter";
- set .@n$, if_then_else(@argv$[1] != "", "char", "") + "zeny";
- if (GM < CMD_ZENY && GM < G_SYSOP) goto L_GM; // check if you can use it on self
- set .@target_id, BL_ID;
- if (@argv$[1] != "") set .@target_id, getcharid(3, @argv$[1]);
- if (@argv$[1] != "" && !(isloggedin(.@target_id))) goto L_Failed; // do NOT fallback to self
- if (@argv$[1] != "" && GM < CMD_CHARZENY && GM < G_SYSOP) goto L_GM; // when target is not self, use charzeny permission
- if (@argv$[0] == "--") goto L_Remove;
- if (@argv$[0] == "---") goto L_RemoveAll;
- if (@argv$[0] == "++") goto L_Max;
- if (@argv$[0] == "+++") goto L_MaxAll;
- set .@delta, @argv[0]; // ± zeny
- set .@zeny, get(Zeny, .@target_id); // get the number of zeny in char
- set .@bank, get(#BankAccount, .@target_id); // get number of zeny in (world) account
- set .@new_zeny, .@zeny + .@delta; // new balance in char
- if (.@new_zeny < 0) goto L_MaybeRemoveBank; // zeny would be below 0 so check if we can take from bank
- if (.@new_zeny > .max_zeny) goto L_MaybeAddBank; // zeny would be over the limit so check if we can store in bank
- set Zeny, (.@zeny + .@delta), .@target_id;
- goto L_Success;
-
-L_Remove:
- set Zeny, 0, .@target_id;
- goto L_Success;
-
-L_RemoveAll:
- set Zeny, 0, .@target_id;
- set #BankAccount, 0, .@target_id;
- goto L_Success;
-
-L_Max:
- set Zeny, .max_zeny, .@target_id;
- goto L_Success;
-
-L_MaxAll:
- set Zeny, .max_zeny, .@target_id;
- set #BankAccount, .max_int, .@target_id;
- goto L_Success;
-
-L_MaybeAddBank:
- set .@new_bank, (.@bank + (.@new_zeny - .max_zeny));
- if (.@new_bank > .max_int || .@new_bank < 0) goto L_OutOfBounds;
- set Zeny, .max_zeny, .@target_id;
- set #BankAccount, .@new_bank, .@target_id;
- goto L_Success;
-
-L_MaybeRemoveBank:
- if ((.@bank + .@new_zeny) < 0) goto L_OutOfBounds;
- set Zeny, 0, .@target_id;
- set #BankAccount, (.@bank + .@new_zeny), .@target_id;
- goto L_Success;
-
-L_OutOfBounds:
- // XXX: maybe we could also take from other chars from the same accout?
- message strcharinfo(0), .@n$+" : Impossible to proceed! This would cause the player to have less than 0 zeny or more than " + .max_int + ".";
- end;
-
-L_Failed:
- // XXX: should we allow GMs to change zeny of users that are not logged in?
- message strcharinfo(0), .@n$+" : Impossible to attach to the target player. Did you try putting the name in \"quotation marks\"?";
- end;
-
-L_Success:
- gmlog "@zeny " + @args$;
- message strcharinfo(0), .@n$+" : The operation succeeded.";
- end;
-
-L_GM:
- message strcharinfo(0), .@n$+" : GM command is level "+ if_then_else(@argv$[1] != "", CMD_CHARZENY, CMD_ZENY) +", but you are level " + GM;
- end;
-
-OnInit:
- set .max_zeny, 1000000000; // hardcoded in tmwa
- set .max_int, 2147483647; // max int32 value
- registercmd chr(ATCMD_SYMBOL) + "zeny", strnpcinfo(0);
- registercmd chr(ATCMD_SYMBOL) + "charzeny", strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/doc/magic b/world/map/npc/doc/magic
deleted file mode 100644
index 8a2b84e1..00000000
--- a/world/map/npc/doc/magic
+++ /dev/null
@@ -1,23 +0,0 @@
-Nibble use:
----------------
-== QUEST_MAGIC
- N0, N1: Auldsbel
- N2: druid tree quest, mouboo quest (shared)
- N3: Sagatha unhappiness counter
- N4, N5: Sagatha
- N6, N7: Swords
-== QUEST_MAGIC2
- N0: Evil Earth Spirit
- N1: Elanore
- N2: Wyara
- N3: Elanore subquests (Cure Kadiya)
- N4-N7: may be messy at this point
-
-The various magic scripts pack their status into these variables.
-Locally, they use `@Q_status' to maintain the state, and use a function
-`S_update_var' to update it. This is all re-using the same code, setting
-the `@Q_MASK' and `@Q_SHIFT' variables appropriately.
-
- There are a few exceptions (such as the Kadiya quest) wherein
-a separate helper function sets a dedicated local variable, or some hackery
-in Auldsbel wherein we read stati directly, merely to enable certain options.
diff --git a/world/map/npc/functions/DyeConfig.txt b/world/map/npc/functions/DyeConfig.txt
deleted file mode 100644
index 999f6722..00000000
--- a/world/map/npc/functions/DyeConfig.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-009-2,32,105,0|script|#DyeChecker|32767
-{
- end;
-OnInit:
- /******************************
- Config Starts Here
- ******************************/
- setarray $@DYE_color_names$, "Red", "Green", "Dark Blue", "Yellow", "Light blue", "Pink", "Black", "Orange", "Purple", "Dark Green";
- setarray $@DYE_colors$, "Red", "Green", "DarkBlue", "Yellow", "LightBlue", "Pink", "Black", "Orange", "Purple", "DarkGreen";
-
- setarray $@DYE_items$, "Beret", "CottonShirt", "CottonCloth", "VNeckSweater", "Turtleneck", "CottonShorts", "CottonTrousers", "CottonSkirt", "Miniskirt", "TankTop", "ShortTankTop", "SilkRobe", "CottonHeadband", "DesertHat", "CottonBoots", "CottonGloves", "RabbitEars", "WizardHat", "BowlerHat", "BowlerHatBrown", "FineDress", "Contributor", "SorcererRed", "SorcererGreen", "SorcererDBlue", "SorcererYellow", "SorcererLBlue", "SorcererPink", "SorcererBlack", "SorcererOrange", "SorcererPurple", "SorcererDGreen", "SorcererWhite";
- setarray $@DYE_item_names$, "Beret", "Cotton Shirt", "Cotton Cloth", "V-Neck Sweater", "Turtleneck Sweater", "Cotton Shorts", "Cotton Trousers", "Cotton Skirt", "Miniskirt", "Tank Top", "Short Tank Top", "Silk Robe", "Cotton Headband", "Desert Hat", "Cotton Boots", "Cotton Gloves", "Rabbit Ears", "Wizard Hat", "Bowler Hat", "Bowler Hat (brown)", "Fine Dress", "Contributor Shirt", "Sorcerer Robe (Red)", "Sorcerer Robe (Green)", "Sorcerer Robe (Dark Blue)", "Sorcerer Robe (Yellow)", "Sorcerer Robe (Light Blue)", "Sorcerer Robe (Pink)", "Sorcerer Robe (Black)", "Sorcerer Robe (Orange)", "Sorcerer Robe (Purple)", "Sorcerer Robe (Dark Green)", "Sorcerer Robe (White)";
- /******************************
- Config Ends Here
- ******************************/
-
- set $@w, 0;
- freeloop 1; // do not check for infinity loop
- callsub S_Array;
- freeloop 0; // re-enable infinity loop check
- set $@w, 0;
- set $@c, 0;
- end;
-
-S_Array:
- if(getitemlink($@DYE_items$[$@w]) == "Unknown Item") goto L_Fail;
- set $@c, 0;
- callsub S_Color;
- set $@w, $@w + 1;
- if($@w < getarraysize($@DYE_items$)) goto S_Array;
- return;
-
-L_Fail:
- debugmes "Dye Fail: "+$@DYE_items$[$@w];
- mapexit;
-
-S_Color:
- if(getitemlink($@DYE_colors$[$@c] + $@DYE_items$[$@w]) == "Unknown Item") goto L_Fail;
- set $@c, $@c + 1;
- if($@c < getarraysize($@DYE_colors$)) goto S_Color;
- return;
-}
diff --git a/world/map/npc/functions/announcements.txt b/world/map/npc/functions/announcements.txt
deleted file mode 100644
index f5d3491b..00000000
--- a/world/map/npc/functions/announcements.txt
+++ /dev/null
@@ -1,194 +0,0 @@
-//############################################################################
-//# #
-//# GM scheduled broadcasts #
-//# #
-//############################################################################
-
-// $@GMSA_STATUS values:
-// 0: Broadcasts not running
-// 1: Broadcasts running
-// $@GMSA_NAME$: the GM/Admin who created the broadcast, if any
-// $@GMSA_MSG$: the message to be broadcasted
-// $@GMSA_MAX: the number of times the broadcast will be performed, if > 0
-// $@GMSA_TICK: broadcast the message every $@GMSA_TICK hours
-// $@GMSA_CURRENT_TICK: internal counter incremented every hour
-
-function|script|SBConfig
-{
- if ($@GMSA_STATUS)
- goto L_InfoBroadcast;
- goto L_PrepareBroadcast;
-
-L_InfoBroadcast:
- set @ms, (3600000*($@GMSA_TICK - $@GMSA_CURRENT_TICK) - getnpctimer(0, "Stone Board"));
- if (@ms < 0) set @ms, 0; // FIXME: find out WHY this can happen
- callfunc "HumanTime";
-
- mes "[GM Scheduled Broadcasts Board]";
- mes $@GMSA_NAME$ + " scheduled the current message, every " + $@GMSA_TICK + " hour(s):";
- mes $@GMSA_MSG$;
- next;
- mes "The next broadcast will happen in " + @time$ + ".";
- next;
-
- set @next_broadcast_ts, 0;
- set @next_broadcast_h, 0;
- set @next_broadcast_m, 0;
-
- mes "What do you want to do?";
- menu
- "Nothing.", L_Close,
- "Nothing but... what is this?", L_Help,
- "Stop broadcasting.", L_StopBroadcast,
- "Trigger manually the current broadcast.", L_ManualBroadcast;
-
-L_PrepareBroadcast:
- callsub S_Help;
- next;
- mes "There is no broadcast scheduled.";
- mes "Do you want to create one?";
- menu
- "No.", L_Close,
- "Yes.", L_CreateBroadcast;
-
-L_CreateBroadcast:
- mes "[GM Scheduled Broadcasts Board]";
- mes "Enter the message to broadcast:";
- input $@GMSA_MSG$;
- if ($@GMSA_MSG$ == "")
- goto L_InvalidBMsg;
-
- next;
- mes "[GM Scheduled Broadcasts Board]";
- mes "The message will be broadcasted every X hour(s). Enter X:";
- input $@GMSA_TICK;
- if ($@GMSA_TICK < 1 || $@GMSA_TICK > 24)
- goto L_InvalidBroadcastTick;
-
- next;
- mes "[GM Scheduled Broadcasts Board]";
- mes "If you want the message to be broadcasted a limited number of times, enter its value. Keep 0 otherwise:";
- input $@GMSA_MAX;
-
- next;
- mes "[GM Scheduled Broadcasts Board]";
- if ($@GMSA_MAX == 0)
- mes "The current message will be broadcasted every " + $@GMSA_TICK + " hour(s):";
- if ($@GMSA_MAX > 0)
- mes "The current message will be broadcasted every " + $@GMSA_TICK + " hour(s), up to " + $@GMSA_MAX + " times:";
- mes $@GMSA_MSG$;
- next;
- mes "Is this correct?";
- menu
- "No. I'll retry.", L_CreateBroadcast,
- "No", L_Close,
- "Yes. Broadcast this. (the first broadcast will happen in " + $@GMSA_TICK + " hour(s).)", L_StartBroadcast,
- "Yes. Broadcast this, and make an extra broadcast right now.", L_StartBroadcast2;
-
-L_InvalidBMsg:
- mes "[GM Scheduled Broadcasts Board]";
- mes "The message can't be empty. Please retry.";
- goto L_CreateBroadcast;
-
-L_InvalidBroadcastTick:
- mes "[GM Scheduled Broadcasts Board]";
- mes "You obviously can't repeat a message every 0 hours. Please retry.";
- goto L_CreateBroadcast;
-
-L_Help:
- callsub S_Help;
- goto L_Close;
-
-S_Help:
- mes "[GM Scheduled Broadcasts Board]";
- mes "This board allows a GM to schedule a message to be broadcast every X hours.";
- mes "Only one broadcast can be scheduled at a time.";
- return;
-
-L_ManualBroadcast:
- announce $@GMSA_MSG$, 0;
- mes "Done.";
- goto L_Close;
-
-L_StopBroadcast:
- donpcevent "Stone Board::OnStopBroadcast";
- mes "Done.";
- gmlog strcharinfo(0) + " stopped the scheduled broadcast.";
- goto L_Close;
-
-L_StartBroadcast2:
- if ($@GMSA_STATUS == 1)
- goto L_Abort;
- announce $@GMSA_MSG$, 0;
- goto L_StartBroadcast;
-
-L_StartBroadcast:
- if ($@GMSA_STATUS == 1)
- goto L_Abort;
- set $@GMSA_STATUS, 1;
- set $@GMSA_NAME$, strcharinfo(0);
- set $@GMSA_CURRENT_TICK, 0;
- initnpctimer "Stone Board";
- mes "Done.";
- gmlog strcharinfo(0) + " modified the scheduled broadcast.";
- goto L_Close;
-
-L_Abort:
- mes "[GM Scheduled Broadcasts Board]";
- mes $@GMSA_NAME$ + " has created a scheduled broadcast just before you, hence yours will abort.";
- goto L_Close;
-
-L_Close:
- return;
-}
-
-
-017-9,26,28,0|script|Stone Board|32767
-{
- end;
-
-OnStopBroadcast:
- goto L_Stop;
-
-L_Stop:
- stopnpctimer "Stone Board";
- setnpctimer 0, "Stone Board";
- set $@GMSA_STATUS, 0;
- set $@GMSA_NAME$, "";
- set $@GMSA_MSG$, "";
- set $@GMSA_TICK, 0;
- set $@GMSA_MAX, 0;
- set $@GMSA_CURRENT_TICK, 0;
- end;
-
-OnTimer3600000:
- set $@GMSA_CURRENT_TICK, $@GMSA_CURRENT_TICK + 1;
- setnpctimer 0, "Stone Board";
- if ($@GMSA_CURRENT_TICK != $@GMSA_TICK)
- end;
- announce $@GMSA_MSG$, 0;
- set $@GMSA_CURRENT_TICK, 0;
- set $@GMSA_MAX, $@GMSA_MAX - 1;
- if ($@GMSA_MAX != 0)
- end;
- goto L_Stop;
-}
-
-function|script|getBroadcast
-{
- if (getmap() == "029-2" && getx() == 22 && gety() == 24) goto L_NewPlayer;
- goto L_ReturningPlayer;
-
-L_NewPlayer:
- // todo: show game rules on login
- // FIXME: needs to spawn a 32767 puppet
- goto L_Return;
-
-L_ReturningPlayer:
- if ($@GMSA_STATUS < 1) goto L_Return;
- announce $@GMSA_MSG$, 3;
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/banker.txt b/world/map/npc/functions/banker.txt
deleted file mode 100644
index 711275e2..00000000
--- a/world/map/npc/functions/banker.txt
+++ /dev/null
@@ -1,271 +0,0 @@
-//
-
-function|script|Banker
-{
- if (BankAccount == 0)
- goto L_Start;
- callsub S_MoveAccount;
- goto L_Start;
-
-L_Start:
- if(@npcname$ == "") set @npcname$, strnpcinfo(1);
- mes "[" + @npcname$ + "]";
- mes "\"Welcome to the bank!";
- mes "How can I help you?\"";
- next;
- menu
- "Open my storage", L_Storage,
- "Deposit", L_Dep,
- "Withdraw", L_With,
- "Check my balance", L_Balance,
- "Change Bank Options", L_Change,
- "Nevermind", L_Nev;
-
-// need to close window before opening storage.
-L_Storage:
- if (#BankOptions & OPT_STORAGE_CLOSE) close2;
- openstorage;
- if (#BankOptions & OPT_STORAGE_CLOSE) goto L_Return;
- goto L_Start;
-
-L_Dep:
- mes "[" + @npcname$ + "]";
- mes "\"How much would you like to deposit?\"";
- next;
- menu
- "Other", L_Dep_Input,
- "5,000 GP", L_Dep_5k,
- "10,000 GP", L_Dep_10k,
- "25,000 GP", L_Dep_25k,
- "50,000 GP", L_Dep_50k,
- "100,000 GP", L_Dep_100k,
- "250,000 GP", L_Dep_250k,
- "500,000 GP", L_Dep_500k,
- "1,000,000 GP", L_Dep_1kk,
- "All of my money", L_Dep_All,
- "I've changed my mind", L_Start,
- "Quit", L_Return;
-
-L_Dep_Input:
- input @Amount;
- if (@Amount >= 0)
- goto L_Dep_Continue;
- mes "[" + @npcname$ + "]";
- mes "\"I need a positive amount. What would you like to do?\"";
- menu
- "Go back", L_Start,
- "Try again", L_Dep_Input,
- "Deposit all", L_Dep_All,
- "Nevermind", L_Nev;
-
-L_Dep_5k:
- if (Zeny<5000)
- goto L_NoMoney;
- set @Amount, 5000;
- goto L_Dep_Continue;
-
-L_Dep_10k:
- if (Zeny<10000)
- goto L_NoMoney;
- set @Amount, 10000;
- goto L_Dep_Continue;
-
-L_Dep_25k:
- if (Zeny<25000)
- goto L_NoMoney;
- set @Amount, 25000;
- goto L_Dep_Continue;
-
-L_Dep_50k:
- if (Zeny<50000)
- goto L_NoMoney;
- set @Amount, 50000;
- goto L_Dep_Continue;
-
-L_Dep_100k:
- if (Zeny<100000)
- goto L_NoMoney;
- set @Amount, 100000;
- goto L_Dep_Continue;
-
-L_Dep_250k:
- if (Zeny<250000)
- goto L_NoMoney;
- set @Amount, 250000;
- goto L_Dep_Continue;
-
-L_Dep_500k:
- if (Zeny<500000)
- goto L_NoMoney;
- set @Amount, 500000;
- goto L_Dep_Continue;
-
-L_Dep_1kk:
- if (Zeny<1000000)
- goto L_NoMoney;
- set @Amount, 1000000;
- goto L_Dep_Continue;
-
-L_Dep_All:
- if (Zeny<1)
- goto L_NoMoney;
- set @Amount, Zeny;
- goto L_Dep_Continue;
-
-L_Dep_Continue:
- if (Zeny < @Amount)
- goto L_NoMoney;
- set Zeny, Zeny - @Amount;
- set #BankAccount, #BankAccount + @Amount;
- goto L_Balance;
-
-L_With:
- mes "[" + @npcname$ + "]";
- mes "\"How much would you like to withdraw?\"";
- menu
- "Other", L_With_Input,
- "5,000 GP", L_With_5k,
- "10,000 GP", L_With_10k,
- "25,000 GP", L_With_25k,
- "50,000 GP", L_With_50k,
- "100,000 GP", L_With_100k,
- "250,000 GP", L_With_250k,
- "500,000 GP", L_With_500k,
- "1,000,000 GP", L_With_1kk,
- "All of my money", L_With_All,
- "I've changed my mind", L_Start,
- "Quit", L_Return;
-
-L_With_Input:
- input @Amount;
- if (@Amount >= 0)
- goto L_With_Continue;
- mes "[" + @npcname$ + "]";
- mes "\"I need a positive amount. What would you like to do?\"";
- menu
- "Go back", L_Start,
- "Try again", L_With_Input,
- "Withdraw all", L_With_All,
- "Nevermind", L_Nev;
-
-L_With_5k:
- if (#BankAccount < 5000)
- goto L_NoMoney;
- set @Amount, 5000;
- goto L_With_Continue;
-
-L_With_10k:
- if (#BankAccount < 10000)
- goto L_NoMoney;
- set @Amount, 10000;
- goto L_With_Continue;
-
-L_With_25k:
- if (#BankAccount < 25000)
- goto L_NoMoney;
- set @Amount, 25000;
- goto L_With_Continue;
-
-L_With_50k:
- if (#BankAccount < 50000)
- goto L_NoMoney;
- set @Amount, 50000;
- goto L_With_Continue;
-
-L_With_100k:
- if (#BankAccount < 100000)
- goto L_NoMoney;
- set @Amount, 100000;
- goto L_With_Continue;
-
-L_With_250k:
- if (#BankAccount < 250000)
- goto L_NoMoney;
- set @Amount, 250000;
- goto L_With_Continue;
-
-L_With_500k:
- if (#BankAccount < 500000)
- goto L_NoMoney;
- set @Amount, 500000;
- goto L_With_Continue;
-
-L_With_1kk:
- if (#BankAccount < 1000000)
- goto L_NoMoney;
- set @Amount, 1000000;
- goto L_With_Continue;
-
-L_With_All:
- if (#BankAccount < 0)
- goto L_NoMoney;
- set @Amount, #BankAccount;
- goto L_With_Continue;
-
-L_With_Continue:
- if (#BankAccount < @Amount)
- goto L_NoMoney;
- set Zeny, Zeny + @Amount;
- set #BankAccount, #BankAccount - @Amount;
- goto L_Balance;
-
-L_Balance:
- mes "[" + @npcname$ + "]";
- mes "\"Your current bank balance is:";
- mes #BankAccount + " GP\"";
- if (!(#BankOptions & OPT_BANK_CLOSE) || (#BankAccount >= 10000000 &&
- BaseLevel >= 85 && !(#BankOptions & OPT_BANK_GOTSHADE))) next;
- if (#BankAccount >= 10000000 && BaseLevel >= 85 && !(#BankOptions & OPT_BANK_GOTSHADE))
- goto L_GiveShade;
- if (#BankOptions & OPT_BANK_CLOSE) goto L_Return;
- goto L_Start;
-
-L_GiveShade:
- mes "\"Oh\"";
- next;
- mes "\"It seems you managed to amass quite a fortune!\"";
- next;
- mes "\"Thank you for using our services. Please accept this little gift.\"";
- set #BankOptions, #BankOptions | OPT_BANK_GOTSHADE;
- getitem "CashiersShade", 1;
- if (#BankOptions & OPT_BANK_CLOSE) goto L_Return;
- next;
- npcaction 9; // clear npc dialog
- goto L_Start;
-
-L_Nev:
- mes "[" + @npcname$ + "]";
- mes "\"Goodbye then.\"";
- return;
-
-L_NoMoney:
- mes "[" + @npcname$ + "]";
- mes "\"Oh dear, it seems that you don't have enough money.\"";
- goto L_Start;
-
-S_MoveAccount:
- set #BankAccount, #BankAccount + BankAccount;
- set BankAccount, 0;
- return;
-
-L_Change:
- setarray @menuitems$, "Keep the current settings", "Close NPC dialog after selecting storage option", "Close NPC dialog after checking your balance";
- if (#BankOptions & OPT_STORAGE_CLOSE) set @menuitems$[1], "Return to main menu after leaving storage";
- if (#BankOptions & OPT_BANK_CLOSE) set @menuitems$[2], "Return to main menu after leaving bank";
- menu
- @menuitems$[0], L_Start,
- @menuitems$[1], L_Change_Storage,
- @menuitems$[2], L_Change_Bank;
-
-L_Change_Storage:
- set #BankOptions, (#BankOptions ^ OPT_STORAGE_CLOSE);
- goto L_Start;
-
-L_Change_Bank:
- set #BankOptions, (#BankOptions ^ OPT_BANK_CLOSE);
- goto L_Start;
-
-L_Return:
- set @npcname$, "";
- return;
-}
diff --git a/world/map/npc/functions/barber.txt b/world/map/npc/functions/barber.txt
deleted file mode 100644
index dbc7614b..00000000
--- a/world/map/npc/functions/barber.txt
+++ /dev/null
@@ -1,250 +0,0 @@
-// The Barber script has been around since before the repository split
-// so it's hard to figure out who wrote it.
-
-// o11c updated it according to new scripting standards while adding pink.
-// ... and added the code that shows your old color/style.
-
-// Note: there is a soft limit of 15 colors per classes and 20 styles (0-19)
-// This is the number that can be set when creating a character
-// or using GM commands, but scripts (such as this one) can set
-// any value 0-255
-
-function|script|Barber
-{
- if (getequipid(equip_head) == 647)
- goto L_Debug;
- callfunc "getHeadStyles";
- set @hairOpts, 0;
- set @colorOpts, 0;
- set @menu, 0;
- goto L_Main;
-
-L_MainClear:
- clear;
- goto L_Main;
-
-L_Main:
- set @style, getlook(LOOK_HAIR_STYLE);
- set @color, getlook(LOOK_HAIR_COLOR);
- set @style$, "Unknown";
- set @color$, "Unknown";
-
- if (@style >= 1 && @style <= 20)
- set @style$, @HairStyles$[(@style - 1)];
-
- if (@color == ((HC_WHITE - Class) + 1))
- set @color$, "Shocked White";
- set @color, (@color - (15 * (Class - 1)));
- if (@color >= 0 && @color <= 15)
- set @color$, @HairColors$[@color];
-
- if (Sex == 0) set @gender$, " female";
- elif (Sex == 1) set @gender$, " male";
- elif (Class == 3 || Class == 6) set @gender$, "n";
- else set @gender$, "";
-
- mes "You are a" + @gender$ + " " + @species$ + ".";
- mes "Your current style is " + @style$ + " and your current color is " + @color$ + ".";
- set @style$, "";
- set @color$, "";
- menu
- "Change my style", L_Style,
- "Change my color", L_Color,
- "Change my gender", L_Gender,
- "Change my species", L_Species,
- "Nah, I'm fine", L_Done;
-
-L_Gender:
- menu
- "Female.", L_Female,
- "Male.", L_Male,
- "Non-binary.", L_NonBinary,
- "Nah, I'm fine", L_MainClear;
-
-L_Female:
- set Sex, 0;
- goto L_MainClear;
-
-L_Male:
- set Sex, 1;
- goto L_MainClear;
-
-L_NonBinary:
- set Sex, 3;
- goto L_MainClear;
-
-L_Species:
- if (countitem("SkeletonCharm") >= 1)
- menu
- "Talpan", L_Species_next,
- "Tritan", L_Species_next,
- "Ifriton", L_Species_next,
- //"Gispaan", L_Species_next,
- //"Sparron", L_Species_next,
- "Undead", L_Species_next,
- "Nah, I'm fine", L_MainClear;
- //else
- menu
- "Talpan", L_Species_next,
- "Tritan", L_Species_next,
- "Ifriton", L_Species_next,
- //"Gispaan", L_Species_next,
- //"Sparron", L_Species_next,
- "Nah, I'm fine", L_MainClear;
-
-L_Species_next:
- if (@menu == 4) set @menu, 6;
- set Class, @menu;
- callfunc "fixHeadStyles";
- goto L_MainClear;
-
-L_Style:
- if(!@hairOpts) set @HairStyles$[getarraysize(@HairStyles$)], "Surprise me";
- if(!@hairOpts) set @HairStyles$[getarraysize(@HairStyles$)], "Nah, I'm fine";
- if(!@hairOpts) set @hairOpts, 1;
- menu
- @HairStyles$[0], L_MenuItems,
- @HairStyles$[1], L_MenuItems,
- @HairStyles$[2], L_MenuItems,
- @HairStyles$[3], L_MenuItems,
- @HairStyles$[4], L_MenuItems,
- @HairStyles$[5], L_MenuItems,
- @HairStyles$[6], L_MenuItems,
- @HairStyles$[7], L_MenuItems,
- @HairStyles$[8], L_MenuItems,
- @HairStyles$[9], L_MenuItems,
- @HairStyles$[10], L_MenuItems,
- @HairStyles$[11], L_MenuItems,
- @HairStyles$[12], L_MenuItems,
- @HairStyles$[13], L_MenuItems,
- @HairStyles$[14], L_MenuItems,
- @HairStyles$[15], L_MenuItems,
- @HairStyles$[16], L_MenuItems,
- @HairStyles$[17], L_MenuItems,
- @HairStyles$[18], L_MenuItems,
- @HairStyles$[19], L_MenuItems,
- @HairStyles$[20], L_MenuItems,
- @HairStyles$[21], L_MenuItems;
-
-L_MenuItems:
- if(@menu == (getarraysize(@HairStyles$) - 1)) goto L_RandomStyle;
- if(@menu >= getarraysize(@HairStyles$)) goto L_MainClear;
- setlook LOOK_HAIR_STYLE, @menu;
- goto L_MainClear;
-
-L_RandomStyle:
- setarray @randomStyle[0], rand(1, (getarraysize(@HairStyles$) - 2));
- setarray @randomStyle[1], @randomStyle[1] + 1; // infinite loop prevention
- if(@randomStyle[0] == @style && @randomStyle[1] < 15) goto L_RandomStyle;
- setlook LOOK_HAIR_STYLE, @randomStyle[0];
- setarray @randomStyle[1], 0;
- menu
- "Surprise me once again", L_RandomStyle,
- "Go back", L_MainClear,
- "Goodbye", L_Done;
-
-L_Color:
- if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Surprise me";
- if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Nah, I'm fine";
- if(!@colorOpts) set @colorOpts, 1;
- menu
- @HairColors$[0], L_MenuItems1,
- @HairColors$[1], L_MenuItems1,
- @HairColors$[2], L_MenuItems1,
- @HairColors$[3], L_MenuItems1,
- @HairColors$[4], L_MenuItems1,
- @HairColors$[5], L_MenuItems1,
- @HairColors$[6], L_MenuItems1,
- @HairColors$[7], L_MenuItems1,
- @HairColors$[8], L_MenuItems1,
- @HairColors$[9], L_MenuItems1,
- @HairColors$[10], L_MenuItems1,
- @HairColors$[11], L_MenuItems1,
- @HairColors$[12], L_MenuItems1,
- @HairColors$[13], L_MenuItems1,
- @HairColors$[14], L_MenuItems1,
- @HairColors$[15], L_MenuItems1,
- @HairColors$[16], L_MenuItems1;
-
-L_MenuItems1:
- if(@menu == (getarraysize(@HairColors$) - 1)) goto L_RandomColor;
- if(@menu >= getarraysize(@HairColors$)) goto L_MainClear;
- setlook LOOK_HAIR_COLOR, ((@menu - 1) + (15 * (Class - 1)));
- goto L_MainClear;
-
-L_RandomColor:
- setarray @randomColor[0], rand((15 * (Class - 1)), ((getarraysize(@HairColors$) - 3) + (15 * (Class - 1))));
- setarray @randomColor[1], @randomColor[1] + 1;
- if(@randomColor[0] == @color && @randomColor[1] < 15) goto L_RandomColor;
- setlook LOOK_HAIR_COLOR, @randomColor[0];
- setarray @randomColor[1], 0;
- menu
- "Surprise me once again", L_RandomColor,
- "Go back", L_MainClear,
- "Goodbye", L_Done;
-
-L_Done:
- // cleanup
- set @menu, 0;
- set @style, 0;
- set @color, 0;
- cleararray @HairStyles$, "", getarraysize(@HairStyles$);
- cleararray @HairColors$, "", getarraysize(@HairColors$);
- set @hairOpts, 0;
- set @colorOpts, 0;
- return;
-
-L_Debug:
- npcaction 9; // FIXME: this should become a builtin (ie `clear`)
- mes "Class: " + Class;
- mes "Style: " + getlook(LOOK_HAIR_STYLE);
- mes "Color: " + getlook(LOOK_HAIR_COLOR);
- mes "Gender: " + Sex;
- menu
- "edit| Set Class", L_DebugClass,
- "edit| Set Style", L_DebugStyle,
- "edit| Set Color", L_DebugColor,
- "edit| Set Gender", L_DebugGender,
- "toggle| Simulate logout", L_DebugLogout,
- "Close", L_Done;
-
-L_DebugLogout:
- callfunc "fixHeadStyles";
- goto L_Debug;
-
-L_DebugClass:
- set @dbg_class, 0;
- mes "input class (0-32767)";
- input @dbg_class;
- if (@dbg_class >= 0 && @dbg_class <= 32767)
- set Class, @dbg_class;
- set @dbg_class, 0;
- goto L_Debug;
-
-L_DebugStyle:
- set @dbg_style, 0;
- mes "input style (0-255)";
- input @dbg_style;
- if (@dbg_style >= 0 && @dbg_style <= 255)
- setlook LOOK_HAIR_STYLE, @dbg_style;
- set @dbg_style, 0;
- goto L_Debug;
-
-L_DebugColor:
- set @dbg_color, 0;
- mes "input color (0-255)";
- input @dbg_color;
- if (@dbg_color >= 0 && @dbg_color <= 255)
- setlook LOOK_HAIR_COLOR, @dbg_color;
- set @dbg_color, 0;
- goto L_Debug;
-
-L_DebugGender:
- set @dbg_gender, 0;
- mes "input gender (0-3)";
- input @dbg_gender;
- if (@dbg_gender >= 0 && @dbg_gender <= 3)
- set Sex, @dbg_gender;
- set @dbg_gender, 0;
- goto L_Debug;
-}
diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt
deleted file mode 100644
index 2abfb118..00000000
--- a/world/map/npc/functions/clear_vars.txt
+++ /dev/null
@@ -1,490 +0,0 @@
-// Clears old variables
-
-function|script|ClearVariables
-{
- if(@login_event != 1) goto L_Deprecated;
-
- callsub S_Bernard_Mikhail;
- callsub S_Sarah;
- callsub S_Vincent;
- callsub S_Sandra;
- callsub S_Desert;
- callsub S_Bandit;
- callsub S_Tutorial;
- callsub S_Heathin;
- callsub S_Remove_Skills;
- callsub S_FixBank;
- callsub S_Angus;
- callsub S_Flags;
- callsub S_Bitmask;
- callsub S_BlueSage;
- callsub S_Luca;
-
- callsub S_Easter;
- callsub S_Easter2008;
- callsub S_Easter2009;
- callsub S_Easter2010;
- callsub S_Easter2011;
- callsub S_Easter2012;
- callsub S_Halloween2006;
- callsub S_Halloween2007;
- callsub S_Halloween2008;
- callsub S_Halloween2009;
- callsub S_Halloween2010;
- callsub S_Halloween2011;
- callsub S_Halloween2016;
- callsub S_Xmas2006;
- callsub S_Xmas2007;
- callsub S_Xmas2008;
- callsub S_Xmas2009;
- callsub S_Xmas2010;
- callsub S_Xmas2011;
- callsub S_Xmas2012;
- callsub S_Valentine2021;
-
- callsub S_Misc;
- return; // go back to global handler
-
-S_Return: // this is to end execution of a sub
- return;
-
-////////////////////////////////////////////////////////////////
-
-S_Xmas2007:
- if(!QUEST_xmas07_state) goto S_Return;
- set QUEST_xmas07_state, 0;
- set QUEST_xmas07_milk, 0;
- set QUEST_xmas07_cookies, 0;
- set QUEST_xmas07_presents, 0;
- return;
-
-S_Halloween2007:
- set QUEST_Halloween07_state, 0;
- return;
-
-S_Xmas2006:
- if(!XMASQUEST1) goto S_Return;
- set XMASQUEST1, 0;
- set XMASQUEST2, 0;
- set XMASQUEST3, 0;
- set XMASQUEST4, 0;
- set XMASQUEST5, 0;
- set XMASQUEST6, 0;
- set XMASQUEST7, 0;
- set XMASQUEST8, 0;
- set XMASQUEST9, 0;
- set XMASQUEST10, 0;
- set XMASQUEST11, 0;
- set XMASQUEST12, 0;
- set XMASQUEST13, 0;
- set XMASQUEST14, 0;
- set XMASQUEST15, 0;
- set XMASQUEST16, 0;
- set XMASQUEST17, 0;
- set XMASQUEST18, 0;
- set XMASQUEST19, 0;
- set XMASQUEST20, 0;
- return;
-
-S_Halloween2006:
- if(!HWQUEST1) goto S_Return;
- set HWQUEST1, 0;
- set HWQUEST2, 0;
- set HWQUEST3, 0;
- set HWQUEST4, 0;
- set HWQUEST5, 0;
- set HWQUEST6, 0;
- set HWQUEST7, 0;
- set HWQUEST8, 0;
- set HWQUEST9, 0;
- set HWQUEST10, 0;
- set HWQUEST11, 0;
- set HWQUEST12, 0;
- set HWQUEST13, 0;
- set HWQUEST14, 0;
- set HWQUEST15, 0;
- set HWQUEST16, 0;
- set HWQUEST17, 0;
- set HWQUEST18, 0;
- set HWQUEST18, 0;
- set HWQUEST19, 0;
- set HWQUEST20, 0;
- return;
-
-S_Easter:
- set EasterQuest, 0;
- return;
-
-S_Easter2008:
- set QUEST_Easter08_state, 0;
- return;
-
-S_Halloween2008:
- set Halloween08, 0;
- return;
-
-S_Xmas2008:
- set QUEST_xmas08_state, 0;
- return;
-
-S_Easter2009:
- set QUEST_Easter09, 0;
- set QUEST_Easter09_slots, 0;
- return;
-
-S_Halloween2009:
- set Candyman, 0;
- return;
-
-S_Xmas2009:
- set QUEST_Christmas09_state, 0;
- return;
-
-S_Easter2010:
- if(!Easter_2010_QuestState) goto S_Return;
- set Easter_2010_QuestState, 0;
- set Easter_2010_EggState1, 0;
- set Easter_2010_EggState2, 0;
- set Easter_2010_EggState3, 0;
- set Easter_2010_EggState4, 0;
- set Easter_2010_EggState5, 0;
- return;
-
-S_Halloween2010:
- if(!hween10) goto S_Return;
- set hween10, 0;
- set hween10_collect_canpump, 0;
- set hween10_credits, 0;
- set hween10_collect, 0;
- set hween10_collect_mmallow, 0;
- set hween10_collect_jelskul, 0;
- set hween10_bonecount, 0;
- set hween10_collect_tondel, 0;
- set hween10_paid, 0;
- return;
-
-S_Halloween2016:
- set HWEEN16, 0;
- if(!hween16) goto S_Return;
- set hween16, 0;
- set hween16_collect_canpump, 0;
- set hween16_credits, 0;
- set hween16_collect, 0;
- set hween16_collect_mmallow, 0;
- set hween16_collect_jelskul, 0;
- set hween16_bonecount, 0;
- set hween16_collect_tondel, 0;
- set hween16_paid, 0;
- return;
-
-S_Xmas2010:
- if(!Xmas2010) goto S_Return;
- set Count_Yellow, 0;
- set Count_White, 0;
- set Maze, 0;
- set Yellow, 0;
- set White, 0;
- set Xmas2010, 0;
- set Golbenez_Inn_Cost, 0;
- return;
-
-S_Easter2011:
- set QUEST_Easter11, 0;
- return;
-
-S_Halloween2011:
- set hw2011, 0;
- return;
-
-S_Xmas2011:
- set xmas11, 0;
- return;
-
-S_Easter2012:
- set QUEST_Easter12, 0;
- return;
-
-S_Xmas2012:
- set xmas2012, 0;
- return;
-
-S_Angus:
- set QUEST_clothdyer_angus, 0;
- set QUEST_clothdyer_state, 0;
- return;
-
-S_Bitmask:
- // move Scythe quest into bitmasked variable QUEST_Hurnscald
- if (QUEST_Scythe_state)
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_1_MASK)) | (QUEST_Scythe_state << NIBBLE_1_SHIFT);
- set QUEST_Scythe_state, 0;
-
- // move Demon Mask quest into bitmasked variable QUEST_Hurnscald
- if (QUEST_demon_mines)
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_2_MASK)) | (QUEST_demon_mines << NIBBLE_2_SHIFT);
- set QUEST_demon_mines, 0;
-
- // move Inspector quest into bitmasked variable QUEST_Hurnscald
- set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
- if (Inspector > @inspector)
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (Inspector << NIBBLE_3_SHIFT);
- set Inspector, 0;
- set @inspector, 0;
- return;
-
-S_BlueSage:
- if (QUEST_BlueSage & (1 << 7))
- set QUEST_BlueSage, QUEST_BlueSage & ~((1<<5)|(1<<6)|(1<<7));
- return;
-
-S_Luca:
- if (FLAGS & FLAG_LUCA_FIX) goto S_Return;
- if (FLAGS & FLAG_LUCA_6SKILLS_MAXED) goto S_Luca6;
- if (FLAGS & FLAG_LUCA_4SKILLS_MAXED) goto S_Luca4;
- if (FLAGS & FLAG_LUCA_2SKILLS_MAXED) goto S_Luca2;
- goto S_LucaX;
-
-S_Luca6:
- if (countitem("AssassinMask") < 1) goto S_Return;
- delitem "AssassinMask", 1;
- set FLAGS, FLAGS ^ FLAG_LUCA_6SKILLS_MAXED;
- goto S_Luca4;
-
-S_Luca4:
- if (countitem("AssassinPants") < 1) goto S_Return;
- delitem "AssassinPants", 1;
- set FLAGS, FLAGS ^ FLAG_LUCA_4SKILLS_MAXED;
- goto S_Luca2;
-
-S_Luca2:
- if (countitem("AssassinBoots") < 1) goto S_Return;
- delitem "AssassinBoots", 1;
- set FLAGS, FLAGS ^ FLAG_LUCA_2SKILLS_MAXED;
- goto S_LucaX;
-
-S_LucaX:
- set FLAGS, FLAGS | FLAG_LUCA_FIX;
- return;
-
-S_Flags:
- if (Open_Underground_Palace_Barrier)
- set FLAGS, FLAGS | FLAG_OPENED_UNDERGROUND;
- set Open_Underground_Palace_Barrier, 0;
-
- if (Naem_Quest_Done)
- set FLAGS, FLAGS | FLAG_GOT_NAEM_GLOVES;
- set Naem_Quest_Done, 0;
-
- if (ChristmasQuest)
- set FLAGS, FLAGS | FLAG_SNOWMAN;
- set ChristmasQuest, 0;
-
- if (ChristmasQuest2)
- set FLAGS, FLAGS | FLAG_SANTAS_HELPER;
- set ChristmasQuest2, 0;
-
- if (ChestQuest)
- set FLAGS, FLAGS | FLAG_HURNSMINE_CHEST;
- set ChestQuest, 0;
- return;
-
-S_FixBank:
- if(#BankAccount >= 0) goto S_Return;
- if (Zeny >= -#BankAccount)
- goto S_Fix_Bank_Full;
- // Partial fix
- set #BankAccount, #BankAccount + Zeny;
- set Zeny, 0;
- return;
-
-S_Fix_Bank_Full:
- set Zeny, Zeny + #BankAccount;
- set #BankAccount, 0;
- return;
-
-S_Remove_Skills:
- if(getskilllv(SKILL_TRADE) < 1) goto S_Return;
- setskill SKILL_TRADE, 0;
- setskill SKILL_PARTY, 0;
- setskill SKILL_EMOTE, 0;
- return;
-
-S_Misc:
- set Death_Kill, 0;
- set Scorp, 0; // Tulimshar and Mine Variables which aren't used anymore
- set Bugleg, 0; // Tulimshar and Mine Variables which aren't used anymore
- set KatzeBeenOutside, 0; // variable was moved to a temporary player variable
- set LastHiss, 0; // variable was moved to Nibble 1 of the variable Katze
- set CaveSnakeLamp, 0; // quest was turned into a Daily Quest, so the variable isn't needed anymore
- set MAGIC_CAST_TICK, 0; // legacy stuff
- return;
-
-S_Tutorial:
- if(!TUTORIAL && !sorfina) goto S_Return;
- //TUTORIAL to STARTAREA
- if ((sorfina) || (kaan) || (hasan) || (tanisha))
- goto S_ResetAllTut;
- set @tutorial_tmp, ((TUTORIAL & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- // Tutorial
- // Nibble 0 (sorfina, tanisha, kaan & hasan)
- set STARTAREA, (STARTAREA & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
- // Nibble 1 (valon)
- set @tutorial_tmp, ((TUTORIAL & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
- set @valon_done, (TUTORIAL & (1 << 7));
- set @valon_start, (TUTORIAL & (1 << 6));
- if (@valon_start)
- set @tutorial_tmp, (@tutorial_tmp + 2);
- if (@valon_done)
- set @tutorial_tmp, 7;
- set STARTAREA, (STARTAREA & ~(NIBBLE_1_MASK) | (@tutorial_tmp << NIBBLE_1_SHIFT));
- // Nibble 2 (Counts)
- set @tutorial_tmp, ((TUTORIAL & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
- set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (@tutorial_tmp << NIBBLE_2_SHIFT));
- // Nibble 3 (Morgan)
- set @tutorial_tmp, ((TUTORIAL & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT);
- set STARTAREA, (STARTAREA & ~(NIBBLE_3_MASK) | (@tutorial_tmp << NIBBLE_3_SHIFT));
- // Nibble 4 (Zegas) Barrels shuffled
- set @zegas_done, (TUTORIAL & (1 << 23));
- set @zegas_start, (TUTORIAL & (1 << 16));
- set @zegas_met, (TUTORIAL & (1 << 30));
- set @tutorial_tmp, 0;
- if (@zegas_met)
- set @tutorial_tmp, 1;
- if (@zegas_start)
- set @tutorial_tmp, 2;
- if (@zegas_done)
- set @tutorial_tmp, 4;
- set STARTAREA, (STARTAREA & ~(NIBBLE_4_MASK) | (@tutorial_tmp << NIBBLE_4_SHIFT));
- // Nibble 5 (Barrels)
- set @tutorial_tmp, 0;
- set STARTAREA, (STARTAREA & ~(NIBBLE_5_MASK) | (@tutorial_tmp << NIBBLE_5_SHIFT));
- // Nibble 6 (Barrels)
- set STARTAREA, (STARTAREA & ~(NIBBLE_6_MASK) | (@tutorial_tmp << NIBBLE_6_SHIFT));
- set TUTORIAL, 0;
- return;
-
-S_ResetAllTut:
- set sorfina, 0;
- set tanisha, 0;
- set hasan, 0;
- set kaan, 0;
- set TUTORIAL, 0;
- set STARTAREA, 0;
- set FLAGS, FLAGS &~ FLAG_TUTORIAL_DONE;
- return;
-
-S_Heathin:
- if(!HEATHIN_QUEST) goto S_Return;
- set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK)) | (HEATHIN_QUEST << NIBBLE_6_SHIFT);
- set HEATHIN_QUEST, 0;
- return;
-
-S_Desert: // move guard and miner subquest into Byte 2 (Nibble 4 and 5) of QUEST_SouthTulimshar
- if(!TMW_QUEST || TMW_QUEST > 40) goto S_Return;
- set @miners, TMW_Quest - 12;
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(BYTE_2_MASK) | (@miners << BYTE_2_SHIFT));
- set TMW_Quest, 12;
- set @miners, 0;
- return;
-
-S_Sandra: // move Sandra subquest into Nibble 3 of QUEST_SouthTulimshar
- if(!TMW_QUEST || TMW_QUEST > 12) goto S_Return;
- set @sandra, TMW_Quest - 10;
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_3_MASK) | (@sandra << NIBBLE_3_SHIFT));
- set TMW_Quest, 10;
- set @sandra, 0;
- return;
-
-S_Vincent: // move Vincent subquest into Nibble 2 of QUEST_SouthTulimshar
- if(!TMW_QUEST || TMW_QUEST > 10) goto S_Return;
- set @vincent, TMW_Quest - 8;
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_2_MASK) | (@vincent << NIBBLE_2_SHIFT));
- set TMW_Quest, 8;
- set @vincent, 0;
- return;
-
-S_Sarah: // move Sarah subquest into Nibble 1 of QUEST_SouthTulimshar
- if(!TMW_QUEST || TMW_QUEST > 8) goto S_Return;
- set @sarah, TMW_Quest - 6;
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_1_MASK) | (@sarah << NIBBLE_1_SHIFT));
- set TMW_Quest, 6;
- set @sarah, 0;
- return;
-
-S_Bernard_Mikhail: // move Bernard and Mikhail subquest into Nibble 0 of QUEST_SouthTulimshar
- if(!TMW_QUEST || TMW_QUEST > 6) goto S_Return;
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_0_MASK) | (TMW_Quest << NIBBLE_0_SHIFT));
- set TMW_Quest, 0;
- return;
-
-S_Bandit: // move Bandit subquest into Nibble 0 of QUEST_Hurnscald
- if(!TMW_QUEST) goto S_Return;
- set @bandit, TMW_Quest - 40;
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_0_MASK) | (@bandit << NIBBLE_0_SHIFT));
- set TMW_Quest, 40;
- set @bandit, 0;
- return;
-
-S_Valentine2021:
- set #VALENTINE2021, 0;
- return;
-
-L_Deprecated:
- debugmes "Explicitely calling ClearVariables after login is deprecated.";
- mapexit;
-}
-
-
-function|script|ClearGlobalVars
-{
- goto L_IlliaClear;
-// Clear the array which saves the teams who beat the Illia quest
-L_IlliaClear:
- set $@loop, 0;
- goto L_IlliaLoop;
-
-L_IlliaLoop:
- if ($Illia_Win_Records$[$@loop] == "")
- goto L_EventClear;
-
- set $Illia_Win_Records$[$@loop], "";
-
- set $@loop, $@loop + 1;
- goto L_IlliaLoop;
-
-L_EventClear:
- set $@loop, 0;
-
-// Clear global variable used in the Halloween event 2009
- set $CandyOpsComplete, 0;
-
-// Clear global variables used in the Easter event 2010
- set $Easter_2010_Npc_State1, 0;
- set $Easter_2010_Npc_State2, 0;
- set $Easter_2010_Egg_Loc_State1, 0;
- set $Easter_2010_Egg_Loc_State2, 0;
- set $Easter_2010_Egg_Loc_State3, 0;
- set $Easter_2010_Egg_Loc_State4, 0;
- set $Easter_2010_Egg_Loc_State5, 0;
-
-// Clear global variables used in the Halloween event 2010
- set $hween10, 0;
- set $hween10_tondel, 0;
- set $hween10_mmallow, 0;
- set $hween10_jelskul, 0;
- set $hween10_canpump, 0;
-
-// Clear global variable used in Christmas event 2010
- set $Golbenez_Inn_Cost, 0;
-
-// Clear global variables used in the Halloween event 2016
- set $hween16, 0;
- set $hween16_tondel, 0;
- set $hween16_mmallow, 0;
- set $hween16_jelskul, 0;
- set $hween16_canpump, 0;
-
-// Variable was used in Voltain's script, was renamed and turned into a temporary variable
- set $state, 0;
- return;
-}
diff --git a/world/map/npc/functions/dailyquest.txt b/world/map/npc/functions/dailyquest.txt
deleted file mode 100644
index 4bbe7800..00000000
--- a/world/map/npc/functions/dailyquest.txt
+++ /dev/null
@@ -1,189 +0,0 @@
-// The daily quests
-
-// Variables returned:
-// @dq_return - Code of what happend
-// 0 = Low level
-// 1 = Ignored NPC
-// 2 = Not enough points
-// 3 = Not enough items
-// 4 = Success
-
-// Variables to set:
-// @dq_level - Minimal level needed to use the quest
-// @dq_cost - The number of points this quest uses
-// @dq_count - The number of given item needed
-// @dq_name$ - String name of the item as seen by server
-// @dq_friendly_name$ - String name of the item as seen by user
-// @dq_money - The money reward for doing the quest
-// @dq_exp - Experince gained by doing the quest
-
-// Optional:
-// @dq_handle_return - When set to anything other then 0 the function will not print exiting text
-
-// Variables used inside:
-// DailyQuestPoints - The number of points the player currently has
-// DailyQuestTime - Time since DailyQuestPoints was lasted renewed
-// DailyQuestBonus - Additional points added in addition to player BaseLevel
-
-// (DailyQuestBonus makes a good reward from non-daily quests)
-
-function|script|DailyQuestPoints
-{
- set @dq_earliest, gettimetick(2) - 86400;
- if (DailyQuestTime < @dq_earliest)
- set DailyQuestTime, @dq_earliest;
-
- // how many whole daily quest points the player has earned
- // we increment DailyQuestTime by the number of seconds in that many increments
- set @dq_increments, (gettimetick(2) - DailyQuestTime)*BaseLevel / 86400;
- set DailyQuestTime, DailyQuestTime + @dq_increments*86400/BaseLevel;
-
- // player can't regenerate any quest points, but might have a bonus
- if (DailyQuestPoints >= BaseLevel)
- goto L_Bonus;
-
- // normal recharging case - increment, but don't let it recharge more than a day's worth
- set DailyQuestPoints, DailyQuestPoints + @dq_increments;
- if (DailyQuestPoints > BaseLevel)
- set DailyQuestPoints, BaseLevel;
- // fallthrough to bonus, which *is* allowed to push DailyQuestPoints above BaseLevel
- goto L_Bonus;
-
-L_Bonus:
- set DailyQuestPoints, DailyQuestPoints + DailyQuestBonus;
- set DailyQuestBonus, 0;
-
- return;
-}
-
-function|script|DailyQuest
-{
- callfunc "DailyQuestPoints";
-
- if (BaseLevel < @dq_level)
- goto L_Low_Level;
- if (DailyQuestPoints < @dq_cost)
- goto L_Not_Enough_Points;
-
- mes "\"If you bring me " + @dq_count + " " + @dq_friendly_name$ + ", I will give you a reward.\"";
- menu
- "I have what you want.", L_Trade,
- "Take all you need.", L_All,
- "Ok, I'll get to work.", L_Next,
- "Nah, I'm not going to help you.", L_Next;
-
-L_Next:
- set @dq_return, 1;
- goto L_Exit;
-
-L_Trade:
- if (countitem(@dq_name$) < @dq_count)
- goto L_Not_Enough;
- delitem @dq_name$, @dq_count;
-
- set Zeny, Zeny + @dq_money;
- getexp @dq_exp, 0;
-
- set DailyQuestPoints, DailyQuestPoints - @dq_cost;
-
- if (@dq_handle_return)
- goto L_Exit_Good;
-
- mes "\"Thank you!\"";
- callsub S_SayPhrase;
- mes "";
- mes "[" + @dq_money + " money]";
- mes "[" + @dq_exp + " experience points]";
- goto L_Exit_Good;
-
-L_All:
- if (countitem(@dq_name$) < @dq_count)
- goto L_Not_Enough;
-
- set @item_multiple, (countitem(@dq_name$) / @dq_count);
- set @dp_multiple, (DailyQuestPoints / @dq_cost);
-
- if (@dp_multiple > @item_multiple)
- set @multipler, @item_multiple;
- if (@item_multiple >= @dp_multiple)
- set @multipler, @dp_multiple;
-
- set DailyQuestPoints, DailyQuestPoints - (@dq_cost * @multipler);
-
- delitem @dq_name$, (@dq_count * @multipler);
-
- set Zeny, Zeny + (@dq_money * @multipler);
- getexp (@dq_exp * @multipler), 0;
-
- if (@dq_handle_return)
- goto L_Exit_Good;
-
- mes "\"Thank you!\"";
- callsub S_SayPhrase;
- mes "";
- mes "[" + (@dq_money * @multipler) + " money]";
- mes "[" + (@dq_exp * @multipler) + " experience points]";
- goto L_Exit_Good;
-
-L_Exit_Good:
- set @dq_return, 4;
- goto L_Exit;
-
-L_Not_Enough:
- if (!@dq_handle_return)
- mes "\"I said " + @dq_count + " " + @dq_friendly_name$ + "; you should learn to count.\"";
- set @dq_return, 3;
- goto L_Exit;
-
-L_Low_Level:
- if (!@dq_handle_return)
- mes "\"Hey, you should go kill some things to get stronger first.\"";
- set @dq_return, 0;
- goto L_Exit;
-
-L_Not_Enough_Points:
- mes "\"You look exhausted, maybe you should rest a bit.\"";
- set @dq_return, 2;
- goto L_Exit;
-
-L_Exit:
- set @dq_handle_return, 0; // Incase they forget
- return;
-
-S_SayPhrase:
- if (@dq_handle_return)
- goto L_Return;
- if (DailyQuestPoints < @dq_cost)
- goto L_Exhausted;
- if (DailyQuestPoints > BaseLevel)
- goto L_Over;
- if (DailyQuestPoints > (BaseLevel*9)/10)
- goto L_P90;
- if (DailyQuestPoints > (BaseLevel*7)/10)
- goto L_P70;
- if (DailyQuestPoints > (BaseLevel*5)/10)
- goto L_P50;
- goto L_Low;
-
-L_Over:
- mes "\"Woah, you're bursting with power.\"";
- return;
-L_P90:
- mes "\"You're in a very good shape.\"";
- return;
-L_P70:
- mes "\"You don't seem very exhausted by my tasks.\"";
- return;
-L_P50:
- mes "\"Aren't you getting weary yet?\"";
- return;
-L_Low:
- mes "\"You look a little tired.\"";
- return;
-L_Exhausted:
- mes "\"You look exhausted, maybe you should rest a bit.\"";
- return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/default_npc_checks.txt b/world/map/npc/functions/default_npc_checks.txt
deleted file mode 100644
index cc5c4086..00000000
--- a/world/map/npc/functions/default_npc_checks.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-// Default NPC Checks
-// Author: Wushin, mekolat
-
-// Range
-// Distance in Tiles
-// set @npc_distance, 4;
-function|script|PCtoNPCRange
-{
- set @npc_check, 0;
- set @Nmap$, strnpcinfo(3);
- if(!@npc_distance) set @npc_distance, 4; // <== default distance
- if(@npc_distance == (1-2)) set @npc_distance, ATTACKRANGE;
- cleararray @npc_loc, 0, 3;
- setarray @npc_loc, getnpcx(), getnpcy(), @npc_distance;
- set @Nx1, (@npc_loc[0] - @npc_loc[2]);
- set @Ny1, (@npc_loc[1] - @npc_loc[2]);
- set @Nx2, (@npc_loc[0] + @npc_loc[2]);
- set @Ny2, (@npc_loc[1] + @npc_loc[2]);
- if (isin(@Nmap$, @Nx1, @Ny1, @Nx2, @Ny2))
- goto L_Return;
- set @npc_check, 1;
- if(@distance_handler) goto L_Return;
- set @dnpc_name$, strnpcinfo(1);
- if(@dnpc_name$ != "") goto L_Named;
- message strcharinfo(0), "Server : ##BYou need to move closer to interact with this npc.";
- goto L_Return;
-
-L_Named:
- message strcharinfo(0), ""+@dnpc_name$+" : ##BPlease move closer.";
- goto L_Return;
-
-L_Return:
- set @dnpc_name$, "";
- set @distance_handler, 0;
- set @npc_distance, 0;
- cleararray @npc_loc, 0, 3;
- return;
-}
-
-// Inventory & Weight
-// @delitem_ids Items to delete
-// @delitem_counts Counts of Items to delete
-// @getitem_ids Items to get
-// @getitem_counts Counts of Items to get
-function|script|CheckInventory
-{
- set @del_loop, 0;
- set @get_loop, 0;
- set @delitem_loop, 0;
- set @getitem_loop, 0;
- set @check_fail, 0;
- set @msg_loop, 0;
-
- if (getarraysize(@delitem_ids))
- goto L_DelItemsLoop;
- goto L_CheckGet;
-
-L_DelItemsLoop:
- if(countitem(@delitem_ids[@delitem_loop]) >= @delitem_counts[@delitem_loop])
- goto L_DelLoopAgain;
- goto L_ReturnMissing;
-
-L_DelLoopAgain:
- set @delitem_loop, (@delitem_loop + 1);
- if(@delitem_loop == getarraysize(@delitem_ids))
- goto L_CheckGet;
- goto L_DelItemsLoop;
-
-L_CheckGet:
- if (getarraysize(@getitem_ids))
- goto L_CheckWeight;
- goto L_DelCheck;
-
-L_CheckWeight:
- getinventorylist;
- if (100 < (@inventorylist_count + getarraysize(@getitem_ids)))
- goto L_ReturnSpace;
- goto L_GetItemsLoop;
-
-L_GetItemsLoop:
- if (checkweight(@getitem_ids[@getitem_loop], @getitem_counts[@getitem_loop]))
- goto L_GetLoopAgain;
- goto L_ReturnWeight;
-
-L_GetLoopAgain:
- set @getitem_loop, (@getitem_loop + 1);
- if(@getitem_loop == getarraysize(@getitem_ids))
- goto L_DelCheck;
- goto L_GetItemsLoop;
-
-L_DelCheck:
- if (getarraysize(@delitem_ids))
- goto L_DelLoop;
- goto L_CheckGet2;
-
-L_DelLoop:
- delitem @delitem_ids[@del_loop], @delitem_counts[@del_loop];
- goto L_DelAgain;
-
-L_DelAgain:
- set @del_loop, (@del_loop + 1);
- if(@del_loop == getarraysize(@delitem_ids))
- goto L_GetLoop;
- goto L_DelLoop;
-
-L_CheckGet2:
- if (getarraysize(@getitem_ids))
- goto L_GetLoop;
- goto L_Return;
-
-L_GetLoop:
- misceffect FX_GETITEM, strcharinfo(0);
- getitem @getitem_ids[@get_loop], @getitem_counts[@get_loop];
- goto L_GetAgain;
-
-L_GetAgain:
- set @get_loop, (@get_loop + 1);
- if(@get_loop == getarraysize(@getitem_ids))
- goto L_Return;
- goto L_GetLoop;
-
-L_ReturnMissing:
- set @check_fail, 1;
- mes "\"You are missing required items.\"";
- goto L_MissingMsg;
-
-L_MissingMsg:
- mes "[@@"+@delitem_ids[@msg_loop]+"|"+getitemlink(@delitem_ids[@msg_loop])+"@@] "+countitem(getitemlink(@delitem_ids[@msg_loop]))+"/"+@delitem_counts[@msg_loop];
- goto L_NextMsgCheck;
-
-L_NextMsgCheck:
- set @msg_loop, (@msg_loop + 1);
- if(@msg_loop == getarraysize(@delitem_ids))
- goto L_Return;
- goto L_MissingMsg;
-
-L_ReturnWeight:
- mes "\"You need to be carrying less weight.\"";
- next;
- set @check_fail, 1;
- goto L_Return;
-
-L_ReturnSpace:
- mes "\"You need more room in your inventory.\"";
- next;
- set @check_fail, 1;
- goto L_Return;
-
-L_Return:
- cleararray @delitem_ids, "", getarraysize(@delitem_ids);
- cleararray @delitem_counts, "", getarraysize(@delitem_counts);
- cleararray @getitem_ids, "", getarraysize(@getitem_ids);
- cleararray @getitem_counts, "", getarraysize(@getitem_counts);
- return;
-}
diff --git a/world/map/npc/functions/doomsday.txt b/world/map/npc/functions/doomsday.txt
deleted file mode 100644
index 1d3df2cd..00000000
--- a/world/map/npc/functions/doomsday.txt
+++ /dev/null
@@ -1,1435 +0,0 @@
-// Evol script
-// Controls Doomsday Event
-//
-// A really long event (months), controlling and being written by
-// every event which happens since doomsday program officialy started
-// in Halloween 2019 with Tormenta's release.
-//
-// This file history is written by GMs and players as the events happen
-// and therefore it is not possible to predict or add code for things which
-// are too far away from happening.
-//
-// Please keep Doomsday System simple.
-// Revert it to anything to stage once it is over.
-// It can be epic. But it doesn't needs to be.
-// But above all, this should NOT affect the merge.
-// The event purpose is to give players background history.
-
-function|script|DoomsdayDebug
-{
- mes "$DOOMSDAY: "+$DOOMSDAY; // Event Status
- mes "";
- mes "Act 2:";
- mes "Amount of slain Mana Guardians:";
- mes "$DOOMSDAY_CNT: "+$DOOMSDAY_CNT;
- mes "";
- mes "Act 3:";
- mes "Situation of the towns (0 - standing, n - fallen n times)";
- mes "$DOOMSDAY_TOWN[0] (Tulim): "+$DOOMSDAY_TOWN[0];
- mes "$DOOMSDAY_TOWN[1] (Hurns): "+$DOOMSDAY_TOWN[1];
- mes "$DOOMSDAY_TOWN[2] (Nival): "+$DOOMSDAY_TOWN[2];
- mes "$DOOMSDAY_SCORE: "+$DOOMSDAY_SCORE;
- mes "$DOOMSDAY_CLUES: "+$DOOMSDAY_CLUES;
- mes "";
- mes "Act 4:";
- mes "Can players summon Mana Guardians? "+if_then_else($DOOMSDAY_SUMMON, "Yes", "No");
- mes "Is TMW under Jande's control? "+if_then_else($DOOMSDAY_TAKENOVER, "Yes", "No");
- mes "Zealite Upgrade? "+if_then_else($DOOMSDAY_SUMMON > 1, "Yes", "No");
- mes "";
- mes "Act 5:";
- mes "Warp to fake Keshlam? "+if_then_else($DOOMSDAY_TWARP, "No", "Yes");
- mes "Jande was rescued? "+if_then_else($@HW2020_HOCUS > 2, "Yes", "No");
- mes "Jande has recovered? "+if_then_else($DOOMSDAY_TJANDE, "Yes", "No");
- mes "$DOOMSDAY_CNT2: "+$DOOMSDAY_CNT2;
- mes "Vanilla Mode? "+if_then_else($DOOMSDAY_VANILLA, "Yes", "No");
- //($DOOMSDAY_SUMMON ? "Yes" : "No");
- next;
- // Only GM 80 and above can modify Doomsday
- // ...Yes, G_ADMIN is 80 while G_SYSOP is 99.
- if (GM < G_ADMIN) goto L_Close;
- mes "Setting $DOOMSDAY event state";
- mes "[DOOMSDAY][ACT][STATE]";
- menu
- "[0][1][0] Tormenta's Seal",L_Seal,
- "[1][2][0] Jande's Army",L_Army,
- "[1][2][1] Toggle Mana Guardian Skill",L_Summon,
- "[1][2][2] Surrender TMW to Jande",L_Surrender,
- "[1][3][0] The Great War - First Wave",L_War,
- "[2][3][1] The Great War - Additional Wave",L_GreatWar,
- "[2][4][0] Wumpus Great Egg Hunt - DEBUG",L_Wumpus,
- "[2][4][1] Council - Tulimshar's Guild",L_TulimCouncil,
- "[2][4][2] Council - Celestia's Residence",L_HurnsCouncil,
- "[2][4][3] Council - Blue Sage's Residence",L_NivalCouncil,
- "[2][4][4] Toggle Zealite Upgrade",L_Zealite,
- "[3][5][0] Keshlam Warps",L_Keshlam,
- "[3][5][1] Rescuing Jande",L_Jande,
- "[3][5][2] Kage's Final Battle",L_Kage,
- "[3][5][3] Vanilla Mode",L_Vanilla,
- "[-] Close",L_Close;
-
-L_Close:
- return;
-
-// Act 1: Tormenta's Seal
-L_Seal:
- set $DOOMSDAY, 0;
- donpcevent "Doomsday::OnJanitor";
- gmlog strcharinfo(0) + " changed doomsday to Act 1: Tormenta's Seal.";
- return;
-
-// Act 2: Jande's Army
-L_Army:
- set $DOOMSDAY, 1;
- donpcevent "Doomsday::OnJanitor";
- gmlog strcharinfo(0) + " changed doomsday to Act 2: Jande's Army.";
- return;
-
-L_Summon:
- set $DOOMSDAY_SUMMON, (!$DOOMSDAY_SUMMON);
- gmlog strcharinfo(0) + " changed the availability of #jande spell.";
- return;
-
-L_Surrender:
- set $DOOMSDAY_TAKENOVER, 1;
- donpcevent "Doomsday::OnDoomsday2Restart";
- gmlog strcharinfo(0) + " surrendered The Mana World to Jande.";
- return;
-
-
-// Act 3: The Great War
-L_War:
- set $@DOOMSDAY_SKIP, 1; // Skip the next scheduled siege
- donpcevent "Doomsday::OnDoomsday3First"; // Forces a doomsday to begin now
- gmlog strcharinfo(0) + " changed doomsday to Act 3: The Great War.";
- return;
-
-L_Wumpus:
- set $@DOOMSDAY_SKIP, 0;
- donpcevent "Doomsday::OnClock1830"; // Forces a doomsday act 4 check
- gmlog strcharinfo(0) + " manually triggered debug function. Doomsday Act 4.";
- return;
-
-// Act 4: The Great War Council
-L_GreatWar:
- disablenpc "Wizard#1";
- disablenpc "Wizard#2";
- disablenpc "Wizard#3";
- disablenpc "Wizard#4";
- disablenpc "Wizard#5";
- disablenpc "Wizard#6";
- disablenpc "Wizard#7";
- disablenpc "Wizard#8";
- disablenpc "Arch-Wizard#9";
- set $DOOMSDAY, 2;
- set $@DOOMSDAY_SKIP, 0;
- donpcevent "Doomsday::OnJanitor";
- gmlog strcharinfo(0) + " changed doomsday to Act 4: The Great War Council.";
- return;
-
-L_CouncilRefusal:
- mes "##1Cowardly refusing to meet in a town destroyed five times.";
- next;
- return;
-
-L_TulimCouncil:
- if ($DOOMSDAY_TOWN[0] >= 5)
- goto L_CouncilRefusal;
-
- enablenpc "Arch-Wizard#_DT";
- gmlog strcharinfo(0) + " called the Council to Tulimshar.";
- return;
-
-L_HurnsCouncil:
- if ($DOOMSDAY_TOWN[1] >= 5)
- goto L_CouncilRefusal;
-
- enablenpc "Arch-Wizard#_DH";
- gmlog strcharinfo(0) + " called the Council to Hurnscald.";
- return;
-
-L_NivalCouncil:
- if ($DOOMSDAY_TOWN[2] >= 5)
- goto L_CouncilRefusal;
-
- enablenpc "Arch-Wizard#_DN";
- gmlog strcharinfo(0) + " called the Council to Nivalis.";
- return;
-
-L_Zealite:
- set $DOOMSDAY_SUMMON, 2;
- disablenpc "Soul Menhir#deadmire";
- disablenpc "Soul Menhir#hurnscald";
- disablenpc "Soul Menhir#nivalis";
- disablenpc "Soul Menhir#tulimshar";
- enablenpc "Chest#Zealite";
- //disablenpc "Soul Menhir#candor";
- gmlog strcharinfo(0) + " changed the availability of #manatez and Savior Armor.";
- return;
-
-// Act 5: The Doomsday
-L_Keshlam:
- mes "//-- TODO --//";
- enablenpc "Wizard#1";
- enablenpc "Wizard#2";
- enablenpc "Wizard#3";
- enablenpc "Wizard#4";
- enablenpc "Wizard#5";
- enablenpc "Wizard#6";
- enablenpc "Wizard#7";
- enablenpc "Wizard#8";
- enablenpc "Arch-Wizard#9";
- enablenpc "Chest#DarkRose";
- set $DOOMSDAY, 3;
- set $DOOMSDAY_TWARP, 0;
- set $DOOMSDAY_VANILLA, 0;
- donpcevent "Doomsday::OnJanitor"; // TODO
- gmlog strcharinfo(0) + " changed doomsday to Act 5: The Doomsday.";
- gmlog strcharinfo(0) + " changed doomsday warp to Keshlam Maze";
- return;
-
-L_Jande:
- set $DOOMSDAY_TWARP, 1;
- donpcevent "Doomsday::OnJanitor"; // TODO
- gmlog strcharinfo(0) + " changed doomsday warp to Abandoned Building";
- return;
-
-L_Kage:
- set $DOOMSDAY_TJANDE, 1;
- donpcevent "Doomsday::OnJanitor"; // TODO
- gmlog strcharinfo(0) + " changed Jande from MIA to ACT. Final battle begun.";
- return;
-
-L_Vanilla:
- set $DOOMSDAY_VANILLA, 1;
- donpcevent "Doomsday::OnJanitor"; // TODO
- gmlog strcharinfo(0) + " disabled rewards from final showdown (VANILLA).";
- return;
-
-}
-
-// Doomsday script controller
--|script|Doomsday|32767
-{
- close;
-
-// Destroy any artifact as doomsday mode changes
-OnJanitor:
- // TODO: Act 2: Kill monsters?
- // Act 3: Clean eventually on-going Doomsday
- set $@DOOMSDAY_SKIP, 0;
- set $@DD_NUMWAVES, 0;
- set $@DoomsdayLoc, 0;
- set $@DoomsdayMc, 0;
- set $@DD_LOC$, "";
- // Act 4: Disable council puppets
- disablenpc "Sagatha#_DT";
- disablenpc "Elanore#_DT";
- disablenpc "Nikolai#_DT";
- disablenpc "Morgan#_DT";
- disablenpc "Valia#_DT";
- disablenpc "Waric#_DT";
- disablenpc "Golbenez#_DT";
- disablenpc "Sagatha#_DH";
- disablenpc "Elanore#_DH";
- disablenpc "Nikolai#_DH";
- disablenpc "Morgan#_DH";
- disablenpc "Valia#_DH";
- disablenpc "Waric#_DH";
- disablenpc "Golbenez#_DH";
- disablenpc "Sagatha#_DN";
- disablenpc "Elanore#_DN";
- disablenpc "Nikolai#_DN";
- disablenpc "Morgan#_DN";
- disablenpc "Valia#_DN";
- disablenpc "Waric#_DN";
- disablenpc "Golbenez#_DN";
- disablenpc "Arch-Wizard#_DT";
- disablenpc "Arch-Wizard#_DH";
- disablenpc "Arch-Wizard#_DN";
- // Act 5: Cleanup
- if ($DOOMSDAY == 3 && !$DOOMSDAY_TWARP)
- donpcevent "Keshlam Maze::OnInit"; // Spawn monsters if needed
- if ($DOOMSDAY != 3)
- disablenpc "To Underworld";
- if ($DOOMSDAY == 3)
- enablenpc "To Underworld";
- // Clear timers
- setnpctimer 0;
- stopnpctimer;
- goto OnInit;
-
-// Check for our current doomsday state
-OnInit:
- setarray $@doomsday_mobs, 1140, 1141, 1143, 1140, 1141, 1143, 1140, 1141, 1143;
- setarray $@doomsday_boss, 1146, 1147, 1146, 1147, 1146, 1147, 1146, 1147, 1146, 1147;
- if ($DOOMSDAY == 1)
- goto L_Doomsday1;
- if ($DOOMSDAY == 2)
- goto L_Doomsday2;
- if ($DOOMSDAY == 3)
- goto L_Doomsday5;
- // goto L_Check2;
- end;
-
-////////////////////////////////////////////////////////////////////////////////
-L_Doomsday1:
- // 1138 - Mana Guardian
- // Argaes Invasion (1)
- areamonster "017-1", 169, 49, 198, 77, "", 1138, 1, "Doomsday::OnDeathMapname";
- // Argaes Invasion (2)
- areamonster "012-1", 20, 47, 74, 77, "", 1138, 3, "Doomsday::OnDeathMapname";
- // Argaes Invasion (3)
- areamonster "057-1", 115, 50, 140, 75, "", 1138, 4, "Doomsday::OnDeathMapname";
- // Kaizei Invasion (I)
- areamonster "046-1", 58, 49, 92, 70, "", 1138, 2, "Doomsday::OnDeathMapname";
- // Kaizei Invasion (II)
- areamonster "034-1", 83, 51, 121, 98, "", 1138, 6, "Doomsday::OnDeathMapname";
- // Tonori Invasion
- areamonster "003-4", 20, 20, 85, 60, "", 1138, 7, "Doomsday::OnDeathMapname";
- end;
-
-L_Doomsday1Respawn:
- // Argaes Invasion (1)
- set $@DoomsdayMc, mobcount("017-1", "Doomsday::OnDeathMapname")+1;
- if ($@DoomsdayMc < 1)
- areamonster "017-1", 169, 49, 198, 77, "", 1138, 1-$@DoomsdayMc, "Doomsday::OnDeathMapname";
-
- // Argaes Invasion (2)
- set $@DoomsdayMc, mobcount("012-1", "Doomsday::OnDeathMapname")+1;
- if ($@DoomsdayMc < 3)
- areamonster "012-1", 20, 47, 74, 77, "", 1138, 3-$@DoomsdayMc, "Doomsday::OnDeathMapname";
-
- // Argaes Invasion (3)
- set $@DoomsdayMc, mobcount("057-1", "Doomsday::OnDeathMapname")+1;
- if ($@DoomsdayMc < 4)
- areamonster "057-1", 115, 50, 140, 75, "", 1138, 4-$@DoomsdayMc, "Doomsday::OnDeathMapname";
-
- // Kaizei Invasion (I)
- set $@DoomsdayMc, mobcount("046-1", "Doomsday::OnDeathMapname")+1;
- if ($@DoomsdayMc < 2)
- areamonster "046-1", 58, 49, 92, 70, "", 1138, 2-$@DoomsdayMc, "Doomsday::OnDeathMapname";
-
- // Kaizei Invasion (II)
- set $@DoomsdayMc, mobcount("034-1", "Doomsday::OnDeathMapname")+1;
- if ($@DoomsdayMc < 6)
- areamonster "034-1", 83, 51, 121, 98, "", 1138, 6-$@DoomsdayMc, "Doomsday::OnDeathMapname";
-
- // Tonori Invasion
- set $@DoomsdayMc, mobcount("003-4", "Doomsday::OnDeathMapname")+1;
- if ($@DoomsdayMc < 7)
- areamonster "003-4", 20, 20, 85, 60, "", 1138, 7-$@DoomsdayMc, "Doomsday::OnDeathMapname";
- // goto L_TimerCheck2;
- goto L_TimerFinish;
-
-////////////////////////////////////////////////////////////////////////////////
-// Disable Tulimshar Magic Council
-L_Doomsday2:
- addnpctimer 1000, "Doomsday::OnDoomsday2Restart";
- end;
-
-OnDoomsday2Restart:
- disablenpc "Wizard#1";
- disablenpc "Wizard#2";
- disablenpc "Wizard#3";
- disablenpc "Wizard#4";
- disablenpc "Wizard#5";
- disablenpc "Wizard#6";
- disablenpc "Wizard#7";
- disablenpc "Wizard#8";
- disablenpc "Arch-Wizard#9";
-
- // TODO: Maybe the town was taken over?
- if (!$DOOMSDAY_TAKENOVER)
- end;
-
- fakenpcname "Constable Bob", "Constable Bob#_D", 421;
- fakenpcname "Inspector#Hurnscald", "Inspector#Hurnscald_D", 420;
- //fakenpcname "Richard", "Guardian Richard#_D", 420;
- fakenpcname "Selim", "Guardian Selim#_D", 420;
- fakenpcname "General Store#hurnscald", "Guardian Store#hurns_D", 420;
- fakenpcname "General Store#dimond", "Guardian Store#dimond_D", 420;
- fakenpcname "Sabine", "Mana Tourist#_D", 420;
- fakenpcname "Apprentice", "Apprentice#_D", 420;
- fakenpcname "Entertainer", "Entertainer#_D", 420;
- fakenpcname "Drinker#2", "Drinker#2_D", 420;
- fakenpcname "Bartender#Duels", "Bartender#Duels_D", 420;
- fakenpcname "Jerry", "Mana Singer#_D", 420;
-
- fakenpcname "Constable Perry Graf", "Constable Perry#_D", 420; // Name too long
- fakenpcname "Guard#school", "Guard#school_D", 420;
- fakenpcname "Guard#castle", "Guard#castle_D", 420;
- fakenpcname "Guard#east3", "Guard#east3_D", 420;
- fakenpcname "Guard#govt_out", "Guard#govtout_D", 420;
- fakenpcname "Guard#govt_in", "Guard#govtin_D", 420;
- fakenpcname "Guard#port1", "Guard#port1_D", 420;
- fakenpcname "Guard#port2", "Guard#port2_D", 420;
- fakenpcname "Guard#east1", "Guard#east1_D", 420;
-
- fakenpcname "Mede", "Mana Shopkeeper#_D", 420;
- fakenpcname "Bracco", "Mana Shopkeeper#2_D", 420;
-
- if ($DOOMSDAY_SUMMON == 2)
- goto L_MenhirUpdate;
- end;
-
-L_MenhirUpdate:
- disablenpc "Soul Menhir#deadmire";
- disablenpc "Soul Menhir#hurnscald";
- disablenpc "Soul Menhir#nivalis";
- disablenpc "Soul Menhir#tulimshar";
- enablenpc "Chest#Zealite";
- end;
-
-/////// Act 3 sieges
-// Variables:
-// $@DoomsdayLoc / 100 = Town Code (0: Tulim, 1: Hurns, 2: Nivalis)
-
-// Fake label for the first Zax's movement
-OnDoomsday3First:
- set $@DoomsdayLoc, 1;
- goto L_Doomsday3;
-
-// Setup a siege
-L_Doomsday3Init:
- set $@DoomsdayLoc, rand(300) / 100;
-
- // Announce based on location
- if ($@DoomsdayLoc == 0)
- announce "Jande : Zax De'Kagen's army is marching to ##BTULIMSHAR##b in 10 minutes! (Attack by south gate)", 0;
- if ($@DoomsdayLoc == 1)
- announce "Jande : Zax De'Kagen's army is marching to ##BHURNSCALD##b in 10 minutes! (Attack by the mines)", 0;
- if ($@DoomsdayLoc == 2)
- announce "Jande : Zax De'Kagen's army is marching to ##BNIVALIS##b in 10 minutes! (Attack by east entrance)", 0;
- end;
-
-// This siege will be skipped
-L_Doomsday3Skip:
- set $@DOOMSDAY_SKIP, 0;
- end;
-
-// Operational label, handles sieges
-L_Doomsday3:
- // At this point it is no longer possible to skip the event.
- // Based on $@DoomsdayLoc go to a town-specific label
- // One wave every 5 minutes, until 6 waves were called (~30 min)
- // Then stop the timer, and check for survivor mobs 45 minutes after
- // If survivors are found, the town will be overrun
- set $@DD_NUMWAVES, 0;
-
- // Set the map for other labels (could use an array but meh)
- if ($@DoomsdayLoc == 0)
- set $@DD_LOC$, "002-1";
- if ($@DoomsdayLoc == 1)
- set $@DD_LOC$, "018-1";
- if ($@DoomsdayLoc == 2)
- set $@DD_LOC$, "031-1";
-
-
- // Set the map coordinates for spawns
- // Tulimshar
- if ($@DoomsdayLoc == 0)
- setarray $@DD_XPOS, 98, 97, 91, 75, 56, 44, 76, 54;
- if ($@DoomsdayLoc == 0)
- setarray $@DD_YPOS, 75, 86, 99,104, 81, 63, 76, 96;
-
- // Hurnscald
- if ($@DoomsdayLoc == 1)
- setarray $@DD_XPOS,138,136,133,111, 95, 79, 67, 88;
- if ($@DoomsdayLoc == 1)
- setarray $@DD_YPOS, 63, 71, 79, 74, 75, 64, 82, 90;
-
- // Nivalis
- if ($@DoomsdayLoc == 2)
- setarray $@DD_XPOS, 90, 62, 63, 56, 70, 36, 62, 85;
- if ($@DoomsdayLoc == 2)
- setarray $@DD_YPOS, 47, 49, 61, 83, 41, 37, 26, 30;
-
-
- // Make an extra announce for those whom missed
- if ($@DoomsdayLoc == 0)
- announce "Jande : Zax De'Kagen's army reached ##BTULIMSHAR##b! (Attack by south gate)", 0;
- if ($@DoomsdayLoc == 1)
- announce "Jande : Zax De'Kagen's army reached ##BHURNSCALD##b! (Attack by the mines)", 0;
- if ($@DoomsdayLoc == 2)
- announce "Jande : Zax De'Kagen's army reached ##BNIVALIS##b! (Attack by east entrance)", 0;
-
- goto L_DDAdvanceWave;
-
-// Advance wave (max. 10->6 waves)
-L_DDAdvanceWave:
- set $@DD_NUMWAVES, $@DD_NUMWAVES+1;
- if ($@DD_NUMWAVES > 6)
- end; // TODO: Maybe a final wave announcement?
-
- // Variable initialization
- set $@DD_INT, 0;
- set $@DD_UNITS, getmapusers($@DD_LOC$)+$DOOMSDAY_SCORE;
-
- // Spawns
- if ($@DoomsdayLoc == 0)
- goto L_DD3Tulim;
- if ($@DoomsdayLoc == 1)
- goto L_DD3Hurns;
- if ($@DoomsdayLoc == 2)
- goto L_DD3Nival;
-
- // Fallback
- debugmes "DOOMSDAY/ACT3: Unrecognized town: "+$@DoomsdayLoc;
- goto L_DDAdvanceTimers;
-
-// Restart timers and advance wave
-L_DDAdvanceTimers:
- initnpctimer;
- if ($@DD_INT < $@DD_UNITS*2)
- goto L_DDAdvanceTimers2;
- goto L_DDAdvanceWavePost;
-
-// If we have more users than possible, waves come faster
-L_DDAdvanceTimers2:
- set $@ADD_TIME, (($@DD_UNITS*2-$@DD_INT)*500); // ±1 second per player/victory
- // Cap to 90s (to prevent skipping first third)
- if ($@ADD_TIME > 90000)
- set $@ADD_TIME, 90000;
-
- setnpctimer $@ADD_TIME;
-
- set $@ADD_TIME, 0;
- // If we have clues, we will cause a few extra spawns
- if ($DOOMSDAY_CLUES)
- goto L_DD3WaveReinforcements;
- goto L_DDAdvanceWavePost;
-
-// Reinforcements on waves, to ensure Kage never really weaken their attacks
-L_DD3WaveReinforcements:
- set $@DD_UNITS, $@DD_UNITS-$@DD_INT;
- set $@DD_UNITS, $@DD_UNITS*$DOOMSDAY_CLUES/3;
- set $@DD_INT, 0;
-
- if ($@DD_UNITS > 0)
- goto L_DD3WRCallsub;
- goto L_DDAdvanceWavePost;
-
-L_DD3WRCallsub:
- callsub S_DD3ThirdSpawns;
- goto L_DDAdvanceWavePost;
-
-// Clear temporary variables and broadcast
-L_DDAdvanceWavePost:
- set $@DD_IDX, 0;
- set $@DD_INT, 0;
- set $@DD_UNITS, 0;
-
- // Tell users
- mapannounce $@DD_LOC$, "Jande : Watch out, another wave! Only "+(6-$@DD_NUMWAVES)+" waves left!", 0;
-
- // Prepare optional boss
- set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
- set $@DD_IDX2, rand(getarraysize($@doomsday_boss));
-
- // Spawn optional boss if req. is met
- if ($@DD_NUMWAVES > 6-$DOOMSDAY_CLUES)
- monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3";
- end;
-
-
-
-
-// Tulimshar Siege points
-L_DD3Tulim:
- // Compulsory spawns
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 98, 75, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 97, 86, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- // Non-compulsory spawns
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 91, 99, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 75, 104, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 56, 81, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 44, 63, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 76, 76, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 54, 96, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- // No extra spawns possible
- goto L_DDAdvanceTimers;
-
-
-
-// Hurnscald Siege points
-L_DD3Hurns:
- // Compulsory spawns
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 138, 63, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 136, 71, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- // Non-compulsory spawns
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 133, 79, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 111, 74, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 94, 75, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 79, 64, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 67, 82, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 88, 90, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- // No extra spawns possible
- goto L_DDAdvanceTimers;
-
-
-
-// Nivalis Siege points
-L_DD3Nival:
- // Compulsory spawns
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 90, 47, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 62, 49, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- // Non-compulsory spawns
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 63, 61, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 56, 83, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 70, 41, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 36, 37, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 62, 26, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- if ($@DD_INT >= $@DD_UNITS*2) goto L_DDAdvanceTimers;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 85, 30, "", $@doomsday_mobs[$@DD_IDX], 1, "Doomsday::OnDeathAct3";
- set $@DD_INT, $@DD_INT+1;
-
- // No extra spawns possible
- goto L_DDAdvanceTimers;
-
-
-
-
-// Extra wave control system [0]
-S_DD3ThirdSpawns:
- set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
- set $@DD_IDX2, rand(getarraysize($@doomsday_mobs));
-
- monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_mobs[$@DD_IDX2], 1, "Doomsday::OnDeathAct3";
-
- set $@DD_INT, $@DD_INT+1;
- if($@DD_INT < $@DD_UNITS) goto S_DD3ThirdSpawns;
- return;
-
-// Extra wave control system [1]
-L_DD3FirstThird:
- set $@DD_UNITS, getmapusers($@DD_LOC$)-mobcount($@DD_LOC$, "Doomsday::OnDeathAct3")+1;
- set $@DD_INT, 0;
-
- // Difficulty adjustment: Invoke -1 mob per player and +1 mob per 2 score points
- set $@DD_UNITS, $@DD_UNITS-getmapusers($@DD_LOC$)+($DOOMSDAY_SCORE/2);
-
- // Monsters already overpower players
- if ($@DD_UNITS < 0)
- goto L_DD3EndThird;
-
- // Prepare optional boss
- set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
- set $@DD_IDX2, rand(getarraysize($@doomsday_boss));
-
- // Spawn optional boss
- if ($@DD_NUMWAVES == 5 && $DOOMSDAY_SCORE > 6)
- monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3";
-
- // Spawn first third's wave
- callsub S_DD3ThirdSpawns;
- goto L_DD3EndThird;
-
-// Extra wave control system [2]
-L_DD3SecondThird:
- set $@DD_UNITS, getmapusers($@DD_LOC$)-mobcount($@DD_LOC$, "Doomsday::OnDeathAct3")+1;
- set $@DD_INT, 0;
-
- // Intensity control
- if ($DOOMSDAY_SCORE < 12-$DOOMSDAY_CLUES)
- goto L_DD3EndThird;
-
- // Difficulty adjustment: Invoke -1 mob per player and +1 mob per 3 score points
- set $@DD_UNITS, $@DD_UNITS-getmapusers($@DD_LOC$)+($DOOMSDAY_SCORE/3);
-
- // Prepare optional boss
- set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
- set $@DD_IDX2, rand(getarraysize($@doomsday_boss));
-
- // Spawn optional boss
- if ($@DD_NUMWAVES == 5)
- monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", $@doomsday_boss[$@DD_IDX2], 1, "Doomsday::OnDeathAct3";
-
- // Monsters already overpower players
- if ($@DD_UNITS < 0)
- goto L_DD3EndThird;
-
- // Spawn second third's wave
- callsub S_DD3ThirdSpawns;
- goto L_DD3EndThird;
-
-// Extra wave control system [3]
-L_DD3EndThird:
- set $@DD_UNITS, 0;
- set $@DD_IDX1, 0;
- set $@DD_IDX2, 0;
- set $@DD_INT, 0;
- end;
-
-
-
-// Timer controls (5 minutes between waves);
-// It only fires after first wave
-L_TimerCheck2:
- if ($@DD_NUMWAVES > 0)
- goto L_DDAdvanceWave;
- end;
-
-// Siege one hour condition fully elapsed
-L_Doomsday3Check:
- set $@DoomsdayMc, mobcount($@DD_LOC$, "Doomsday::OnDeathAct3")+1;
- if ($@DoomsdayMc > 0)
- goto L_Doomsday3Defeat;
- goto L_Doomsday3Victory;
-
-// Town was defeated
-L_Doomsday3Defeat:
- // Warn players that town is in danger
- mapannounce $@DD_LOC$, "Jande : Oh noes, "+$@DoomsdayMc+" monsters passed the barricate!!", 0;
-
- // Move the monsters to town
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- if ($@DoomsdayLoc == 0)
- areamonster "001-1", 52, 35, 119, 113, "", $@doomsday_mobs[$@DD_IDX], $@DoomsdayMc;
- if ($@DoomsdayLoc == 1)
- areamonster "009-1", 25, 25, 96, 53, "", $@doomsday_mobs[$@DD_IDX], $@DoomsdayMc;
- if ($@DoomsdayLoc == 2)
- areamonster "020-1", 24, 32, 99, 96, "", $@doomsday_mobs[$@DD_IDX], $@DoomsdayMc;
-
- // Update defeat counter and advance
- set $DOOMSDAY_TOWN[$@DoomsdayLoc], $DOOMSDAY_TOWN[$@DoomsdayLoc]+1;
- set $@DD_IDX, 0;
- goto L_Doomsday3Cleanup;
-
-// Siege was cleared up
-L_Doomsday3Victory:
- set $DOOMSDAY_SCORE, $DOOMSDAY_SCORE+1;
- mapannounce $@DD_LOC$, "Jande : That was a close call, but we did it! We defended "+$DOOMSDAY_SCORE+" times.", 0;
- goto L_Doomsday3Cleanup;
-
-// Clean up temporary variables (except skip)
-L_Doomsday3Cleanup:
- killmonster $@DD_LOC$, "Doomsday::OnDeathAct3";
- set $@DD_NUMWAVES, 0;
- set $@DoomsdayLoc, 0;
- set $@DoomsdayMc, 0;
- set $@DD_LOC$, "";
- cleararray $@DD_XPOS, 0, 8;
- cleararray $@DD_YPOS, 0, 8;
- end;
-
-// Bonus spawn
-L_Doomsday3Bonus:
- announce "Jande : Stray minions from Zax De'Kagen army were sighted all over the world!", 0;
- set $@DD_UNITS, 2+($DOOMSDAY_SCORE/5);
-
- // Cap value (to prevent huge spikes)
- if ($@DD_UNITS > 5)
- set $@DD_UNITS, 3+($DOOMSDAY_SCORE/10);
-
- // Sum the permanent clues
- set $@DD_UNITS, $@DD_UNITS+$DOOMSDAY_CLUES;
-
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "031-1", 62, 49, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "018-1", 136, 71, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- monster "002-1", 97, 86, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
-
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "017-1", 169, 49, 198, 77, "", $@doomsday_mobs[$@DD_IDX], 1+$DOOMSDAY_CLUES;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "012-1", 20, 47, 74, 77, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "057-1", 115, 50, 140, 75, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "046-1", 58, 49, 92, 70, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "034-1", 83, 51, 121, 98, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS;
- set $@DD_IDX, rand(getarraysize($@doomsday_mobs));
- areamonster "003-4", 20, 20, 85, 60, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS;
-
- // Tormenta
- if (rand(10) <= $DOOMSDAY_CLUES)
- monster "057-1", 126, 64, "", 1137, 1;
-
- set $@DD_UNITS, 0;
- set $@DD_IDX, 0;
- end;
-
-// Act 4 System
-L_Doomsday4Check:
- // Magic number: 21
- if ($DOOMSDAY_SCORE >= 20-$DOOMSDAY_CLUES)
- goto L_DD4WarnSeq;
- end;
-
-L_DD4WarnSeq:
- areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4Warning1";
- announce "Jande : ##1##BWarning: ##bZax's Golem spawning! Defeat it!!", 0;
- addnpctimer 7500, "Doomsday::OnDD4Spawn";
- end;
-
-OnDD4Warning1:
- mapmask 1 | 2;
- music "Dramatic.ogg";
- areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 600, "Doomsday::OnDD4Warning2";
- end;
-
-OnDD4Warning2:
- misceffect 51, strcharinfo(0);
- areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 7000, "Doomsday::OnDD4Warning3";
- end;
-
-OnDD4Warning3:
- mapmask 1;
- end;
-
-OnDD4Spawn:
- set $@DD_IDX1, rand(getarraysize($@DD_XPOS));
- monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", 1145, 1, "Doomsday::OnDeathAct4";
- //debugmes "Success "+$@DD_LOC$+" ("+$@DD_XPOS[$@DD_IDX1]+", "+$@DD_YPOS[$@DD_IDX1]+")";
- mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0;
- // Spawn a few mobs
- set $@DD_INT, 0;
- set $@DD_UNITS, $DOOMSDAY_CLUES*4;
- callsub S_DD3ThirdSpawns;
- goto OnDD4Smash;
-
-// Could use a new optional skill: FRAIL NOOBS, ZAX RULES! (causes new wave of 6 monsters)
-OnDD4Smash:
- // Golem got itself smashed D:
- if ($@DD_LOC$ == "")
- end;
- if (!(mobcount($@DD_LOC$, "Doomsday::OnDeathAct4")+1))
- end;
- // TODO: Do not keep repeating the announce
- //mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0;
- areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4Smashed";
- addnpctimer rand(12000, 18000), "Doomsday::OnDD4Smash";
- end;
-
-OnDD4Smashed:
- misceffect 52, strcharinfo(0);
- heal -70-BaseLevel, 0;
- end;
-
-// For surviving
-OnDD4SurvivorReward:
- getexp 10000, 0;
- end;
-
-
-////////////////////////////////////////////////////////////////////////////////
-// Act 5 utils
-L_Doomsday5:
- enablenpc "Chest#DarkRose";
- if ($DOOMSDAY_SUMMON == 2)
- goto L_MenhirUpdate;
- end;
-
-////////////////////////////////////////////////////////////////////////////////
-// Respawn logic (5 minutes)
-OnTimer100000:
- if ($DOOMSDAY == 2)
- goto L_DD3FirstThird;
- end;
-
-OnTimer200000:
- if ($DOOMSDAY == 2)
- goto L_DD3SecondThird;
- end;
-
-OnTimer300000:
- if ($DOOMSDAY == 1)
- goto L_Doomsday1Respawn;
- if ($DOOMSDAY == 2)
- goto L_TimerCheck2;
- goto L_TimerFinish;
-
-// Once all timer checks are over
-L_TimerFinish:
- set $@DoomsdayMc, 0;
- setnpctimer 0;
- stopnpctimer;
- end;
-
-// Act 3 clock handlers [1]
-OnClock1750:
- if ($@DOOMSDAY_SKIP)
- end;
- if ($DOOMSDAY == 2)
- goto L_Doomsday3Init;
- end;
-
-OnClock1800:
- if ($@DOOMSDAY_SKIP)
- end;
- if ($DOOMSDAY == 2)
- goto L_Doomsday3;
- end;
-
-OnClock1830:
- if ($@DOOMSDAY_SKIP)
- end;
- if ($DOOMSDAY == 2)
- goto L_Doomsday4Check;
- end;
-
-// 19h -> 18h45
-OnClock1845:
- if ($@DOOMSDAY_SKIP)
- goto L_Doomsday3Skip;
- if ($DOOMSDAY == 2)
- goto L_Doomsday3Check;
- end;
-
-// Act 3 clock handlers [2]
-OnClock2350:
- if ($@DOOMSDAY_SKIP)
- end;
- if ($DOOMSDAY == 2)
- goto L_Doomsday3Init;
- end;
-
-OnClock0000:
- if ($@DOOMSDAY_SKIP)
- end;
- if ($DOOMSDAY == 2)
- goto L_Doomsday3;
- end;
-
-OnClock0030:
- if ($@DOOMSDAY_SKIP)
- end;
- if ($DOOMSDAY == 2)
- goto L_Doomsday4Check;
- end;
-
-OnClock0045:
- if ($@DOOMSDAY_SKIP)
- goto L_Doomsday3Skip;
- if ($DOOMSDAY == 2)
- goto L_Doomsday3Check;
- end;
-
-// Act 3 clock handlers [3]
-OnClock0900:
- if ($DOOMSDAY == 2)
- goto L_Doomsday3Bonus;
- end;
-
-////////////////////////////////////////////////////////////////////////////////
-// Puppet labels
-OnDeathMapname:
- if ($DOOMSDAY == 1)
- set $DOOMSDAY_CNT, $DOOMSDAY_CNT+1;
- startnpctimer;
- end;
-
-OnDeathAct3:
- end;
-
-OnDeathAct4:
- set $DOOMSDAY_SCORE, 0;
- set $DOOMSDAY_CLUES, $DOOMSDAY_CLUES+1;
- announce "Jande : Golem destroyed, crisis averted. I'll be resetting the number of victories.", 0;
- if ($@DD_LOC$ == "")
- end;
- areatimer 0, $@DD_LOC$, 20, 20, 500, 500, 100, "Doomsday::OnDD4SurvivorReward";
- end;
-
-}
-
-// Control puppets for Doomsday Council Meetings
--|script|Doomsday Council|32767
-{
- if (GM >= G_DEV)
- mes "["+strnpcinfo(0)+"]";
- mes "You probably should try talking to them normally.";
- if (GM >= G_DEV)
- mes "##9 Use: @npctalk \""+strnpcinfo(0)+"\" \"your message goes here\"##0";
- close;
-
-OnInit:
- // Tulimshar room (Doomsday Tulim: _DT)
- if (puppet("001-2", 99, 22, "Sagatha#_DT", 167) < 1) mapexit;
- if (puppet("001-2", 92, 24, "Elanore#_DT", 108) < 1) mapexit;
- if (puppet("001-2", 92, 30, "Nikolai#_DT", 362) < 1) mapexit;
- if (puppet("001-2", 99, 32, "Morgan#_DT", 355) < 1) mapexit;
- if (puppet("001-2", 110, 22, "Valia#_DT", 370) < 1) mapexit;
- if (puppet("001-2", 117, 24, "Waric#_DT", 153) < 1) mapexit;
- if (puppet("001-2", 117, 30, "Golbenez#_DT", 307) < 1) mapexit;
- if (puppet("001-2", 110, 32, "Numa#_DT", 393) < 1) mapexit;
-
- // Hurnscald room (Doomsday Hurns: _DH)
- if (puppet("069-2", 101, 85, "Sagatha#_DH", 167) < 1) mapexit;
- if (puppet("069-2", 94, 87, "Elanore#_DH", 108) < 1) mapexit;
- if (puppet("069-2", 94, 93, "Nikolai#_DH", 362) < 1) mapexit;
- if (puppet("069-2", 101, 95, "Morgan#_DH", 355) < 1) mapexit;
- if (puppet("069-2", 112, 85, "Valia#_DH", 370) < 1) mapexit;
- if (puppet("069-2", 119, 87, "Waric#_DH", 153) < 1) mapexit;
- if (puppet("069-2", 119, 93, "Golbenez#_DH", 307) < 1) mapexit;
- if (puppet("069-2", 112, 95, "Numa#_DH", 393) < 1) mapexit;
-
- // Nivalis room (Doomsday Nivalis: _DN)
- if (puppet("048-2", 113, 86, "Sagatha#_DN", 167) < 1) mapexit;
- if (puppet("048-2", 112, 87, "Elanore#_DN", 108) < 1) mapexit;
- if (puppet("048-2", 114, 87, "Nikolai#_DN", 362) < 1) mapexit;
- if (puppet("048-2", 113, 88, "Morgan#_DN", 355) < 1) mapexit;
- if (puppet("048-2", 118, 85, "Valia#_DN", 370) < 1) mapexit;
- if (puppet("048-2", 117, 86, "Waric#_DN", 153) < 1) mapexit;
- if (puppet("048-2", 119, 86, "Golbenez#_DN", 307) < 1) mapexit;
- if (puppet("048-2", 118, 87, "Numa#_DN", 393) < 1) mapexit;
-
- // Disable puppets
- disablenpc "Sagatha#_DT";
- disablenpc "Elanore#_DT";
- disablenpc "Nikolai#_DT";
- disablenpc "Morgan#_DT";
- disablenpc "Valia#_DT";
- disablenpc "Waric#_DT";
- disablenpc "Golbenez#_DT";
- disablenpc "Numa#_DT";
-
- disablenpc "Sagatha#_DH";
- disablenpc "Elanore#_DH";
- disablenpc "Nikolai#_DH";
- disablenpc "Morgan#_DH";
- disablenpc "Valia#_DH";
- disablenpc "Waric#_DH";
- disablenpc "Golbenez#_DH";
- disablenpc "Numa#_DH";
-
- disablenpc "Sagatha#_DN";
- disablenpc "Elanore#_DN";
- disablenpc "Nikolai#_DN";
- disablenpc "Morgan#_DN";
- disablenpc "Valia#_DN";
- disablenpc "Waric#_DN";
- disablenpc "Golbenez#_DN";
- disablenpc "Numa#_DN";
- end;
-}
-
-// 114,80
--|script|Doomsday Council Master|32767
-{
- mes "The wizard seems to ignore you.";
- if (GM < G_DEV)
- close;
- goto L_Main;
-
-L_Main:
- explode @n$, strnpcinfo(0), "#";
- // @n$[1] = _DT/_DH/_DN for dismissal
- mes "";
- menu
- "[GM 40] Enable Sagatha", L_Sagatha,
- "[GM 40] Enable Elanore", L_Elanore,
- "[GM 40] Enable Nikolai", L_Nikolai,
- "[GM 40] Enable Morgan", L_Morgan,
- "[GM 40] Enable Valia", L_Valia,
- "[GM 40] Enable Waric", L_Waric,
- "[GM 40] Enable Golbenez", L_Golbenez,
- "[GM 98] Enable Numa", L_Numa,
- "[GM 40] Disable Sagatha", L_NoSagatha,
- "[GM 40] Disable Elanore", L_NoElanore,
- "[GM 40] Disable Nikolai", L_NoNikolai,
- "[GM 40] Disable Morgan", L_NoMorgan,
- "[GM 40] Disable Valia", L_NoValia,
- "[GM 40] Disable Waric", L_NoWaric,
- "[GM 40] Disable Golbenez", L_NoGolbenez,
- "[GM 98] Disable Numa", L_NoNuma,
- "[GM 60] Cancel Next Siege", L_SkipSiege,
- "[GM 80] Dismiss the council", L_Dismiss;
-
-L_Sagatha:
- enablenpc "Sagatha#"+@n$[1];
- goto L_Main;
-L_NoSagatha:
- disablenpc "Sagatha#"+@n$[1];
- goto L_Main;
-
-L_Elanore:
- enablenpc "Elanore#"+@n$[1];
- goto L_Main;
-L_NoElanore:
- disablenpc "Elanore#"+@n$[1];
- goto L_Main;
-
-L_Nikolai:
- enablenpc "Nikolai#"+@n$[1];
- goto L_Main;
-L_NoNikolai:
- disablenpc "Nikolai#"+@n$[1];
- goto L_Main;
-
-L_Morgan:
- enablenpc "Morgan#"+@n$[1];
- goto L_Main;
-L_NoMorgan:
- disablenpc "Morgan#"+@n$[1];
- goto L_Main;
-
-L_Valia:
- enablenpc "Valia#"+@n$[1];
- goto L_Main;
-L_NoValia:
- disablenpc "Valia#"+@n$[1];
- goto L_Main;
-
-L_Waric:
- enablenpc "Waric#"+@n$[1];
- goto L_Main;
-L_NoWaric:
- disablenpc "Waric#"+@n$[1];
- goto L_Main;
-
-L_Golbenez:
- enablenpc "Golbenez#"+@n$[1];
- goto L_Main;
-L_NoGolbenez:
- disablenpc "Golbenez#"+@n$[1];
- goto L_Main;
-
-L_Numa:
- if (GM < G_SYSOP)
- mes "Your GM level does not authorizes you to perform this operation.";
- if (GM < G_SYSOP)
- close;
- enablenpc "Numa#"+@n$[1];
- goto L_Main;
-L_NoNuma:
- if (GM < G_SYSOP)
- mes "Your GM level does not authorizes you to perform this operation.";
- if (GM < G_SYSOP)
- close;
- disablenpc "Numa#"+@n$[1];
- goto L_Main;
-
-L_Dismiss:
- if (GM < G_ADMIN)
- mes "Your GM level does not authorizes you to perform this operation.";
- if (GM < G_ADMIN)
- close;
- disablenpc "Sagatha#"+@n$[1];
- disablenpc "Elanore#"+@n$[1];
- disablenpc "Nikolai#"+@n$[1];
- disablenpc "Morgan#"+@n$[1];
- disablenpc "Valia#"+@n$[1];
- disablenpc "Waric#"+@n$[1];
- disablenpc "Golbenez#"+@n$[1];
- disablenpc "Arch-Wizard#"+@n$[1];
- gmlog strcharinfo(0) + " dismissed the Council.";
- close;
-
-L_SkipSiege:
- if (GM < G_GM)
- mes "Your GM level does not authorizes you to perform this operation.";
- if (GM < G_GM)
- close;
- set $@DOOMSDAY_SKIP, 1;
- announce "Jande : I do not believe the enemy army will move this time. We should be safe for now.", 0;
- gmlog strcharinfo(0) + " cancelled the scheduled doomsday attack.";
- close;
-
-OnInit:
- // Tulimshar room (Doomsday Tulim: _DT)
- if (puppet("001-2", 104, 27, "Arch-Wizard#_DT", 354) < 1) mapexit;
- if (puppet("069-2", 106, 90, "Arch-Wizard#_DH", 354) < 1) mapexit;
- if (puppet("048-2", 114, 80, "Arch-Wizard#_DN", 354) < 1) mapexit;
-
- // Disable puppets
- disablenpc "Arch-Wizard#_DT";
- disablenpc "Arch-Wizard#_DH";
- disablenpc "Arch-Wizard#_DN";
- end;
-}
-
-009-1,53,40,0|script|Chest#Zealite|111
-{
- if ($DOOMSDAY_SUMMON < 2) end;
- if ((gettimetick(2)-TUT_var < 3*7*86400) || (BaseLevel < 25)) //player must be created at least 3 weeks ago
- goto L_EndTooYoung;
- if (#DOOMSDAY_ARMOR)
- goto L_EndTooYoung;
- mes "[Chest]";
- mes "Inside this chest, Jande left us some Zealite based armor.";
- next;
- mes "[Chest]";
- mes "The @@5254|@@ can be really powerful. It'll be taken away once Doomsday Event ends.";
- next;
- mes "[Chest]";
- mes "Should we take it? (Max. 1 per account)";
- next;
- mes "Event Details: [@@https://forums.themanaworld.org/viewtopic.php?t=20921|@@]";
- menu
- "Yes, take it", L_Yes,
- "No, I don't trust it", L_No;
-
-L_Yes:
- message strcharinfo(0), "Chest : You took the Savior Armor from the chest. It will be lost once event ends.";
- getitem "SaviorArmor", 1;
- set #DOOMSDAY_ARMOR, 1;
- close;
-
-L_No:
- close;
-
-L_EndTooYoung:
- if ($DOOMSDAY == 3) goto L_Hocus;
- message strcharinfo(0), "Chest : It is empty!";
- end;
-
-L_Hocus:
- message strcharinfo(0), "Chest : Only contains fire extinguishers, water hoses, and other fire-fighting stuff. I wonder what that is for.";
- end;
-
-OnInit:
- disablenpc "Chest#Zealite";
- end;
-}
-
-008-1,97,28,0|script|#Haystack|400
-{
- if ($DOOMSDAY != 3) end;
- if ((gettimetick(2)-TUT_var < 5*7*86400) || (BaseLevel < 40)) //player must be created at least 5 weeks ago
- goto L_EndTooYoung;
- if (gettimetick(2) < #HAYSTACKTIMEPENALTY)
- goto L_EndRateLimit;
- set #HAYSTACKTIMEPENALTY, gettimetick(2) + 5;
- message strcharinfo(0), "Haystack : What exactly are you looking for?";
- // 5% chance (was 1% on 2010)
- if (rand(20) == 0)
- goto L_GetNeedle;
- close;
-
-L_GetNeedle:
- set #HAYSTACKTIMEPENALTY, gettimetick(2) + 3600; // 1 hours delay
- getitem "BentNeedle", 1;
- end;
-
-L_EndTooYoung:
- end;
-
-L_EndRateLimit:
- message strcharinfo(0), "Haystack : I just searched this haystack... Gimme a break.";
- end;
-}
-
-// This function controls death, both on Zax Domains as with Black Rose
-// Undead cannot use the Black Rose :>
-function|script|DoomsdayAct5
-{
- if ($DOOMSDAY != 3 || Class == 6)
- goto L_Return;
- if (getmap() == "099-8")
- goto L_Return;
- if (getmap() == "099-5")
- goto L_WaitRoom;
- if (getmap() == "099-1" || getmap() == "099-2" || getmap() == "099-3" || getmap() == "099-4" || getmap() == "099-6")
- goto L_WarpOut;
- // Iilia, Candor, Botcheck, etc.
- if (getmapflag(getmap(), MF_NOSAVE))
- goto L_Return;
- // Anywhere else is fine
- if (countitem("BlackRose") || @alonso)
- goto L_WarpTo;
- goto L_Return;
-
-L_WarpTo:
- heal 100000, 10000;
- if ($DOOMSDAY_TWARP == 0)
- goto L_KeshlamMaze;
- if ($DOOMSDAY_TJANDE == 1)
- goto L_KeshlamAbandoned;
- if (!@alonso)
- message strcharinfo(0), "The Black Rose did a miracle! Failed to die!";
- else
- message strcharinfo(0), "World Shift : Shifted to full health";
- // Ops, nowhere to go!
- goto L_Payment;
-
-L_Payment:
- if (@alonso)
- goto L_PayAlonso;
- goto L_PayNormal;
-
-L_PayAlonso:
- delitem "DarkPetal", 1;
- set @alonso, 0;
- return;
-
-L_PayNormal:
- delitem "BlackRose", 1;
- if (rand(5) < 3)
- getitem "DarkPetal", 1;
- return;
-
-L_WarpOut:
- if (countitem("DarkPetal") < 1)
- goto L_Failure;
- if (rand(9) == 6)
- goto L_Failure;
- delitem "DarkPetal", 1;
- heal 100000, 10000;
- warp "009-1", 52, 40;
- message strcharinfo(0), "The Dark Petal has protected you from certain death!";
- return;
-
-L_WaitRoom:
- heal 100000, 10000;
- warp "099-4", 50, 49;
- message strcharinfo(0), "You were defeated in combat and warped to a parallel dimension where Zax does not exist.";
- message strcharinfo(0), "Try to survive and provide support to your friends from the backline!";
- return;
-
-L_Failure:
- heal 100000, 10000;
- warp "009-1", 52, 40;
- message strcharinfo(0), "You returned to life as an undead!";
- set Class, 6;
- return;
-
-L_Return:
- return;
-
-///////////////////////////////////
-L_KeshlamMaze:
- if (rand(10) % 2 == 1)
- warp "099-8", 23, 378;
- else
- warp "099-8", 379, 378;
- goto L_Payment;
-
-L_KeshlamAbandoned:
- warp "099-1", 34, 34;
- goto L_Payment;
-}
-
-009-1,30,43,0|script|Chest#DarkRose|111
-{
- if ($DOOMSDAY != 3) end;
- if ((gettimetick(2)-TUT_var < 2*7*86400) || (BaseLevel < 35)) //player must be created at least 2 weeks ago
- goto L_EndTooYoung;
- if (#DOOMSDAY_FREEROSE > gettimetick(2))
- goto L_Cooldown;
- mes "[Old Woman]";
- mes "Hello. I've been picking up some @@666|@@, they are growing in my garden.";
- next;
- mes "[Old Woman]";
- mes "The last time this happened was 10 years ago. They give me an ominous feeling.";
- next;
- mes "[Old Woman]";
- mes "Do you want one? I don't like them. (Max. 1 per account)";
- next;
- mes "Event Details: [@@https://forums.themanaworld.org/viewtopic.php?t=20921|@@]";
- menu
- "Yes, take it", L_Yes,
- "No, it sounds dangerous", L_No;
-
-L_Yes:
- message strcharinfo(0), "Chest : You can get another black rose for free in 23 hours.";
- getitem "BlackRose", 1;
- set #DOOMSDAY_FREEROSE, gettimetick(2)+82800;
- close;
-
-L_No:
- close;
-
-L_EndTooYoung:
- message strcharinfo(0), "Chest : It is locked.";
- end;
-
-L_Cooldown:
- message strcharinfo(0), "Chest : You can only claim a free rose every 23 hours, please come back later.";
- end;
-
-OnInit:
- disablenpc "Chest#DarkRose";
- end;
-}
-
diff --git a/world/map/npc/functions/dynamic_menu.txt b/world/map/npc/functions/dynamic_menu.txt
deleted file mode 100644
index a2a735d6..00000000
--- a/world/map/npc/functions/dynamic_menu.txt
+++ /dev/null
@@ -1,302 +0,0 @@
-// Input: @items (array of items you want to choose from)
-// @item_names$ (names of the items in @items)
-// @default_choice$ (default option)
-// Return: @item (The selected item, or 0 if the default/something invalid was chosen)
-//
-// NOTE: DynamicItemMenu is ONLY used for scripts that need to do math with @item like tailor, dyer, bleacher
-// All other scripts should use DynamicItemMenu$
-
-function|script|DynamicItemMenu
-{
-set @items_nr, getarraysize(@items);
-if(@items_nr != getarraysize(@item_names$)) goto L_ArrayLengthMismatch;
-if(@default_choice$ == "") set @default_choice$, "Never mind.";
-goto L_pick_one_of_many_items;
-
-L_pick_one_of_many_items:
- set @c, 0;
- set @i, 0;
-
- setarray @choice_n$, "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "";
- goto L_pick_choice_loop;
-
-L_pick_choice_loop:
- if (@i >= @items_nr)
- goto L_choice_init_done;
- set @current, @items[@i];
- set @current_name$, @item_names$[@i];
- set @current_index, @i;
- set @i, @i + 1;
-
- if (countitem(@current) == 0)
- goto L_pick_choice_loop;
- set @choice_v[@c], @current;
- set @choice_n$[@c], @current_name$;
- set @choice_i[@c], @current_index;
- set @c, @c + 1;
- goto L_pick_choice_loop;
-
-L_choice_init_done:
- set @choice_v[@c], 0;
- set @choice_n$[@c], @default_choice$;
- set @c, @c + 1;
-
- if (@c < 10)
- menu
- @choice_n$[0], L_MenuItems,
- @choice_n$[1], L_MenuItems,
- @choice_n$[2], L_MenuItems,
- @choice_n$[3], L_MenuItems,
- @choice_n$[4], L_MenuItems,
- @choice_n$[5], L_MenuItems,
- @choice_n$[6], L_MenuItems,
- @choice_n$[7], L_MenuItems,
- @choice_n$[8], L_MenuItems,
- @choice_n$[9], L_MenuItems;
- goto L_MenuItems;
-
-L_MenuItems:
- if (@c < 10)
- goto L_choice_join;
-
- if (@c < 20)
- menu
- @choice_n$[0], L_MenuItems1,
- @choice_n$[1], L_MenuItems1,
- @choice_n$[2], L_MenuItems1,
- @choice_n$[3], L_MenuItems1,
- @choice_n$[4], L_MenuItems1,
- @choice_n$[5], L_MenuItems1,
- @choice_n$[6], L_MenuItems1,
- @choice_n$[7], L_MenuItems1,
- @choice_n$[8], L_MenuItems1,
- @choice_n$[9], L_MenuItems1,
- @choice_n$[10], L_MenuItems1,
- @choice_n$[11], L_MenuItems1,
- @choice_n$[12], L_MenuItems1,
- @choice_n$[13], L_MenuItems1,
- @choice_n$[14], L_MenuItems1,
- @choice_n$[15], L_MenuItems1,
- @choice_n$[16], L_MenuItems1,
- @choice_n$[17], L_MenuItems1,
- @choice_n$[18], L_MenuItems1,
- @choice_n$[19], L_MenuItems1;
- goto L_MenuItems1;
-
-L_MenuItems1:
- if (@c < 20)
- goto L_choice_join;
-
- menu
- @choice_n$[0], L_choice_join,
- @choice_n$[1], L_choice_join,
- @choice_n$[2], L_choice_join,
- @choice_n$[3], L_choice_join,
- @choice_n$[4], L_choice_join,
- @choice_n$[5], L_choice_join,
- @choice_n$[6], L_choice_join,
- @choice_n$[7], L_choice_join,
- @choice_n$[8], L_choice_join,
- @choice_n$[9], L_choice_join,
- @choice_n$[10], L_choice_join,
- @choice_n$[11], L_choice_join,
- @choice_n$[12], L_choice_join,
- @choice_n$[13], L_choice_join,
- @choice_n$[14], L_choice_join,
- @choice_n$[15], L_choice_join,
- @choice_n$[16], L_choice_join,
- @choice_n$[17], L_choice_join,
- @choice_n$[18], L_choice_join,
- @choice_n$[19], L_choice_join,
- @choice_n$[20], L_choice_join,
- @choice_n$[21], L_choice_join,
- @choice_n$[22], L_choice_join,
- @choice_n$[23], L_choice_join,
- @choice_n$[24], L_choice_join,
- @choice_n$[25], L_choice_join,
- @choice_n$[26], L_choice_join,
- @choice_n$[27], L_choice_join,
- @choice_n$[28], L_choice_join,
- @choice_n$[29], L_choice_join,
- @choice_n$[30], L_choice_join,
- @choice_n$[31], L_choice_join;
-
-L_choice_join:
- set @menu, @menu - 1;
- set @item, @choice_v[@menu];
- set @index, @choice_i[@menu];
- if (@menu >= @c)
- set @item, 0;
- goto L_Clean;
-
-L_Clean:
- set @menu, 0;
- set @items_nr, 0;
- set @c, 0;
- set @i, 0;
- set @current, 0;
- set @current_name$, "";
- cleararray @choice_v, 0, getarraysize(@choice_v);
- cleararray @choice_n$, "", getarraysize(@choice_n$);
- cleararray @choice_i, 0, getarraysize(@choice_i);
- return;
-
-L_ArrayLengthMismatch:
- debugmes "@items and @item_names$ array length mismatch";
- mapexit;
-}
-
-
-
-
-// Input: @items$ (array of items you want to choose from)
-// @item_names$ (names of the items in @items)
-// @default_choice$ (default option)
-// Return: @item$ (The selected item, or 0 if the default/something invalid was chosen)
-
-function|script|DynamicItemMenu$
-{
-set @items_nr, getarraysize(@items$);
-if(@items_nr != getarraysize(@item_names$)) goto L_ArrayLengthMismatch;
-if(@default_choice$ == "") set @default_choice$, "Never mind.";
-goto L_pick_one_of_many_items;
-
-L_pick_one_of_many_items:
- set @c, 0;
- set @i, 0;
-
- setarray @choice_n$, "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "";
- goto L_pick_choice_loop;
-
-L_pick_choice_loop:
- if (@i >= @items_nr)
- goto L_choice_init_done;
- set @current$, @items$[@i];
- set @current_name$, @item_names$[@i];
- set @current_index, @i;
- set @i, @i + 1;
-
- if (countitem(@current$) == 0)
- goto L_pick_choice_loop;
- set @choice_v$[@c], @current$;
- set @choice_n$[@c], @current_name$;
- set @choice_i[@c], @current_index;
- set @c, @c + 1;
- goto L_pick_choice_loop;
-
-L_choice_init_done:
- set @choice_v$[@c], "";
- set @choice_n$[@c], @default_choice$;
- set @c, @c + 1;
-
- if (@c < 10)
- menu
- @choice_n$[0], L_MenuItems,
- @choice_n$[1], L_MenuItems,
- @choice_n$[2], L_MenuItems,
- @choice_n$[3], L_MenuItems,
- @choice_n$[4], L_MenuItems,
- @choice_n$[5], L_MenuItems,
- @choice_n$[6], L_MenuItems,
- @choice_n$[7], L_MenuItems,
- @choice_n$[8], L_MenuItems,
- @choice_n$[9], L_MenuItems;
- goto L_MenuItems;
-
-L_MenuItems:
- if (@c < 10)
- goto L_choice_join;
-
- if (@c < 20)
- menu
- @choice_n$[0], L_MenuItems1,
- @choice_n$[1], L_MenuItems1,
- @choice_n$[2], L_MenuItems1,
- @choice_n$[3], L_MenuItems1,
- @choice_n$[4], L_MenuItems1,
- @choice_n$[5], L_MenuItems1,
- @choice_n$[6], L_MenuItems1,
- @choice_n$[7], L_MenuItems1,
- @choice_n$[8], L_MenuItems1,
- @choice_n$[9], L_MenuItems1,
- @choice_n$[10], L_MenuItems1,
- @choice_n$[11], L_MenuItems1,
- @choice_n$[12], L_MenuItems1,
- @choice_n$[13], L_MenuItems1,
- @choice_n$[14], L_MenuItems1,
- @choice_n$[15], L_MenuItems1,
- @choice_n$[16], L_MenuItems1,
- @choice_n$[17], L_MenuItems1,
- @choice_n$[18], L_MenuItems1,
- @choice_n$[19], L_MenuItems1;
- goto L_MenuItems1;
-
-L_MenuItems1:
- if (@c < 20)
- goto L_choice_join;
-
- menu
- @choice_n$[0], L_choice_join,
- @choice_n$[1], L_choice_join,
- @choice_n$[2], L_choice_join,
- @choice_n$[3], L_choice_join,
- @choice_n$[4], L_choice_join,
- @choice_n$[5], L_choice_join,
- @choice_n$[6], L_choice_join,
- @choice_n$[7], L_choice_join,
- @choice_n$[8], L_choice_join,
- @choice_n$[9], L_choice_join,
- @choice_n$[10], L_choice_join,
- @choice_n$[11], L_choice_join,
- @choice_n$[12], L_choice_join,
- @choice_n$[13], L_choice_join,
- @choice_n$[14], L_choice_join,
- @choice_n$[15], L_choice_join,
- @choice_n$[16], L_choice_join,
- @choice_n$[17], L_choice_join,
- @choice_n$[18], L_choice_join,
- @choice_n$[19], L_choice_join,
- @choice_n$[20], L_choice_join,
- @choice_n$[21], L_choice_join,
- @choice_n$[22], L_choice_join,
- @choice_n$[23], L_choice_join,
- @choice_n$[24], L_choice_join,
- @choice_n$[25], L_choice_join,
- @choice_n$[26], L_choice_join,
- @choice_n$[27], L_choice_join,
- @choice_n$[28], L_choice_join,
- @choice_n$[29], L_choice_join,
- @choice_n$[30], L_choice_join,
- @choice_n$[31], L_choice_join;
-
-L_choice_join:
- set @menu, @menu - 1;
- set @item$, @choice_v$[@menu];
- set @index, @choice_i[@menu];
- if (@menu >= @c)
- set @item$, "";
- goto L_Clean;
-
-L_Clean:
- set @menu, 0;
- set @items_nr, 0;
- set @c, 0;
- set @current_index, 0;
- set @i, 0;
- set @current$, 0;
- set @current_name$, "";
- cleararray @choice_v$, "", getarraysize(@choice_v$);
- cleararray @choice_n$, "", getarraysize(@choice_n$);
- cleararray @choice_i, 0, getarraysize(@choice_i);
- return;
-
-L_ArrayLengthMismatch:
- debugmes "@items$ and @item_names$ array length mismatch";
- mapexit;
-}
diff --git a/world/map/npc/functions/evil_obelisk.txt b/world/map/npc/functions/evil_obelisk.txt
deleted file mode 100644
index dbfede0d..00000000
--- a/world/map/npc/functions/evil_obelisk.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-function|script|EvilObelisk
-{
- mes "[Evil Obelisk]";
- mes "(A mystical aura surrounds this stone. It seems to crave money.)";
- next;
-
- set @cost_jacko, 6500;
- set @cost_gy1, 4000;
- set @cost_gy2, 3000;
- set @cost_skull, 2800;
- set @cost_snake, 2500;
-
- menu
- "Don't pay it anything.", L_Close,
- "Pay it " + @cost_jacko + " gold.", L_JACKO,
- "Pay it " + @cost_gy1 + " gold.", L_GRAVEYARD1,
- "Pay it " + @cost_gy2 + " gold.", L_GRAVEYARD2,
- "Pay it " + @cost_skull + " gold.", L_SKULL,
- "Pay it " + @cost_snake + " gold.", L_SNAKE;
-
-L_JACKO:
- if (Zeny < @cost_jacko)
- goto L_NotEnough;
- set Zeny, Zeny - @cost_jacko;
- set @mob_id, 1022;
- set @mob_count, rand(1,2);
- goto L_Summon;
-
-L_GRAVEYARD1:
- if (Zeny < @cost_gy1)
- goto L_NotEnough;
- set @temp, rand(2);
- if(@temp == 0)
- set @mob_id, 1036; // Zombie
- if(@temp == 1)
- set @mob_id, 1045; // Fallen
- set @mob_count, rand(1,2);
- set Zeny, Zeny - @cost_gy1;
- goto L_Summon;
-
-L_GRAVEYARD2:
- if (Zeny < @cost_gy2)
- goto L_NotEnough;
- set @temp, rand(2);
- if(@temp == 0)
- set @mob_id, 1044; // Lady Skelly
- if(@temp == 1)
- set @mob_id, 1043; // Normal Skelly
- set @mob_count, rand(1,2);
- set Zeny, Zeny - @cost_gy2;
- goto L_Summon;
-
-L_SKULL:
- if (Zeny < @cost_skull)
- goto L_NotEnough;
- set @temp, rand(2);
- if(@temp == 0)
- set @mob_id, 1024; // Poison
- if(@temp == 1)
- set @mob_id, 1023; // Fire
- set @mob_count, rand(1,4);
- set Zeny, Zeny - @cost_skull;
- goto L_Summon;
-
-L_SNAKE:
- if (Zeny < @cost_snake)
- goto L_NotEnough;
- set @temp, rand(4);
- if(@temp == 0)
- set @mob_id, 1034; // Grass
- if(@temp == 1)
- set @mob_id, 1026; // Mnt.
- if(@temp == 2)
- set @mob_id, 1010; // Normal
- if(@temp == 3)
- set @mob_id, 1021; // Cave
- set @mob_count, rand(1,4);
- set Zeny, Zeny - @cost_snake;
- goto L_Summon;
-
-L_Summon:
- areamonster @map$, @x0, @y0, @x1, @y1, "", @mob_id, @mob_count;
- goto L_Close;
-
-L_NotEnough:
- mes "You don't have that much money";
- goto L_Close;
-
-L_Close:
- set @cost_jacko, 0;
- set @cost_gy1, 0;
- set @cost_gy2, 0;
- set @cost_skull, 0;
- set @cost_snake, 0;
- return;
-
-}
diff --git a/world/map/npc/functions/ferry.txt b/world/map/npc/functions/ferry.txt
deleted file mode 100644
index 5f9e57f7..00000000
--- a/world/map/npc/functions/ferry.txt
+++ /dev/null
@@ -1,140 +0,0 @@
-// The ferry system
-
-017-9,27,28,0|script|#FerryConfig|32767
-{
- end;
-
-OnInit:
- disablenpc "Hurnscald South Koga";
- disablenpc "Candor Koga";
- disablenpc "Nivalis Koga";
- disablenpc "Hurnscald North Koga";
- disablenpc "Tulimshar Koga";
- set $@MainCurrentDock, 0;
- set $@CandorCurrentDock, 0;
- set $@DockTickCount, 0;
- set $@DockLeaveCount, 1;
- setarray $@MainDocks$, "Hurnscald North", "Nivalis", "Tulimshar";
- setarray $@CandorDocks$, "Candor", "Hurnscald South";
- donpcevent "#"+$@MainDocks$[$@MainCurrentDock]+"Dock::OnCommandArrive";
- donpcevent "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock::OnCommandArrive";
- set .warp_delay, 430;
- if (debug >= 2) end;
- initnpctimer;
- goto L_k1city2;
-
-L_NextDock:
- set $@MainLastDock, $@MainCurrentDock;
- set $@CandorLastDock, $@CandorCurrentDock;
- set $@MainCurrentDock, $@MainCurrentDock + 1;
- set $@CandorCurrentDock, $@CandorCurrentDock + 1;
- if($@MainCurrentDock == getarraysize($@MainDocks$))
- set $@MainCurrentDock, 0;
- if($@CandorCurrentDock == getarraysize($@CandorDocks$))
- set $@CandorCurrentDock, 0;
- set $@DockTickCount, 0;
- donpcevent "#"+$@MainDocks$[$@MainLastDock]+"Dock::OnCommandWarp";
- donpcevent "#"+$@MainDocks$[$@MainCurrentDock]+"Dock::OnCommandArrive";
- donpcevent "#"+$@CandorDocks$[$@CandorLastDock]+"Dock::OnCommandWarp";
- donpcevent "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock::OnCommandArrive";
-
- donpcevent "#k1sound::OnCommandDing";
- donpcevent "#k2sound::OnCommandDing";
-
- initnpctimer;
-
- if($@MainCurrentDock == 2) goto L_k1city1;
- if($@MainCurrentDock == 0) goto L_k1city2;
- if($@MainCurrentDock == 1) goto L_k1city3;
- end;
-
-OnTimer5000:
- if ($@DockTickCount > $@DockLeaveCount)
- goto L_NextDock;
- set $@DockTickCount, $@DockTickCount + 1;
- initnpctimer;
- end;
-
-
-L_k1city1:
- enablenpc "#k1city1e"; disablenpc "#k1city2e"; disablenpc "#k1city3e";
- disablenpc "#k1city1d"; enablenpc "#k1city2d"; enablenpc "#k1city3d";
- if($@CandorCurrentDock == 1) goto L_k2city1;
- if($@CandorCurrentDock == 0) goto L_k2city2;
-end;
-
-L_k1city2:
- disablenpc "#k1city1e"; enablenpc "#k1city2e"; disablenpc "#k1city3e";
- enablenpc "#k1city1d"; disablenpc "#k1city2d"; enablenpc "#k1city3d";
- if($@CandorCurrentDock == 1) goto L_k2city1;
- if($@CandorCurrentDock == 0) goto L_k2city2;
-end;
-
-L_k1city3:
- disablenpc "#k1city1e"; disablenpc "#k1city2e"; enablenpc "#k1city3e";
- enablenpc "#k1city1d"; enablenpc "#k1city2d"; disablenpc "#k1city3d";
- if($@CandorCurrentDock == 1) goto L_k2city1;
- if($@CandorCurrentDock == 0) goto L_k2city2;
-end;
-
-L_k2city1:
- enablenpc "#k2city1e"; disablenpc "#k2city2e";
- disablenpc "#k2city1d"; enablenpc "#k2city2d";
-end;
-
-L_k2city2:
- disablenpc "#k2city1e"; enablenpc "#k2city2e";
- enablenpc "#k2city1d"; disablenpc "#k2city2d";
-end;
-}
-
-function|script|FerryHelp
-{
- mes "\"You wait on the dock for the ship to come in. You'll be given a chance to board the boat when it comes into port.\"";
- mes "\"It lingers in port to allow you some time to board in case you are running behind.\"";
- mes "\"Once on the ship, it will sail to different ports and annouce where it is docking.\"";
- mes "\"There are 2 Ferrys, both ferrys are free to ride.\"";
- mes "\"The Main ferry travels from Argeas, Kaizei and Tonori. It docks in the major ports Hurnscald North, Nivalis and the Tulimshar Dock.\"";
- mes "\"The Candor Ferry only travels betwen Candor and the Hurnscald South Dock.\"";
- mes "\"Refreshments and supplies are offered aboard both ships during the voyage.\"";
- mes "\"We also have some slot machines in case you get bored.\"";
- return;
-}
-
-function|script|BoardFerry
-{
- if ($@MainCurrentDock == 0 && getmap() == "008-1") goto L_Board;
- elif ($@MainCurrentDock == 1 && getmap() == "031-1") goto L_Board;
- elif ($@MainCurrentDock == 2 && getmap() == "001-1") goto L_Board;
-
- set @NextDock, $@MainCurrentDock + 1;
- if(@NextDock == getarraysize($@MainDocks$)) set @NextDock, 0;
- message strcharinfo(0),
- "Ferry : ##3The ferry is currently at ##B"+$@MainDocks$[$@MainCurrentDock]+"##b. "
- +"It will be arriving at ##B"+$@MainDocks$[@NextDock]+"##b next.";
- return;
-
-L_Board:
- warp "035-2",32,29;
- return;
-}
-
-function|script|BoardCandorFerry
-{
- if ($@CandorCurrentDock == 0 && getmap() == "029-1") goto L_Board;
- elif ($@CandorCurrentDock == 1 && getmap() == "008-1") goto L_Board;
-
- set @NextDock, $@CandorCurrentDock + 1;
- if(@NextDock == getarraysize($@CandorDocks$)) set @NextDock, 0;
- message strcharinfo(0),
- "Ferry : ##3The ferry is currently at ##B"+$@CandorDocks$[$@CandorCurrentDock]+"##b. "
- +"It will be arriving at ##B"+$@CandorDocks$[@NextDock]+"##b next.";
- return;
-
-L_Board:
- warp "036-2",32,29;
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/game_rules.txt b/world/map/npc/functions/game_rules.txt
deleted file mode 100644
index 4ac65525..00000000
--- a/world/map/npc/functions/game_rules.txt
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-
-function|script|GameRules
-{
- mes "##BPlease click submit.";
- //requestlang .@cl$; // newer clients will automatically submit and skip ahead
- clear;
- title "Game Rules";
- /*
- explode .@l$, .@cl$, "_";
- if (.@l$[0] == "en") goto L_English;
- if (.@l$[0] == "nl") goto L_Dutch;
- if (.@l$[0] == "de") goto L_German;
- if (.@l$[0] == "da") goto L_Danish;
- if (.@l$[0] == "fr") goto L_French;
- if (.@l$[0] == "es") goto L_Spanish;
- if (.@l$[0] == "sv") goto L_Swedish;
- if (.@l$[0] == "pt") goto L_Portuguese;
- if (.@l$[0] == "pl") goto L_Polish;
- if (.@l$[0] == "it") goto L_Italian;
- if (.@l$[0] == "zh") goto L_zhHant;
- if (.@l$[0] == "ru") goto L_Russian;
-
- mes "Please select a language:";
- menu
- "English", L_English,
- "Deutsch (German)", L_German,
- "Nederlands (Dutch)", L_Dutch,
- "Dansk (Danish)", L_Danish,
- "Francais (French)", L_French,
- "Castellano (Spanish)", L_Spanish,
- "Svenska (Swedish)", L_Swedish,
- "Portugues (Portuguese)", L_Portuguese,
- "Polski (Polish)", L_Polish,
- "Italiano (Italian)", L_Italian,
- "ç¹é«”中文 (Traditional Chinese)", L_zhHant,
- "РуÑÑкий (Russian)", L_Russian;
- */
- goto L_English;
-
-L_English:
- mes "Players breaking the following [@@https://policies.themanaworld.org/rules|rules@@] may be banned for any length of time (even permanently) or have their characters reset at a GM's discretion:";
- mes "1) Do not AFK bot. this means you are not allowed to perform any AFK (away from keyboard) activity, apart from standing idle.";
- mes "2) Do not use offensive/rude language in the chats or in your character(s) name(s).";
- mes "3) Do not spam/flood other players. This includes chat spam and spam by trade requests.";
- mes "4) Speak only English in public areas. You can speak whatever language you want through whispers or whenever everyone in the area can speak said language.";
- mes "5) Do not beg others for money, items or favours of any kind. If you want to ask for something, do it politely and only once. Try not to annoy other players.";
- mes "6) Do not multibox. You are not allowed to engage in combat while controlling more than one character at a time.";
- mes "7) Follow the [@@https://policies.themanaworld.org/TSC|TMW Social Convention@@].";
- //mes "";
- //mes "Failure on our part to enforce any of the rules does not waive our rights to enforce them in the present or the future.";
- goto L_End;
-
-/* Very outdated
-L_German:
- mes "Wir bitten um das Einhalten folgender Regeln:";
- mes "1) Keine Beleidigungen, Schimpfwörter, Schmähungen oder Rufmord.";
- mes "2) Keine 'bots' (automatisierte Spieler). Dies beinhaltet JEGLICHE Teilnahme am Spiel während der Abwesenheit des Spielers. Es beinhaltet auch das automatisierte Folgen anderer Spieler.";
- mes "3) Kein 'spamming' oder 'flooding' (schnelles Wiederholen von Nachrichten oder Aufforderungen zum Warenhandel).";
- mes "4) Kein Betteln.";
- mes "5) Englisch ist die einzig zulässige Sprache im öffentlichen Raum.";
- mes "6) Behandele andere so, wie du selbst behandelt werden willst.";
- mes "Jegliche Regelverstöße können bestraft werden, entweder durch ein Zurücksetzen der Charaktereigenschaften und -besitztümer auf den Ausgangszustand, oder durch einen temporären oder permanenten Ausschluss aus dem Spiel.";
- mes "Automatisiertes Spielverhalten liegt vor, wenn ein sich bewegender/kämpfender Spieler nicht intelligent auf Gesprächsaufforderungen reagiert.";
- goto L_End;
-
-L_Dutch:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "Spelers die de volgende regels overtreden lopen het risico gebanned te worden (oplopend tot een permanente ban) of een reset te krijgen:";
- mes "1) Misbruik geen andere spelers (vloeken, groftaal gebruik, enzovoort tegen een bepaalde persoon of personen)";
- mes "2) Geen 'bots' (geautomatiseerde speler) en botten betekend ELKE activiteit terwijl je van je toetsenboord weg bent";
- mes "3) Verboden te 'spammen' (inclusief het spammen van ruilaanvragen)";
- mes "4) Verboden te bedelen";
- mes "5) Spreek Engels op de publieke chat";
- mes "6) Behandel andere zoals ook jij behandeld wilt worden";
- mes "Botten word bepaald door te praten tegen spelers die aan het bewegen en/of aanvallen zijn.";
- goto L_End;
-
-L_Danish:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "Spillere der ikke overholder de foelgende regner, kan risikere at blive banned (op til et permanent ban) eller faa deres bruger nulstillet af en spilmester (GM).";
- mes "1) Misbrug ikke medspillere (fornaerm dem ikke, svaerg ikke og mobning er forbudt)";
- mes "2) Det er forbudt at bruge bots (Botting betyder at man er aktiv inde i spillet, imens man er vaek fra ens keyboard)";
- mes "3) Det er forbudt at spamme i chatten, eller lave trade spam (spamme betyder at man sender mange beskeder efter hinanden)";
- mes "4) Det er forbudt at tigge (for eksempel: Maa jeg ikke nok faa dit svaerd, kom nu, vaer nu soed... og saa videre)";
- mes "5) Det er forbudt at snakke andre sprog end Engelsk, i den aabne chat. (Dog er det lovligt ved at bruge foelgende kommandoen /whisper)";
- mes "6) Husk at goere mod andre, som du vil have de skal goere imod dig (opfoer dig ordenligt!)";
- mes "Botting bliver fastlagt paa grundlag af, at man snakker til andre spillere, der gaar rundt og/eller der angriber og de ikke svare igen.";
- goto L_End;
-
-L_French:
- mes "Les joueurs enfreignant les règles suivantes sont sujets, à la discrétion des modérateurs, au banissement temporaire ou permanent de leur compte ou à une réinitialisation de leur personnage.";
- mes "1) Aucun abus envers autrui n'est toléré. Ceci inclus (mais n'est pas restreint à) les insultes, le non-respect, le langage grossier, le racisme, l'homophobie, etc.";
- mes "2) Toute forme d'automatisation (bot) est interdite. Ceci inclus toute activité effectuée sans la presence de l'utilisateur (botting) ou le suivi automatique d'un personnage (following).";
- mes "3) Le spam / l'envoi répeté d'un même message est interdit.";
- mes "4) Pas de mendiant. Ne demandez pas d'items ou de l'argent aux autres joueurs.";
- mes "5) Vous devez impérativement parler anglais dans l'onglet General. Les autres langues sont autorisées dans les conversations privées (Whisper), les guildes (Guild), ou les groupes (Party).";
- mes "6) Traitez les autres joueurs de la façon dont vous voudriez être traité.";
- mes "L'utilisation de logiciel d'automatisation (bot) sera vérifiée en parlent aux joueurs en mouvement et/ou attaquant.";
- mes "Le déplacement automatique (following) sera déterminé par observation.";
- goto L_End;
-
-L_Spanish:
- mes "Los jugadores que rompan las siguientes reglas pueden ser bloqueados (incluso permanentemente), o se les restablecerán sus personajes, según el criterio del GM:";
- mes "1) No abusar de otros jugadores (insultos, malas palabras, y similares dirigidas a una o varias personas)";
- mes "2) No utilizar programas automáticos (incluyendo el seguimiento automático y CUALQUIER otra actividad mientras el jugador está lejos del teclado)";
- mes "3) No enviar mensajes publicitarios ni inundar el chat de mensajes (incluyendo los mensajes de intercambio)";
- mes "4) No mendigar.";
- mes "5) Hablar únicamente en Inglés en el chat público";
- mes "6) Tratar a los demás de la misma forma que le gustaría ser tratado";
- mes "El uso de programas automáticos para jugar sin estar frente al teclado será determinado al hablar con los jugadores que estén moviéndose y/o atacando.";
- mes "El seguimiento automático será determinado por observación.";
- goto L_End;
-
-L_Swedish:
- mes "Spelare som bryter mot dessa regler riskerar att bli utkastade eller portade (antingen under kort period eller permanent), den som blivit portad/bannlyst ut kan be en GM om att starta om sitt konto.";
- mes "1) Förolämpa inte medspelare (svordomar och annat riktat till att skada en eller flera individer)";
- mes "2) Inga bottar (med bottande avses ALLA aktiviteter som sker när spelaren inte aktivt spelar eller styr sin karraktär)";
- mes "3) Inget spammande/floodande (inklusive meddelanden om byteshandel)";
- mes "4) Tigg inte";
- mes "5) Prata bara engelska i den offentliga chatten";
- mes "6) Behandla andra som du vill bli behandlad";
- mes "Vid misstankar om bottande kontrolleras detta genom att prata med spelaren under dess kringvandrande eller attackerande.";
- goto L_End;
-
-L_Portuguese:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "Jogadores que quebrarem as regras que se seguem serao banidos (temporariamente ou permanentemente), ou a possibilidade dos caracteres serem limpos a descricao do Mestre do Jogo (GM).";
- mes "1) Nao tratar mal os outros jogadores (isto, insultar, dizer palavroes ou chamar nomes a pessoas em particular, etc.)";
- mes "2) Proibido \"botting\", que quer dizer qualquer actividade do caracter enquanto o jogador estiver longe do teclado.";
- mes "3) Nao abusar da caixa de texto com mensagens repetitivas, ou abusar da funcao de trocar com outros jogadores.";
- mes "4) Pedintes serao ignorados, ou banidos.";
- mes "5) Fale ingles em lugares publicos.";
- mes "6) Trate os outros da mesma maneira que quer ser tratado(a).";
- mes "O \"botting\" sera determinado, falando com os jogadores que se movem e/ou atacam.";
- goto L_End;
-
-L_Polish:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "Konta graczy lamiacych nastepujace zasady moga zostac zablokowane (w niektorych przypadkach nawet nieodwolalnie) lub zresetowane przez GM:";
- mes "1) Nie wykorzystuj innych graczy (wymuszenia, przeklinanie, itp.)";
- mes "2) Zabrania sie korzystania z botow (przez boty rozumiemy kazda aktywnosc gdy gracz przebywa z dala od klawiatury)";
- mes "3) Zabrania sie spamowania / flodowania (wliczajac takze natarczywe oferty handlowe)";
- mes "4) Zabrania sie zebrania";
- mes "5) Na publicznym kanale rozmawiamy po angielsku";
- mes "6) Traktuj innych tak jak sam chcesz byc traktowany";
- mes "Uzywanie botow zostanie okreslone na podstawie rozmow z innymi graczami podczas aktywnosci gracza.";
- goto L_End;
-
-L_Italian:
- mes "Gli account dei giocatori che infrangeranno le seguenti regole verranno bloccati (anche permanentemente) o i loro personaggi saranno resettati, a discrezione dei GM:";
- mes "1) Non trattare male gli altri giocatori (questo include insulti, imprecazioni, e simili, diretti verso una persona in particolare o verso gruppi di persone)";
- mes "2) Non usare bot (ossia non effettuare NESSUNA attività quando non si è al computer)";
- mes "3) Non effettuare spam o scrivere ripetutamente messaggi inutili (incluso spam con richieste di scambio)";
- mes "4) Non fare il mendicante, ovvero non importunare gli altri chiedendo soldi o oggetti";
- mes "5) Non parlare altre lingue al di fuori dell'inglese nella chat pubblica";
- mes "6) Non fare agli altri ciò che non vuoi sia fatto a te.";
- mes "I bot saranno individuati scrivendo ai giocatori sospetti che attaccano o camminano, esaminandone le risposte e i movimenti.";
- mes "Chiunque segua automaticamente un altro giocatore senza dimostrare di non essere un bot, verrà considerato come tale.";
- goto L_End;
-
-L_zhHant:
- mes "以下為TMWçš„éŠæˆ²è¦å‰‡ï¼Œé•å的玩家會被å°éŽ–(有機會永久å°éŽ–)或é‡è¨­éŠæˆ²è³‡æ–™ï¼š";
- mes "1) ä¸è¦è¬¾ç½µå…¶ä»–玩家 (侮辱, 粗言穢語, 或é‡å°æŸçŽ©å®¶çš„攻擊)";
- mes "2) ç¦æ­¢å¤–掛(所有玩家離開電腦時的活動)";
- mes "3) ç¦æ­¢å¤–掛(所有玩家離開電腦時的活動)";
- mes "4) ä¸å¯ä¹žè¨Ž";
- mes "5) 在公開場åˆéœ€èªªè‹±èªž";
- mes "6) 己所ä¸æ¬²ï¼Œå‹¿æ–½æ–¼äºº";
- mes "離開éµç›¤çš„外掛玩家會經å°è©±çš„æ–¹å¼è­˜åˆ¥ã€‚";
- goto L_End;
-
-L_Russian:
- mes "Игроки, уличенные в нарушении Ñледующих правил, могут быть забанены (Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ð¾Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ñ‹Ð¹ бан) или ÑтолкнутÑÑ Ñ Ñ‚ÐµÐ¼, что их Ð¸Ð³Ñ€Ð¾Ð²Ð°Ñ ÑтатиÑтика и опыт будут понижены, на уÑмотрение модераторов GM:";
- mes "1) Ðе обижайте других игроков (оÑкорблениÑ, ругательÑтва и иное, направленное на ÑƒÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾ÑтоинÑтва отдельного человека или людей).";
- mes "2) Ðикаких ботов (Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð»ÑŽÐ±ÑƒÑŽ активноÑÑ‚ÑŒ, проиÑходÑщую без взаимодейÑÑ‚Ð²Ð¸Ñ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð¾Ð¹ (AFK), а также автоматичеÑкое Ñледование за игроком).";
- mes "3) Ðикакого Ñпама и флуда (Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð½Ð°Ð²Ñзчивую торговлю).";
- mes "4) Запрещено попрошайничеÑтво.";
- mes "5) Во Ð²Ñ€ÐµÐ¼Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ иÑпользовать английÑкий Ñзык.";
- mes "6) ОбращайтеÑÑŒ Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ так, как вы хотели, чтобы другие Ñ Ð²Ð°Ð¼Ð¸ обращалиÑÑŒ.";
- mes "ÐктивноÑÑ‚ÑŒ, проиÑходÑÑ‰Ð°Ñ Ð±ÐµÐ· взаимодейÑÑ‚Ð²Ð¸Ñ Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð¾Ð¹ (AFK) будет определÑÑ‚ÑŒÑÑ Ð¿ÑƒÑ‚ÐµÐ¼ Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Ð°Ð²Ñ‚Ð¾- перемещающимиÑÑ Ð¸ атакующими игроками.";
- mes "ÐвтоматичеÑкое Ñледование за игроком будет выÑвлÑÑ‚ÑŒÑÑ Ð¿ÑƒÑ‚ÐµÐ¼ наблюдениÑ.";
- goto L_End;
-*/
-
-L_End:
- if (TUT_var == 0)
- set TUT_var, gettimetick(2);
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/ghost.txt b/world/map/npc/functions/ghost.txt
deleted file mode 100644
index 921b8b79..00000000
--- a/world/map/npc/functions/ghost.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-function|script|SpawnGhost
-{
- if ($GHOSTS_DISABLED)
- goto L_Return;
-
- if (BaseLevel >= 40 &&
- (getmap() == "026-1" ||
- getmap() == "027-1" ||
- getmap() == "027-2" ||
- getmap() == "027-3" ||
- getmap() == "027-4" ||
- getmap() == "027-5"))
- goto L_Spawn;
- return;
-
-L_Spawn:
- set .@x, POS_X;
- set .@y, POS_Y;
-
- if (!(iscollision(getmap(), .@x, .@y - 1))) set .@y, .@y - 1; // up
- elif (!(iscollision(getmap(), .@x, .@y + 1))) set .@y, .@y + 1; // down
- elif (!(iscollision(getmap(), .@x - 1, .@y))) set .@x, .@x - 1; // left
- elif (!(iscollision(getmap(), .@x + 1, .@y))) set .@x, .@x + 1; // right
- // else on the player
-
- if (@GHOST_MAP$ != "")
- killmonster @GHOST_MAP$, "~GH~" + getcharid(0);
-
- set @GHOST_MAP$, getmap();
- specialeffect2 39;
- monster getmap(), .@x, .@y, strcharinfo(0), 1136, 1, "~GH~" + getcharid(0);
- return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt
deleted file mode 100644
index b92967b3..00000000
--- a/world/map/npc/functions/global_event_handler.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-// This is the global event dispatcher
-// Do not add code to this file. Please only add callfuncs
-//
-// Author: meko
-
--|script|#GlobalHandler|32767
-{
- end;
-
-OnPCLoginEvent:
- set @login_event, 1;
- callfunc "fixHeadStyles"; // convert headstyles
- callfunc "ClearVariables"; // removes / converts old variables
- callfunc "DisplayMOTD"; // send the motd to the client, if enabled
- callfunc "getBroadcast"; // get the scheduled broadcast, if any
- addtimer 0, "Magic Timer::OnLogin"; // prevent cast rate abuse
- callfunc "MaybeGiveBirthday";
- callfunc "MiriamExpire"; // force the speed skill quest to expire
- // add more here
- set @login_event, 2;
- end;
-
-OnPCKillEvent:
- callfunc "elanore_decrease_exp"; // decrease heal exp for doing bad things
- end;
-
-OnMobKillEvent:
- callfunc "MobPoints";
- end;
-
-OnPCDieEvent:
- set @necromancer, 0;
- addtimer 0, "Magic Timer::OnClear"; // reset magic block on death
- callfunc "SpawnGhost";
- callfunc "MiriamExpire"; // force the speed skill quest to expire
- callfunc "DoomsdayAct5"; // Doomsday Event Act 5
- set @killerrid, 0; // reset killer rid
- end;
-
-OnInit:
- callfunc "ClearGlobalVars";
- callfunc "MOTD"; // set the MOTD array
- end;
-
-OnDay0411:
- callfunc "MaybeAnnounceBirthday";
- end;
-}
diff --git a/world/map/npc/functions/gm_island.txt b/world/map/npc/functions/gm_island.txt
deleted file mode 100644
index e2763bbf..00000000
--- a/world/map/npc/functions/gm_island.txt
+++ /dev/null
@@ -1,131 +0,0 @@
-// Add Localized Warp in town centers and Message to GM Island
--|script|#GmConfig|32767
-{
- end;
-
-OnInit:
- disablenpc "Gm Event#1";
- disablenpc "Gm Event#2";
- disablenpc "Gm Event#3";
- end;
-}
--|script|#Puppet|32767
-{
- mes "You found me! Now please send my coordinates to staff.";
- close;
-
-OnSpawn:
- if (GM < G_SYSOP) goto L_GM;
- callfunc "argv_splitter";
- if (@argv$[4] == "") goto L_Failed;
- set $@PMAP$, @argv$[0];
- set $@PX, @argv$[1];
- set $@PY, @argv$[2];
- set $@PNAME$, @argv$[3];
- set $@PNPC, @argv$[4];
- if (puppet($@PMAP$, $@PX, $@PY, $@PNAME$, $@PNPC) > 0)
- gmlog "@puppeter " + @args$;
- set $@PMAP$, "";
- set $@PX, 0;
- set $@PY, 0;
- set $@PNAME$, "";
- set $@PNPC, 0;
- end;
-
-L_Failed:
- message strcharinfo(0), "Syntax: @puppeter MAP X Y NAME NPCID";
- end;
-
-L_GM:
- message strcharinfo(0), "puppeter : GM command is level "+ G_SYSOP +", but you are level " + GM;
- end;
-
-OnInit:
- registercmd chr(ATCMD_SYMBOL) + "puppeter", strnpcinfo(0)+"::OnSpawn";
- end;
-}
-function|script|GmWarp
-{
- if ($@GM_EVENT_WARP == 1) warp "028-1", 110, 30;
- if ($@GM_EVENT_WARP == 2) warp "028-1", 119, 74;
- if ($@GM_EVENT_WARP == 3) warp "028-3", 68, 36;
- if ($@GM_EVENT_WARP == 4) warp "001-3", 0, 0;
- if ($@GM_EVENT_WARP == 5) warp "070-1", 30, 92;
- if ($@GM_EVENT_WARP == 6) warp "070-3", 60, 63;
- if ($@GM_EVENT_WARP == 7) warp "003-1", 44, 94;
- return;
-}
-function|script|GmDebug
-{
- mes "[GM Debug]";
- mes "What do you want to do?";
- menu
- "Open Event Portals.", L_GmChoose,
- "Close Event Portals.", L_GmStop,
- "Disguise.", L_Disguise;
-
-L_GmChoose:
- mes "Choose a destination:";
- menu
- "GM Island (entrance)", L_GmStart,
- "GM Island (auditorium)", L_GmStart,
- "GM Island (cave)", L_GmStart,
- "Tulimshar Arena", L_GmStart,
- "Underworld", L_GmStart,
- "The Abyss", L_GmStart,
- "2006 Tulimshar", L_GmStart;
-
-L_GmStart:
- set $@GM_EVENT_WARP, @menu;
- enablenpc "Gm Event#1";
- enablenpc "Gm Event#2";
- enablenpc "Gm Event#3";
- return;
-
-L_GmStop:
- disablenpc "Gm Event#1";
- disablenpc "Gm Event#2";
- disablenpc "Gm Event#3";
- return;
-
-L_Disguise:
- npcaction 9;
- mes "[GM Debug - Disguise]";
- mes "The Disguise function allows GMs to disguise themselves as mobs or npcs.";
- mes "---";
- mes "Mob IDs: [@@https://www.themanaworld.org/index.php/Monster_Reference|Monster Reference@@]";
- mes "You can either logout or use id ##B0##b to reset.";
- mes "---";
- mes "Please input the mob ID:";
- input @disguise_id;
- if (@disguise_id < 1000 || @disguise_id > 32767)
- goto L_ResetClass;
- mes "Your disguise has been changed.";
- if (Class <= 5)
- set @old_class, Class;
- set Class, @disguise_id;
- mes "";
- mes "For technical reasons, you are not able to see your own disguise, but other players will see it.";
- return;
-
-L_ResetClass:
- mes "Your appearance has been reset.";
- set Class, if_then_else(@old_class, @old_class, 1);
- callfunc "fixHeadStyles";
- return;
-}
-001-1,49,68,0|script|Gm Event#1|368,0,0
-{
- callfunc "GmWarp";
- end;
-}
-009-1,46,30,0|script|Gm Event#2|368,0,0
-{
- callfunc "GmWarp";
- end;
-}
-020-1,67,89,0|script|Gm Event#3|368,0,0
-{
- callfunc "GmWarp";
- end;
-}
diff --git a/world/map/npc/functions/headstyles.txt b/world/map/npc/functions/headstyles.txt
deleted file mode 100644
index f5f2ea82..00000000
--- a/world/map/npc/functions/headstyles.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-// headstyles config file
-// author: meko
-
-function|script|fixHeadStyles
-{
- callfunc "getHeadStyles";
- if ((TUT_var < 1 || QL_BEGIN < 1) && StatusPoint < 1 && BaseLevel == 1)
- goto L_RandomHair; // on first login
- set @style, getlook(LOOK_HAIR_STYLE); // FIXME: this needs to be a param in the future
- set @color, getlook(LOOK_HAIR_COLOR); // FIXME: this needs to be a param in the future
- if (@style < 1 || @style > getarraysize(@HairStyles$)) // leftover from previous attempt at classes
- setlook LOOK_HAIR_STYLE, 1; // FIXME: this needs to be a param in the future
- if (@color >= 120 && @color <= HC_WHITE) // convert shock white
- set @color, (HC_WHITE - Class) + 1;
- if (@color < 105 && ((@color - (15 * (Class - 1))) < 0 || @color > ((15 * (Class - 1)) + (getarraysize(@HairColors$) - 1))))
- set @color, 15 * (Class - 1); // it is possible to style color 0 but not style 0 since style is treated as an item
- setlook LOOK_HAIR_COLOR, @color; // FIXME: this needs to be a param in the future
- return;
-
-L_RandomHair:
- resetstatus; // <= important! gives 48 stat points
- setlook LOOK_HAIR_STYLE, rand(1, getarraysize(@HairStyles$));
- setlook LOOK_HAIR_COLOR, rand((15 * (Class - 1)),((15 * (Class - 1)) + (getarraysize(@HairColors$) - 1)));
- return;
-}
-
-function|script|getHeadStyles
-{
- cleararray @HairStyles$, "", getarraysize(@HairStyles$);
- cleararray @HairColors$, "", getarraysize(@HairColors$);
-
- if (Class == 2) goto L_Tritan;
- elif (Class == 3) goto L_Ifriton;
- elif (Class == 4) goto L_Gispaan;
- elif (Class == 5) goto L_Sparron;
- elif (Class == 6) goto L_Headless;
- else set Class, 1; // we can not style custom classes, so reset when using the barber
- goto L_Talpan;
-
-L_Talpan:
- set @species$, "Talpan";
- setarray @HairStyles$[0],
- "Bald", "Flat ponytail", "Bowl cut", "Combed back", "Emo", "Mohawk",
- "Pompadour", "Center parting/Short and slick", "Long and slick",
- "Short and curly", "Pigtails", "Long and curly", "Parted",
- "Perky ponytail", "Wave", "Mane", "Bun", "Shoulder Length Flick",
- "Fizzy", "Long and Clipped";
- setarray @HairColors$[0],
- "Brunette", "Green", "Dark red", "Light purple", "Gray", "Blonde",
- "Teal", "Light red", "Blue", "Dark purple", "Black", "Pink",
- "Brown";//, "(free slot)", "(free slot)";
- return;
-
-L_Headless:
- if (Class == 6) set @species$, "Undead";
- setarray @HairStyles$[0],
- "Plain", "Flat ponytail", "Bowl cut", "Combed back", "Emo", "Mohawk",
- "Pompadour", "Center parting/Short and slick", "Long and slick",
- "Short and curly", "Pigtails", "Long and curly", "Parted",
- "Perky ponytail", "Wave", "Mane", "Bun", "Shoulder Length Flick",
- "Fizzy", "Long and Clipped";
- setarray @HairColors$[0],
- "Brunette", "Green", "Dark red", "Light purple", "Gray", "Blonde",
- "Teal", "Light red", "Blue", "Dark purple", "Black", "Pink",
- "Brown";//, "(free slot)", "(free slot)";
- return;
-
-L_Tritan:
- set @species$, "Tritan";
- setarray @HairStyles$[0],
- "Finless", "Mohawk", "Dorsal", "Translucid", "Spiky",
- "Dual dorsal", "Intricate", "Lateral";
- setarray @HairColors$[0],
- "Midori", "Aqua", "Mauve", "Magenta", "Jet";
- return;
-
-L_Gispaan:
- set @species$, "Gispaan";
- setarray @HairStyles$[0],
- "1", "2", "3", "4", "5",
- "6", "7", "8", "9", "10",
- "11", "12", "13", "14", "15",
- "16", "17", "18", "19", "20";
- setarray @HairColors$[0],
- "1", "2", "3", "4", "5",
- "6", "7", "8", "9", "10",
- "11", "12", "13", "14", "15";
- return;
-
-L_Sparron:
- set @species$, "Sparron";
- setarray @HairStyles$[0],
- "1", "2", "3", "4", "5",
- "6", "7", "8", "9", "10",
- "11", "12", "13", "14", "15",
- "16", "17", "18", "19", "20";
- setarray @HairColors$[0],
- "1", "2", "3", "4", "5",
- "6", "7", "8", "9", "10",
- "11", "12", "13", "14", "15";
- return;
-
-L_Ifriton:
- set @species$, "Ifriton";
- setarray @HairStyles$[0],
- "Plain", "Horny", "Kinky", "Fiendish", "Modest",
- "Spiky";
- setarray @HairColors$[0],
- "Natural", "Fiery", "Bold", "Blazing", "Spunky",
- "Gloomy";
- return;
-}
diff --git a/world/map/npc/functions/inn.txt b/world/map/npc/functions/inn.txt
deleted file mode 100644
index 7cf281bd..00000000
--- a/world/map/npc/functions/inn.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-// INN
-
-function|script|Inn
-{
- if(@npcname$ == "") set @npcname$, strnpcinfo(1);
- mes "[" + @npcname$ + "]";
- mes "\"Would you like to rest? It's only " + @cost + " gp.\"";
- next;
- menu
- "Yes", L_Next,
- "No", L_Close;
-
-L_Next:
- if (Zeny < @cost)
- goto L_NoMoney;
- set Zeny, Zeny - @cost;
- heal 10000, 10000;
-
- mes "[" + @npcname$ + "]";
- mes "\"Sleep well!\"";
- next;
- goto L_Close;
-
-L_Close:
- mes "[" + @npcname$ + "]";
- mes "\"See you.\"";
- set @npcname$, "";
- close2;
- return;
-
-L_NoMoney:
- mes "[" + @npcname$ + "]";
- mes "\"You don't have enough money to stay here.\"";
- next;
- goto L_Close;
-}
diff --git a/world/map/npc/functions/lockpicking.txt b/world/map/npc/functions/lockpicking.txt
deleted file mode 100644
index e878298e..00000000
--- a/world/map/npc/functions/lockpicking.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-//-----------------------------------------------------------------------------
-// Lock picking.
-// 3 pins per lock.
-// The player has to find the good number of times to hit a pin
-//-----------------------------------------------------------------------------
-
-function|script|LockPicking
-{
- set @lock_picking_success, 0;
- setarray @pins, rand(1,3), rand(1,3), rand(1,3);
- goto L_StartLockPicking;
-
-L_NeedLockPickSet:
- menu
- "Unfortunately, I don't have these tools... Let's look around.", L_Return;
-
-L_StartLockPicking:
- mes "You inspect the lock and notice it isn't sophisticated.";
- mes "With regular stuff, you should be able to lock pick it.";
- next;
- if (countitem ("LockPicks") < 1)
- goto L_NeedLockPickSet;
- menu
- "I can try with these lock picks I just found.", L_Next,
- "Maybe later.", L_Return;
-
-L_Next:
- delitem "LockPicks", 1;
- mes "You insert the hook pick inside the lock, and, without applying any tension, you discover there are only 3 pins to set.";
- next;
- mes "You will need to set the 3 pins to align them and turn the lock's cylinder.";
- mes "A wrong move will make you start over. Remember how you had set the pins!";
- next;
- set @pin, 0;
- goto L_HandlePin;
-
-L_NextPinOrEnd:
- if (@pin >= 2)
- goto L_OpenDoor;
- set @pin, @pin + 1;
- mes "Click! This pin is set!";
- next;
- goto L_HandlePin;
-
-L_HandlePin:
- if (@pin == 0)
- mes "What to do with the first pin?";
- if (@pin == 1)
- mes "What to do with the second pin?";
- if (@pin == 2)
- mes "What to do with the last pin?";
- menu
- "Apply a soft pressure.", L_PinSoft,
- "Apply a normal pressure.", L_PinNormal,
- "Apply a strong pressure.", L_PinHard,
- "Give up. I'm in a rush!", L_GiveUp;
-
-L_GiveUp:
- set @lock_picking_success, 0;
- set @pin, 0;
- cleararray @pins, 0, 3;
- set @pin_pressure, 0;
- return;
-
-L_PinSoft:
- set @pin_pressure, 1;
- goto L_TestPin;
-
-L_PinNormal:
- set @pin_pressure, 2;
- goto L_TestPin;
-
-L_PinHard:
- set @pin_pressure, 3;
- goto L_TestPin;
-
-L_TestPin:
- if (@pin_pressure == @pins[@pin])
- goto L_NextPinOrEnd;
- mes "Nope, that did not work. And the pins are unset now...";
- next;
- set @pin, 0;
- goto L_HandlePin;
-
-L_Return:
- return;
-
-L_OpenDoor:
- set @lock_picking_success, 1;
- mes "The two sets of pins separate. You can now turn the cylinder to open the door!";
- return;
-
-}
diff --git a/world/map/npc/functions/magic.txt b/world/map/npc/functions/magic.txt
deleted file mode 100644
index 426bf28c..00000000
--- a/world/map/npc/functions/magic.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-// Basic magic functionality
-
-// Magic system uses:
-// - MAGIC_EXP (magic experience points, gained for spellcasting)
-// - MAGIC_FLAGS
-// Magic quests use:
-// - QUEST_MAGIC
-// - QUEST_MAGIC2
-
-// ------------------------------------------------------------
-// Gain initial magic skill
-// ------------------------------------------------------------
-function|script|MagicGainBasic
-{
- set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_DRANK_POTION;
- // Doomsday Act 5 utils
- if (getmap() == "099-5")
- addtimer 10, "Zax De'Kagen#0::OnAdjustPotion";
- return;
-}
-
-// ------------------------------------------------------------
-// Initialise Menu for selecting a choice of things to ask about
-// ------------------------------------------------------------
-function|script|MagicTalkOptionsSetup
-{
- set @QQ_ELANORE, 1;
- set @QQ_MANASEED, 2;
- set @QQ_MANAPOTION, 4;
- set @QQ_WYARA, 8;
- set @QQ_SAGATHA, 16;
- set @QQ_AULDSBEL, 32;
- set @QQ_IMP, 64;
- set @QQ_OLDWIZ, 128;
- set @QQ_ASTRALSOUL, 256;
- return;
-}
-
-// ------------------------------------------------------------
-// Print and run menu for choice of things to ask about
-// Ignores the entry in @ignore
-// Returns the result in @c, or returns 0 if there is no result
-// ------------------------------------------------------------
-
-function|script|MagicTalkMenu
-{
- setarray @choice$, "", "", "", "", "", "", "", "", "", "";
- set @choices_nr, 0;
- setarray @choice_idx, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
-
- if (@ignore & @QQ_ELANORE)
- goto L_Q_post_elanore;
- set @choice$[@choices_nr], "...Elanore the Healer?";
- set @choice_idx[@choices_nr], @QQ_ELANORE;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_elanore;
-
-L_Q_post_elanore:
- if (@ignore == @QQ_MANASEED)
- goto L_Q_post_manaseed;
- if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
- goto L_Q_post_manaseed;
- set @choice$[@choices_nr], "...the Mana Seed?";
- set @choice_idx[@choices_nr], @QQ_MANASEED;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_manaseed;
-
-L_Q_post_manaseed:
- if (@ignore & @QQ_MANAPOTION)
- goto L_Q_post_manapotion;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
- goto L_Q_post_manapotion;
- set @choice$[@choices_nr], "...Mana Potions?";
- set @choice_idx[@choices_nr], @QQ_MANAPOTION;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_manapotion;
-
-L_Q_post_manapotion:
- if (@ignore & @QQ_WYARA)
- goto L_Q_post_wyara;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_WYARA))
- goto L_Q_post_wyara;
- set @choice$[@choices_nr], "...Wyara the Witch?";
- set @choice_idx[@choices_nr], @QQ_WYARA;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_wyara;
-
-L_Q_post_wyara:
- if (@ignore & @QQ_SAGATHA)
- goto L_Q_post_sagatha;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
- goto L_Q_post_sagatha;
- set @choice$[@choices_nr], "...Sagatha the Witch?";
- set @choice_idx[@choices_nr], @QQ_SAGATHA;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_sagatha;
-
-L_Q_post_sagatha:
- if (@ignore & @QQ_AULDSBEL)
- goto L_Q_post_auldsbel;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
- goto L_Q_post_auldsbel;
- set @choice$[@choices_nr], "...Auldsbel the Wizard?";
- set @choice_idx[@choices_nr], @QQ_AULDSBEL;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_auldsbel;
-
-L_Q_post_auldsbel:
- if (@ignore & @QQ_OLDWIZ)
- goto L_Q_post_oldwiz;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_OLD_WIZARD))
- goto L_Q_post_oldwiz;
- set @choice$[@choices_nr], "...the Old Wizard?";
- set @choice_idx[@choices_nr], @QQ_OLDWIZ;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_oldwiz;
-
-L_Q_post_oldwiz:
- if (@ignore & @QQ_IMP)
- goto L_Q_post_imp;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP))
- goto L_Q_post_imp;
- set @choice$[@choices_nr], "...the Earth Spirit in the desert well?";
- set @choice_idx[@choices_nr], @QQ_IMP;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_imp;
-
-L_Q_post_imp:
- if (@ignore & @QQ_ASTRALSOUL)
- goto L_Q_post_astralsoul;
- if (!(getskilllv(SKILL_MAGIC)))
- goto L_Q_post_astralsoul;
- if (!(getskilllv(SKILL_POOL)))
- goto L_Q_post_astralsoul;
- set @choice$[@choices_nr], "...ways to improve my magic?";
- set @choice_idx[@choices_nr], @QQ_ASTRALSOUL;
- set @choices_nr, @choices_nr + 1;
- goto L_Q_post_astralsoul;
-
-L_Q_post_astralsoul:
- set @choice$[@choices_nr], "...never mind.";
- set @choice_idx[@choices_nr], 0;
- set @choices_nr, @choices_nr + 1;
-
- menu
- @choice$[0], L_MenuItems,
- @choice$[1], L_MenuItems,
- @choice$[2], L_MenuItems,
- @choice$[3], L_MenuItems,
- @choice$[4], L_MenuItems,
- @choice$[5], L_MenuItems,
- @choice$[6], L_MenuItems,
- @choice$[7], L_MenuItems,
- @choice$[8], L_MenuItems,
- @choice$[9], L_MenuItems;
-
-L_MenuItems:
- set @menu, @menu - 1;
-
- if (@menu >= @choices_nr)
- set @menu, 0;
-
- set @c, @choice_idx[@menu];
- return;
-}
-
-
-// ------------------------------------------------------------
-// Level up a skill
-// @SUP_id skill ID to level up
-// @SUP_lvl skill level to attain
-// @SUP_name$ name of the skill to level up
-// @SUP_xp # of experience points to award if the level up succeeds
-// ------------------------------------------------------------
-function|script|SkillUp
-{
- if (getskilllv(@SUP_id) >= @SUP_lvl)
- goto L_shortcut;
-
- misceffect sfx_skillup, strcharinfo(0);
- setskill @SUP_id, @SUP_lvl;
- getexp @SUP_xp, 0;
- if (@SUP_xp)
- mes "[" + @SUP_xp + " experience points]";
- mes "[Level " + @SUP_lvl + " in " + @SUP_name$ + "]";
- return;
-
-L_shortcut:
- mes "[You already have level " + getskilllv(@SUP_id) + " in " + @SUP_name$ + "]";
- return;
-}
diff --git a/world/map/npc/functions/miriam.txt b/world/map/npc/functions/miriam.txt
deleted file mode 100644
index b76efcc5..00000000
--- a/world/map/npc/functions/miriam.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-function|script|MiriamGoal
-{
- if (QUEST_MIRIAM_run > 0)
- set QUEST_MIRIAM_run, 0 - (gettimetick(2) - QUEST_MIRIAM_run);
- return;
-}
-
-function|script|MiriamExpire
-{
- if (QUEST_MIRIAM_run > 0)
- set QUEST_MIRIAM_run, 0 - 2; // force failute (expired)
- return;
-}
-
-function|script|MiriamCheat
-{
- if (QUEST_MIRIAM_run > 0)
- set QUEST_MIRIAM_run, 0 - 1; // force failure (cheating)
- return;
-}
diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt
deleted file mode 100644
index 81e3c6d9..00000000
--- a/world/map/npc/functions/mob_points.txt
+++ /dev/null
@@ -1,247 +0,0 @@
-// Mob points
-
-function|script|MobPoints
-{
- if (@mobID < 1002) goto L_Return;
-
- setarray @points,
- 1, // Maggot
- 2, // Scorpion
- 20, // Red Scorpion
- 40, // Green Slime
- 30, // Giant Maggot
- 15, // Yellow Slime
- 25, // Red Slime
- 45, // Black Scorpion
- 50, // Snake
- 6, // Fire Goblin
- 55, // Spider
- 35, // Evil Mushroom
- 35, // Pink Flower
- 40, // Santa Slime
- 15, // Rudolph Slime
- 2, // Bat
- 16, // Pinkie
- 10, // Spiky Mushroom
- 14, // Fluffy
- 25, // Cave Snake
- 200, // Jack O
- 85, // Fire Skull
- 85, // Poison Skull
- 20, // Log Head
- 70, // Mountain Snake
- 15, // Easter Fluffy
- 40, // Mouboo
- 0, // Mauve Plant
- 0, // Cobalt Plant
- 0, // Gamboge Plant
- 0, // Alizarin Plant
- 20, // Sea Slime
- 75, // Grass Snake
- 0, // Silk Worm
- 125, // Zombie
- 0, // Clover Patch
- 5, // Squirrel
- 0, // Fire Lizard
- 80, // Wisp
- 15, // Snail
- 80, // Spectre
- 100, // Skeleton
- 100, // Lady Skeleton
- 150, // Fallen
- 0, // Snake Lord
- 80, // Poltergeist
- 0, // Duck
- 15, // Bee
- 0, // Larvespa
- 0, // Vespa
- 0, // Hivespa
- 0, // Froad
- 0, // Troll
- 15, // Butterfly
- 2, // Cave Maggot
- 10, // Angry Scorpion
- 6, // Ice Goblin
- 20, // Archant
- 40, // Giant Cave Maggot
- 35, // Moggun
- 100, // Terranite
- 10, // Pumpkin
- 10, // Bandit
- 20, // Bandit Lord
- 30, // Vampire Bat
- 20, // Reaper
- 20, // Reaper2
- 100, // Scythe
- 20, // Ball Lightning
- 60, // Ice Element
- 80, // Yeti
- 100, // The Lost
- 60, // Red Bone
- 60, // Stalker
- 0, // Dreadwing
- 100, // Drunken Skeleton
- 100, // Tipsy Skeleton
- 100, // Drunken Lady Skeleton
- 60, // BlueSpark
- 60, // RedSpark
- 0, // Serqet
- 60, // HuntsmanSpider,
- 40, // CrotcherScorpion,
- 0, // IceSkull,
- 120, // FeyElement,
- 10, // Larvern,
- 60, // Hyvern,
- 20, // HungryFluffy,
- 40, // Wolvern,
- 50, // BlueSlime,
- 0, // SlimeBlast,
- 20, // WhiteSlime,
- 40, // Reinboo,
- 0, // WhiteBell,
- 60, // SoulSnake
- 100, // SoulEater
- 25, // CopperSlime
- 0, // SleepingBandit
- 20, // AzulSlime
- 80, // DemonicSpirit
- 940, // Luvia
- 150, // WitchGuard
- 50, // DemonicMouboo
- 15, // ViciousSquirrel
- 20, // WickedMushroom
- 18, // Bluepar
- 10, // AngryFireGoblin
- 35, // AngrySeaSlime
- 50, // CandiedSlime
- 40, // Santaboo
- 30, // Pollett
- 100, //Nutcracker
- 40, // SeaSlimeMother
- 50, // UndeadWitch
- 60, // UndeadTroll
- 80, // GreenSlimeMother
- 100, // Thug
- 100, // Swashbuckler
- 100, // Grenadier
- 150, // DreadPirateMarley
- 10, // DreadPirateMarleyClone
- 100, // Wight
- 100, // ManaGhost
- 100, // PsiBrain
- 150, // GeneralKurkan
- 175 // GeneralRazha
- // No more room! script engine is buggy, sorry.
- // -o11c
- ; // END
-
- setarray @points_extended,
- 200, // 1129 GeneralTerogan
- 100, // 1130 Moonshroom
- 20, // 1131 ManaBug
- 80, // 1132 LavaSlime
- 80, // 1133 Anne
- 200, // 1134 SUSAN
- 80, // 1135 LovelyMaggot
- 10, // 1136 LesserGhost
- 500, // 1137 Tormenta
- 200, // 1138 ManaGuardian
- 10, // 1139 Virus
- 200, // 1140 Tengu
- 200, // 1141 Sasquatch
- 999, // 1142 ZaxDeKagen
- 200, // 1143 ManaSlayer
- 200 // 1144 GreatDragon
- ;
-
- if ((MPQUEST == 1) && (@mobID < 1129))
- goto L_Table1;
-
- if ((MPQUEST == 1) && (@mobID > 1128))
- goto L_Table2;
-
- goto L_PostLoop;
-
-L_Table1:
- set Mobpt, Mobpt + @points[@mobID - 1002];
- goto L_PostLoop;
-
-L_Table2:
- set Mobpt, Mobpt + @points_extended[@mobID - 1129];
- goto L_PostLoop;
-
-L_PostLoop:
- callfunc "ValonCount";
- if (((QL_VALON >= 2) && (QL_VALON < 6)) && (@mobID == $@ValonMob[@valon_mob]))
- goto L_ValonMobKill;
- goto L_NatureKarma;
-
-L_ValonMobKill:
- callfunc "AddValonCntMask";
- goto L_NatureKarma;
-
-L_NatureKarma:
-// Scorpion, Red Scorpion, Black Scorpion, Angry Scorpion
-// DemonicMouboo, ViciousSquirrel, WickedMushroom, Bluepar
- if ((@mobID == 1003) || (@mobID == 1004) || (@mobID == 1009) || (@mobID == 1057)
- || (@mobID == 1104) || (@mobID == 1105) || (@mobID == 1106) || (@mobID == 1107))
- goto L_good;
-
- // Attitude adjustment for the witch (can we refactor this to another function? Not sure about max. recursion depth)
-
- set @value, 0;
-// Pinkie
- if (@mobID == 1018)
- set @value, 3;
-
-// Fluffy
- if (@mobID == 1020)
- set @value, 3;
-// Easter Fluffy
- if (@mobID == 1027)
- set @value, 3;
-// Mouboo
- if (@mobID == 1028)
- set @value, 4;
-// Squirrel
- if (@mobID == 1038)
- set @value, 2;
-// Reinboo
- if (@mobID == 1094)
- set @value, 3;
-// Santaboo
- if (@mobID == 1112)
- set @value, 3;
-// Pollett
- if (@mobID == 1113)
- set @value, 3;
-
- if (@value == 0)
- goto L_Celestia;
-
- callfunc "QuestSagathaAnnoy";
- goto L_Celestia;
-
-L_good:
- set @value, 1;
- callfunc "QuestSagathaHappy";
- goto L_Celestia;
-
-L_Celestia:
- if (QL_CELESTIA < 5 || QL_CELESTIA >= 205 || @mobID != 1072) goto L_Terranite;
- set QL_CELESTIA, QL_CELESTIA + 1;
- if (QL_CELESTIA == 205)
- message strcharinfo(0), "Yeti : ##3This should be enough yetis killed to please Celestia.";
- goto L_Terranite;
-
-L_Terranite:
- if (TERRAC < 1 || TERRAC > 1500 || @mobID != 1062) goto L_Return;
- if (TERRAC % 100 == 0)
- message strcharinfo(0), "Terranite : ##3Total Terranites Slain: "+TERRAC;
- set TERRAC, TERRAC + 1;
- goto L_Return;
-
-L_Return:
- set @value, 0;
- return;
-}
diff --git a/world/map/npc/functions/motd.txt.example b/world/map/npc/functions/motd.txt.example
deleted file mode 100644
index f52b80f9..00000000
--- a/world/map/npc/functions/motd.txt.example
+++ /dev/null
@@ -1,10 +0,0 @@
-function|script|MOTD
-{
- setarray $@MOTD$,
-
- "Welcome to The Mana World! (running on tmwAthena)",
- "[@@http://ow.ly/MCesp|Website & Wiki@@] [@@https://goo.gl/fC4YcM|Bug Reports@@] [@@https://goo.gl/z6YDDp|Live Support@@]",
- "You can report abuse by typing in chat: @wgm Player XYZ is abusing me";
-
- return;
-}
diff --git a/world/map/npc/functions/motdconfig.txt b/world/map/npc/functions/motdconfig.txt
deleted file mode 100644
index 2d0ae049..00000000
--- a/world/map/npc/functions/motdconfig.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-function|script|MOTDConfig
-{
- mes "[MOTD]";
- mes "lines:";
- mes "---";
- set @line, 0;
- callsub S_Lines;
- mes "---";
- mes "Enabled: " + !($@MOTD_Disabled);
- next;
- menu
- "toggle|Toggle MOTD", L_Toggle;
-
-L_Toggle:
- gmlog strcharinfo(0) + " enabled or disabled the MOTD.";
- set $@MOTD_Disabled, !$@MOTD_Disabled;
- close2;
- return;
-
-S_Lines:
- mes @line + ": "+ $@MOTD$[@line];
- set @line, @line + 1;
- if(@line != getarraysize($@MOTD$)) goto S_Lines;
- return;
-}
-
-function|script|DisplayMOTD
-{
- if($@MOTD_Disabled || $@MOTD$[0] == "") goto L_Return;
- goto L_MOTD;
-
-L_MOTD:
- message strcharinfo(0), "Server : " + $@MOTD$[@motd_index];
- set @motd_index, @motd_index + 1;
- if($@MOTD$[@motd_index] == "") goto L_Return;
- goto L_MOTD;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/process_equip.txt b/world/map/npc/functions/process_equip.txt
deleted file mode 100644
index 4a4b776f..00000000
--- a/world/map/npc/functions/process_equip.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-
-function|script|ProcessEquip
-{
- set @head, getequipid(equip_head);
- set @torso, getequipid(equip_torso);
- set @legs, getequipid(equip_legs);
-
- set @torsoB, @torso;
- if (@torsoB >= 2050 && @torsoB <= 2059) set @torsoB, 1202; // Cotton shirt
- if (@torsoB >= 2060 && @torsoB <= 2069) set @torsoB, 624; // V Neck
- if (@torsoB >= 2070 && @torsoB <= 2079) set @torsoB, 564; // T Neck
- if (@torsoB >= 2080 && @torsoB <= 2089) set @torsoB, 720; // Silk Robe
- if (@torsoB >= 2090 && @torsoB <= 2099) set @torsoB, 688; // Tanktop
- if (@torsoB >= 2120 && @torsoB <= 2129) set @torsoB, 689; // Short tanktop
- set @torsoC, cNone;
- if (@torso == 1202 || @torso == 624 || @torso == 564 || @torso == 688 || @torso == 689 || @torso == 720) set @torsoC, cWhite;
- if (@torso >= 2050) set @torsoC, @torso % 10;
-
- set @legsB, @legs;
- if (@legsB >= 2100 && @legsB <= 2109) set @legsB, 632; // Cotton skirt
- if (@legsB >= 2110 && @legsB <= 2119) set @legsB, 586; // Cotton shorts
- set @legsC, cNone;
- if (@legs == 632 || @legs == 586) set @legsC, cWhite;
- if (@legs >= 2050) set @legsC, @legs % 10;
-
- return;
-}
diff --git a/world/map/npc/functions/quiz.txt b/world/map/npc/functions/quiz.txt
deleted file mode 100644
index 3deddd0a..00000000
--- a/world/map/npc/functions/quiz.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-// FIXME/TODO: some variables should be scoped, and some other variables
-// combined in an array, with a very specific name, to avoid
-// collisions. The script as a whole should be optimized to
-// take advangage of magic-v3
-
-function|script|MultiQuiz
-{
- if((getarraysize(@quiz_answers$[0]) != getarraysize(@quiz_questions$[0])) ||
- (@quiz_answers$[0] == "") || (@quiz_questions$[0] == "")) goto L_ArrayError;
- set @setindex, 1;
- set @index, rand(0,(getarraysize(@quiz_answers$[0]) - 1));
- set @question$, @quiz_questions$[@index];
- mes "\""+ @question$ + "\"";
- next;
- mes "Pick the correct answer.";
- callfunc "Quiz";
- return;
-
-L_ArrayError:
- if(@quiz_answers$[0] == "") debugmes "@quiz_answers$ is empty";
- if(@quiz_questions$[0] == "") debugmes "@quiz_questions$ is empty";
- if(getarraysize(@quiz_answers$[0]) != getarraysize(@quiz_questions$[0])) debugmes "Size of @quiz_answers$ is not equal to size of @quiz_questions$";
- close;
-}
-
-function|script|Quiz
-{
- if((@choices_nr < 1) || (@choices_nr > 8)) set @choices_nr, 3;
- if(@choices_nr > getarraysize(@quiz_answers$[0])) set @choices_nr, getarraysize(@quiz_answers$[0]);
- if(@quiz_answers$[0] == "") goto L_ArrayError;
- set @success, 0;
- if(@setindex < 1) set @index, @answer;
- set @good, rand(0,(@choices_nr - 1));
- cleararray @choices$, "", getarraysize(@choices$[0]);
- set @loop, 0;
- goto L_Shuffle;
-
-L_Shuffle:
- set @nindex, rand(0,(getarraysize(@quiz_answers$[0]) - 1));
- if(@nindex == @index) goto L_Shuffle; // do not get the good definition
- set @loop2, 0;
- goto L_Search;
-
-L_Search:
- if(@choices$[@loop2] == @quiz_answers$[@nindex]) goto L_Shuffle; // array is already populated with this choice
- if(@loop2 >= (@choices_nr - 1)) goto L_Shuffle2;
- set @loop2, @loop2 + 1;
- goto L_Search;
-
-L_Shuffle2:
- set @choices$[@loop], @quiz_answers$[@nindex];
- if(@loop >= (@choices_nr - 1)) goto L_Answer;
- set @loop, @loop + 1;
- goto L_Shuffle;
-
-L_Answer:
- set @choices$[@good], @quiz_answers$[@index]; // set the good definition
- menu
- @choices$[0], L_Enter,
- @choices$[1], L_Enter,
- @choices$[2], L_Enter,
- @choices$[3], L_Enter,
- @choices$[4], L_Enter,
- @choices$[5], L_Enter,
- @choices$[6], L_Enter,
- @choices$[7], L_Enter;
-
-L_Enter:
- if(@menu != (@good + 1)) goto L_Shift;
- set @success, 1;
- goto L_Shift;
-
-L_Shift:
- if(@shift < @index) set @shift, @index;
-
- if(@shift == @index) set @quiz_answers$[@index], ""; // do not allow twice the same question
-
- if((@quiz_questions$[0] != "") && (@shift == @index)) set @quiz_questions$[@index], "";
- if((@quiz_questions$[0] != "") && (@quiz_questions$[(@shift + 1)] != "")) set @quiz_questions$[@shift], @quiz_questions$[(@shift + 1)];
- if((@quiz_questions$[0] != "") && (@quiz_questions$[(@shift + 1)] != "")) set @quiz_questions$[(@shift + 1)], "";
-
- if(@quiz_answers$[(@shift + 1)] != "") set @quiz_answers$[@shift], @quiz_answers$[(@shift + 1)];
- if(@quiz_answers$[(@shift + 1)] != "") set @quiz_answers$[(@shift + 1)], "";
-
- set @shift, @shift + 1;
- if(@quiz_answers$[(@shift + 1)] != "") goto L_Shift;
- set @shift, 0;
- goto L_Close;
-
-L_Close:
- set @answer, 0;
- return;
-
-L_ArrayError:
- if(@quiz_answers$[0] == "") debugmes "@quiz_answers$ is empty";
- mapexit;
-}
diff --git a/world/map/npc/functions/slot_machine.txt b/world/map/npc/functions/slot_machine.txt
deleted file mode 100644
index 8da5e46f..00000000
--- a/world/map/npc/functions/slot_machine.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-
-function|script|SlotMachine
-{
- mes "Pull the lever...";
- next;
- menu
- "Pull", L_Play,
- "Maybe later", L_Close;
-
-L_Play:
- if(countitem("CasinoCoins") < 1)
- goto L_NoCoin;
- delitem "CasinoCoins", 1;
- set @Temp1,rand(7);
- set @Temp2,rand(7);
- set @Temp3,rand(7);
- mes "Numbers: " + @Temp1 + "/" + @Temp2 + "/" + @Temp3 + ".";
- next;
-
- if(@Temp1 != @Temp2)
- goto L_Lost;
- if(@Temp2 != @Temp3)
- goto L_Lost;
- if(@Temp1 != @Temp3)
- goto L_Lost;
- if (CSN >= 9)
- goto L_Default;
- if (rand(6) < CSN)
- goto L_Jackpot;
- set CSN, CSN+1;
- goto L_Default;
-
-L_Jackpot:
- mes "Congratulations! You won!";
- mes "However, the slot machine";
- mes "do not give you the coins!";
- next;
- mes "[Staff]";
- mes "\"I apologize for this problem.";
- mes "I see you are a huge client of";
- mes "ours, so I'll give you a Monocle";
- mes "as a token of apology.\"";
- getitem "Monocle", 1;
- set CSN, 9;
- goto L_Close;
-
-L_Default:
- mes "Congratulations! You won!";
- mes "You get 10 casino coins";
- getitem "CasinoCoins", 10;
- goto L_Close;
-
-L_Lost:
- mes "You lost!";
- goto L_Close;
-
-L_NoCoin:
- mes "Insert coin";
- goto L_Close;
-
-L_Close:
- close2;
- return;
-}
diff --git a/world/map/npc/functions/soul_menhir.txt b/world/map/npc/functions/soul_menhir.txt
deleted file mode 100644
index 9d6f04ce..00000000
--- a/world/map/npc/functions/soul_menhir.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-function|script|SoulMenhir
-{
- mes "[Soul Menhir]";
- mes "(A mystical aura surrounds this stone. You feel mysteriously attracted to it. Something tells you to touch it. What do you do?)";
-
- menu
- "Touch it.", L_Bind,
- "Leave it alone.", L_Return,
- "I lost my towel...", L_Towel;
-
-L_Towel:
- if (TowelLastUsed > (gettimetick(2) - 1800))
- goto L_DontPanic;
- set TowelLastUsed, gettimetick(2);
- mes "[Soul Menhir]";
- mes "(You touch the mysterious stone. Somehow it feels hard and soft at the same time.)";
- getitem "HitchhikersTowel", 1;
- goto L_Return;
-
-L_Bind:
- if (Menhir_Activated == 1)
- goto L_Shortversion;
-
- mes "[Soul Menhir]";
- mes "(You touch the mysterious stone. Somehow it feels warm and cold at the same time.)";
- mes "(Suddenly a strange sensation flows through you. It feels like your soul leaves your body and becomes one with the stone.)";
- mes "(As suddenly as the feeling started it stops. The strange attraction is away from one moment to the next and the menhir feels like just an ordinary stone.)";
- set Menhir_Activated, 1;
- goto L_Save;
-
-L_Shortversion:
- mes "[Soul Menhir]";
- mes "(A strange sensation flows through you. It feels like your soul leaves your body and becomes one with the stone. As suddenly as the feeling started it stops.)";
- goto L_Save;
-
-L_Save:
- if (@x == 0 && @y == 0)
- goto L_FindPoint;
- goto L_Do_Save;
-
-L_DontPanic:
- message strcharinfo(0), "(A strange barrier keeps you from touching the stone at this time.)";
- goto L_Return;
-
-L_Do_Save:
- savepoint @map$, @x, @y;
- goto L_Return;
-
-L_FindPoint:
- set @n, rand(getarraysize(@Xs));
- set @x, @Xs[@n];
- set @y, @Ys[@n];
- goto L_Do_Save;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/functions/stat_reset.txt b/world/map/npc/functions/stat_reset.txt
deleted file mode 100644
index fdb833f7..00000000
--- a/world/map/npc/functions/stat_reset.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-
-function|script|StatReset
-{
-// if (ResetA_charstate == 1) goto L_Multiple;
-
-// set @cost, 10000000 / ($ResetA_uses + 1);
-
- set @cost, BaseLevel * 100;
-
- mes "[" + @npcname$ + "]";
- mes "\"I have come across a spell that will";
- mes "reset your status points.";
- mes "Normally this spell is expensive, but";
- mes "due to an unusual constellation of the";
- mes "stars I can cast it very cheaply!";
- mes "For you it will cost only "+@cost+" gp.\"";
- next;
- menu
- "Reset my stats",L_Next,
- "Forget about it",L_Pass;
-
-L_Next:
- if (Zeny<@cost) goto L_NoMoney;
- goto L_Reset;
-
-// set $ResetA_uses, $ResetA_uses + 1;
-// set ResetA_charstate, 1;
-
-L_Reset:
- set Zeny, Zeny-@cost;
- resetstatus;
-
- mes "[" + @npcname$ + "]";
- mes "\"There you are.";
- mes "";
- mes "Good as new!\"";
- goto L_Return;
-
-L_Pass:
- mes "[" + @npcname$ + "]";
- mes "\"Very well then, see you.\"";
- goto L_Return;
-
-L_NoMoney:
- mes "[" + @npcname$ + "]";
- mes "\"Oh dear, the price cannot be bargained.";
- mes "";
- mes "Perhaps you can borrow from a friend?\"";
- goto L_Return;
-
-L_Return:
- set @cost, 0;
- return;
-}
diff --git a/world/map/npc/functions/time.txt b/world/map/npc/functions/time.txt
deleted file mode 100644
index 7d16a200..00000000
--- a/world/map/npc/functions/time.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-// A replacement for gettimestr()
-// At some point this should be a builtin in the server
-// Should I allow formatting of times other than the current time?
-
-// Variables:
-// output @ts_date$ "yyyy-mm-dd"
-// output @ts_time$ "hh:mm:ss"
-
-function|script|time_stamp
-{
- // local variables
- // if there is reasonable demand, these might be exported
- // (that is what the builtin is likely to do)
- set @ts_year, gettime(7);
- set @ts_month, gettime(6);
- set @ts_mday, gettime(5);
- //set @ts_wday, gettime(4);
- set @ts_hour, gettime(3);
- set @ts_minute, gettime(2);
- set @ts_second, gettime(1);
-
- // locals used to generate leading zeroes
- set @ts_month_pad$, "";
- set @ts_mday_pad$, "";
- set @ts_hour_pad$, "";
- set @ts_minute_pad$, "";
- set @ts_second_pad$, "";
-
- if (@ts_month < 10)
- set @ts_month_pad$, "0";
- if (@ts_mday < 10)
- set @ts_mday_pad$, "0";
- if (@ts_hour < 10)
- set @ts_hour_pad$, "0";
- if (@ts_minute < 10)
- set @ts_minute_pad$, "0";
- if (@ts_second < 10)
- set @ts_second_pad$, "0";
-
- set @ts_date$, @ts_year + "-" + @ts_month_pad$ + @ts_month + "-" + @ts_mday_pad$ + @ts_mday;
- set @ts_time$, @ts_hour_pad$ + @ts_hour + ":" + @ts_minute_pad$ + @ts_minute + ":" +@ts_second_pad$ + @ts_second;
-
- // cleanup
- set @ts_year, 0;
- set @ts_month, 0;
- set @ts_mday, 0;
- set @ts_hour, 0;
- set @ts_minute, 0;
- set @ts_second, 0;
- set @ts_month_pad$, "";
- set @ts_mday_pad$, "";
- set @ts_hour_pad$, "";
- set @ts_minute_pad$, "";
- set @ts_second_pad$, "";
-
- return;
-}
-
-
-
-// HumanTime - returns a human-readable time
-// author: meko
-
-// Internal variables:
-// @separator$, @unit$, @unit2$, @unit3$, @unit4$, @unit5$
-// @seconds, @minutes, @hours, @days
-
-// Public Variables:
-// input @ms integer
-// output @time$ string
-
-function|script|HumanTime
-{
- set @time$, "now";
- if(@seconds) set @ms, @ms + (@seconds * 1000);
- if(@minutes) set @ms, @ms + (@minutes * 60000);
- if(@days) set @ms, @ms + (@days * 1440000);
- if(@ms < 1000) goto L_Millis; // under 1 second we have nothing to count
- set @seconds, @ms / 1000;
- set @ms, @ms % 1000;
- if(@seconds < 60) goto L_Seconds;
- set @minutes, @seconds / 60;
- set @seconds, @seconds % 60;
- if(@minutes < 60) goto L_Minutes;
- set @hours, @minutes / 60;
- set @minutes, @minutes % 60;
- if(@hours < 24) goto L_Hours;
- set @days, @hours / 24;
- set @hours, @hours % 24;
- if(@days) goto L_Days;
- goto L_Clean;
-
-L_Millis:
- set @time$, @ms + "ms";
- return;
-
-L_Seconds:
- set @unit$, "second";
- if(@seconds > 1) set @unit$, "seconds";
- set @unit2$, "millisecond";
- if(@ms > 1) set @unit2$, "milliseconds";
- set @time$, @seconds + " " + @unit$;
- if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit2$;
- goto L_Clean;
-
-L_Minutes:
- set @unit$, "minute";
- if(@minutes > 1) set @unit$, "minutes";
- set @unit2$, "second";
- if(@seconds > 1) set @unit2$, "seconds";
- set @unit3$, "millisecond";
- if(@ms > 1) set @unit3$, "milliseconds";
- set @time$, @minutes + " " + @unit$;
- set @separator$, " and ";
- if(@ms) set @separator$, ", ";
- if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit2$;
- if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit3$;
- goto L_Clean;
-
-L_Hours:
- set @unit$, "hour";
- if(@hours > 1) set @unit$, "hours";
- set @unit2$, "minute";
- if(@minutes > 1) set @unit2$, "minutes";
- set @unit3$, "second";
- if(@seconds > 1) set @unit3$, "seconds";
- set @unit4$, "millisecond";
- if(@ms > 1) set @unit4$, "milliseconds";
- set @time$, @hours + " " + @unit$;
- set @separator$, " and ";
- if(@seconds || @ms) set @separator$, ", ";
- if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit2$;
- set @separator$, " and ";
- if(@ms) set @separator$, ", ";
- if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$;
- if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$;
- goto L_Clean;
-
-L_Days:
- set @unit$, "day";
- if(@hours > 1) set @unit$, "days";
- set @unit2$, "hour";
- if(@hours > 1) set @unit2$, "hours";
- set @unit3$, "minute";
- if(@minutes > 1) set @unit3$, "minutes";
- set @unit4$, "second";
- if(@seconds > 1) set @unit4$, "seconds";
- set @unit5$, "millisecond";
- if(@ms > 1) set @unit5$, "milliseconds";
- set @time$, @days + " " + @unit$;
- set @separator$, " and ";
- if(@minutes || @seconds || @ms) set @separator$, ", ";
- if(@hours) set @time$, @time$ + @separator$ + @hours + " " + @unit2$;
- set @separator$, " and ";
- if(@seconds || @ms) set @separator$, ", ";
- if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit3$;
- set @separator$, " and ";
- if(@ms) set @separator$, ", ";
- if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$;
- if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$;
- goto L_Clean;
-
-L_Clean:
- set @unit$, "";
- set @unit2$, "";
- set @unit3$, "";
- set @unit4$, "";
- set @unit5$, "";
- set @seconds, 0;
- set @minutes, 0;
- set @hours, 0;
- set @days, 0;
- set @separator$, "";
- return;
-}
diff --git a/world/map/npc/functions/travelers.txt b/world/map/npc/functions/travelers.txt
deleted file mode 100644
index 30116ecb..00000000
--- a/world/map/npc/functions/travelers.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-// Travelers
-// Authors: Wombat, Wushin
-
-// Multiple Travelers
-// Cannot access until found (Player Bitmask)
-// Costs Zeny
-
-// Contains all warp points to find
-017-9,27,28,0|script|#TravelConfig|32767
-{
- end;
-
-OnInit:
- // TravelFound
- set $@tut_bit, (1 << 2);
- //set $@druid_tree_bit, (1 << 3);
- set $@graveyard_bit, (1 << 4);
- set $@magic_house_bit, (1 << 5);
- set $@terranite_cave_bit, (1 << 6);
- set $@tulimshar_bit, (1 << 7);
- set $@blue_sage_bit, (1 << 8);
- set $@hurnscald_bit, (1 << 9);
- set $@nivalis_bit, (1 << 10);
- //set $@tul_mine_bit, (1 << 11);
- set $@pachua_bit, (1 << 12);
- set $@barbarians_bit, (1 << 14);
- set $@hurns_farms_bit, (1 << 15);
- set $@candor_bit, (1 << 16);
- // Travel Base Cost
- set $@tulimshar_cost, 100;
- set $@hurnscald_cost, 100;
- set $@nivalis_cost, 100;
- //set $@druid_tree_cost, 150;
- //set $@tul_mine_cost, 150;
- set $@pachua_cost, 200;
- set $@graveyard_cost, 200;
- set $@magic_house_cost, 150;
- set $@terranite_cave_cost, 200;
- set $@blue_sage_cost, 200;
- set $@barbarians_cost, 150;
- set $@hurns_farms_cost, 150;
- set $@candor_cost, 200;
- end;
-}
-
-function|script|Traveler
-{
- if(@npcname$ == "") set @npcname$, strnpcinfo(1);
- mes "["+@npcname$+"]";
- mes "\"Greetings. I am "+@npcname$+" the Traveler.\"";
- next;
-
- if (TravelFound & $@tut_bit)
- goto L_Main;
- goto L_TravelTut;
-
-L_Main:
- if (TravelFound & @NpcTravelBit)
- goto L_BitTravelSet;
- goto L_SetTravelBit;
-
-L_BitTravelSet:
- set @Cost, 10;
- if (BaseLevel < 45)
- set @Cost, 5;
- goto L_Start;
-
-L_TravelTut:
- mes "["+@npcname$+"]";
- mes "\"We travelers are found all over the world. Once you have found a traveler at a certain location, you can be sent back there instantly by another traveler.\"";
- next;
- if (TravelFound & $@tut_bit)
- goto L_Main;
- goto L_SetBit;
-
-L_SetBit:
- set TravelFound, TravelFound | $@tut_bit;
- goto L_Main;
-
-L_SetTravelBit:
- mes "["+@npcname$+"]";
- mes "\"Uplink set. You can now return to this spot for a fee.\"";
- next;
- set TravelFound, TravelFound | @NpcTravelBit;
- goto L_BitTravelSet;
-
-L_Start:
- mes "\"Where would you like to go?\"";
- menu
- "Tonori - Tulimshar (" + (@Cost * $@tulimshar_cost) + " GP)", L_TravelTulimshar,
- "Argeas - Hurnscald (" + (@Cost * $@hurnscald_cost) + " GP)", L_TravelHurnscald,
- "Kaizei - Nivalis (" + (@Cost * $@nivalis_cost) + " GP)", L_TravelNivalis,
- "Tonori - Pachua's Village (" + (@Cost * $@pachua_cost) + " GP)", L_TravelPachua,
- "Argeas - Candor (" + (@Cost * $@candor_cost) + " GP)", L_TravelCandor,
- "Argeas - Magic House (" + (@Cost * $@magic_house_cost) + " GP)", L_TravelMagicHouse,
- "Argeas - Farmsteads (" + (@Cost * $@hurns_farms_cost) + " GP)", L_TravelHurnsFarms,
- "Argeas - Graveyard (" + (@Cost * $@graveyard_cost) + " GP)", L_TravelGraveyard,
- "Argeas - Terranite Cave (" + (@Cost * $@terranite_cave_cost) + " GP)", L_TravelTerranite,
- "Kaizei - Barbarian Village (" + (@Cost * $@barbarians_cost) + " GP)", L_TravelBarbarians,
- "Kaizei - Sage Nikolai's Mansion (" + (@Cost * $@blue_sage_cost) + " GP)", L_TravelBlueSage,
- "Who are the Travelers?", L_TravelTut,
- "I'm not interested.", L_TravelNo;
-
-L_TravelChecks:
- if (@NpcTravelBit == @NextLocationBit)
- goto L_AlreadyThere;
- if (!(TravelFound & @NextLocationBit))
- goto L_NoFound;
- if (Zeny < @NextLocationCost)
- goto L_NoMoney;
- goto L_TravelPlayer;
-
-L_TravelPlayer:
- mes "["+@npcname$+"]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @NextLocationCost;
- warp @NextLocationMap$,@NextLocationX,@NextLocationY;
- goto L_Clearvars;
-
-L_TravelGraveyard:
- set @NextLocationBit, $@graveyard_bit;
- set @NextLocationCost, (@Cost * $@graveyard_cost);
- set @NextLocationMap$, "026-1";
- set @NextLocationX, 49;
- set @NextLocationY, 45;
- goto L_TravelChecks;
-
-L_TravelMagicHouse:
- set @NextLocationBit, $@magic_house_bit;
- set @NextLocationCost, (@Cost * $@magic_house_cost);
- set @NextLocationMap$, "013-1";
- set @NextLocationX, 120;
- set @NextLocationY, 93;
- goto L_TravelChecks;
-
-L_TravelTerranite:
- set @NextLocationBit, $@terranite_cave_bit;
- set @NextLocationCost, (@Cost * $@terranite_cave_cost);
- set @NextLocationMap$, "012-3";
- set @NextLocationX, 445;
- set @NextLocationY, 65;
- goto L_TravelChecks;
-
-L_TravelTulimshar:
- set @NextLocationBit, $@tulimshar_bit;
- set @NextLocationCost, (@Cost * $@tulimshar_cost);
- set @NextLocationMap$, "002-1";
- set @NextLocationX, 60;
- set @NextLocationY, 42;
- goto L_TravelChecks;
-
-L_TravelBlueSage:
- set @NextLocationBit, $@blue_sage_bit;
- set @NextLocationCost, (@Cost * $@blue_sage_cost);
- set @NextLocationMap$, "048-2";
- set @NextLocationX, 26;
- set @NextLocationY, 47;
- goto L_TravelChecks;
-
-L_TravelHurnscald:
- set @NextLocationBit, $@hurnscald_bit;
- set @NextLocationCost, (@Cost * $@hurnscald_cost);
- set @NextLocationMap$, "008-1";
- set @NextLocationX, 79;
- set @NextLocationY, 84;
- goto L_TravelChecks;
-
-L_TravelNivalis:
- set @NextLocationBit, $@nivalis_bit;
- set @NextLocationCost, (@Cost * $@nivalis_cost);
- set @NextLocationMap$, "020-1";
- set @NextLocationX, 53;
- set @NextLocationY, 122;
- goto L_TravelChecks;
-
-L_TravelPachua:
- set @NextLocationBit, $@pachua_bit;
- set @NextLocationCost, (@Cost * $@pachua_cost);
- set @NextLocationMap$, "006-1";
- set @NextLocationX, 28;
- set @NextLocationY, 97;
- callfunc "MiriamCheat";
- goto L_TravelChecks;
-
-L_TravelBarbarians:
- set @NextLocationBit, $@barbarians_bit;
- set @NextLocationCost, (@Cost * $@barbarians_cost);
- set @NextLocationMap$, "033-1";
- set @NextLocationX, 66;
- set @NextLocationY, 33;
- goto L_TravelChecks;
-
-L_TravelHurnsFarms:
- set @NextLocationBit, $@hurns_farms_bit;
- set @NextLocationCost, (@Cost * $@hurns_farms_cost);
- set @NextLocationMap$, "055-1";
- set @NextLocationX, 135;
- set @NextLocationY, 60;
- goto L_TravelChecks;
-
-L_TravelCandor:
- set @NextLocationBit, $@candor_bit;
- set @NextLocationCost, (@Cost * $@candor_cost);
- set @NextLocationMap$, "029-1";
- set @NextLocationX, 69;
- set @NextLocationY, 69;
- goto L_TravelChecks;
-
-L_TravelNo:
- mes "["+@npcname$+"]";
- mes "\"Perhaps you will have the courage to help us some day.\"";
- close2;
- goto L_Clearvars;
-
-L_NoMoney:
- mes "["+@npcname$+"]";
- mes "\"I'm sorry, but you don't have enough money. Maybe next time.\"";
- close2;
- goto L_Clearvars;
-
-L_NoFound:
- mes "["+@npcname$+"]";
- mes "\"Sorry, but you haven't visited a traveler yet at that location. You should find and talk to a traveler there so you can quickly return to that location in the future.\"";
- close2;
- goto L_Clearvars;
-
-L_AlreadyThere:
- mes "["+@npcname$+"]";
- mes "\"Uh... You're already here. Are you sure you know where you are going?\"";
- close2;
- goto L_Clearvars;
-
-L_Clearvars:
- set @npcname$, "";
- set @Cost, 0;
- set @NextLocationBit, 0;
- set @NextLocationCost, 0;
- set @NextLocationMap$, "";
- set @NextLocationX, 0;
- set @NextLocationY, 0;
- return;
-}
diff --git a/world/map/npc/functions/undead_debug.txt b/world/map/npc/functions/undead_debug.txt
deleted file mode 100644
index 15e3bcd9..00000000
--- a/world/map/npc/functions/undead_debug.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-// Debug Crypts Battle
-
-function|script|UndeadDebug
-{
- goto L_Main;
-
-L_Main:
- if (@undeaddebug == 3)
- goto L_UndeadDebugThree;
- if (@undeaddebug == 4)
- goto L_UndeadDebugFour;
- if (@undeaddebug == 5)
- goto L_UndeadDebugFive;
- goto L_Close;
-
-L_UndeadDebugThree:
- mes "Reset your self to the various states.";
- mes "Options Limited to Time and Place.";
- menu
- "Get Ritual Items.", L_KrukanItems,
- "Nevermind.", L_Close;
-
-L_UndeadDebugFour:
- mes "Reset your self to the various states.";
- mes "Options Limited to Time and Place.";
- menu
- "Get Ritual Items.", L_RazhaItems,
- "Nevermind.", L_Close;
-
-L_UndeadDebugFive:
- mes "Reset your self to the various states.";
- mes "Options Limited to Time and Place.";
- menu
- "Get Ritual Items.", L_TeroganItems,
- "Nevermind.", L_Close;
-
-L_InventoryNoSpace:
- mes "\"Drop some weight then come back.\"";
- goto L_Close;
-
-L_KrukanItems:
- if ((checkweight("Soul", 1) == 0)
- || (checkweight("Skull", 5) == 0)
- || (checkweight("DarkCrystal", 5) == 0)
- || (checkweight("Bone", 5) == 0)
- || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- getitem "Soul", 1;
- getitem "Skull", 5;
- getitem "DarkCrystal", 5;
- getitem "Bone", 5;
- goto L_Main;
-
-L_RazhaItems:
- if ((checkweight("Soul", 3) == 0)
- || (checkweight("DiseasedHeart", 5) == 0)
- || (checkweight("UndeadEye", 5) == 0)
- || (checkweight("UndeadEar", 5) == 0)
- || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- getitem "Soul", 3;
- getitem "DiseasedHeart", 5;
- getitem "UndeadEye", 5;
- getitem "UndeadEar", 5;
- goto L_Main;
-
-L_TeroganItems:
- if ((checkweight("Soul", 5) == 0)
- || (checkweight("RottenRags", 5) == 0)
- || (checkweight("UndeadEye", 5) == 0)
- || (checkweight("UndeadEar", 5) == 0)
- || (@inventorylist_count == 100))
- goto L_InventoryNoSpace;
- getitem "Soul", 5;
- getitem "RottenRags", 5;
- getitem "UndeadEye", 5;
- getitem "UndeadEar", 5;
- goto L_Main;
-
-L_Close:
- close2;
- return;
-}
-
-// Debug for Krukan
-027-3,84,89,0|script|UndeadDebug3|155
-{
- set @undeaddebug, 3;
- callfunc "UndeadDebug";
- end;
-OnInit:
- if (!debug)
- disablenpc "UndeadDebug3";
- end;
-}
-
-// Debug for Razha
-027-4,76,79,0|script|UndeadDebug4|155
-{
- set @undeaddebug, 4;
- callfunc "UndeadDebug";
- end;
-OnInit:
- if (!debug)
- disablenpc "UndeadDebug4";
- end;
-}
-
-// Debug for Terogan
-027-5,72,26,0|script|UndeadDebug5|155
-{
- set @undeaddebug, 5;
- callfunc "UndeadDebug";
- end;
-OnInit:
- if (!debug)
- disablenpc "UndeadDebug5";
- end;
-}
diff --git a/world/map/npc/functions/water_bottle.txt b/world/map/npc/functions/water_bottle.txt
deleted file mode 100644
index e5f80766..00000000
--- a/world/map/npc/functions/water_bottle.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-// Fills empty bottles with water
-
-function|script|WaterBottle
-{
- set @COST_PER_BOTTLE, 150;
-
- mes "How many empty bottles do you want to fill with water? It costs " + @COST_PER_BOTTLE + "gp per bottle.";
- input @count;
-
- if (@count == 0)
- goto L_Close;
- set @cost, @count * @COST_PER_BOTTLE;
- set @empty, countitem("EmptyBottle");
-
- if (@empty < @count)
- goto L_NotEnoughBottles;
- if (Zeny < @cost)
- goto L_NotEnoughMoney;
- getinventorylist;
- if (@inventorylist_count == 100
- && countitem("BottleOfWater") == 0
- && @empty > @count)
- goto L_NotEnoughSlots;
-
- set Zeny, Zeny - @cost;
- delitem "EmptyBottle", @count;
- getitem "BottleOfWater", @count;
- goto L_Close;
-
-L_NotEnoughBottles:
- mes "You don't have that many empty bottles!";
- goto L_Close;
-
-L_NotEnoughMoney:
- mes "You don't have enough gp! You need " + @cost + "gp.";
- goto L_Close;
-
-L_NotEnoughSlots:
- mes "You don't have room for these bottles!";
- goto L_Close;
-
-L_Close:
- close2;
- return;
-}
diff --git a/world/map/npc/items/brawling_item.txt b/world/map/npc/items/brawling_item.txt
deleted file mode 100644
index 097de378..00000000
--- a/world/map/npc/items/brawling_item.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// Items which can only be used while unarmed
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in. This is passed automagically when called in an equip script.
-
-function|script|BrawlingItem
-{
- if (getequipid(equip_hand1) == -1)
- goto L_Return;
-
- message strcharinfo(0), "This item's curse does not allow it to be used with weapons equipped.";
-
- // This is for debug
- if (getgmlevel() >= 60)
- bonus bAgi, -7;
- if (getgmlevel() >= 60)
- goto L_Return;
-
- callfunc "UnequipLater";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/check_wand.txt b/world/map/npc/items/check_wand.txt
deleted file mode 100644
index 93993c53..00000000
--- a/world/map/npc/items/check_wand.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-// Wands
-// Author: Wushin
diff --git a/world/map/npc/items/drugs.txt b/world/map/npc/items/drugs.txt
deleted file mode 100644
index 9c724872..00000000
--- a/world/map/npc/items/drugs.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// ------------------------------------------------------------
-// Added as a joke but could be used seriously.
-// ------------------------------------------------------------
-
-function|script|DrugItem
-{
- if (strcharinfo(0) == "kytty") goto L_kytty;
- //message strcharinfo(0), "TMW does not endorse nor condone with the use of this item in real life, nor with its implications.";
- goto L_Return;
-
-L_kytty:
- message strcharinfo(0), "Stop smoking, kytty! %%e";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/launcher_ammo.txt b/world/map/npc/items/launcher_ammo.txt
deleted file mode 100644
index 1582f8a4..00000000
--- a/world/map/npc/items/launcher_ammo.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-// ------------------------------------------------------------
-// Ammo Needs to know Launcher and vice versa.
-//
-// Behavior:
-// - If only one is equipped, do nothing
-// - If incompatible launcher and ammo are equipped, unequip the ammo
-//
-// Variables passed to these scripts:
-//
-// @LauncherType, @AmmoType
-//
-// ------------------------------------------------------------
-
-function|script|CheckLauncher
-{
- if (getequipid(equip_arrow) == -1)
- set @LauncherType, 0;
- return;
-}
-
-function|script|CheckAmmo
-{
- if ((@LauncherType == @AmmoType) || (!@LauncherType))
- goto L_Return;
-
- callfunc "UnequipLater";
- goto L_Return;
-
-L_Return:
- set @LauncherType, 0;
- set @AmmoType, 0;
- return;
-}
diff --git a/world/map/npc/items/love_potion.txt b/world/map/npc/items/love_potion.txt
deleted file mode 100644
index a0ecc150..00000000
--- a/world/map/npc/items/love_potion.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-function|script|LovePotion
-{
- goto L_CalcHair;
-
-L_CalcHair:
- if (rand(80) < 40) goto L_DyeHair;
- goto L_CalcSwap;
-
-L_CalcSwap:
- if (rand(80) < 20) goto L_GenderSwap;
- goto L_CalcPinkies;
-
-L_CalcPinkies:
- if (rand(80) < 60) goto L_PinkieSwarm;
- goto L_CalcCupid;
-
-L_CalcCupid:
- if (rand(80) < 35) goto L_CupidStomp;
- goto L_Finish;
-
-L_Finish:
- message strcharinfo(0), "You suddenly feel a urge to stare at kytty. Weird potion.";
- return;
-
-////
-L_DyeHair:
- // 2 = Dark Red; 7 = Light Red; 11 = Pink
- setlook LOOK_HAIR_COLOR, (11 + (15 * (Class - 1)));
- message strcharinfo(0), "The power of love is so strong that your hair just got a lot more pink!";
- goto L_CalcSwap;
-
-L_GenderSwap:
- set Sex, if_then_else(Sex == 3, rand(0, 1), if_then_else(rand(0,1), 3, !Sex));
- message strcharinfo(0), "Uh? I'm not feeling so well... Maybe I wasn't cute enough?";
- goto L_CalcPinkies;
-
-L_PinkieSwarm:
- areamonster getmap(), getx()-10, gety()-10, getx()+10, gety()+10, "", 1018, 12;
- message strcharinfo(0), "Ooooh, pinkies, so lovely!";
- goto L_CalcCupid;
-
-L_CupidStomp:
- set @python[0], BL_ID;
- misceffect 69, @python[0];
- addtimer 380, "python-foot::OnKill";
- message strcharinfo(0), "You are smelling so strongly like love, that Cupid decided to see what was wrong...";
- goto L_Finish;
-
-}
diff --git a/world/map/npc/items/manapearl_item.txt b/world/map/npc/items/manapearl_item.txt
deleted file mode 100644
index 9c1f1c04..00000000
--- a/world/map/npc/items/manapearl_item.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// The Mana Pearl can only be used when player has a natural mana flow:
-// "Magic flows naturally from you, readily and with ease. Your understanding of what you can currently control at present is flawless, far beyond your requirements to cast magic at this level.";
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in. This is passed automagically when called in an equip script.
-
-function|script|ManaPearlItem
-{
-
- set @debug_mask, 65535;
- set @debug_shift, 0;
- set @mexp, ((MAGIC_EXPERIENCE & @debug_mask) >> @debug_shift);
-
- set @manapearl_mexp_needed, 5404;
-
- if ( @mexp >= @manapearl_mexp_needed )
- goto L_Return;
-
- message strcharinfo(0), "You are not expirienced enough to keep up the mana flow that is needed to stay in resonance with the Mana Pearl.";
-
- // This is for debug
- if (debug)
- goto L_Return;
-
- callfunc "UnequipLater";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/max_stat.txt b/world/map/npc/items/max_stat.txt
deleted file mode 100644
index a8c72190..00000000
--- a/world/map/npc/items/max_stat.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// ------------------------------------------------------------
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in.
-// This is passed automagically when called in an equip script.
-// @bStat The stat to check against.
-// Usually one of: bStr, bAgi, bVit, bInt, bDex, bLuk;
-// but can be anything that works with .
-// @maxbStatVal The minimum stat value to accept this item.
-// ------------------------------------------------------------
-
-function|script|RequireMaxStat
-{
- set @bStatVal, @bStat;
- // If the requirement isn't met, we set an unequip trigger.
- // The item is now removed.
- if (@bStat > @maxbStatVal)
- goto L_Unequip;
- return;
-
-L_Unequip:
- callfunc "UnequipLater";
- return;
-}
diff --git a/world/map/npc/items/mirror.txt b/world/map/npc/items/mirror.txt
deleted file mode 100644
index c5dc5525..00000000
--- a/world/map/npc/items/mirror.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-function|script|useMirror
-{
- callfunc "getHeadStyles";
- goto L_Rand;
-
-L_Rand:
- set @mirror_rnd, @mirror_rnd + 1;
- set @style, rand(1,getarraysize(@HairStyles$));
- set @color, rand((15 * (Class - 1)),((15 * (Class - 1)) + (getarraysize(@HairColors$) - 1)));
- if(((getlook(LOOK_HAIR_STYLE) == @style) || (getlook(LOOK_HAIR_COLOR) == @color)) && @mirror_rnd < 15)
- goto L_Rand;
- if(@fixedMirror)
- setlook LOOK_HAIR_STYLE, @style;
- setlook LOOK_HAIR_COLOR, @color;
- //if(!@fixedMirror) getitem "SilverMirror", 1; <== this can be used in the future to have a portable hair color changer (like scissors but for the color)
- set @fixedMirror, 0;
- set @mirror_rnd, 0;
- return;
-}
diff --git a/world/map/npc/items/nobow_item.txt b/world/map/npc/items/nobow_item.txt
deleted file mode 100644
index a518fdf4..00000000
--- a/world/map/npc/items/nobow_item.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-// Cannot have a (power) bow in inventory to equip
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in. This is passed automagically when called in an equip script.
-
-function|script|NoBowItem
-{
- // Developers are always allowed to use this item
- if (getgmlevel() >= G_DEV)
- goto L_Return;
-
- // Bows which are not allowed
- if (countitem("BansheeBow") > 0)
- goto L_Abort;
- if (countitem("DesertBow") > 0)
- goto L_Abort;
- if (countitem("ForestBow") > 0)
- goto L_Abort;
- // Don't care with Bow/ShortBow/slings and darts
-
- goto L_Return;
-
-L_Abort:
- message strcharinfo(0), "This item is too cumbersome to use and could potentially break your valuable bow by accident. So you give up.";
- callfunc "UnequipLater";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/pickled_beets.txt b/world/map/npc/items/pickled_beets.txt
deleted file mode 100644
index f05b73ca..00000000
--- a/world/map/npc/items/pickled_beets.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-function|script|usePickledBeets
-{
- heal 50, 0, 1;
- if (Class == 1)
- setlook LOOK_HAIR_COLOR, HC_PURPLE;
- elif (Class == 2)
- setlook LOOK_HAIR_COLOR, 18;
- // add more here for races that have purple
-
- if ($DOOMSDAY == 3)
- addtimer 10, "#TMWFinalExam::OnPickledBeets";
- return;
-}
diff --git a/world/map/npc/items/purification_potion.txt b/world/map/npc/items/purification_potion.txt
deleted file mode 100644
index 67e8321b..00000000
--- a/world/map/npc/items/purification_potion.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-// This is the function to use the PurificationPotion
-
-function|script|usePurificationPotion
-{
- if (isat("011-1", 88,67))
- goto L_Wyara_Pond;
- goto L_NoUse;
-
-L_NoUse:
- message strcharinfo(0), "You don't know what to do with this.";
- getitem "PurificationPotion", 1;
- return;
-
-L_Wyara_Pond:
- set @Q_MASK, NIBBLE_2_MASK;
- set @Q_SHIFT, NIBBLE_2_SHIFT;
- set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
-
- if (@Q_status < 1)
- goto L_NoUse;
- if (@Q_status <= 2)
- set @Q_status, @Q_status + 1;
-
- message strcharinfo(0), "You pour the potion into the pond.";
-
- set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
- return;
-}
diff --git a/world/map/npc/items/require_stat.txt b/world/map/npc/items/require_stat.txt
deleted file mode 100644
index 87ecf22a..00000000
--- a/world/map/npc/items/require_stat.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-// ------------------------------------------------------------
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in.
-// This is passed automagically when called in an equip script.
-// @bStat The stat to check against.
-// Usually one of: bStr, bAgi, bVit, bInt, bDex, bLuk;
-// but can be anything that works with .
-// @minbStatVal The minimum stat value to accept this item.
-// ------------------------------------------------------------
-
-function|script|RequireStat
-{
- set @bStatVal, @bStat;
- // If the requirement isn't met, we set an unequip trigger.
- // The item is now removed.
- if (@bStat < @minbStatVal)
- goto L_Unequip;
- return;
-
-L_Unequip:
- callfunc "UnequipLater";
- return;
-}
diff --git a/world/map/npc/items/restricted_item.txt b/world/map/npc/items/restricted_item.txt
deleted file mode 100644
index 9bd1c3d5..00000000
--- a/world/map/npc/items/restricted_item.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-// ------------------------------------------------------------
-// Identical to unreleased_item except for the message.
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in. This is passed automagically when called in an equip script.
-// @itemId The ID of the item currently being equipped. This is passed automagically when called in an equip script.
-// @minLvl The minimum required GM level to equip this item. When not set or set to 0, it is set to 60 as a default.
-// ------------------------------------------------------------
-
-function|script|RestrictedItem
-{
- if (!@minLvl) set @minLvl, 60;
- if (debug || getgmlevel() >= @minLvl) goto L_Return; // If the active character is staff, do nothing.
- message strcharinfo(0), "This item repells you with extreme force. It does not seem to be meant for you.";
- callfunc "UnequipLater";
- if (getgmlevel()) goto L_Return;
- wgm "Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
- gmlog "Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/rubber_bat.txt b/world/map/npc/items/rubber_bat.txt
deleted file mode 100644
index 9eb3725d..00000000
--- a/world/map/npc/items/rubber_bat.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-function|script|rubberBat
-{
- if (gettimetick(2) - @lastbat < 2) goto L_Return;
- misceffect 403;
- set @lastbat, gettimetick(2);
- goto L_Return;
-
-L_Return:
- getitem "RubberBat", 1;
- debugmes "Check";
- if ($DOOMSDAY == 3)
- addtimer 10, "#TMWFinalExam::OnRubberBat";
- return;
-}
diff --git a/world/map/npc/items/scentedcandle.txt b/world/map/npc/items/scentedcandle.txt
deleted file mode 100644
index ba29f3cf..00000000
--- a/world/map/npc/items/scentedcandle.txt
+++ /dev/null
@@ -1,31 +0,0 @@
--|script|ScentedCandle|32767
-{
- end;
-
-OnEquip:
- if (@scented_candle == 1) end;
- goto L_Check;
-
-OnCheck:
- if (getequipid(equip_head) != 5229) goto L_Removed;
- goto L_Check;
-
-L_Check:
- set @scented_candle, 1;
- foreach 2, getmap(), (POS_X - 12), (POS_Y - 12), (POS_X + 12), (POS_Y + 12), strnpcinfo(0) + "::OnMob";
- addtimer rand(2000), strnpcinfo(0) + "::OnCheck";
- end;
-
-OnMob:
- if (target(BL_ID, @target_id, 0x20) != 0x20) end; // line of sight
- if (get(Class, @target_id) != 1131 && // mana bug
- get(Class, @target_id) != 1055 && // butterfly
- get(Class, @target_id) != 1049 && // bee
- get(Class, @target_id) != 1088) end; // hyvern
- aggravate @target_id;
- end;
-
-L_Removed:
- set @scented_candle, 0;
- end;
-}
diff --git a/world/map/npc/items/scissors.txt b/world/map/npc/items/scissors.txt
deleted file mode 100644
index fbf3b344..00000000
--- a/world/map/npc/items/scissors.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-function|script|useScissors
-{
- getitem "Scissors", 1;
- if (rand(3))
- goto L_Change;
- message strcharinfo(0), "Whoops!";
- heal -20 - rand(Hp >> 1), 0;
- return;
-
-L_Change:
- callfunc "getHeadStyles";
- setlook LOOK_HAIR_STYLE, rand(1,getarraysize(@HairStyles$));
- return;
-}
diff --git a/world/map/npc/items/shock_sweet.txt b/world/map/npc/items/shock_sweet.txt
deleted file mode 100644
index dc61790d..00000000
--- a/world/map/npc/items/shock_sweet.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-function|script|useShockSweet
-{
- if (getmap() == "099-5")
- addtimer 0, "Xakelbael the Dark#0::OnAdjustSweet";
- if (rand(5))
- goto L_Change;
- message strcharinfo(0), "Yuck, this tastes like earwax!";
- heal -20 - (Hp >> 2), 0;
- return;
-
-L_Change:
- setlook LOOK_HAIR_COLOR, (HC_WHITE - Class) + 1;
- message strcharinfo(0), "Gah! That was some strong stuff!";
- sc_start sc_poison, 1, 20;
- misceffect 15, strcharinfo(0);
- return;
-}
diff --git a/world/map/npc/items/tmwgift.txt b/world/map/npc/items/tmwgift.txt
deleted file mode 100644
index ebc3f7b6..00000000
--- a/world/map/npc/items/tmwgift.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-function|script|MaybeAnnounceBirthday
-{
- if (gettime(7) == 2019 && gettime(6) == 4 && gettime(5) == 11)
- goto L_B15;
- return;
-
-L_B15:
- announce "It is TMW's 15th Anniversary! Log out and log back in to [@@https://themanaworld.org/15|receive your present@@]", 0;
- return;
-}
-
-function|script|MaybeGiveBirthday
-{
- if ((gettime(7) == 2019) && (gettime(6) == 4) &&
- ((gettime(5) == 11) || (gettime(5) == 12) || (gettime(5) == 13)) &&
- #TMW15 == 0)
- goto L_Give;
- return;
-
-L_Give:
- set #TMW15, gettimetick(2);
- getitem "TMWBirthdayGift", 1;
- message strcharinfo(0), "Server : ##BIt's TMW's 15th Anniversary! You have [@@https://themanaworld.org/15|received a present@@]!";
- return;
-}
-
-function|script|TMWBirthdayGift
-{
- setarray .@gifts$, "RedPresentHat", "GreenPresentHat", "BluePresentHat", "YellowPresentHat";
- getitem .@gifts$[rand(4)], 1;
- return;
-}
diff --git a/world/map/npc/items/unequipcb.txt b/world/map/npc/items/unequipcb.txt
deleted file mode 100644
index 649b2912..00000000
--- a/world/map/npc/items/unequipcb.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-// Note: the client (I think) has a display bug if this is called
-// during the intial connection's equip hook
--|script|UnequipCB|32767
-{
- end;
-
-OnUnequip:
- unequipbyid (@unequip_slot - 1);
- set @unequip_slot, 0;
- end;
-}
-
-// Paired with unequipcb
-function|script|UnequipLater
-{
- // if there are multiple items that want to be removed,
- // only schedule one timer - scripts will be called again
- if (@unequip_slot)
- goto L_Return;
-
- set @unequip_slot, (@slotId + 1);
- addtimer 0, "UnequipCB::OnUnequip";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/unreleased_item.txt b/world/map/npc/items/unreleased_item.txt
deleted file mode 100644
index d8bb9e07..00000000
--- a/world/map/npc/items/unreleased_item.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-// ------------------------------------------------------------
-// Variables passed to this script:
-// @slotId The slot in which the item would have been equipped in. This is passed automagically when called in an equip script.
-// ------------------------------------------------------------
-
-function|script|UnreleasedItem
-{
- // If the server allows equipping unreleased items or if the active character is staff, do nothing.
- if (debug || getgmlevel())
- goto L_Return;
- message strcharinfo(0), "You have difficulties equipping this item, as if it is not yet fully in this world.";
- callfunc "UnequipLater";
- goto L_Return;
-
-L_Return:
- return;
-}
diff --git a/world/map/npc/items/warpTowels.txt b/world/map/npc/items/warpTowels.txt
deleted file mode 100644
index b6faaec3..00000000
--- a/world/map/npc/items/warpTowels.txt
+++ /dev/null
@@ -1,148 +0,0 @@
-// See #TravelConfig
-function|script|WarpTowel
-{
- set @seconds, TowelLastUsed - (gettimetick(2) - 1200);
- if (@seconds > 0 && GM < 1)
- goto L_DontPanic;
- if (isin("botcheck",25,27,51,47))
- goto L_Prison;
- if (getmapflag(getmap(), MF_NOSAVE) || getmapflag(getmap(), MF_NOTELEPORT) || getmapflag(getmap(), MF_NOWARP) || isin("009-7",$@fightclub_x1,$@fightclub_y1,$@fightclub_x2,$@fightclub_y2))
- goto L_Forbid;
-
- if (@warpTowelName$ == "HitchhikersTowel")
- goto L_Save;
- if(@warpTowelName$ == "WhiteHitchhikersTowel")
- goto L_White;
- if(@warpTowelName$ == "RedHitchhikersTowel")
- goto L_Red;
- if(@warpTowelName$ == "GreenHitchhikersTowel")
- goto L_Green;
- if(@warpTowelName$ == "BlueHitchhikersTowel")
- goto L_Blue;
- if(@warpTowelName$ == "YellowHitchhikersTowel")
- goto L_Yellow;
- if(@warpTowelName$ == "PurpleHitchhikersTowel")
- goto L_Purple;
- if(@warpTowelName$ == "OrangeHitchhikersTowel")
- goto L_Orange;
- if(@warpTowelName$ == "PinkHitchhikersTowel")
- goto L_Pink;
- if(@warpTowelName$ == "TealHitchhikersTowel")
- goto L_Teal;
- if(@warpTowelName$ == "LimeHitchhikersTowel")
- goto L_Lime;
- goto L_Save;
-
-L_White:
- // Koga
- set @NextLocationMap$, "035-2";
- set @NextLocationX, 20;
- set @NextLocationY, 21;
- goto L_WarpPlayer;
-
-L_Red:
- // Barbarians
- set @NextLocationMap$, "033-1";
- set @NextLocationX, 66;
- set @NextLocationY, 33;
- goto L_WarpPlayer;
-
-L_Green:
- // Candor
- set @NextLocationMap$, "029-1";
- set @NextLocationX, 69;
- set @NextLocationY, 69;
- goto L_WarpPlayer;
-
-L_Blue:
- // Blue Sages
- set @NextLocationMap$, "048-2";
- set @NextLocationX, 26;
- set @NextLocationY, 47;
- goto L_WarpPlayer;
-
-L_Yellow:
- // Tulimshar Mines
- set @NextLocationMap$, "002-1";
- set @NextLocationX, 113;
- set @NextLocationY, 117;
- goto L_WarpPlayer;
-
-L_Purple:
- // Dimonds Inn
- set @NextLocationMap$, "010-1";
- set @NextLocationX, 27;
- set @NextLocationY, 97;
- goto L_WarpPlayer;
-
-L_Orange:
- // Graveyard
- set @NextLocationMap$, "027-1";
- set @NextLocationX, 70;
- set @NextLocationY, 100;
- goto L_WarpPlayer;
-
-L_Pink:
- // Terranite Cave
- set @NextLocationMap$, "012-3";
- set @NextLocationX, 448;
- set @NextLocationY, 66;
- goto L_WarpPlayer;
-
-L_Teal:
- // Mana Seed
- set @NextLocationMap$, "012-3";
- set @NextLocationX, 64;
- set @NextLocationY, 130;
- goto L_WarpPlayer;
-
-L_Lime:
- // Pachua
- set @NextLocationMap$, "006-1";
- set @NextLocationX, 28;
- set @NextLocationY, 97;
- callfunc "MiriamCheat";
- goto L_WarpPlayer;
-
-L_Save:
- // Soul Menhir
- set @NextLocationMap$, getsavepoint(0);
- set @NextLocationX, getsavepoint(1);
- set @NextLocationY, getsavepoint(2);
- goto L_WarpPlayer;
-
-L_WarpPlayer:
- set TowelLastUsed, gettimetick(2);
- warp @NextLocationMap$,@NextLocationX,@NextLocationY;
- goto L_BreakChance;
-
-L_BreakChance:
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- goto L_End;
-
-L_Forbid:
- message strcharinfo(0), "Towel : This area is protected by a force that doesn't tolerate the power of the Towel.";
- goto L_Keep;
-
-L_Prison:
- message strcharinfo(0), "Towel : You must be warped by a GM to leave the botcheck area.";
- goto L_Keep;
-
-L_DontPanic:
- callfunc "HumanTime";
- message strcharinfo(0), "Towel : Your towel is still too low on power to jump again. Try again in ##B"+ @time$ + "##b.";
- goto L_Keep;
-
-L_Keep:
- getitem @warpTowelName$, 1;
- goto L_End;
-
-L_End:
- set @NextLocationMap$, "";
- set @NextLocationX, 0;
- set @NextLocationY, 0;
- set @warpTowelName$, "";
- return;
-}
diff --git a/world/map/npc/magic/README.md b/world/map/npc/magic/README.md
deleted file mode 100644
index 57ab5131..00000000
--- a/world/map/npc/magic/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-- [ ] check the new builtins and make sure they work as intended
- - [ ] `puppet`
- - [ ] check what happens when making a puppet whose name already exist (maybe it replaces?)
- - [ ] `destroy`
- - [ ] `registercmd`
- - [ ] check what happens when registering a command that was already registered
- - [ ] `target`
- - [ ] `get`
- - [ ] the new `set`
- - [ ] `min`
- - [ ] `max`
- - [ ] `pow`
- - [ ] `sqrt`
- - [ ] `cbrt`
- - [ ] `elttype`
- - [ ] `eltlvl`
- - [ ] `injure`
- - [ ] `elif`
- - [ ] `else`
- - [ ] `getnpcid`
- - [ ] `overrideattack`
- - [ ] `summon`
- - [ ] `addnpctimer`
- - [ ] `explode`
- - [ ] `foreach`
- - [ ] modified `areatimer`
- - [ ] `aggravate`
- - [ ] `getdir`
- - [ ] `distance`
- - [ ] `if_then_else`
-
- - I do not like `void`, feels like an ugly workaround; we should make `puppet` and `call` work in both function context and statement context
-
----
-- [ ] test the spells
- - [ ] test with no target
- - [ ] test with a npc target
- - [ ] random npc not part of any quest
- - [ ] injured mouboo
- - [ ] also test on a **player** with the name `Mouboo` or `mouboo`
- - [ ] druid tree
- - [ ] test with a mob target
- - [ ] mob with clear path (walkable)
- - [ ] mob with no clear path (unwalkable, blocked by collision)
- - [ ] mob out of attack range
- - [ ] test with a player target
- - [ ] both the caster and the target have pvp disabled
- - [ ] both the caster and the target have pvp enabled
- - [ ] the caster has pvp enabled and the target has pvp disabled
- - [ ] the caster has pvp disabled and the target has pvp enabled
- - [ ] test with the spouse as target
-
----
-- [ ] Once everything is done, remove this file
diff --git a/world/map/npc/magic/_import.txt b/world/map/npc/magic/_import.txt
deleted file mode 100644
index a106c9f7..00000000
--- a/world/map/npc/magic/_import.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-npc: npc/magic/_procedures.txt
-npc: npc/magic/level0-antiprotect.txt
-npc: npc/magic/level0-discharge.txt
-npc: npc/magic/level0-reapercry.txt
-npc: npc/magic/level0-wand.txt
-npc: npc/magic/level1-aggravate.txt
-npc: npc/magic/level1-experience.txt
-npc: npc/magic/level1-lesser-heal.txt
-npc: npc/magic/level1-transmute-wood.txt
-npc: npc/magic/level1-make-sulphur.txt
-npc: npc/magic/level1-flare-dart.txt
-npc: npc/magic/level1-magic-blade.txt
-npc: npc/magic/level1-grow-mauve.txt
-npc: npc/magic/level1-grow-alizarin.txt
-npc: npc/magic/level1-grow-gamboge.txt
-npc: npc/magic/level1-grow-cobalt.txt
-npc: npc/magic/level1-summon-maggots.txt
-npc: npc/magic/level1-sense-spouse.txt
-npc: npc/magic/level1-detect-magic.txt
-npc: npc/magic/level2-arrow-hail.txt
-npc: npc/magic/level2-make-arrows.txt
-npc: npc/magic/level2-make-iron-powder.txt
-npc: npc/magic/level2-magic-knuckles.txt
-npc: npc/magic/level2-summon-snakes.txt
-npc: npc/magic/level2-summon-wickedmushroom.txt
-npc: npc/magic/level2-summon-spiky-mushroom.txt
-npc: npc/magic/level2-summon-fluffies.txt
-npc: npc/magic/level2-summon-mouboo.txt
-npc: npc/magic/level2-summon-pinkie.txt
-npc: npc/magic/level2-toxic-dart.txt
-npc: npc/magic/level2-enchant-lifestone.txt
-npc: npc/magic/level2-flying-backpack.txt
-npc: npc/magic/level2-protect.txt
-npc: npc/magic/level2-barrier.txt
-npc: npc/magic/level2-hide.txt
-npc: npc/magic/level2-happy-curse.txt
-npc: npc/magic/level2-detect-players.txt
-npc: npc/magic/level2-shear.txt
-npc: npc/magic/level2-lightning-strike.txt
-npc: npc/magic/level2-rain.txt
-npc: npc/magic/level2-lay-on-hands.txt
-npc: npc/magic/level2-make-short-tanktop.txt
-npc: npc/magic/level2-make-tanktop.txt
-npc: npc/magic/level2-make-shirt.txt
-npc: npc/magic/level3-necromancy.txt
-npc: npc/magic/event-alonsoalonsy.txt
-npc: npc/magic/event-summon-managuardian.txt
-npc: npc/magic/event-summon-manatyrant.txt
diff --git a/world/map/npc/magic/_procedures.txt b/world/map/npc/magic/_procedures.txt
deleted file mode 100644
index 66f356c7..00000000
--- a/world/map/npc/magic/_procedures.txt
+++ /dev/null
@@ -1,242 +0,0 @@
-function|script|magic_register
-{
- //debugmes ">> Register " + .invocation$ + " @ " + strnpcinfo(0);
- set .@ext$, if_then_else(getarg(0,"") != "", "::"+getarg(0), "");
- registercmd .invocation$, strnpcinfo(0) + .@ext$; // register the spell
- set .index, $@magic_index;
- set $@magic_index, $@magic_index + 1;
- return;
-}
-
-// this can only be done with a npc so...
--|script|Magic Timer|32767
-{
- end;
-
-OnLogin:
- set @_M_BLOCK, 2;
- //if (MAGIC_EXPERIENCE < 0)
- // set MAGIC_EXPERIENCE, 0; // bug fix
- // ^ XXX: check if negative MAGIC_EXPERIENCE is desirable
- addtimer 10000, "Magic Timer::OnClear";
- end;
-
-OnClear:
- set @_M_BLOCK, 0;
- end;
-}
-
-// this function is call()-only
-function|script|magic_checks
-{
- set .@flags, getarg(0);
- set .@nonmagic, .@flags & (1<<0);
-
- if (GM >= 50) goto L_Return; // event managers have no restrictions
- if(HIDDEN) goto L_Hidden; // can not cast with @hide
- if(@_M_BLOCK == 2) goto L_Login; // login warmup
- if(@_M_BLOCK) goto L_Blocked; // check if last debuff ended
- if(Hp < 1) goto L_Dead; // can not cast when dead
- if (MATK1 < 1 && .@nonmagic < 1) goto L_Greybar; // can not cast with a grey mana bar
- if ($@xmas_time && $@xmas_time != $@xmas_reward_time) goto L_Christmas2020;
- return 0;
-
-L_Hidden:
- smsg SMSG_FAILURE, "Magic: Impossible to cast while hidden!";
- return 1;
-
-L_Blocked:
- smsg SMSG_FAILURE, "Magic: Impossible to cast while a cooldown is in effect. Please wait.";
- return 2;
-
-L_Dead:
- smsg SMSG_FAILURE, "Magic: Impossible to cast while dead!";
- return 3;
-
-L_Greybar:
- smsg SMSG_FAILURE, "Magic: Impossible to cast with 0 m.atk. This might happen if your mana bar is grey. Some equipment can reduce your m.atk.";
- return 4;
-
-L_Login:
- smsg SMSG_FAILURE, "Magic: Impossible to cast for 10s after logging in.";
- return 5;
-
-L_Xmas2020:
- smsg SMSG_FAILURE, "Magic: Jack Frost's magical powers prevented your summoning!";
- return 6;
-
-
-L_Christmas2020:
- if (gettime(7) != 2020)
- goto L_Return;
-
- // If it is not Astral nor Dark I don't really care
- if (.school != SKILL_MAGIC_ASTRAL && .school != SKILL_MAGIC_DARK)
- goto L_Return;
-
- // TODO: Not all astral nor all dark magic are summons
- // But I don't have that sort of fine grained control in TMWA
- // So I must whitelist a few invocations and hope they cover everything
- if (.invocation$ == "#asorm" || .invocation$ == "#anwiltyp" || .invocation$ == "#phlex")
- goto L_Return;
-
- // Not in burst time, so not really important?
- // Actually, nevermind, that would not use snowball >__>
-
- // Unallowed in the map
- if (getmap() == "034-1" || getmap() == "033-1" || getmap() == "046-1" || getmap() == "047-1")
- goto L_Xmas2020;
-
- // Other map? Don't care
- goto L_Return;
-
-L_Return:
- return 0;
-}
-
-function|script|elt_damage
-{
- // args are damage, dmgplus(mutation), bonus_elt, malus_elt, effect
- set .@dmg, getarg(0) + rand(getarg(1));
- if(get(ELTTYPE, @target_id) == getarg(3)) // malus
- set .@dmg, .@dmg / 3;
- if(get(ELTTYPE, @target_id) == getarg(2)) // bonus
- set .@dmg, ((get(ELTLVL, @target_id) + 4) * .@dmg) / 4;
- set .@source, .caster;
- if (!.@source) set .@source, getcharid(3);
-
- injure .@source, @target_id, (.@dmg * (100 - get(MDEF1, @target_id))) / 100;
- if (getarg(4) != FX_NONE) misceffect getarg(4), @target_id;
- return;
-}
-
-function|script|melee_damage
-{
- // args are spell power, target id, dmg
- if ((getarg(0) - rand(100)) < (get(BaseLevel, getarg(1)) + get(MDEF1, getarg(1))))
- injure BL_ID, getarg(1), 0;
- else injure BL_ID, getarg(1), (getarg(2) * (100 - get(MDEF1, @target_id))) / 100;
- return;
-}
-
-function|script|magic_create_item
-{
- // FIXME / XXX: IMO, using Luk for this is very bad and unfair
- set .@exp, (MAGIC_EXPERIENCE & (BYTE_0_MASK | BYTE_1_MASK)) >> BYTE_0_SHIFT;
- set .@score, (.@exp + rand(min(@spellpower, ((.@exp / 3) + 1))));
- set @create_params[2], 1; // success flag
- if (.@score >= @create_params[1]) goto L_Perfect;
- set @create_params[2], 0; // success flag
- set .@score, .@score + rand(Luk) + rand(Luk);
- if (.@score < (@create_params[1] / 3)) goto L_Backfire;
- if (.@score < ((@create_params[1] * 2) / 3)) goto L_Iten;
- message strcharinfo(0), "Magic : ##3##BYour spell takes on a mind of its own!";
- if (rand(3) == 1) getitem @create_items$[1], 1; // bad item
- return;
-
-L_Iten:
- if (rand(5) != 2) goto L_Escape;
- message strcharinfo(0), "Magic : ##3##BYour spell solidifies into the shape of a mysterious object!";
- getitem "Iten", 1;
- return;
-
-L_Escape:
- message strcharinfo(0), "Magic : ##3##BYour spell escapes!";
- return;
-
-L_Backfire:
- message strcharinfo(0), "Magic : ##3##BYour spell backfires!";
- if (rand(110) < Luk) heal 0 - ((BaseLevel+1)*(BaseLevel+2)*(rand(28)+3)), 0;
- else heal 0 - (BaseLevel + 1), 0;
- return;
-
-L_Perfect:
- getitem @create_items$[0], @create_params[0]; // good item
- return;
-}
-
-function|script|bit
-{
- //0 name
- //1 mask
- //2 shift
- //3 value
-
- return ((getarg(0) & ~(getarg(1) << getarg(2))) | ((getarg(3) & getarg(1)) << getarg(2)));
-}
-
-function|script|magic_exp
-{
- set @last_index, (MAGIC_EXPERIENCE >> 16) & 0xFF;
- set @last_exp, MAGIC_EXPERIENCE & 0xFFFF;
-
- //debugmes "old spell index: " + @last_index;
- //debugmes "new spell index: " + .index;
-
- if(getskilllv(SKILL_MAGIC) < (.level + 3) && .index != @last_index)
- goto L_Gain;
- //debugmes "same as last spell => don't proceed";
- goto L_Return;
-
-L_Gain:
- if(.exp_gain < 1) goto L_Return; // only the spells that have exp register here. If you
- // remove this line then players can cast a spell with
- // no cost, then a spell with a reagents, then another
- // spell with no costs and still get the exp
- set @new_exp, min(0xFFFF, @last_exp + .exp_gain);
- //debugmes "old magic exp: "+ @last_exp;
- //debugmes "new magic exp: "+ @new_exp;
- set MAGIC_EXPERIENCE, call("bit", MAGIC_EXPERIENCE, 0xFFFF, 0, @new_exp);
- set MAGIC_EXPERIENCE, call("bit", MAGIC_EXPERIENCE, 0xFF, 16, .index);
- goto L_Return;
-
-L_Return:
- return;
-}
-
-function|script|adjust_spellpower
-{
- set @spellpower, MATK1 + getskilllv(SKILL_MAGIC) + getskilllv(.school) + 10;
- if((.school != SKILL_MAGIC_NATURE) && (.school != SKILL_MAGIC_LIFE)) goto L_Return;
- if(@args$ == "" || !@args$ || getpartnerid2() == 0) goto L_Return;
- if(getcharid(3, @args$) < 1 || getpartnerid2() != getcharid(3, @args$) || !(isloggedin(getcharid(3, @args$))))
- goto L_Return;
- //debugmes "You targeted your spouse!";
- // XXX: the spell power increases when the target is the spouse so one could
- // just do #modrilax (spouse) right?
- //
- // ... let's just forget about spouse for now
- goto L_Return;
-
-L_Return:
- return;
-}
-
-function|script|gain_heal_xp
-{
- set .@value, getarg(0);
- set .@gain, getarg(1);
- set .@value_divisor, getarg(2);
- set .@base_xp_factor, getarg(3);
-
- set .@last_heal_xp, ((MAGIC_EXPERIENCE >> 24) & 0xFF);
-
- if ((.@value / .@value_divisor) <= (10 + .@last_heal_xp + rand(.@last_heal_xp + 1) + rand(.@last_heal_xp + 1)))
- goto L_Return;
-
- set .@heal_xp, min(0xFF, .@last_heal_xp + .@gain); // XXX: maybe switch to 7F
-
- getexp (.@base_xp_factor * .@heal_xp), 0;
-
- // FIXME: extract_heal_xp
-
- //debugmes "old heal exp: "+ .@last_heal_xp;
-
- set MAGIC_EXPERIENCE, call("bit", MAGIC_EXPERIENCE, 0xFF, 24, .@heal_xp);
-
- //debugmes "new heal exp: "+ ((MAGIC_EXPERIENCE >> 24) & 0xFF);
- return 1;
-
-L_Return:
- return 0;
-}
diff --git a/world/map/npc/magic/event-alonsoalonsy.txt b/world/map/npc/magic/event-alonsoalonsy.txt
deleted file mode 100644
index 04f5db02..00000000
--- a/world/map/npc/magic/event-alonsoalonsy.txt
+++ /dev/null
@@ -1,137 +0,0 @@
-// #alonsialonso
-// Replacement of Easter 2010 spell
-// Known as "World Shift Spell"
-//
-// Variables:
-// @alonso -> Nods to DoomsdayAct5() that you'll pay in petals
-
--|script|alonsialonso|32767
-{
- if (call("magic_checks", 1)) end;
- callfunc "magic_exp";
-
- // Not during Act 5 of Doomsday
- if ($DOOMSDAY != 3) end;
-
- // Rule 1: Mushroom Spot
- if (isin("057-1", 125, 62, 127, 64))
- goto L_ShroomRule;
-
- // Rule 2: Underworld Chapel
- if (isin("070-1", 134, 30, 134, 30))
- goto L_ChapelRule;
-
- // Rule 3: Tulimshar MMVI
- //if (isin("003-1", 42, 92, 46, 95))
- // goto L_TulimRule;
-
- // General rule: Simulate death
- if (countitem("DarkPetal"))
- goto L_EmulateDeath;
-
- message strcharinfo(0), "You cannot shift worlds at this time.";
- end;
-
-//////////////////////////////////////////////////////
-L_ShroomRule:
- if (!$@halloween_time) end;
- if (!$DOOMSDAY_TWARP) end;
- if ($DOOMSDAY_TJANDE == 1) end;
-
- mes ".:: Eternal Seals Gate ::.";
- mes "";
- mes "One of the many (?) passages leading to the Underworld.";
- mes "During halloween, it is weakened enough to allow beings to cross.";
- mes "Perhaps it could be widened?";
- next;
- menu
- "Leave", L_Close,
- "[Dark Magic] Check Status", L_ShroomCheck,
- "[Dangerous] Try to cross", L_ShroomCross;
-
-L_ShroomCheck:
- if (getskilllv(SKILL_MAGIC_DARK) > 0)
- mes "Status: "+if_then_else($DOOMSDAY_CNT2 < 150,
- "##1Insufficient##0", "##2Sufficient##0")+
- if_then_else(getskilllv(SKILL_MAGIC_DARK) > 1,
- " ("+($DOOMSDAY_CNT2*100/150)+" %)", "");
- else
- mes "Status: ##8Unknown##0";
- close;
-
-L_ShroomCross:
- if ($DOOMSDAY_CNT2 < 150)
- goto L_FailCross;
- if (Hp < 1)
- close;
-
- // Warp you to Underworld
- warp "070-1", 30, 92;
- message strcharinfo(0), "World Shift : Shifted to Underworld (Area 70)";
- misceffect FX_PENTAGRAM_BUILDUP, strcharinfo(0);
- close;
-
-//////////////////////////////////////////////////////
-L_ChapelRule:
- if ($DOOMSDAY_TJANDE == 1) end;
- if (!$@halloween_time) end;
-
- mes ".:: Eternal Seals Gate ::.";
- mes "";
- mes "This chapel is clearly unlocked.";
- mes "The lock seems to have been removed ##BOn purpose, from the outside.##b";
- mes "This is probably where Tormenta lives.";
- next;
- mes "##9Warning: This is the Underworld and it may defy common logic.";
- mes "Are you ready?##0";
- mes "##1Cost: 1x [@@666|@@]";
- next;
- menu
- "Cancel", L_Close,
- "Open the gate!", L_GateCheck;
-
-L_GateCheck:
- if (!(countitem("BlackRose")))
- close;
-
- close2;
- misceffect FX_PENTAGRAM_BUILDUP, strcharinfo(0);
- addtimer 6000, "alonsialonso::OnChapelCross";
- end;
-
-OnChapelCross:
- if (Hp < 1)
- end;
- if (!(countitem("BlackRose")))
- end;
-
- // Payment Execution
- delitem "BlackRose", 1;
- getitem "DarkPetal", 1;
-
- // Warp you to Tulimshar MMVI
- warp "003-1", 142, 22;
- message strcharinfo(0), "World Shift : Shifted to Tulimshar (Area MMVI)";
- misceffect FX_PENTAGRAM_BUILDUP, strcharinfo(0);
- end;
-
-//////////////////////////////////////////////////////
-L_EmulateDeath:
- set @alonso, 1;
- callfunc "DoomsdayAct5";
- end;
-
-L_Close:
- close;
-
-L_FailCross:
- warp "045-1", 105, 125;
- close;
-
-//////////////////////////////////////////////////////
-OnInit:
- set .invocation$, chr(MAGIC_SYMBOL) + "alonsialonso"; // used in npcs that refer to this spell
- registercmd .invocation$, strnpcinfo(0);
- end;
-}
-
diff --git a/world/map/npc/magic/event-summon-managuardian.txt b/world/map/npc/magic/event-summon-managuardian.txt
deleted file mode 100644
index bad1213c..00000000
--- a/world/map/npc/magic/event-summon-managuardian.txt
+++ /dev/null
@@ -1,60 +0,0 @@
--|script|summon-jande|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- // FIXME: Incomplete check, should still work during sieges
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (Sp < 100) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("TinyManaElixir") < 1) end;
- if (!$DOOMSDAY_SUMMON) end;
- if (@ddcooldown > gettimetick(2)) goto L_Cooldown;
- delitem "TinyManaElixir", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 15000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 100;
- misceffect FX_MAGIC_MAGGOT_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .master, BL_ID, .@puppet;
- set .lifetime, (@spellpower*9)+60000, .@puppet;
- set @ddcooldown, gettimetick(2)+70; // This is measured in seconds
- addnpctimer 10000, .@puppet$+"::OnSummon";
- addnpctimer 11000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_MAGGOT_SPAWN;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1138, 2, .lifetime;
- destroy;
-
-L_Cooldown:
- message strcharinfo(0), "This skill is in forced cooldown; Please wait your first summon to expire.";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "jande"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/event-summon-manatyrant.txt b/world/map/npc/magic/event-summon-manatyrant.txt
deleted file mode 100644
index f91b2a87..00000000
--- a/world/map/npc/magic/event-summon-manatyrant.txt
+++ /dev/null
@@ -1,61 +0,0 @@
--|script|summon-tyrant|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if ($DOOMSDAY_SUMMON < 2) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (Sp < 100) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("LargeManaElixir") < 1) end;
- if (@dd4cooldown > gettimetick(2)) goto L_Cooldown;
- delitem "LargeManaElixir", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 15000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 100;
- misceffect FX_MAGIC_MAGGOT_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .master, BL_ID, .@puppet;
- set .lifetime, (@spellpower*9)+150000, .@puppet;
- set @dd4cooldown, gettimetick(2)+160; // This is measured in seconds
- addnpctimer 10000, .@puppet$+"::OnSummon";
- addnpctimer 11000, .@puppet$+"::OnDestroy";
- // Causes caster to heal (I thought in converting MP to HP but meh)
- heal 30000, 0;
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_MAGGOT_SPAWN;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1150, 2, .lifetime;
- destroy;
-
-L_Cooldown:
- message strcharinfo(0), "This skill is in forced cooldown; Please wait your first summon to expire.";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "manatez"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level0-antiprotect.txt b/world/map/npc/magic/level0-antiprotect.txt
deleted file mode 100644
index 129d3c62..00000000
--- a/world/map/npc/magic/level0-antiprotect.txt
+++ /dev/null
@@ -1,23 +0,0 @@
--|script|antiprotect|32767
-{
- if(call("magic_checks", 1)) end;
- callfunc "magic_exp";
-
- if (@antiprotect)
- goto L_Disable;
-
- sc_end SC_PHYS_SHIELD;
- message strcharinfo(0), "Shield : You are now protected against betsanc until you cast detsanc again or logout.";
- set @antiprotect, 1;
- end;
-
-L_Disable:
- message strcharinfo(0), "Shield : You are no longer protected against betsanc.";
- set @antiprotect, 0;
- end;
-
-OnInit:
- set .invocation$, chr(MAGIC_SYMBOL) + "detsanc"; // used in npcs that refer to this spell
- registercmd .invocation$, strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/magic/level0-discharge.txt b/world/map/npc/magic/level0-discharge.txt
deleted file mode 100644
index 7b2cfa8c..00000000
--- a/world/map/npc/magic/level0-discharge.txt
+++ /dev/null
@@ -1,18 +0,0 @@
--|script|discharge spell|32767
-{
- if(call("magic_checks")) end;
- callfunc "magic_exp";
-
- // tell the spells they were discharged
- // XXX: maybe we could make it do area damage when you discharge (release your energy all of a sudden)
- addtimer 0, "::OnDischarge"; // seeks OnDischarge in ALL npcs
- end;
-
-OnInit:
- set .school, SKILL_MAGIC;
- set .invocation$, chr(MAGIC_SYMBOL) + "discharge"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 0;
- set .exp_gain, 0;
- end;
-}
diff --git a/world/map/npc/magic/level0-reapercry.txt b/world/map/npc/magic/level0-reapercry.txt
deleted file mode 100644
index f96c3cea..00000000
--- a/world/map/npc/magic/level0-reapercry.txt
+++ /dev/null
@@ -1,245 +0,0 @@
-// #reapercry
-// Spell to warp to Keshlam Outskirts
-// Variable: @reapercry -> Holds summon state
-//
-// If this was Evol2 engine, I would be able to easily use bitmasks,
-// Having a custom password sequence unique per character.
-// But alas, on TMWA, I can't really abuse player variables.
-// So I allow you to cheat. Or not. Lemme think. Account variable...
-
-// Returns true if player inside candle area
-// call("alacriuspos", bitwise)
-function|script|alacriuspos
-{
- set @alacriusp, 0;
-
- // Left side
- if (1 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_25_53_29_56;
- if (2 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_20_47_22_51;
- if (4 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_22_40_25_43;
- if (8 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_29_40_32_43;
- if (16 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_32_47_35_50;
- if (32 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_25_53_29_56;
- // Left not set
- if (1 == getarg(0))
- goto L_29_40_32_43;
- if (2 == getarg(0))
- goto L_32_47_35_50;
- if (4 == getarg(0))
- goto L_25_53_29_56;
- if (8 == getarg(0))
- goto L_20_47_22_51;
- if (16 == getarg(0))
- goto L_22_40_25_43;
- if (32 == getarg(0))
- goto L_29_40_32_43;
- // Right side
- if (64 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_49_53_53_56;
- if (128 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_43_47_46_51;
- if (256 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_46_40_49_43;
- if (512 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_53_40_56_43;
- if (1024 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_56_47_58_50;
- if (2048 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
- goto L_49_53_53_56;
- // Right side not set
- if (64 == getarg(0))
- goto L_53_40_56_43;
- if (128 == getarg(0))
- goto L_56_47_58_50;
- if (256 == getarg(0))
- goto L_49_53_53_56;
- if (512 == getarg(0))
- goto L_43_47_46_51;
- if (1024 == getarg(0))
- goto L_46_40_49_43;
- if (2048 == getarg(0))
- goto L_53_40_56_43;
-
- // Nope, all wrong
- set @alacriusp, 0;
- return;
-
-// Left Side Labels
-L_29_40_32_43:
- set @alacriusp, isin("027-8", 29, 40, 32, 43);
- return;
-L_22_40_25_43:
- set @alacriusp, isin("027-8", 22, 40, 25, 43);
- return;
-L_20_47_22_51:
- set @alacriusp, isin("027-8", 20, 47, 22, 51);
- return;
-L_25_53_29_56:
- set @alacriusp, isin("027-8", 25, 53, 29, 56);
- return;
-L_32_47_35_50:
- set @alacriusp, isin("027-8", 32, 47, 35, 50);
- return;
-
-// Right Side Labels
-L_53_40_56_43:
- set @alacriusp, isin("027-8", 53, 40, 56, 43);
- return;
-L_46_40_49_43:
- set @alacriusp, isin("027-8", 46, 40, 49, 43);
- return;
-L_43_47_46_51:
- set @alacriusp, isin("027-8", 43, 47, 46, 51);
- return;
-L_49_53_53_56:
- set @alacriusp, isin("027-8", 49, 53, 53, 56);
- return;
-L_56_47_58_50:
- set @alacriusp, isin("027-8", 56, 47, 58, 50);
- return;
-
-}
-
--|script|reapercry|32767
-{
- if(call("magic_checks", 1)) end;
- callfunc "magic_exp";
-
- // Not in Terogan's Room
- if (getmap() != "027-8") end;
-
- // Terogan is asleep
- if (!$@CRYPT_FIGHT3) end;
-
- // No password is set o.o
- if (!#CRYPT_PASSWORD) end;
-
- // Switch the quest state
- if (@reapercry == 0)
- goto L_Check0;
- if (@reapercry == 1)
- goto L_Check1;
- if (@reapercry == 2)
- goto L_Check2;
- if (@reapercry == 3)
- goto L_Check3;
- if (@reapercry == 4)
- goto L_Check4;
- if (@reapercry == 5)
- goto L_Check5;
-
- // Something went wrong!!
- end;
-
-//////////////////////////////////////////////////////
-L_Check0:
- void call("alacriuspos", 1);
- if (@alacriusp) goto L_Exec0;
- void call("alacriuspos", 64);
- if (@alacriusp) goto L_Exec0;
-
- set @reapercry, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- end;
-
-L_Exec0:
- misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
- set @reapercry, 1;
- end;
-
-//////////////////////////////////////////////////////
-L_Check1:
- void call("alacriuspos", 2);
- if (@alacriusp) goto L_Exec1;
- void call("alacriuspos", 128);
- if (@alacriusp) goto L_Exec1;
-
- set @reapercry, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- end;
-
-L_Exec1:
- misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
- set @reapercry, 2;
- end;
-
-//////////////////////////////////////////////////////
-L_Check2:
- void call("alacriuspos", 4);
- if (@alacriusp) goto L_Exec2;
- void call("alacriuspos", 256);
- if (@alacriusp) goto L_Exec2;
-
- set @reapercry, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- end;
-
-L_Exec2:
- misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
- set @reapercry, 3;
- end;
-
-//////////////////////////////////////////////////////
-L_Check3:
- void call("alacriuspos", 8);
- if (@alacriusp) goto L_Exec3;
- void call("alacriuspos", 512);
- if (@alacriusp) goto L_Exec3;
-
- set @reapercry, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- end;
-
-L_Exec3:
- misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
- set @reapercry, 4;
- end;
-
-//////////////////////////////////////////////////////
-L_Check4:
- void call("alacriuspos", 16);
- if (@alacriusp) goto L_Exec4;
- void call("alacriuspos", 1024);
- if (@alacriusp) goto L_Exec4;
-
- set @reapercry, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- end;
-
-L_Exec4:
- misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
- set @reapercry, 5;
- end;
-
-//////////////////////////////////////////////////////
-L_Check5:
- void call("alacriuspos", 32);
- if (@alacriusp) goto L_Exec5;
- void call("alacriuspos", 2048);
- if (@alacriusp) goto L_Exec5;
-
- set @reapercry, 0;
- misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
- end;
-
-L_Exec5:
- // This means cast sequence complete
- // Maybe FX_MAGIC_BLUE_TELEPORT? (iilia's effect)
- set @reapercry, 0;
- getexp 100000, 0;
- misceffect FX_MAGIC_TELEPORT, strcharinfo(0);
- warp "099-7", 75, 36;
- end;
-
-//////////////////////////////////////////////////////
-OnInit:
- set .invocation$, chr(MAGIC_SYMBOL) + "reapercry"; // used in npcs that refer to this spell
- registercmd .invocation$, strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/magic/level0-wand.txt b/world/map/npc/magic/level0-wand.txt
deleted file mode 100644
index 5e29f2ca..00000000
--- a/world/map/npc/magic/level0-wand.txt
+++ /dev/null
@@ -1,84 +0,0 @@
--|script|spell-wand|32767
-{
- if(call("magic_checks")) goto L_Failed;
- set @wandspell[0], 0; // reset state
- callfunc "adjust_spellpower";
- callsub S_Loop; // set up wand
- if(@wandspell[0] < 1) goto L_Failed;
-
- // here we install
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // set the new debuff
- misceffect FX_MAGIC_WAND_CAST, strcharinfo(0);
-
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-L_FreeRecast:
- if (@wandspell[4] > 0)
- addtimer 0, strnpcinfo(0) + "::OnSetRecast";
- end;
-
-OnDischarge:
- if (@wandspell[4] < 1) end;
- set @wandspell[4], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnSetRecast:
- overrideattack @wandspell[3], 3, ATTACK_ICON_GENERIC, @wandspell[0], strnpcinfo(0)+"::OnAttack", @wandspell[4];
- end;
-
-OnAttack:
- if(target(BL_ID, @target_id, 22) != 22) goto L_FreeRecast; // 0x02 | 0x04 | 0x10
- if (Sp < @wandspell[1]) goto L_LowSp;
- set Sp, (Sp - @wandspell[1]);
- void call("elt_damage", @wandspell[2],@wandspell[2],ELT_NEUTRAL,ELT_NEUTRAL,FX_NONE);
- set @wandspell[4], @wandspell[4] - 1;
- goto L_FreeRecast;
-
-S_Loop:
- if ((getequipid(equip_hand1) == .Wands[.@wand_loop]) || (getequipid(equip_hand2) == .Wands[.@wand_loop]))
- goto S_SetWand;
- set .@wand_loop, (.@wand_loop + 1);
- if (.@wand_loop >= getarraysize(.Wands))
- goto S_NoWand;
- goto S_Loop;
-
-S_SetWand:
- set .@pwr, .WandsPwr[.@wand_loop];
- if (QL_MORGAN == 2)
- set QL_MORGAN, 3;
- setarray @wandspell[0],
- .WandsAnim[.@wand_loop], // wand anim/id
- (.@pwr * (BaseLevel / 15) + 2), // wand cost
- (.@pwr * (@spellpower / 3)), // wand dmg
- (((200 - Agi) * 1200) / 200), //delay
- (.@pwr + (@spellpower / 10)); // charges
- return;
-
-S_NoWand:
- message strcharinfo(0), "Wand : ##3##BYou need a wand Equipped!";
- return;
-
-L_LowSp:
- message strcharinfo(0), "Wand : ##3##BOut of Mana";
- end;
-
-L_Failed:
- //misceffect FX_ELECTRICITY_RED, strcharinfo(0); // XXX: do we show an effect on fail?
- //debugmes "cast or attack failed";
- end;
-
-OnInit:
- setarray .Wands[0], 0, 758, 1171;
- setarray .WandsPwr[0], 0, 2, 1;
- setarray .WandsAnim[0], 0, OVERRIDE_WAND_STAFF, OVERRIDE_WAND_WAND;
- set .school, SKILL_MAGIC;
- set .invocation$, chr(MAGIC_SYMBOL) + "confringo"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 0;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-aggravate.txt b/world/map/npc/magic/level1-aggravate.txt
deleted file mode 100644
index c550efc3..00000000
--- a/world/map/npc/magic/level1-aggravate.txt
+++ /dev/null
@@ -1,29 +0,0 @@
--|script|spell-aggravate|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 3) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- set @args$, ""; callfunc "adjust_spellpower"; // we reset @args$ because this spell should not have a target
- set @distance, (2 + (@spellpower / 50));
- set Sp, Sp - 3;
- misceffect FX_MAGIC_AGGRAVATE_CAST, strcharinfo(0);
- callfunc "magic_exp";
- foreach 2, getmap(), (POS_X - @distance), (POS_Y - @distance), (POS_X + @distance), (POS_Y + @distance), strnpcinfo(0) + "::OnMob";
- end;
-
-OnMob:
- if (target(BL_ID, @target_id, 0x20) != 0x20) end; // line of sight
- aggravate @target_id;
- misceffect FX_MAGIC_AGGRAVATE_HIT, @target_id;
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "itenplz"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 0;
- end;
-}
diff --git a/world/map/npc/magic/level1-detect-magic.txt b/world/map/npc/magic/level1-detect-magic.txt
deleted file mode 100644
index e8a588a5..00000000
--- a/world/map/npc/magic/level1-detect-magic.txt
+++ /dev/null
@@ -1,34 +0,0 @@
--|script|detect-magic|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 3) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 6000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 3;
- misceffect FX_MAGIC_DETECT_CAST, strcharinfo(0);
- set .@range, (@spellpower/50)+1;
- foreach 1, getmap(), POS_X - .@range, POS_Y - .@range, POS_X + .@range, POS_Y + .@range,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (getmap() == "099-4")
- addtimer 10, "#TMWFinalExam::OnMiteyo";
- if (getmap() == "099-5")
- addtimer 10, "#TMWFinalExam::OnMiteyo";
- callfunc "magic_exp";
- end;
-
-OnNearbyNpc:
- set .@e$, strnpcinfo(2,@target_id);
- if(.@e$ == "#_M" || .@e$ == "#MAGIC" || get(.IS_MAGIC, @target_id))
- misceffect FX_MAGIC_DETECT_HIT, @target_id;
- end;
-
-OnInit:
- set .school, SKILL_MAGIC;
- set .invocation$, chr(MAGIC_SYMBOL) + "miteyo"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 0;
- end;
-}
diff --git a/world/map/npc/magic/level1-experience.txt b/world/map/npc/magic/level1-experience.txt
deleted file mode 100644
index c29f57b3..00000000
--- a/world/map/npc/magic/level1-experience.txt
+++ /dev/null
@@ -1,46 +0,0 @@
--|script|spell-experience|32767
-{
- //debugmes MAGIC_EXPERIENCE;
- //debugmes (MAGIC_EXPERIENCE >> 0) & 0xFFFF; // magic exp
- //debugmes (MAGIC_EXPERIENCE >> 16) & 0xFF; // last spell index
- //debugmes (MAGIC_EXPERIENCE >> 24) & 0xFF; // heal exp
-
- if(call("magic_checks")) end;
- if (Sp < 1) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- set @level, getskilllv(.school);
- if (@level < .level) end;
- callfunc "adjust_spellpower";
- set Sp, Sp - 1;
- misceffect FX_MAGIC_EXP_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set @ratio, ((@last_exp*10) - rand(.MAX_MAGIC_EXP[@level]/30))/.MAX_MAGIC_EXP[@level];
-
- set @mes$, "You feel completely overwhelmed by your magic.";
- if(@ratio == 1) set @mes$, "You feel quite overwhelmed by your magic, but are beginning to see patterns.";
- if(@ratio == 2) set @mes$, "You feel that you have only the bare minimum of control over your magic.";
- if(@ratio == 3) set @mes$, "Trying to control your magic is still rather troublesome.";
- if(@ratio == 4) set @mes$, "You feel you still have a few difficulties in controlling your magic.";
- if(@ratio == 5) set @mes$, "You feel somewhat in control of your magic.";
- if(@ratio == 6) set @mes$, "You feel mostly in control of your magic.";
- if(@ratio == 7) set @mes$, "You feel quite in control of your magic.";
- if(@ratio == 8) set @mes$, "You feel that you have very good control of your magic.";
- if(@ratio == 9) set @mes$, "You feel in almost perfect control of your magic.";
- if(@ratio >= 10) set @mes$, "You feel in perfect control of your magic" + if_then_else(@level >= MAX_MAGIC_LEVEL, ".", ", and seem on the verge of something more... perhaps you should see the Mana Seed to ask for more magic?");
- if(@ratio >= 20) set @mes$, "You have perfect control of what you understand now, but there is now a distinct sensation of something more, something indescribable. If only the Mana Seed would give more magic to you...";
- if(@ratio >= 45) set @mes$, "Magic flows naturally from you, readily and with ease. Your understanding of what you can currently control at present is flawless, far beyond your requirements to cast magic at this level.";
- if(@ratio >= 45 && @level < MAX_MAGIC_LEVEL) set @mes$, @mes$ + " Surely the Mana Seed will more than readily offer more magic for such a proficient user.";
- if(@level >= 5) set @mes$, "You are as proficient at magic as you can possibly be."; // this is the maximum magic level
- message strcharinfo(0), "Magic : ##3##B"+@mes$;
- end;
-
-OnInit:
- set .school, SKILL_MAGIC;
- set .invocation$, chr(MAGIC_SYMBOL) + "abizit"; // used in npcs that refer to this spell
- set .level, 1;
- set .exp_gain, 0;
- void call("magic_register");
- setarray .MAX_MAGIC_EXP[0], 0, 0, 100, 1200, 8000, 40000, 65535;
- end;
-}
diff --git a/world/map/npc/magic/level1-flare-dart.txt b/world/map/npc/magic/level1-flare-dart.txt
deleted file mode 100644
index e85ce3e8..00000000
--- a/world/map/npc/magic/level1-flare-dart.txt
+++ /dev/null
@@ -1,51 +0,0 @@
--|script|flare-dart|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 10) end;
- set @level, getskilllv(.school);
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (@level <= 2 && countitem("SulphurPowder") >= 1) delitem "SulphurPowder", 1;
- elif (@level <= 2) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 10;
- misceffect FX_MAGIC_DART_CAST, strcharinfo(0);
- setarray @flarspell[0],
- sqrt(@spellpower) * 5, //dmg
- (BaseLevel/3) + 5, // dmg bonus
- (@spellpower/50) + 3, // charges
- (((200 - Agi) * 1200) / 200); // delay
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-OnAttack:
- if (target(BL_ID, @target_id, 50) != 50) goto L_FreeRecast; // 0x20 | 0x02 | 0x10
- void call("elt_damage", @flarspell[0], @flarspell[1], ELT_WATER, ELT_FIRE, FX_NONE);
- set @flarspell[2], @flarspell[2] - 1;
- goto L_FreeRecast;
-
-L_FreeRecast:
- if (@flarspell[2] > 0)
- addtimer 0, strnpcinfo(0) + "::OnSetRecast";
- end;
-
-OnDischarge:
- if (@flarspell[2] < 1) end;
- set @flarspell[2], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnSetRecast:
- overrideattack @flarspell[3], 4, ATTACK_ICON_GENERIC, OVERRIDE_DART, strnpcinfo(0)+"::OnAttack", @flarspell[2];
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_WAR;
- set .invocation$, chr(MAGIC_SYMBOL) + "flar"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-grow-alizarin.txt b/world/map/npc/magic/level1-grow-alizarin.txt
deleted file mode 100644
index 1d7bc696..00000000
--- a/world/map/npc/magic/level1-grow-alizarin.txt
+++ /dev/null
@@ -1,37 +0,0 @@
--|script|grow-alizarin|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 4) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("AlizarinHerb") < 1 || countitem("Root") < 1) end;
- delitem "AlizarinHerb", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 2000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 4;
- misceffect FX_MAGIC_GROW_CAST, strcharinfo(0);
- setarray @summon[0], 0, (getskilllv(.school)/2)+1;
- callfunc "magic_exp";
- addtimer 4000-(@spellpower-9), strnpcinfo(0)+"::OnSummon";
- end;
-
-OnSummon:
- misceffect FX_MAGIC_GROW_SPAWN, strcharinfo(0);
- callsub S_SummonAll;
- end;
-
-S_SummonAll:
- summon getmap(), rand(POS_X-2,POS_X+2), rand(POS_Y-2,POS_Y+2), BL_ID, 1032, 1, (@spellpower*50)+10000;
- set @summon[0], @summon[0] + 1;
- if (@summon[0] < @summon[1]) goto S_SummonAll;
- return;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "modriphoo"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-grow-cobalt.txt b/world/map/npc/magic/level1-grow-cobalt.txt
deleted file mode 100644
index dc84318d..00000000
--- a/world/map/npc/magic/level1-grow-cobalt.txt
+++ /dev/null
@@ -1,37 +0,0 @@
--|script|grow-cobalt|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 4) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("CobaltHerb") < 1 || countitem("Root") < 1) end;
- delitem "CobaltHerb", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 2000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 4;
- misceffect FX_MAGIC_GROW_CAST, strcharinfo(0);
- setarray @summon[0], 0, (getskilllv(.school)/2)+1;
- callfunc "magic_exp";
- addtimer 4000-(@spellpower-9), strnpcinfo(0)+"::OnSummon";
- end;
-
-OnSummon:
- misceffect FX_MAGIC_GROW_SPAWN, strcharinfo(0);
- callsub S_SummonAll;
- end;
-
-S_SummonAll:
- summon getmap(), rand(POS_X-2,POS_X+2), rand(POS_Y-2,POS_Y+2), BL_ID, 1030, 1, (@spellpower*50)+10000;
- set @summon[0], @summon[0] + 1;
- if (@summon[0] < @summon[1]) goto S_SummonAll;
- return;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "modrisump"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-grow-gamboge.txt b/world/map/npc/magic/level1-grow-gamboge.txt
deleted file mode 100644
index 25df5b03..00000000
--- a/world/map/npc/magic/level1-grow-gamboge.txt
+++ /dev/null
@@ -1,37 +0,0 @@
--|script|grow-gamboge|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 4) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("GambogeHerb") < 1 || countitem("Root") < 1) end;
- delitem "GambogeHerb", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 2000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 4;
- misceffect FX_MAGIC_GROW_CAST, strcharinfo(0);
- setarray @summon[0], 0, (getskilllv(.school)/2)+1;
- callfunc "magic_exp";
- addtimer 4000-(@spellpower-9), strnpcinfo(0)+"::OnSummon";
- end;
-
-OnSummon:
- misceffect FX_MAGIC_GROW_SPAWN, strcharinfo(0);
- callsub S_SummonAll;
- end;
-
-S_SummonAll:
- summon getmap(), rand(POS_X-2,POS_X+2), rand(POS_Y-2,POS_Y+2), BL_ID, 1031, 1, (@spellpower*50)+10000;
- set @summon[0], @summon[0] + 1;
- if (@summon[0] < @summon[1]) goto S_SummonAll;
- return;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "modriyikam"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-grow-mauve.txt b/world/map/npc/magic/level1-grow-mauve.txt
deleted file mode 100644
index 8c0d32ff..00000000
--- a/world/map/npc/magic/level1-grow-mauve.txt
+++ /dev/null
@@ -1,37 +0,0 @@
--|script|grow-mauve|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 4) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("MauveHerb") < 1 || countitem("Root") < 1) end;
- delitem "MauveHerb", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 2000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 4;
- misceffect FX_MAGIC_GROW_CAST, strcharinfo(0);
- setarray @summon[0], 0, (getskilllv(.school)/2)+1;
- callfunc "magic_exp";
- addtimer 4000-(@spellpower-9), strnpcinfo(0)+"::OnSummon";
- end;
-
-OnSummon:
- misceffect FX_MAGIC_GROW_SPAWN, strcharinfo(0);
- callsub S_SummonAll;
- end;
-
-S_SummonAll:
- summon getmap(), rand(POS_X-2,POS_X+2), rand(POS_Y-2,POS_Y+2), BL_ID, 1029, 1, (@spellpower*50)+10000;
- set @summon[0], @summon[0] + 1;
- if (@summon[0] < @summon[1]) goto S_SummonAll;
- return;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "modrilax"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-lesser-heal.txt b/world/map/npc/magic/level1-lesser-heal.txt
deleted file mode 100644
index b2cd4741..00000000
--- a/world/map/npc/magic/level1-lesser-heal.txt
+++ /dev/null
@@ -1,55 +0,0 @@
--|script|lesser-heal|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 6) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id) == 1)
- set @target_id, BL_ID; // fallback to self
- if (get(GM, @target_id) == 1) end;
- if (@args$ == "Mouboo" || @args$ == "mouboo") goto L_Mouboo;
- set .@range, (((MATK1 + getskilllv(SKILL_MAGIC) + getskilllv(.school) + 10) / 100) + 2);
- if (distance(BL_ID, @target_id) >= .@range) end;
- if (PVP_CHANNEL != get(PVP_CHANNEL, @target_id) && get(PVP_CHANNEL, @target_id) != 0) end;
- if (countitem("Lifestone") < 1) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // set the new debuff
- delitem "Lifestone", 1;
- callfunc "adjust_spellpower";
- set Sp, Sp - 6;
- misceffect FX_MAGIC_HEAL_CAST, strcharinfo(0);
- callfunc "magic_exp";
- if (@target_id != BL_ID) goto L_NotMe;
- goto L_Continue;
-
-L_NotMe:
- misceffect FX_MAGIC_HEAL_HIT, @target_id;
- if (get(Hp, @target_id) < 1) end;
- void call("gain_heal_xp", min(200, (get(MaxHp, @target_id) - get(Hp, @target_id))), 1, 2, 2);
- goto L_Continue;
-
-L_Continue:
- if (getskilllv(SKILL_MAGIC_DARK) >= 1) sc_start SC_HALT_REGENERATE, 2000, 0;
- if (get(Hp, @target_id) < 1) end;
- addtimer 0, strnpcinfo(0) + "::OnSlowHeal", @target_id;
- end;
-
-OnSlowHeal:
- heal 200, 0, 1;
- end;
-
-L_Mouboo:
- set @target_id, getnpcid("Mouboo");
- set .@range, (((MATK1 + getskilllv(SKILL_MAGIC) + getskilllv(.school) + 10) / 100) + 2);
- if (distance(BL_ID, @target_id) >= .@range) end;
- mes "Magic : ##3##BThis spell has no effect on animals.";
- close;
-
-OnInit:
- set .school, SKILL_MAGIC_LIFE;
- set .invocation$, chr(MAGIC_SYMBOL) + "lum"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-magic-blade.txt b/world/map/npc/magic/level1-magic-blade.txt
deleted file mode 100644
index 1c6c891f..00000000
--- a/world/map/npc/magic/level1-magic-blade.txt
+++ /dev/null
@@ -1,55 +0,0 @@
--|script|magic-blade|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 9) end;
- set .@level, getskilllv(.school);
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (.@level <= 2 && countitem("SharpKnife") >= 1) set .@component$, "SharpKnife";
- elif (.@level <= 2 && countitem("Knife") >= 1) set .@component$, "Knife";
- elif (.@level <= 2) end;
- if (.@component$ != "") delitem .@component$, 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 9;
- misceffect FX_MAGIC_BLADE_CAST, strcharinfo(0);
- setarray @chizaspell[0],
- if_then_else(.@component$ == "Knife", 40, 60), // dmg
- Str, // do not allow to equip light armor, cast, and then switch to heavy armor to get bonus str
- (@spellpower/15) + 10, // charges
- (((200 - Agi) * 1200) / 200), // delay
- @spellpower;
-
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-OnDischarge:
- if (@chizaspell[2] < 1) end;
- set @chizaspell[2], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnAttack:
- if (target(BL_ID, @target_id, 22) != 22) goto L_FreeRecast; // 0x10 | 0x02 | 0x04
- void call("melee_damage", @chizaspell[4], @target_id, (@chizaspell[0] + rand(@chizaspell[1] + 5)));
- set @chizaspell[2], @chizaspell[2] - 1;
- goto L_FreeRecast;
-
-L_FreeRecast:
- if (@chizaspell[2] > 0)
- addtimer 0, strnpcinfo(0) + "::OnSetRecast";
- end;
-
-OnSetRecast:
- overrideattack @chizaspell[3], 1, ATTACK_ICON_GENERIC, OVERRIDE_BLADE, strnpcinfo(0)+"::OnAttack", @chizaspell[2];
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_WAR;
- set .invocation$, chr(MAGIC_SYMBOL) + "chiza"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-make-sulphur.txt b/world/map/npc/magic/level1-make-sulphur.txt
deleted file mode 100644
index 89584954..00000000
--- a/world/map/npc/magic/level1-make-sulphur.txt
+++ /dev/null
@@ -1,25 +0,0 @@
--|script|make-sulphur|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 4) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("PileOfAsh") >= 1) delitem "PileOfAsh", 1; else end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 4000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 4;
- misceffect FX_MAGIC_SULPHUR_CAST, strcharinfo(0);
- setarray @create_params[0], (@spellpower/100)+1+(rand(max(1,(800-@spellpower)))/180), 50;
- setarray @create_items$[0], "SulphurPowder", "PileOfAsh";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "gole"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-sense-spouse.txt b/world/map/npc/magic/level1-sense-spouse.txt
deleted file mode 100644
index fe95c094..00000000
--- a/world/map/npc/magic/level1-sense-spouse.txt
+++ /dev/null
@@ -1,25 +0,0 @@
--|script|sense-spouse|32767
-{
- set .@m, getpartnerid2();
- if (.@m < 1)
- goto L_NotMarried;
- if (isloggedin(.@m) < 1)
- goto L_NotOnline;
- if (sc_check(SC_HIDE, .@m) || getpvpflag(1, .@m) || get(INVISIBLE, .@m))
- goto L_NotOnline;
- message strcharinfo(0), "Spouse : Your spouse is... somewhere.";
- end;
-
-L_NotOnline:
- message strcharinfo(0), "Spouse : Your spouse is not online, or maybe just hiding from you.";
- end;
-
-L_NotMarried:
- message strcharinfo(0), "Spouse : You are not married, or no longer married (sorry for being the one telling you the bad news).";
- end;
-
-OnInit:
- set .invocation$, chr(MAGIC_SYMBOL) + "inzuwilt"; // used in npcs that refer to this spell
- registercmd .invocation$, strnpcinfo(0);
- end;
-}
diff --git a/world/map/npc/magic/level1-summon-maggots.txt b/world/map/npc/magic/level1-summon-maggots.txt
deleted file mode 100644
index 98ca6096..00000000
--- a/world/map/npc/magic/level1-summon-maggots.txt
+++ /dev/null
@@ -1,57 +0,0 @@
--|script|summon-maggots|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 21) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("MaggotSlime") < 1 || countitem("Root") < 1) end;
- delitem "MaggotSlime", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 20000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 21;
- misceffect FX_MAGIC_MAGGOT_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, ((sqrt(@spellpower)+(@spellpower/15))/5)+1, .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, (@spellpower*50)+10000, .@puppet;
- addnpctimer 5000-(@spellpower*5), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_MAGGOT_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1002, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "kalmurk"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level1-transmute-wood.txt b/world/map/npc/magic/level1-transmute-wood.txt
deleted file mode 100644
index c2763f1c..00000000
--- a/world/map/npc/magic/level1-transmute-wood.txt
+++ /dev/null
@@ -1,37 +0,0 @@
--|script|spell-transmute-wood|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 5) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (countitem("RawLog") >= 1) delitem "RawLog", 1; else end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 4000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 5;
- misceffect FX_MAGIC_WOOD_CAST, strcharinfo(0);
- if (@args$ == "boo") goto L_Mouboo;
- elif (@args$ == "lurk") goto L_Skytlurk;
- else message strcharinfo(0), "Magic : ##3##BYou do not know how to transmute wood into this kind of animal."; // FIXME: write a better sentence
- end;
-
-L_Mouboo:
- setarray @create_params[0], 1, 40;
- setarray @create_items$[0], "MoubooFigurine", "WarpedLog";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-L_Skytlurk:
- if (rand(2) == 1) getitem "Iten", 1;
- else getitem "WarpedLog", 1;
- message strcharinfo(0), "Magic : ##3##BYou have no idea what a Skrytlurk looks like.";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "parum"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 1;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-arrow-hail.txt b/world/map/npc/magic/level2-arrow-hail.txt
deleted file mode 100644
index 24866b1c..00000000
--- a/world/map/npc/magic/level2-arrow-hail.txt
+++ /dev/null
@@ -1,118 +0,0 @@
--|script|arrow-hail|32767
-{
- // we can not start here because for the puppets this is OnClick
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (getskilllv(.school) < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (Sp < 25) end;
- explode .@map_ext[0], getmap(), "-";
- if (.@map_ext[1] != 1 && getmap() != "099-5") end; // XXX this is fugly, in the future let's use MF_OUTSIDE to detect if a map is "outside" or "inside"
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (countitem("Arrow") >= 20 && countitem("SulphurPowder") >= 1) delitem "Arrow", 20;
- elif (countitem("IronArrow") >= 20 && countitem("SulphurPowder") >= 1) delitem "IronArrow", 20;
- else end;
- delitem "SulphurPowder", 1;
- set Sp, Sp - 25;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
-
- setarray @away[0], POS_X, POS_Y, getdir(), (.range + 1), 0;
- callsub S_AwayFrom;
-
- set @nearby, 0;
- foreach 1, getmap(), @away[0] - 14, @away[1] - 14, @away[0] + 14, @away[1] + 14,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (@nearby) goto L_Absorb;
-
- callfunc "adjust_spellpower";
- set @new_npc_name$, "#" + strnpcinfo(0) + "#" + getcharid(3); // make a unique puppet name for every player
- callfunc "magic_exp";
- misceffect FX_MAGIC_AHAIL_CAST, strcharinfo(0);
- set @spell_npc, puppet(getmap(), POS_X, POS_Y, @new_npc_name$, 127); // clone npc => get puppet id
- if (@spell_npc < 1) end;
- set .max_hit, (@spellpower / 8), @spell_npc; // set .max_hit in the puppet
- set .caster, getcharid(3), @spell_npc; // tell the puppet who controls it
- set .damage, 125, @spell_npc;
- set .damage_bonus, (@spellpower / 5), @spell_npc;
- set .area_x, @away[0], @spell_npc; set .area_y, @away[1], @spell_npc;
- donpcevent @new_npc_name$+"::OnLaunch"; // start the puppet timer and strike
- initnpctimer @new_npc_name$; // start the destroy timer
- end;
-
-S_AwayFrom:
- if(@away[2] == 6 && !(iscollision(getmap(), (@away[0] + 1), @away[1]))) // right
- set @away[0], @away[0] + 1;
- if(@away[2] == 4 && !(iscollision(getmap(), @away[0], (@away[1] - 1)))) // up
- set @away[1], @away[1] - 1;
- if(@away[2] == 2 && !(iscollision(getmap(), (@away[0] - 1), @away[1]))) // left
- set @away[0], @away[0] - 1;
- if(@away[2] == 0 && !(iscollision(getmap(), @away[0], (@away[1] + 1)))) // down
- set @away[1], @away[1] + 1;
- set @away[4], @away[4] + 1;
- if(@away[4] < @away[3]) goto S_AwayFrom;
- return;
-
-L_Absorb:
- message strcharinfo(0), "##3Arrow Hail : ##BA nearby arrow hail absorbs your magic!";
- end;
-
-OnNearbyNpc:
- explode .@nearby$[0], strnpcinfo(0,@target_id), "#";
- if(.@nearby$[0] == "arrow-hail" || .@nearby$[1] == "arrow-hail")
- set @nearby, @nearby + 1;
- end;
-
-OnLaunch:
- if (!(isloggedin(.caster))) destroy;
- if(get(Hp, .caster) < 1) destroy; // destroy if caster is missing
- if(getmap(.caster) != strnpcinfo(3)) destroy; // destroy if caster left the map
- set .hit, .hit + 1;
- if(.hit > .max_hit) destroy;
- set .launch, 0;
- callsub S_Launch;
- addnpctimer 250 + rand(50) + rand(50), strnpcinfo(0)+"::OnLaunch"; // loop until max
- end;
-
-S_Launch:
- npcareawarp .area_x - 6, .area_y - 6, .area_x + 6, .area_y + 6, 0, strnpcinfo(0);
- misceffect FX_ARROW_HAIL;
- set .done, 0;
- foreach 2, strnpcinfo(3), getnpcx(), getnpcy(), getnpcx(), getnpcy(), strnpcinfo(0) + "::OnHit", .caster;
- if (get(PVP_CHANNEL, .caster) || getmapflag(getmap(.caster), MF_PVP))
- foreach 0, strnpcinfo(3), getnpcx(), getnpcy(), getnpcx(), getnpcy(), strnpcinfo(0) + "::OnHit", .caster;
- if(!.done && get(POS_X, .caster) == getnpcx() && get(POS_Y, .caster) == getnpcy())
- set Hp, get(Hp, .caster) - (.damage + rand(.damage_bonus) + rand(.damage_bonus)), .caster; // injure caster
- set .launch, .launch + 1;
- if(.launch < 3) goto S_Launch;
- return;
-
-OnTimer30000:
- debugmes "frillyar timeout! [this shouldn't happen]";
- destroy;
-
-OnHit:
- if (!(isloggedin(.caster))) destroy;
- if(get(Hp, .caster) < 1) destroy; // destroy if caster is missing
- if(getmap(.caster) != strnpcinfo(3)) destroy; // destroy if caster left the map
-
- if(target(.caster, @target_id, 16) != 16 && .caster != @target_id) end;
- if((get(BL_TYPE, @target_id) & 1) == 0) end; // either mob or pc
- set .@damage, .damage + rand(.damage_bonus) + rand(.damage_bonus);
- if(.caster != @target_id)
- set .@damage, (.@damage * (100 - get(MDEF1, @target_id))) / 100;
- injure .caster, @target_id, .@damage;
- set .done, 1;
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_WAR;
- set .range, 7;
- set .invocation$, chr(MAGIC_SYMBOL) + "frillyar"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-barrier.txt b/world/map/npc/magic/level2-barrier.txt
deleted file mode 100644
index ed695b77..00000000
--- a/world/map/npc/magic/level2-barrier.txt
+++ /dev/null
@@ -1,49 +0,0 @@
--|script|magic barrier|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 15) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (.@level <= 3 && countitem("SmallMushroom") >= 1) delitem "SmallMushroom", 1;
- elif (.@level <= 3) end;
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id) == 1)
- set @target_id, BL_ID; // fallback to self
- if (get(GM, @target_id) == 1) end;
- if (get(Hp, @target_id) < 1) end;
- if (getequipid(equip_head, strcharinfo(0, @target_id)) == 888) end;
-
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 15;
- misceffect FX_MAGIC_BARRIER_CAST, strcharinfo(0);
- callfunc "magic_exp";
-
- if (distance(BL_ID, @target_id) >= (@spellpower/30)+2) set @target_id, BL_ID;
- if (BL_ID == @target_id) set @args$, strcharinfo(0);
- if (BL_ID != @target_id) misceffect FX_MAGIC_BARRIER_HIT, @args$;
- set .@time, (@spellpower*200)+2000;
- set @asorm_time, .@time, @target_id;
- sc_start SC_MBARRIER, .@time, max(30,(@spellpower/8))+20, @target_id;
- message @args$, "Barrier : You are surrounded by a magical barrier.";
- set @asorm_future, gettimetick(0) + @asorm_time - 100, @target_id;
- addtimer @asorm_time - 100, strnpcinfo(0)+"::OnEnd", @target_id;
- end;
-
-OnEnd:
- if (gettimetick(0) - @asorm_future < 0) end;
- if (sc_check(SC_MBARRIER) != 1) end;
- message strcharinfo(0), "Barrier : Your magical barrier dissipates.";
- misceffect FX_MAGIC_BARRIER_END, strcharinfo(0);
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "asorm"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 3;
- end;
-}
diff --git a/world/map/npc/magic/level2-detect-players.txt b/world/map/npc/magic/level2-detect-players.txt
deleted file mode 100644
index 20961ec6..00000000
--- a/world/map/npc/magic/level2-detect-players.txt
+++ /dev/null
@@ -1,34 +0,0 @@
--|script|detect-players|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 7) end;
- if (getskilllv(.school) < .level) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 300, "Magic Timer::OnClear";
- callfunc "adjust_spellpower";
- set Sp, Sp - 7;
- misceffect FX_MAGIC_WHO_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set @inwilt$, "";
- set .@d, @spellpower/2;
- foreach 0, getmap(), POS_X - .@d, POS_Y - .@d, POS_X + .@d, POS_Y + .@d, strnpcinfo(0)+"::OnPC";
- message strcharinfo(0), if_then_else(@inwilt$=="", "You sense no-one else nearby.", "You sense the following: "+@inwilt$);
- end;
-
-OnPC:
- if (@target_id == BL_ID) end; // do not count the caster
- if (sc_check(SC_HIDE, @target_id)) end; // do not count players with anwiltyp
- if (getpvpflag(1, @target_id)) end; // do not count hidden GMs
- if (get(INVISIBLE, @target_id) == 1) end; // do not count invisible GMs
- if (@inwilt$ != "") set @inwilt$, @inwilt$ + ", ";
- set @inwilt$, @inwilt$ + strcharinfo(0, @target_id) + if_then_else(@spellpower > 99, "("+get(BaseLevel, @target_id)+")", "");
- end;
-
-OnInit:
- set .school, SKILL_MAGIC;
- set .invocation$, chr(MAGIC_SYMBOL) + "inwilt"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 0;
- end;
-}
diff --git a/world/map/npc/magic/level2-enchant-lifestone.txt b/world/map/npc/magic/level2-enchant-lifestone.txt
deleted file mode 100644
index b64f9855..00000000
--- a/world/map/npc/magic/level2-enchant-lifestone.txt
+++ /dev/null
@@ -1,36 +0,0 @@
--|script|enchant-lifestone|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 15) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("BugLeg") >= 1) delitem "BugLeg", 1;
- elif (countitem("MaggotSlime") >= 1) delitem "MaggotSlime", 1;
- elif (countitem("MauveHerb") >= 1 && countitem("AlizarinHerb") >= 1 && countitem("CobaltHerb") >= 1 && countitem("GambogeHerb") >= 1) goto L_Herbs;
- else end;
- goto L_Proceed;
-
-L_Herbs:
- delitem "MauveHerb", 1;
- delitem "AlizarinHerb", 1;
- delitem "CobaltHerb", 1;
- delitem "GambogeHerb", 1;
- goto L_Proceed;
-
-L_Proceed:
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 4000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 15;
- misceffect FX_MAGIC_STONE_CAST, strcharinfo(0);
- getitem "Lifestone", 1;
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC;
- set .invocation$, chr(MAGIC_SYMBOL) + "manpahil"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-flying-backpack.txt b/world/map/npc/magic/level2-flying-backpack.txt
deleted file mode 100644
index 84c95e70..00000000
--- a/world/map/npc/magic/level2-flying-backpack.txt
+++ /dev/null
@@ -1,44 +0,0 @@
--|script|flying-backpack|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 12) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (.@level <= 3 && countitem("SilkCocoon") >= 1) delitem "SilkCocoon", 1;
- elif (.@level <= 3) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 12;
- misceffect FX_MAGIC_FLYING_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id) == 1)
- set @target_id, BL_ID; // fallback to self
- if (distance(BL_ID, @target_id) >= (@spellpower/30)+2) set @target_id, BL_ID;
- if (get(GM, @target_id) == 1) end;
- if (BL_ID != @target_id) misceffect FX_MAGIC_FLYING_HIT, @args$;
- if (BL_ID == @target_id) set @args$, strcharinfo(0);
- set @plugh_time, (@spellpower*500)+5000, @target_id;
- sc_start SC_FLYING_BACKPACK, @plugh_time, 0, @target_id;
- message @args$, "Backpack : Your backpack is lifted by a mystical force; you no longer feel it pressing on your back.";
- set @plugh_future, gettimetick(0) + @plugh_time - 100, @target_id;
- addtimer @plugh_time - 100, strnpcinfo(0)+"::OnEnd", @target_id;
- end;
-
-OnEnd:
- if (gettimetick(0) - @plugh_future < 0) end;
- if (sc_check(SC_FLYING_BACKPACK) != 1) end;
- message strcharinfo(0), "Backpack : Your backpack is no longer levitating.";
- misceffect FX_MAGIC_FLYING_END, strcharinfo(0);
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "plugh"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-happy-curse.txt b/world/map/npc/magic/level2-happy-curse.txt
deleted file mode 100644
index 535afa11..00000000
--- a/world/map/npc/magic/level2-happy-curse.txt
+++ /dev/null
@@ -1,43 +0,0 @@
--|script|happy-curse|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 13) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (.@level <= 3 && countitem("GingerBreadMan") >= 1) delitem "GingerBreadMan", 1;
- elif (.@level <= 3) end;
-
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 13;
- misceffect FX_MAGIC_JOY_CAST, strcharinfo(0);
- callfunc "magic_exp";
-
- set @distance, (@spellpower / 100) + 1;
- foreach 0, getmap(), (POS_X - @distance), (POS_Y - @distance), (POS_X + @distance), (POS_Y + @distance), strnpcinfo(0) + "::OnHit";
- end;
-
-OnHit:
- set @joyplim_count, 1, @target_id;
- set @joyplim_emote, if_then_else(getskilllv(SKILL_MAGIC_DARK) > 1, EMOTE_EVIL, EMOTE_HAPPY), @target_id;
- set @joyplim_total, (@spellpower / 10), @target_id;
- emotion @joyplim_emote, strcharinfo(0, @target_id);
- addtimer 500, strnpcinfo(0)+"::OnEmote", @target_id;
- end;
-
-OnEmote:
- emotion @joyplim_emote, "self";
- set @joyplim_count, @joyplim_count + 1;
- if (@joyplim_count < @joyplim_total) addtimer 500, strnpcinfo(0)+"::OnEmote";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "joyplim"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-hide.txt b/world/map/npc/magic/level2-hide.txt
deleted file mode 100644
index b129a163..00000000
--- a/world/map/npc/magic/level2-hide.txt
+++ /dev/null
@@ -1,47 +0,0 @@
--|script|spell-hide|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 11) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (.@level <= 3 && countitem("CottonCloth") >= 1) delitem "CottonCloth", 1;
- elif (.@level <= 3) end;
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id))
- set @target_id, BL_ID; // fallback to self
- if (get(GM, @target_id) == 1) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 11;
- misceffect FX_MAGIC_HIDE_CAST, strcharinfo(0);
- callfunc "magic_exp";
-
- if (distance(BL_ID, @target_id) >= (@spellpower/30)+2) set @target_id, BL_ID;
- if (BL_ID == @target_id) set @args$, strcharinfo(0);
- if (BL_ID != @target_id) misceffect FX_MAGIC_HIDE_HIT, @args$;
- set .@time, (@spellpower*2500)+5000;
- set @anwiltyp_time, .@time, @target_id;
- sc_start SC_HIDE, .@time, 0, @target_id;
- message @args$, "Magic : You are hidden!";
- if (BL_ID != @target_id) message strcharinfo(0), "Magic : You hid someone!";
- set @anwiltyp_future, gettimetick(0) + @anwiltyp_time - 100, @target_id;
- addtimer @anwiltyp_time, strnpcinfo(0)+"::OnEnd", @target_id;
- end;
-
-OnEnd:
- if (gettimetick(0) - @anwiltyp_future < 0) end;
- if (sc_check(SC_HIDE) != 1) end;
- message strcharinfo(0), "Magic : You are no longer hidden.";
- misceffect FX_MAGIC_HIDE_END, strcharinfo(0);
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "anwiltyp"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-lay-on-hands.txt b/world/map/npc/magic/level2-lay-on-hands.txt
deleted file mode 100644
index 29d9292b..00000000
--- a/world/map/npc/magic/level2-lay-on-hands.txt
+++ /dev/null
@@ -1,81 +0,0 @@
--|script|lay-on-hands|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 10) end;
- if (getskilllv(.school) < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (@args$ == "Mouboo" || @args$ == "mouboo") goto L_Mouboo;
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id) || BL_ID == @target_id) end;
- if (get(GM, @target_id) == 1) end;
- if (Hp <= get(MaxHp, @target_id) / 20) end; // hp needs to be > 1/20 * target hp
- callfunc "adjust_spellpower";
- if (getmap() == "099-4") goto L_SpecialRules4;
- if (getmap() == "099-5") goto L_SpecialRules5;
- if (distance(BL_ID, @target_id) >= (((sqrt(@spellpower)*12)+@spellpower)/100)+2) end;
- if (sc_check(SC_HALT_REGENERATE,@target_id)) end;
- if (getequipid(equip_head, @args$) == 888) end; // magic gm top hat
- set @needed, get(MaxHp, @target_id) - get(Hp, @target_id);
- goto L_Pay;
-
-L_Pay:
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // XXX should this be 0 ?
- set Sp, Sp - 10;
- misceffect FX_MAGIC_LAY_CAST, strcharinfo(0); // on caster
- misceffect FX_MAGIC_LAY_HIT, @args$; // on target
-
- if (get(Hp, @target_id) < 1) end;
-
- set .@fraction, max(80, 200 - (Vit + (@spellpower/10))); // pay at least 40%
- set .@payment, (@needed * .@fraction) / 200;
- set .@available, Hp - (MaxHp / 20);
- set @heal_value, if_then_else(.@payment < .@available, @needed+1-1, (.@available * 200) / .@fraction); // FIXME / XXX why the f do I need to do +1-1 ?
- if (.@payment > .@available) set .@payment, .@available;
-
-
- set @mexp, min(.exp_gain, .@payment/100);
- void call("gain_heal_xp", @heal_value, 1, 1, 3);
- callfunc "magic_exp";
-
- set .@dark, getskilllv(SKILL_MAGIC_DARK) >= 2; // true if dark magic user
- set .@bad, (MaxHp/20)*(0-1);
- if (.@dark && GM < 20) heal .@bad, 0;
- sc_start SC_HALT_REGENERATE, if_then_else(.@dark, 5000, 10000), 0;
-
- set .@thp, get(Hp, @target_id);
- if (.@thp < 1) end;
- set Hp, max(.@thp, .@thp + @heal_value), @target_id;
- end;
-
-L_Mouboo:
- set @target_id, getnpcid("Mouboo");
- callfunc "adjust_spellpower";
- if (distance(BL_ID, @target_id) >= (((sqrt(@spellpower) * 12) + @spellpower) / 100) + 2) end;
- misceffect FX_MAGIC_LAY_CAST, strcharinfo(0); // on caster
- misceffect FX_MAGIC_LAY_HIT, @target_id; // on target
- callfunc "QuestMoubooHeal";
- end;
-
-// Special rules for a couple special maps
-L_SpecialRules4:
- if (getmap(@target_id) != "099-5") end;
- if (sc_check(SC_HALT_REGENERATE,@target_id)) end;
- if (getequipid(equip_head, @args$) == 888) end; // magic gm top hat
- set @needed, get(MaxHp, @target_id) - get(Hp, @target_id);
- goto L_Pay;
-L_SpecialRules5:
- if (getmap(@target_id) != "099-4") end;
- if (sc_check(SC_HALT_REGENERATE,@target_id)) end;
- if (getequipid(equip_head, @args$) == 888) end; // magic gm top hat
- set @needed, get(MaxHp, @target_id) - get(Hp, @target_id);
- goto L_Pay;
-
-OnInit:
- set .school, SKILL_MAGIC_LIFE;
- set .invocation$, chr(MAGIC_SYMBOL) + "inma"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 1; // this is MAX possible exp
- end;
-}
diff --git a/world/map/npc/magic/level2-lightning-strike.txt b/world/map/npc/magic/level2-lightning-strike.txt
deleted file mode 100644
index d454abc6..00000000
--- a/world/map/npc/magic/level2-lightning-strike.txt
+++ /dev/null
@@ -1,89 +0,0 @@
--|script|lightning-strike|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 20) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (.@level <= 3 && countitem("IronPowder") >= 1) delitem "IronPowder", 1;
- elif (.@level <= 3) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 20;
- misceffect FX_MAGIC_BOLT_CAST, strcharinfo(0);
- setarray @ingravspell[0],
- @spellpower,
- Luk,
- ((@spellpower/90)+1), // charges
- (((200 - Agi) * 3000) / 200), // delay
- 0, // in_rain
- 0; // target id (tmp)
- if (getequipid(equip_misc1) == 5253 || getequipid(equip_misc2) == 5253)
- set @ingravspell[3], @ingravspell[3]*8/10+1;
-
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-OnAttack:
- if (target(BL_ID, @target_id, 0x36) != 0x36) goto L_FreeRecast; // 0x10 | 0x02 | 0x04 | 0x20
-
- set .@p, get(.max_radius, "rain") + 1;
- set @ingravspell[5], @target_id; // store it because foreach overwrites it
- foreach 1, getmap(), POS_X-.@p, POS_Y-.@p, POS_X+.@p, POS_Y+.@p, strnpcinfo(0)+"::OnNpc";
- set @target_id, @ingravspell[5]; // now restore it
-
- set @ingravspell[2], @ingravspell[2] - 1;
- if (@ingravspell[4] & 1) goto L_InRain;
- void call("elt_damage", @ingravspell[0], (@ingravspell[0]/2)+1, ELT_EARTH, ELT_WIND, FX_LIGHTNING1 + rand(3));
- goto L_FreeRecast;
-
-L_FreeRecast:
- if (@ingravspell[2] > 0)
- addtimer 0, strnpcinfo(0) + "::OnSetRecast";
- end;
-
-OnDischarge:
- if (@ingravspell[2] < 1) end;
- set @ingravspell[2], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnSetRecast:
- overrideattack @ingravspell[3], 8, ATTACK_ICON_GENERIC, 31, strnpcinfo(0)+"::OnAttack", @ingravspell[2];
- end;
-
-OnNpc:
- set .@name$, strnpcinfo(0,@target_id);
- explode .@nearby$[0], .@name$, "#";
- if (.@nearby$[0] != "rain" && .@nearby$[1] != "rain") end;
- setarray .@l[0], getnpcx(.@name$), getnpcy(.@name$), get(.radius, @target_id); // kaflosh x, y, radius
- setarray @ingravspell[6], .@l[0]-.@l[2], .@l[1]-.@l[2], .@l[0]+.@l[2], .@l[1]+.@l[2]; // kaflosh x1, y1, x2, y2 <= this is "area"
- if (POS_X >= @ingravspell[6] && POS_Y >= @ingravspell[7] && POS_X <= @ingravspell[8] && POS_Y <= @ingravspell[9])
- set @ingravspell[4], @ingravspell[4] | 1;
- end;
-
-L_InRain:
- set @ingravspell[10], 0;
- foreach 0, getmap(), @ingravspell[6], @ingravspell[7], @ingravspell[8], @ingravspell[9], strnpcinfo(0)+"::OnEntityInRain";
- if (@ingravspell[10] >= 1 && (@ingravspell[1] + rand(200)) >= 150) goto L_FreeRecast;
- misceffect FX_LIGHTNING1 + rand(3), strcharinfo(0);
- heal 0 - @ingravspell[0], 0;
- goto L_FreeRecast;
-
-OnEntityInRain:
- if (target(BL_ID, @target_id, 16) != 16) end; // 0x10
- if (@ingravspell[1] + rand(200) <= 175) end;
- set @ingravspell[10], @ingravspell[10] + 1;
- void call("elt_damage", @ingravspell[0]/6, (((@ingravspell[0]/2)+1)/3)+1, ELT_EARTH, ELT_WIND, FX_LIGHTNING1 + rand(3));
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_WAR;
- set .invocation$, chr(MAGIC_SYMBOL) + "ingrav"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-magic-knuckles.txt b/world/map/npc/magic/level2-magic-knuckles.txt
deleted file mode 100644
index acc3405d..00000000
--- a/world/map/npc/magic/level2-magic-knuckles.txt
+++ /dev/null
@@ -1,55 +0,0 @@
--|script|magic-knuckles|32767
-{
- if (call("magic_checks")) end;
- if (Sp < 20) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (getequipid(equip_hand1) != -1 || getequipid(equip_hand2) != -1) end;
- if (.@level <= 3 && countitem("Beer") >= 1) delitem "Beer", 1;
- elif (.@level <= 3) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 20;
- misceffect FX_MAGIC_KNUCKLE_CAST, strcharinfo(0);
- setarray @upmarmuspell[0],
- BASE_ATK, // dmg
- ((@spellpower/10) + ((Dex * 8)/(sqrt(BaseLevel + 34)) + 20)), // charges (you get more at lower levels)
- (sqrt(300 - (Agi * 2)) + (5/2)), // delay
- Agi, // dmg bonus
- (((BaseLevel/5) + Str) * 2); // do not allow to equip light armor, cast, and then switch to heavy armor to get bonus str
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-OnAttack:
- if (getequipid(equip_hand1) != -1 || getequipid(equip_hand2) != -1) goto OnDischarge;
- if (target(BL_ID, @target_id, 22) != 22) goto L_FreeRecast; // 0x10 | 0x02 | 0x04
- void call("elt_damage", @upmarmuspell[0], (@upmarmuspell[3] + @upmarmuspell[4]), ELT_WATER, ELT_FIRE, FX_NONE);
- set @upmarmuspell[1], @upmarmuspell[1] - 1;
- goto L_FreeRecast;
-
-L_FreeRecast:
- if (@upmarmuspell[1] > 0)
- addtimer 0, strnpcinfo(0) + "::OnSetRecast";
- end;
-
-OnDischarge:
- if (@upmarmuspell[1] < 1) end;
- set @upmarmuspell[1], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnSetRecast:
- overrideattack (@upmarmuspell[2] * @upmarmuspell[2]), 1, ATTACK_ICON_GENERIC, OVERRIDE_KNUCKLES, strnpcinfo(0)+"::OnAttack", @upmarmuspell[1]; // delay needs to be squared
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_WAR;
- set .invocation$, chr(MAGIC_SYMBOL) + "upmarmu"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-make-arrows.txt b/world/map/npc/magic/level2-make-arrows.txt
deleted file mode 100644
index fa0a6b31..00000000
--- a/world/map/npc/magic/level2-make-arrows.txt
+++ /dev/null
@@ -1,27 +0,0 @@
--|script|make-arrows|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 8) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("RawLog") < 1) end;
- delitem "RawLog", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 8;
- misceffect FX_MAGIC_ARROW_CAST, strcharinfo(0);
- setarray @create_params[0], (@spellpower/40)+1+(rand(max(1,(800-@spellpower)))/80), 500;
- setarray @create_items$[0], "Arrow", "WarpedLog";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "kularzufrill"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-make-iron-powder.txt b/world/map/npc/magic/level2-make-iron-powder.txt
deleted file mode 100644
index 6f1c11b2..00000000
--- a/world/map/npc/magic/level2-make-iron-powder.txt
+++ /dev/null
@@ -1,27 +0,0 @@
--|script|make-iron-powder|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 8) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("IronOre") < 1) end;
- delitem "IronOre", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 8;
- misceffect FX_MAGIC_IRONP_CAST, strcharinfo(0);
- setarray @create_params[0], (@spellpower/140)+1+(rand(max(1,(900-@spellpower)))/220), 700;
- setarray @create_items$[0], "IronPowder", "IronOre";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "zukminbirf"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 3;
- end;
-}
diff --git a/world/map/npc/magic/level2-make-shirt.txt b/world/map/npc/magic/level2-make-shirt.txt
deleted file mode 100644
index 838ffadd..00000000
--- a/world/map/npc/magic/level2-make-shirt.txt
+++ /dev/null
@@ -1,25 +0,0 @@
--|script|make-shirt|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 25) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("CottonCloth") >= 5) delitem "CottonCloth", 5; else end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 25;
- misceffect FX_MAGIC_SHIRT_CAST, strcharinfo(0);
- setarray @create_params[0], 1, 425;
- setarray @create_items$[0], "CottonShirt", "CottonCloth";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "patmuploo"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-make-short-tanktop.txt b/world/map/npc/magic/level2-make-short-tanktop.txt
deleted file mode 100644
index b722d9dd..00000000
--- a/world/map/npc/magic/level2-make-short-tanktop.txt
+++ /dev/null
@@ -1,25 +0,0 @@
--|script|make-short-tanktop|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 25) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("CottonCloth") >= 3) delitem "CottonCloth", 3; else end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 25;
- misceffect FX_MAGIC_SHIRT_CAST, strcharinfo(0);
- setarray @create_params[0], 1, 250;
- setarray @create_items$[0], "ShortTankTop", "CottonCloth";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "patviloree"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-make-tanktop.txt b/world/map/npc/magic/level2-make-tanktop.txt
deleted file mode 100644
index b8f40932..00000000
--- a/world/map/npc/magic/level2-make-tanktop.txt
+++ /dev/null
@@ -1,25 +0,0 @@
--|script|make-tanktop|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 25) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("CottonCloth") >= 4) delitem "CottonCloth", 4; else end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 25;
- misceffect FX_MAGIC_SHIRT_CAST, strcharinfo(0);
- setarray @create_params[0], 1, 350;
- setarray @create_items$[0], "TankTop", "CottonCloth";
- callfunc "magic_create_item";
- callfunc "magic_exp";
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_TRANSMUTE;
- set .invocation$, chr(MAGIC_SYMBOL) + "patloree"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-protect.txt b/world/map/npc/magic/level2-protect.txt
deleted file mode 100644
index 4e3b9f88..00000000
--- a/world/map/npc/magic/level2-protect.txt
+++ /dev/null
@@ -1,50 +0,0 @@
--|script|protect|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 14) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (.@level <= 3 && countitem("HardSpike") < 1) end;
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id))
- set @target_id, BL_ID; // fallback to self
- if (get(GM, @target_id) == 1) end;
- if (get(Hp, @target_id) < 1) end;
- if (getequipid(equip_head, strcharinfo(0, @target_id)) == 888) end;
-
- if (distance(BL_ID, @target_id) >= (@spellpower/30)+2) set @target_id, BL_ID;
- if (get(@antiprotect, @target_id) > 0) end;
- if (.@level <= 3) delitem "HardSpike", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1500, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 14;
- misceffect FX_MAGIC_SHIELD_CAST, strcharinfo(0);
- callfunc "magic_exp";
-
- if (BL_ID == @target_id) set @args$, strcharinfo(0);
- misceffect FX_MAGIC_SHIELD, @args$;
- set .@time, (@spellpower*1000)+5000;
- set @betsanc_time, .@time, @target_id;
- sc_start SC_PHYS_SHIELD, .@time, max(15,(@spellpower/20))+5, @target_id;
- message @args$, "Shield : You feel more protected.";
- set @betsanc_future, gettimetick(0) + @betsanc_time - 100, @target_id;
- addtimer @betsanc_time - 100, strnpcinfo(0)+"::OnEnd", @target_id;
- end;
-
-OnEnd:
- if (gettimetick(0) - @betsanc_future < 0) end;
- if (sc_check(SC_PHYS_SHIELD) != 1) end;
- message strcharinfo(0), "Shield : You feel less protected.";
- misceffect FX_MAGIC_SHIELD_ENDS, strcharinfo(0);
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "betsanc"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-rain.txt b/world/map/npc/magic/level2-rain.txt
deleted file mode 100644
index fac98690..00000000
--- a/world/map/npc/magic/level2-rain.txt
+++ /dev/null
@@ -1,107 +0,0 @@
--|script|rain|32767
-{
- // we can not start here because for the puppets this is OnClick
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (getskilllv(.school) < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (Sp < 17) end;
- explode .@map_ext[0], getmap(), "-";
- if (.@map_ext[1] != 1 && getmap() != "099-5") end; // XXX this is fugly, in the future let's use MF_OUTSIDE to detect if a map is "outside" or "inside"
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(.school) < 4 && countitem("BottleOfWater") >= 1) delitem "BottleOfWater", 1;
- elif (getskilllv(.school) < 4) end;
- set Sp, Sp - 17;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 3000, "Magic Timer::OnClear"; // set the new debuff
-
- callfunc "adjust_spellpower";
- set @krad, min(.max_radius,(min(@spellpower,200)/30)+3); // kaflosh radius
-
- set @nearby, 0;
- foreach 1, getmap(), POS_X - .max_radius, POS_Y - .max_radius, POS_X + .max_radius, POS_Y + .max_radius,
- strnpcinfo(0) + "::OnNearbyNpc";
- if (@nearby) goto L_Absorb;
-
- set @new_npc_name$, "#" + strnpcinfo(0) + "#" + getcharid(3); // make a unique puppet name for every player
- callfunc "magic_exp";
- misceffect FX_MAGIC_RAIN_CAST, strcharinfo(0);
- set @spell_npc, puppet(getmap(), POS_X, POS_Y, @new_npc_name$, 127); // clone npc => get puppet id
- if (@spell_npc < 1) end;
- set .caster, getcharid(3), @spell_npc; // tell the puppet who controls it
- set .radius, @krad, @spell_npc; // this is also used by ingrav, don't rename
- set .initial_x, POS_X, @spell_npc;
- set .initial_y, POS_Y, @spell_npc;
- set .max, @spellpower/3, @spell_npc;
- set .max_launch, min(200,@spellpower/2)/100, @spell_npc;
- donpcevent @new_npc_name$+"::OnLaunch"; // start
- addnpctimer 30000, @new_npc_name$+"::OnDestroy"; // this is just a failsafe in case the npc is not properly destroyed
- if(isin("011-1", 85, 31, 103, 45)) goto L_Pumpkins;
- end;
-
-L_Absorb:
- message strcharinfo(0), "##3Rain : ##BA nearby raincloud absorbs your magic.";
- end;
-
-OnNearbyNpc:
- explode .@nearby$[0], strnpcinfo(0,@target_id), "#";
- if(.@nearby$[1] == "DruidTree0" || .@nearby$[1] == "DruidTree0") goto L_Tree;
- if(.@nearby$[0] == "rain" || .@nearby$[1] == "rain")
- set @nearby, @nearby + 1;
- end;
-
-L_Pumpkins:
- callfunc "HalloweenQuestWaterPumpkins";
- end;
-
-L_Tree:
- set .@x, get(POS_X, @target_id); set .@y, get(POS_Y, @target_id);
- if (.@x < POS_X-@krad || .@y < POS_Y-@krad || .@x > POS_X+@krad || .@y > POS_Y+@krad) end; // in max radius but not in puppet area
- set @flag, 1;
- callfunc "QuestTreeTrigger";
- close;
-
-OnLaunch:
- if (!(isloggedin(.caster))) destroy;
- if(get(Hp, .caster) < 1) destroy; // destroy if caster is missing
- if(getmap(.caster) != strnpcinfo(3)) destroy; // destroy if caster left the map
- set .count, .count + 1;
- if(.count > .max) destroy;
- set .launch, 0;
- callsub S_Launch;
- addnpctimer 400 + rand(100), strnpcinfo(0)+"::OnLaunch"; // loop until max
- end;
-
-S_Launch:
- npcareawarp .initial_x - .radius, .initial_y - .radius, .initial_x + .radius, .initial_y + .radius, 0, strnpcinfo(0);
- misceffect FX_RAIN;
- foreach 2, strnpcinfo(3), getnpcx()-1, getnpcy()-1, getnpcx()+1, getnpcy()+1, strnpcinfo(0) + "::OnHit", .caster;
- set .launch, .launch + 1;
- if(.launch < .max_launch) goto S_Launch;
- return;
-
-OnHit:
- if (!(isloggedin(.caster))) destroy;
- if(get(Hp, .caster) < 1) destroy; // destroy if caster is missing
- if(getmap(.caster) != strnpcinfo(3)) destroy; // destroy if caster left the map
- if(target(.caster, @target_id, 16) != 16 && .caster != @target_id) end;
- if((get(BL_TYPE, @target_id) & 1) == 0) end; // either mob or pc
- if(get(ELTTYPE, @target_id) == ELT_FIRE)
- injure .caster, @target_id, ((rand((@spellpower/15)+5)+2) * (100 - get(MDEF1, @target_id))) / 100;
- end;
-
-OnDestroy:
- debugmes "kaflosh timeout! [this shouldn't happen]"; // XXX: looks like this CAN happen with higher levels of magic, so we might want to cap max charges
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "kaflosh"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 1;
- set .max_radius, 15;
- end;
-}
diff --git a/world/map/npc/magic/level2-shear.txt b/world/map/npc/magic/level2-shear.txt
deleted file mode 100644
index 325e0863..00000000
--- a/world/map/npc/magic/level2-shear.txt
+++ /dev/null
@@ -1,68 +0,0 @@
--|script|shear|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 23) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 1000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 23;
- misceffect FX_MAGIC_SHEAR_CAST, strcharinfo(0);
- setarray @chipchipspell[0],
- @spellpower,
- (((200 - Agi) * 2000) / 200); //delay
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-OnAttack:
- if (isloggedin(@target_id)) goto L_FreeRecast; // can not shear a player
- if (sc_check(SC_SHEARED, @target_id)) goto L_FreeRecast; // mob already sheared
- if (target(BL_ID, @target_id, 22) != 22) goto L_FreeRecast; // 0x10 | 0x02 | 0x04
- sc_start SC_SHEARED, 600000, 0, @target_id;
- set .@score, rand(1000 - rand(@chipchipspell[0]));
- set .@id, get(Class, @target_id); // get the mob ID
- set @chipchipspell[2], 0;
-
- if (.@id == 1020 && .@score < 300) set .@item$, "WhiteFur"; // Fluffy
- elif (.@id == 1027 && .@score < 300) set .@item$, "WhiteFur"; // EasterFluffy
- elif (.@id == 1019 && .@score < 250) set .@item$, "HardSpike"; // SpikyMushroom
- elif (.@id == 1028 && .@score < 175) set .@item$, "CottonCloth"; // Mouboo
- elif (.@id == 1029 && .@score < 700) set .@item$, "MauveHerb"; // MauvePlant
- elif (.@id == 1030 && .@score < 700) set .@item$, "CobaltHerb"; // CobaltPlant
- elif (.@id == 1031 && .@score < 700) set .@item$, "GambogeHerb"; // GambogePlant
- elif (.@id == 1032 && .@score < 700) set .@item$, "AlizarinHerb"; // AlizarinPlant
- elif (.@id == 1035 && .@score < 300) set .@item$, "SilkCocoon"; // SilkWorm
- elif (.@id == 1018 && .@score < 180) set .@item$, "PinkAntenna"; // Pinkie
- else end;
- makeitem .@item$, 1, getmap(), rand(POS_X - 1, POS_X + 1), rand(POS_Y - 1, POS_Y + 1);
-
- if (.@id != 1020 && .@id != 1028 && .@id != 1018 && rand(2) != 1) end;
- set @value, 1;
- callfunc "QuestSagathaHappy";
- end;
-
-L_FreeRecast:
- set @chipchipspell[2], 1;
- addtimer 0, strnpcinfo(0) + "::OnSetRecast"; // we can't do it while already overridden, until it reaches a script terminator
- end;
-
-OnDischarge:
- if (@chipchipspell[2] < 1) end;
- set @chipchipspell[2], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnSetRecast:
- overrideattack @chipchipspell[1], 1, ATTACK_ICON_SHEARING, OVERRIDE_SHEAR, strnpcinfo(0)+"::OnAttack", @chipchipspell[2];
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_NATURE;
- set .invocation$, chr(MAGIC_SYMBOL) + "chipchip"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 0;
- end;
-}
diff --git a/world/map/npc/magic/level2-summon-fluffies.txt b/world/map/npc/magic/level2-summon-fluffies.txt
deleted file mode 100644
index b614e4a3..00000000
--- a/world/map/npc/magic/level2-summon-fluffies.txt
+++ /dev/null
@@ -1,58 +0,0 @@
--|script|smfluffies|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 39) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("WhiteFur") < 1 || countitem("Root") < 1) end;
- delitem "WhiteFur", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 20000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 39;
- misceffect FX_MAGIC_FLUFFY_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, (@spellpower/170)+1+(@spellpower/430), .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, @spellpower*350, .@puppet;
- addnpctimer 5000-(@spellpower*8), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_FLUFFY_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1020, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "kalakarenk"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-summon-mouboo.txt b/world/map/npc/magic/level2-summon-mouboo.txt
deleted file mode 100644
index dfa60e57..00000000
--- a/world/map/npc/magic/level2-summon-mouboo.txt
+++ /dev/null
@@ -1,58 +0,0 @@
--|script|smmouboo|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 35) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("MoubooFigurine") < 1 || countitem("Root") < 1) end;
- delitem "MoubooFigurine", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 20000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 35;
- misceffect FX_MAGIC_MOUBOO_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, (@spellpower/270)+1, .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, @spellpower*100, .@puppet;
- addnpctimer 4000-(@spellpower*9), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_MOUBOO_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1028, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "kalboo"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-summon-pinkie.txt b/world/map/npc/magic/level2-summon-pinkie.txt
deleted file mode 100644
index efcb014c..00000000
--- a/world/map/npc/magic/level2-summon-pinkie.txt
+++ /dev/null
@@ -1,58 +0,0 @@
--|script|smpinkie|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 35) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("PinkAntenna") < 1 || countitem("Root") < 1) end;
- delitem "PinkAntenna", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 20000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 35;
- misceffect FX_MAGIC_PINKY_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, (@spellpower/120)+1, .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, @spellpower*150, .@puppet;
- addnpctimer 5000-(@spellpower*9), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_PINKY_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1018, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "kalgina"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 2;
- end;
-}
diff --git a/world/map/npc/magic/level2-summon-snakes.txt b/world/map/npc/magic/level2-summon-snakes.txt
deleted file mode 100644
index 2e2021ae..00000000
--- a/world/map/npc/magic/level2-summon-snakes.txt
+++ /dev/null
@@ -1,64 +0,0 @@
--|script|summon-snakes|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 40) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("DarkCrystal") < 1 || countitem("SnakeEgg") < 1) end;
- if (OrumQuest <= 40) end;
- delitem "DarkCrystal", 1;
- delitem "SnakeEgg", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 15000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 40;
- misceffect FX_MAGIC_SNAKE_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, (@spellpower/300)+1, .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, @spellpower*80, .@puppet;
- addnpctimer 4000-(@spellpower*9), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_SNAKE_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- set .@sn, rand(0, 3);
-
- if (.@sn == 0) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1021, 2, .lifetime;
- elif (.@sn == 1) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1010, 2, .lifetime;
- elif (.@sn == 2) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1026, 2, .lifetime;
- elif (.@sn == 3) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1034, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_DARK;
- set .invocation$, chr(MAGIC_SYMBOL) + "halhiss"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 3;
- end;
-}
diff --git a/world/map/npc/magic/level2-summon-spiky-mushroom.txt b/world/map/npc/magic/level2-summon-spiky-mushroom.txt
deleted file mode 100644
index ff861283..00000000
--- a/world/map/npc/magic/level2-summon-spiky-mushroom.txt
+++ /dev/null
@@ -1,58 +0,0 @@
--|script|smsmushrooms|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 33) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("HardSpike") < 1 || countitem("Root") < 1) end;
- delitem "HardSpike", 1;
- delitem "Root", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 20000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 33;
- misceffect FX_MAGIC_SPIKY_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, (@spellpower/120)+1, .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, @spellpower*400, .@puppet;
- addnpctimer 5000-(@spellpower*9), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_SPIKY_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1019, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_ASTRAL;
- set .invocation$, chr(MAGIC_SYMBOL) + "kalrenk"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/magic/level2-summon-wickedmushroom.txt b/world/map/npc/magic/level2-summon-wickedmushroom.txt
deleted file mode 100644
index dc5fb72d..00000000
--- a/world/map/npc/magic/level2-summon-wickedmushroom.txt
+++ /dev/null
@@ -1,63 +0,0 @@
--|script|smwmushroom|32767
-{
- end;
-
-OnCast:
- if(call("magic_checks")) end;
- if (Sp < 35) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- if (getskilllv(.school) < .level) end;
- if (countitem("DarkCrystal") < 1 || countitem("SmallMushroom") < 1) end;
- if (OrumQuest <= 36) end;
- delitem "DarkCrystal", 1;
- delitem "SmallMushroom", 1;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 15000, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 35;
- misceffect FX_MAGIC_WICKED_CAST, strcharinfo(0);
- callfunc "magic_exp";
- set .@puppet$, "#"+strnpcinfo(0)+"#"+BL_ID;
- set .@puppet, puppet(getmap(), POS_X, POS_Y, .@puppet$, 127);
- if (.@puppet < 1) end;
- set .count, (@spellpower/250)+1, .@puppet;
- set .master, BL_ID, .@puppet;
- set .lifetime, @spellpower*80, .@puppet;
- addnpctimer 4000-(@spellpower*9), .@puppet$+"::OnSummon";
- addnpctimer 6000, .@puppet$+"::OnDestroy";
- end;
-
-OnSummon:
- if (!(isloggedin(.master))) destroy;
- if(get(Hp, .master) < 1) destroy; // destroy if master is missing
- if(getmap(.master) != strnpcinfo(3)) destroy; // destroy if master left the map
- specialeffect FX_MAGIC_WICKED_SPAWN;
- set .@i, 0;
- set .@x, getnpcx();
- set .@y, getnpcy();
- set .@map$, strnpcinfo(3);
- callsub S_SummonAll;
- end;
-
-OnDestroy:
- destroy;
-
-S_SummonAll:
- set .@rnd, rand(0, 9);
-
- if (.@rnd < 6) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1106, 2, .lifetime;
- elif (.@rnd < 9) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1130, 2, .lifetime;
- elif (.@rnd == 9) summon .@map$, rand(.@x-2,.@x+2), rand(.@y-2,.@y+2), .master, 1013, 2, .lifetime;
- set .@i, .@i + 1;
- if (.@i < .count) goto S_SummonAll;
- destroy;
-
-OnInit:
- set .school, SKILL_MAGIC_DARK;
- set .invocation$, chr(MAGIC_SYMBOL) + "helorp"; // used in npcs that refer to this spell
- void call("magic_register", "OnCast");
- set .level, 2;
- set .exp_gain, 3;
- end;
-}
diff --git a/world/map/npc/magic/level2-toxic-dart.txt b/world/map/npc/magic/level2-toxic-dart.txt
deleted file mode 100644
index 5f611262..00000000
--- a/world/map/npc/magic/level2-toxic-dart.txt
+++ /dev/null
@@ -1,57 +0,0 @@
--|script|toxic-dart|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 15) end;
- set .@level, getskilllv(.school);
- if (.@level < .level) end;
- if (OrumQuest <= 37) end;
- if (.@level <= 2 && countitem("Root") >= 2) delitem "Root", 2;
- elif (.@level <= 2) end;
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 500, "Magic Timer::OnClear"; // set the new debuff
- callfunc "adjust_spellpower";
- set Sp, Sp - 15;
- misceffect FX_MAGIC_TDART_CAST, strcharinfo(0);
- setarray @phlexspell[0],
- (sqrt(@spellpower) * 5), // elt damage
- ((BaseLevel/3) + 5), // elt damage bonus
- (((200 - Agi) * 1200) / 200), // delay
- ((@spellpower/75) + 3), // charges
- (5000+(@spellpower*1200)), // poison duration
- (max(15,@spellpower/15)+5); // poison strength
-
- callfunc "magic_exp";
- goto L_FreeRecast;
-
-OnAttack:
- if (target(BL_ID, @target_id, 50) != 50) goto L_FreeRecast; // 0x20 | 0x02 | 0x10
- void call("elt_damage", @phlexspell[0], @phlexspell[1], ELT_NEUTRAL, ELT_POISON, FX_NONE);
- if(@target_id != BL_ID && isloggedin(@target_id)) // this is a dirty trick to check if the target is a player
- sc_start sc_poison, @phlexspell[4], @phlexspell[5], @target_id;
- set @phlexspell[3], @phlexspell[3] - 1;
- goto L_FreeRecast;
-
-L_FreeRecast:
- if (@phlexspell[3] > 0)
- addtimer 0, strnpcinfo(0) + "::OnSetRecast";
- end;
-
-OnDischarge:
- if (@phlexspell[3] < 1) end;
- set @phlexspell[3], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- end;
-
-OnSetRecast:
- overrideattack @phlexspell[2], 4, ATTACK_ICON_GENERIC, OVERRIDE_TDART, strnpcinfo(0)+"::OnAttack", @phlexspell[3];
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_DARK;
- set .invocation$, chr(MAGIC_SYMBOL) + "phlex"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 2;
- set .exp_gain, 3;
- end;
-}
diff --git a/world/map/npc/magic/level3-necromancy.txt b/world/map/npc/magic/level3-necromancy.txt
deleted file mode 100644
index 2cd6724d..00000000
--- a/world/map/npc/magic/level3-necromancy.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-// see https://tmworld.uservoice.com/forums/255809-general/suggestions/6051818-sacrifice
-// author: gumi
--|script|necromancy|32767
-{
- if(call("magic_checks")) end;
- if (Sp < 50) end;
- if (getskilllv(.school) < .level) end;
- if (getskilllv(SKILL_MAGIC) < .level) end;
- set @target_id, getcharid(3, @args$);
- if (@target_id < 1 || !(isloggedin(@target_id)) || get(INVISIBLE, @target_id)) end;
- if (get(Hp, @target_id) > 0) end;
- if (Hp < (get(MaxHp, @target_id) / 3)) end; // hp must be at least a third of the max hp of the target
- callfunc "adjust_spellpower";
- if (distance(BL_ID, @target_id) >= (((sqrt(@spellpower)*12)+@spellpower)/100)+2) end;
- if (get(@necromancer, @target_id) > 0) end; // someone else is already trying to resurrect this player
- if (getmapflag(getmap(), MF_NOSAVE)) end; // do not allow for maps like illia or candor
- if (countitem("Soul") >= 1) delitem "Soul", 1; else end;
-
- set @_M_BLOCK, 1; // block casting, until the timer clears it
- addtimer 20000, "Magic Timer::OnClear";
- set Sp, Sp - 50;
- misceffect FX_MAGIC_DARKRED, strcharinfo(0); // on caster
- misceffect FX_PENTAGRAM_BUILDUP, @args$; // on target
-
- set @necromancer, CHAR_ID, @target_id; // tell the target who is reviving them
-
- addtimer 6000, strnpcinfo(0)+"::OnRevive", @target_id; // TODO: make it take more or less time depending on the spell power
- end;
-
-OnRevive:
- set .@necro, get(BL_ID, @necromancer);
- if (.@necro < 1) goto L_Clean;
- if (get(Hp, .@necro) < 1) end;
- misceffect FX_PENTAGRAM_BURST, strcharinfo(0);
- misceffect FX_CRITICAL, strcharinfo(0, .@necro);
- heal 1, 0; // revive
- set Hp, 1;
- set Sp, 0;
- set Hp, 1, .@necro;
- set Sp, 0, .@necro;
- goto L_Clean;
-
-L_Clean:
- set @necromancer, 0;
- end;
-
-OnInit:
- set .school, SKILL_MAGIC_DARK;
- set .invocation$, chr(MAGIC_SYMBOL) + "nevela"; // used in npcs that refer to this spell
- void call("magic_register");
- set .level, 3;
- set .exp_gain, 1;
- end;
-}
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
deleted file mode 100644
index 114cc924..00000000
--- a/world/map/npc/scripts.conf
+++ /dev/null
@@ -1,87 +0,0 @@
-// This is the main script import file
-
-// NPC Functions
-npc: npc/functions/banker.txt
-npc: npc/functions/barber.txt
-npc: npc/functions/clear_vars.txt
-npc: npc/functions/dailyquest.txt
-npc: npc/functions/doomsday.txt
-npc: npc/functions/ferry.txt
-npc: npc/functions/miriam.txt
-npc: npc/functions/travelers.txt
-npc: npc/functions/game_rules.txt
-npc: npc/functions/inn.txt
-npc: npc/functions/magic.txt
-npc: npc/functions/mob_points.txt
-npc: npc/functions/process_equip.txt
-npc: npc/functions/slot_machine.txt
-npc: npc/functions/soul_menhir.txt
-npc: npc/functions/time.txt
-npc: npc/functions/water_bottle.txt
-npc: npc/functions/evil_obelisk.txt
-npc: npc/functions/announcements.txt
-npc: npc/functions/lockpicking.txt
-npc: npc/functions/default_npc_checks.txt
-npc: npc/functions/undead_debug.txt
-npc: npc/functions/headstyles.txt
-npc: npc/functions/stat_reset.txt
-npc: npc/functions/quiz.txt
-npc: npc/functions/dynamic_menu.txt
-npc: npc/functions/DyeConfig.txt
-npc: npc/functions/motd.txt
-npc: npc/functions/motdconfig.txt
-npc: npc/functions/ghost.txt
-npc: npc/functions/global_event_handler.txt
-
-// Item Functions
-npc: npc/items/purification_potion.txt
-npc: npc/items/scissors.txt
-npc: npc/items/pickled_beets.txt
-npc: npc/items/shock_sweet.txt
-npc: npc/items/unreleased_item.txt
-npc: npc/items/require_stat.txt
-npc: npc/items/restricted_item.txt
-npc: npc/items/warpTowels.txt
-npc: npc/items/unequipcb.txt
-npc: npc/items/launcher_ammo.txt
-npc: npc/items/check_wand.txt
-npc: npc/items/mirror.txt
-npc: npc/items/rubber_bat.txt
-npc: npc/items/scentedcandle.txt
-npc: npc/items/tmwgift.txt
-npc: npc/items/brawling_item.txt
-npc: npc/items/drugs.txt
-npc: npc/items/max_stat.txt
-npc: npc/items/nobow_item.txt
-npc: npc/items/love_potion.txt
-npc: npc/items/manapearl_item.txt
-import: npc/_import.txt
-
-// magic
-import: npc/magic/_import.txt
-
-// GM commands
-import: npc/commands/_import.txt
-
-// GM Events
-npc: npc/functions/gm_island.txt
-// Annuals Framework
-npc: npc/annuals/fathertime.txt
-npc: npc/annuals/check_time.txt
-npc: npc/annuals/tree_beard.txt
-// Annual Christmas
-npc: npc/annuals/xmas/config.txt
-npc: npc/annuals/xmas/states.txt
-npc: npc/annuals/xmas/barriers.txt
-npc: npc/annuals/xmas/core.txt
-npc: npc/annuals/xmas/debug.txt
-npc: npc/annuals/xmas/helpers.txt
-npc: npc/annuals/xmas/list.txt
-npc: npc/annuals/xmas/reagents.txt
-npc: npc/annuals/xmas/mobmanager.txt
-// Annual halloween
-npc: npc/annuals/halloween/config.txt
-npc: npc/annuals/halloween/debug.txt
-npc: npc/annuals/halloween/munro.txt
-npc: npc/annuals/halloween/doomsday.txt
-npc: npc/annuals/halloween/trick_or_treat.txt
diff --git a/world/map/resources2.php b/world/map/resources2.php
deleted file mode 100644
index de77e978..00000000
--- a/world/map/resources2.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-header("Content-type: text/plain");
-header("Cache-Control: no-store, no-cache, must-revalidate");
-header("Cache-Control: post-check=0, pre-check=0", false);
-header("Pragma: no-cache");
-
-print file_get_contents ("resources2.txt");
-?>
diff --git a/world/map/save/.gitignore b/world/map/save/.gitignore
deleted file mode 100644
index cab39708..00000000
--- a/world/map/save/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/mapreg.txt*
diff --git a/world/map/versions.php b/world/map/versions.php
deleted file mode 100644
index 601fb252..00000000
--- a/world/map/versions.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-$file = 'versions/' . date('Y-m-d') . '.txt';
-if (!file_exists($file)) touch($file); // Make sure it exists
-
-$versions = file($file);
-$verinfo = array();
-foreach($versions as $version) {
- $ver = substr($version, 8); // Ignore time information
- if ($verinfo[$ver] != null) {
- $verinfo[$ver]++;
- } else {
- $verinfo[$ver] = 1;
- }
-}
-
-arsort($verinfo);
-
-$total = count($versions);
-print '<table border="1px" cellspacing="0px" cellpadding="1px"><tr><th>Client</th><th title="Count">n</th><th title="Percent of total">%</th></tr>';
-foreach($verinfo as $vi=>$vc) {
- echo '<tr><td>' . htmlspecialchars($vi) . '</td><td>' . $vc . '</td><td>' . round((100 / $total) * $vc, 2) . '</td></tr>';
-}
-print '</table><br />Total number of connections: ' . $total . '<br />Number of different clients reported: '
- . count($verinfo) . '<br /><br />Data retrieved: ' . date('D M d y, g:i a T', filemtime($file));
-?>
diff --git a/world/save/.gitignore b/world/save/.gitignore
deleted file mode 100644
index c18b27af..00000000
--- a/world/save/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/athena.txt*
-/accreg.txt*
-/party.txt*
-/storage.txt*
-/guild.txt*
-/castle.txt*
-/g_storage.txt*