summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------client-data0
-rw-r--r--login/conf/login_local.conf.example10
m---------tools0
-rw-r--r--world/map/conf/atcommand_athena.conf7
-rw-r--r--world/map/conf/atcommand_local.conf.example7
-rw-r--r--world/map/conf/battle_athena.conf6
-rw-r--r--world/map/conf/magic-anchors.sex118
-rw-r--r--world/map/conf/magic-debug.sex408
-rw-r--r--world/map/conf/magic-level0.sex39
-rw-r--r--world/map/conf/magic-level1.sex102
-rw-r--r--world/map/conf/magic-level2.sex211
-rw-r--r--world/map/conf/magic-level3.sex346
-rw-r--r--world/map/conf/magic-level4.sex2
-rw-r--r--world/map/conf/magic-level5.sex102
-rw-r--r--world/map/conf/magic-misc.sex79
-rw-r--r--world/map/conf/magic-procedures.sex31
-rw-r--r--world/map/conf/magic-quickdebug.sex2
-rw-r--r--world/map/conf/tmwa-map.conf4
-rw-r--r--world/map/data/012-4.wlkbin109204 -> 109204 bytes
-rw-r--r--world/map/data/017-1.wlkbin27284 -> 27284 bytes
-rw-r--r--world/map/data/020-1.wlkbin18948 -> 18948 bytes
-rw-r--r--world/map/data/029-1.wlkbin19604 -> 19604 bytes
-rw-r--r--world/map/data/029-2.wlkbin15404 -> 19884 bytes
-rw-r--r--world/map/data/029-3.wlkbin10004 -> 10004 bytes
-rw-r--r--world/map/data/051-3.wlkbin14954 -> 14954 bytes
-rw-r--r--world/map/db/const.txt67
-rw-r--r--world/map/db/item_db_chest.txt288
-rw-r--r--world/map/db/item_db_head.txt22
-rw-r--r--world/map/db/item_db_trinket.txt1
-rw-r--r--world/map/db/item_db_use.txt144
-rw-r--r--world/map/db/item_db_weapon.txt6
-rw-r--r--world/map/db/mob_db_0_19.txt4
-rw-r--r--world/map/db/mob_db_20_39.txt10
-rw-r--r--world/map/db/mob_skill_db.txt1
-rw-r--r--world/map/db/quest-log.txt13
-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/npc/001-1/_mobs.txt2
-rw-r--r--world/map/npc/001-1/_warps.txt28
-rw-r--r--world/map/npc/001-1/adrian.txt18
-rw-r--r--world/map/npc/001-1/ched.txt16
-rw-r--r--world/map/npc/001-1/children.txt24
-rw-r--r--world/map/npc/001-1/constable.txt2
-rw-r--r--world/map/npc/001-1/dock.txt2
-rw-r--r--world/map/npc/001-1/eomie.txt49
-rw-r--r--world/map/npc/001-1/ferry_master.txt2
-rw-r--r--world/map/npc/001-1/gate_guards.txt8
-rw-r--r--world/map/npc/001-1/gossip.txt49
-rw-r--r--world/map/npc/001-1/stat_reset.txt2
-rw-r--r--world/map/npc/001-1/tombstones.txt20
-rw-r--r--world/map/npc/001-1/weellos.txt12
-rw-r--r--world/map/npc/001-2/_mobs.txt2
-rw-r--r--world/map/npc/001-2/_warps.txt30
-rw-r--r--world/map/npc/001-2/government_building.txt73
-rw-r--r--world/map/npc/001-2/heathin.txt142
-rw-r--r--world/map/npc/001-2/manakins.txt22
-rw-r--r--world/map/npc/001-2/pauline.txt6
-rw-r--r--world/map/npc/001-2/sandra.txt3
-rw-r--r--world/map/npc/001-2/wizards.txt50
-rw-r--r--world/map/npc/001-3/_mobs.txt2
-rw-r--r--world/map/npc/001-3/_warps.txt2
-rw-r--r--world/map/npc/002-1/_mobs.txt2
-rw-r--r--world/map/npc/002-1/_warps.txt32
-rw-r--r--world/map/npc/002-1/elanore.txt132
-rw-r--r--world/map/npc/002-1/lieutenant_dausen.txt3
-rw-r--r--world/map/npc/002-1/nickos.txt59
-rw-r--r--world/map/npc/002-1/sarah.txt13
-rw-r--r--world/map/npc/002-1/soul-menhir.txt1
-rw-r--r--world/map/npc/002-1/stewen.txt3
-rw-r--r--world/map/npc/002-1/traveler.txt2
-rw-r--r--world/map/npc/002-2/_mobs.txt2
-rw-r--r--world/map/npc/002-2/_warps.txt38
-rw-r--r--world/map/npc/002-2/bakery.txt43
-rw-r--r--world/map/npc/002-2/barber.txt2
-rw-r--r--world/map/npc/002-2/bleacher.txt327
-rw-r--r--world/map/npc/002-2/casino.txt64
-rw-r--r--world/map/npc/002-2/eurni.txt26
-rw-r--r--world/map/npc/002-2/hetchel.txt34
-rw-r--r--world/map/npc/002-2/imec.txt58
-rw-r--r--world/map/npc/002-2/inya.txt2
-rw-r--r--world/map/npc/002-2/kps.txt31
-rw-r--r--world/map/npc/002-2/kylian.txt112
-rw-r--r--world/map/npc/002-2/latoy.txt2
-rw-r--r--world/map/npc/002-2/troupe_leader.txt2
-rw-r--r--world/map/npc/002-3/_mobs.txt2
-rw-r--r--world/map/npc/002-3/_warps.txt6
-rw-r--r--world/map/npc/002-3/mining_camp_barrier.txt7
-rw-r--r--world/map/npc/002-3/nathan.txt3
-rw-r--r--world/map/npc/002-3/traveler.txt2
-rw-r--r--world/map/npc/002-4/_mobs.txt2
-rw-r--r--world/map/npc/002-4/_warps.txt2
-rw-r--r--world/map/npc/002-4/mine_triggerone.txt3
-rw-r--r--world/map/npc/002-4/mine_triggerthree.txt3
-rw-r--r--world/map/npc/002-4/mine_triggertwo.txt3
-rw-r--r--world/map/npc/002-4/naem.txt3
-rw-r--r--world/map/npc/002-4/underground_palace_barrier.txt7
-rw-r--r--world/map/npc/002-5/_mobs.txt2
-rw-r--r--world/map/npc/002-5/_warps.txt2
-rw-r--r--world/map/npc/002-5/chest.txt3
-rw-r--r--world/map/npc/002-5/sema.txt5
-rw-r--r--world/map/npc/004-3/_mobs.txt2
-rw-r--r--world/map/npc/004-3/_warps.txt14
-rw-r--r--world/map/npc/004-4/_mobs.txt2
-rw-r--r--world/map/npc/004-4/_warps.txt12
-rw-r--r--world/map/npc/004-5/_mobs.txt2
-rw-r--r--world/map/npc/004-5/_warps.txt2
-rw-r--r--world/map/npc/004-5/chest.txt7
-rw-r--r--world/map/npc/005-3/_mobs.txt2
-rw-r--r--world/map/npc/005-3/_warps.txt14
-rw-r--r--world/map/npc/006-1/_mobs.txt2
-rw-r--r--world/map/npc/006-1/_warps.txt58
-rw-r--r--world/map/npc/006-1/miriam.txt19
-rw-r--r--world/map/npc/006-1/pachua.txt3
-rw-r--r--world/map/npc/006-1/traveler.txt2
-rw-r--r--world/map/npc/006-2/_mobs.txt2
-rw-r--r--world/map/npc/006-2/_warps.txt8
-rw-r--r--world/map/npc/006-3/_mobs.txt2
-rw-r--r--world/map/npc/006-3/_warps.txt40
-rw-r--r--world/map/npc/007-1/_mobs.txt2
-rw-r--r--world/map/npc/007-1/_warps.txt6
-rw-r--r--world/map/npc/007-1/voltain.txt2
-rw-r--r--world/map/npc/007-1/witch.txt46
-rw-r--r--world/map/npc/008-1/_mobs.txt2
-rw-r--r--world/map/npc/008-1/_warps.txt16
-rw-r--r--world/map/npc/008-1/annualeaster.txt2
-rw-r--r--world/map/npc/008-1/diryn.txt2
-rw-r--r--world/map/npc/008-1/dock.txt4
-rw-r--r--world/map/npc/008-1/hinnak.txt2
-rw-r--r--world/map/npc/008-1/mikhail.txt7
-rw-r--r--world/map/npc/009-1/_import.txt1
-rw-r--r--world/map/npc/009-1/_mobs.txt2
-rw-r--r--world/map/npc/009-1/_warps.txt24
-rw-r--r--world/map/npc/009-1/constable.txt11
-rw-r--r--world/map/npc/009-1/jack.txt7
-rw-r--r--world/map/npc/009-1/milly.txt2
-rw-r--r--world/map/npc/009-1/old_man.txt20
-rw-r--r--world/map/npc/009-1/old_woman.txt14
-rw-r--r--world/map/npc/009-1/sabine.txt2
-rw-r--r--world/map/npc/009-1/soul-menhir.txt1
-rw-r--r--world/map/npc/009-2/_mobs.txt2
-rw-r--r--world/map/npc/009-2/_warps.txt42
-rw-r--r--world/map/npc/009-2/airlia.txt64
-rw-r--r--world/map/npc/009-2/alan.txt4
-rw-r--r--world/map/npc/009-2/bernard.txt3
-rw-r--r--world/map/npc/009-2/doctor.txt2
-rw-r--r--world/map/npc/009-2/entertainer.txt10
-rw-r--r--world/map/npc/009-2/inspector.txt70
-rw-r--r--world/map/npc/009-2/kfahr.txt104
-rw-r--r--world/map/npc/009-2/lena.txt15
-rw-r--r--world/map/npc/009-2/nurse.txt1
-rw-r--r--world/map/npc/009-2/peter.txt12
-rw-r--r--world/map/npc/009-2/richard.txt1
-rw-r--r--world/map/npc/009-2/selim.txt101
-rw-r--r--world/map/npc/009-2/wyara.txt168
-rw-r--r--world/map/npc/009-3/_mobs.txt2
-rw-r--r--world/map/npc/009-3/_warps.txt8
-rw-r--r--world/map/npc/009-4/_mobs.txt2
-rw-r--r--world/map/npc/009-4/_warps.txt12
-rw-r--r--world/map/npc/009-4/barriers.txt30
-rw-r--r--world/map/npc/009-4/orum.txt10
-rw-r--r--world/map/npc/009-4/torches.txt8
-rw-r--r--world/map/npc/009-4/waric.txt2
-rw-r--r--world/map/npc/009-5/_mobs.txt2
-rw-r--r--world/map/npc/009-5/_warps.txt2
-rw-r--r--world/map/npc/009-6/_mobs.txt2
-rw-r--r--world/map/npc/009-6/_warps.txt2
-rw-r--r--world/map/npc/009-6/brodomir.txt19
-rw-r--r--world/map/npc/009-7/_mobs.txt2
-rw-r--r--world/map/npc/009-7/_warps.txt2
-rw-r--r--world/map/npc/009-7/battlemaster.txt16
-rw-r--r--world/map/npc/009-7/core.txt50
-rw-r--r--world/map/npc/009-7/debug.txt19
-rw-r--r--world/map/npc/009-7/eventHandler.txt6
-rw-r--r--world/map/npc/009-7/mapflags.txt1
-rw-r--r--world/map/npc/009-7/shops.txt2
-rw-r--r--world/map/npc/010-1/_mobs.txt2
-rw-r--r--world/map/npc/010-1/_warps.txt10
-rw-r--r--world/map/npc/010-2/_mobs.txt2
-rw-r--r--world/map/npc/010-2/_warps.txt14
-rw-r--r--world/map/npc/010-2/band.txt2
-rw-r--r--world/map/npc/010-2/loratay.txt190
-rw-r--r--world/map/npc/011-1/_mobs.txt2
-rw-r--r--world/map/npc/011-1/_warps.txt12
-rw-r--r--world/map/npc/011-1/alchemist.txt10
-rw-r--r--world/map/npc/011-1/auldsbel.txt208
-rw-r--r--world/map/npc/011-1/oscar.txt6
-rw-r--r--world/map/npc/011-3/_mobs.txt2
-rw-r--r--world/map/npc/011-3/_warps.txt2
-rw-r--r--world/map/npc/011-4/_mobs.txt2
-rw-r--r--world/map/npc/011-4/_warps.txt22
-rw-r--r--world/map/npc/011-4/bl_barrier.txt8
-rw-r--r--world/map/npc/011-6/_mobs.txt2
-rw-r--r--world/map/npc/011-6/_warps.txt44
-rw-r--r--world/map/npc/011-6/barrier.txt4
-rw-r--r--world/map/npc/011-6/bryant.txt3
-rw-r--r--world/map/npc/011-6/crastur.txt22
-rw-r--r--world/map/npc/012-1/_mobs.txt2
-rw-r--r--world/map/npc/012-1/_warps.txt22
-rw-r--r--world/map/npc/012-1/injured-mouboo.txt8
-rw-r--r--world/map/npc/012-1/shops.txt2
-rw-r--r--world/map/npc/012-3/_mobs.txt2
-rw-r--r--world/map/npc/012-3/_warps.txt20
-rw-r--r--world/map/npc/012-3/mana-seed.txt6
-rw-r--r--world/map/npc/012-3/traveler.txt2
-rw-r--r--world/map/npc/012-4/_mobs.txt2
-rw-r--r--world/map/npc/012-4/_warps.txt6
-rw-r--r--world/map/npc/013-1/_mobs.txt2
-rw-r--r--world/map/npc/013-1/_warps.txt10
-rw-r--r--world/map/npc/013-1/flowerpentagram.txt2
-rw-r--r--world/map/npc/013-1/sagatha.txt8
-rw-r--r--world/map/npc/013-1/traveler.txt2
-rw-r--r--world/map/npc/013-2/_mobs.txt2
-rw-r--r--world/map/npc/013-2/_warps.txt6
-rw-r--r--world/map/npc/013-3/_mobs.txt2
-rw-r--r--world/map/npc/013-3/_warps.txt54
-rw-r--r--world/map/npc/013-3/barrier.txt2
-rw-r--r--world/map/npc/013-3/mask_chest.txt6
-rw-r--r--world/map/npc/013-3/sword_chest.txt1
-rw-r--r--world/map/npc/014-1/_mobs.txt2
-rw-r--r--world/map/npc/014-1/_warps.txt6
-rw-r--r--world/map/npc/014-1/wedding-officiator.txt4
-rw-r--r--world/map/npc/014-3/_mobs.txt2
-rw-r--r--world/map/npc/014-3/_warps.txt8
-rw-r--r--world/map/npc/015-1/_mobs.txt2
-rw-r--r--world/map/npc/015-1/_warps.txt6
-rw-r--r--world/map/npc/015-1/barrier.txt2
-rw-r--r--world/map/npc/015-1/sword.txt23
-rw-r--r--world/map/npc/015-3/_mobs.txt2
-rw-r--r--world/map/npc/015-3/_warps.txt2
-rw-r--r--world/map/npc/015-3/katze.txt2
-rw-r--r--world/map/npc/016-1/_mobs.txt2
-rw-r--r--world/map/npc/016-1/_warps.txt4
-rw-r--r--world/map/npc/016-1/gwendolyn.txt2
-rw-r--r--world/map/npc/017-1/_mobs.txt2
-rw-r--r--world/map/npc/017-1/_warps.txt16
-rw-r--r--world/map/npc/017-2/_mobs.txt2
-rw-r--r--world/map/npc/017-2/_warps.txt4
-rw-r--r--world/map/npc/017-3/_mobs.txt2
-rw-r--r--world/map/npc/017-3/_warps.txt18
-rw-r--r--world/map/npc/017-4/_mobs.txt2
-rw-r--r--world/map/npc/017-4/_warps.txt14
-rw-r--r--world/map/npc/017-4/waric.txt12
-rw-r--r--world/map/npc/017-9/_mobs.txt2
-rw-r--r--world/map/npc/017-9/_warps.txt10
-rw-r--r--world/map/npc/017-9/announcements.txt4
-rw-r--r--world/map/npc/017-9/secret.txt8
-rw-r--r--world/map/npc/018-1/_mobs.txt2
-rw-r--r--world/map/npc/018-1/_warps.txt34
-rw-r--r--world/map/npc/018-2/_mobs.txt2
-rw-r--r--world/map/npc/018-2/_warps.txt14
-rw-r--r--world/map/npc/018-2/angus.txt2
-rw-r--r--world/map/npc/018-2/books.txt2
-rw-r--r--world/map/npc/018-2/caul.txt260
-rw-r--r--world/map/npc/018-2/miners.txt2
-rw-r--r--world/map/npc/018-2/receptionist.txt2
-rw-r--r--world/map/npc/018-3/_mobs.txt2
-rw-r--r--world/map/npc/018-3/_warps.txt44
-rw-r--r--world/map/npc/018-3/bookcase.txt2
-rw-r--r--world/map/npc/018-3/evil-obelisk.txt1
-rw-r--r--world/map/npc/019-1/_mobs.txt2
-rw-r--r--world/map/npc/019-1/_warps.txt8
-rw-r--r--world/map/npc/019-1/santa_helper.txt1
-rw-r--r--world/map/npc/019-1/snowman.txt1
-rw-r--r--world/map/npc/019-3/_mobs.txt2
-rw-r--r--world/map/npc/019-3/_warps.txt6
-rw-r--r--world/map/npc/019-4/_mobs.txt2
-rw-r--r--world/map/npc/019-4/_warps.txt4
-rw-r--r--world/map/npc/020-1/_mobs.txt2
-rw-r--r--world/map/npc/020-1/_warps.txt20
-rw-r--r--world/map/npc/020-1/soul-menhir.txt1
-rw-r--r--world/map/npc/020-1/traveler.txt2
-rw-r--r--world/map/npc/020-2/_mobs.txt2
-rw-r--r--world/map/npc/020-2/_warps.txt12
-rw-r--r--world/map/npc/020-2/banker.txt1
-rw-r--r--world/map/npc/020-2/furquest.txt16
-rw-r--r--world/map/npc/020-3/_mobs.txt2
-rw-r--r--world/map/npc/020-3/_warps.txt14
-rw-r--r--world/map/npc/021-3/_mobs.txt2
-rw-r--r--world/map/npc/021-3/_warps.txt8
-rw-r--r--world/map/npc/025-1/_mobs.txt2
-rw-r--r--world/map/npc/025-1/_warps.txt6
-rw-r--r--world/map/npc/025-3/_mobs.txt2
-rw-r--r--world/map/npc/025-3/_warps.txt4
-rw-r--r--world/map/npc/025-3/barriers.txt23
-rw-r--r--world/map/npc/025-4/_mobs.txt2
-rw-r--r--world/map/npc/025-4/_warps.txt2
-rw-r--r--world/map/npc/025-4/battlecaves.txt24
-rw-r--r--world/map/npc/026-1/_mobs.txt2
-rw-r--r--world/map/npc/026-1/_warps.txt4
-rw-r--r--world/map/npc/027-1/_mobs.txt2
-rw-r--r--world/map/npc/027-1/_warps.txt4
-rw-r--r--world/map/npc/027-1/traveler.txt2
-rw-r--r--world/map/npc/027-2/_mobs.txt2
-rw-r--r--world/map/npc/027-2/_warps.txt12
-rw-r--r--world/map/npc/027-2/gy_inn_shops.txt1
-rw-r--r--world/map/npc/027-2/lover.txt2
-rw-r--r--world/map/npc/027-3/_mobs.txt2
-rw-r--r--world/map/npc/027-3/_warps.txt4
-rw-r--r--world/map/npc/027-3/casket_traps.txt32
-rw-r--r--world/map/npc/027-3/general_krukan_door.txt2
-rw-r--r--world/map/npc/027-3/monsters.txt2
-rw-r--r--world/map/npc/027-4/_mobs.txt2
-rw-r--r--world/map/npc/027-4/_warps.txt4
-rw-r--r--world/map/npc/027-4/casket_traps.txt32
-rw-r--r--world/map/npc/027-4/general_razha_door.txt2
-rw-r--r--world/map/npc/027-4/monsters.txt2
-rw-r--r--world/map/npc/027-5/_mobs.txt2
-rw-r--r--world/map/npc/027-5/_warps.txt2
-rw-r--r--world/map/npc/027-5/casket_traps.txt32
-rw-r--r--world/map/npc/027-5/general_terogan_door.txt2
-rw-r--r--world/map/npc/027-6/_mobs.txt2
-rw-r--r--world/map/npc/027-6/casket_traps.txt28
-rw-r--r--world/map/npc/027-6/general_krukan.txt24
-rw-r--r--world/map/npc/027-6/general_krukan_exitdoor.txt2
-rw-r--r--world/map/npc/027-7/_mobs.txt2
-rw-r--r--world/map/npc/027-7/general_razha.txt28
-rw-r--r--world/map/npc/027-7/general_razha_exitdoor.txt2
-rw-r--r--world/map/npc/027-8/_mobs.txt2
-rw-r--r--world/map/npc/027-8/general_terogan.txt34
-rw-r--r--world/map/npc/027-8/general_terogan_exitdoor.txt2
-rw-r--r--world/map/npc/028-1/_mobs.txt2
-rw-r--r--world/map/npc/028-1/_warps.txt2
-rw-r--r--world/map/npc/028-3/_mobs.txt2
-rw-r--r--world/map/npc/028-3/_warps.txt2
-rw-r--r--world/map/npc/029-1/_mobs.txt2
-rw-r--r--world/map/npc/029-1/_warps.txt9
-rw-r--r--world/map/npc/029-1/aahna.txt8
-rw-r--r--world/map/npc/029-1/barrier.txt8
-rw-r--r--world/map/npc/029-1/dock.txt2
-rw-r--r--world/map/npc/029-1/hasan.txt38
-rw-r--r--world/map/npc/029-1/hideandseek.txt101
-rw-r--r--world/map/npc/029-1/kaan.txt25
-rw-r--r--world/map/npc/029-1/liana.txt14
-rw-r--r--world/map/npc/029-1/rewards_master.txt2
-rw-r--r--world/map/npc/029-1/soul-menhir.txt1
-rw-r--r--world/map/npc/029-1/traveler.txt2
-rw-r--r--world/map/npc/029-1/tutorial.txt27
-rw-r--r--world/map/npc/029-1/valon.txt48
-rw-r--r--world/map/npc/029-1/vincent.txt26
-rw-r--r--world/map/npc/029-1/zegas.txt30
-rw-r--r--world/map/npc/029-2/_import.txt3
-rw-r--r--world/map/npc/029-2/_mobs.txt2
-rw-r--r--world/map/npc/029-2/_warps.txt11
-rw-r--r--world/map/npc/029-2/bankroom.txt9
-rw-r--r--world/map/npc/029-2/barrels.txt8
-rw-r--r--world/map/npc/029-2/barrels_config.txt33
-rw-r--r--world/map/npc/029-2/cynric.txt8
-rw-r--r--world/map/npc/029-2/morgan.txt41
-rw-r--r--world/map/npc/029-2/nyle.txt51
-rw-r--r--world/map/npc/029-2/sorfina.txt62
-rw-r--r--world/map/npc/029-2/stat_reset.txt3
-rw-r--r--world/map/npc/029-2/tanisha.txt42
-rw-r--r--world/map/npc/029-3/_mobs.txt2
-rw-r--r--world/map/npc/029-3/parua.txt30
-rw-r--r--world/map/npc/030-2/_mobs.txt2
-rw-r--r--world/map/npc/030-2/_warps.txt30
-rw-r--r--world/map/npc/030-2/avalia.txt4
-rw-r--r--world/map/npc/030-3/_mobs.txt2
-rw-r--r--world/map/npc/030-3/_warps.txt2
-rw-r--r--world/map/npc/030-3/orum_homunculus.txt6
-rw-r--r--world/map/npc/030-4/_mobs.txt2
-rw-r--r--world/map/npc/030-4/mana_battery.txt56
-rw-r--r--world/map/npc/031-1/_mobs.txt2
-rw-r--r--world/map/npc/031-1/_warps.txt6
-rw-r--r--world/map/npc/031-1/dock.txt2
-rw-r--r--world/map/npc/031-2/_mobs.txt2
-rw-r--r--world/map/npc/031-2/_warps.txt4
-rw-r--r--world/map/npc/031-2/cindyHouse.txt2
-rw-r--r--world/map/npc/031-3/_mobs.txt2
-rw-r--r--world/map/npc/031-3/_warps.txt98
-rw-r--r--world/map/npc/031-4/_mobs.txt2
-rw-r--r--world/map/npc/031-4/cindyCave.txt22
-rw-r--r--world/map/npc/032-3/_mobs.txt2
-rw-r--r--world/map/npc/032-3/_warps.txt4
-rw-r--r--world/map/npc/033-1/_mobs.txt2
-rw-r--r--world/map/npc/033-1/_warps.txt4
-rw-r--r--world/map/npc/033-1/barbarianinit.txt2
-rw-r--r--world/map/npc/033-1/kimarr.txt2
-rw-r--r--world/map/npc/033-1/traveler.txt2
-rw-r--r--world/map/npc/034-1/_mobs.txt2
-rw-r--r--world/map/npc/034-1/_warps.txt12
-rw-r--r--world/map/npc/034-1/yetiSpawn.txt2
-rw-r--r--world/map/npc/034-2/_mobs.txt2
-rw-r--r--world/map/npc/034-2/_warps.txt4
-rw-r--r--world/map/npc/035-2/_mobs.txt2
-rw-r--r--world/map/npc/035-2/emblems.txt2
-rw-r--r--world/map/npc/036-2/_mobs.txt2
-rw-r--r--world/map/npc/036-2/emblems.txt2
-rw-r--r--world/map/npc/043-3/_mobs.txt2
-rw-r--r--world/map/npc/043-3/_warps.txt8
-rw-r--r--world/map/npc/043-4/_mobs.txt2
-rw-r--r--world/map/npc/043-4/_warps.txt6
-rw-r--r--world/map/npc/045-1/_mobs.txt2
-rw-r--r--world/map/npc/045-1/_warps.txt6
-rw-r--r--world/map/npc/046-1/_mobs.txt2
-rw-r--r--world/map/npc/046-1/_warps.txt20
-rw-r--r--world/map/npc/046-3/_mobs.txt2
-rw-r--r--world/map/npc/046-3/_warps.txt12
-rw-r--r--world/map/npc/047-1/_mobs.txt2
-rw-r--r--world/map/npc/047-1/_warps.txt28
-rw-r--r--world/map/npc/047-3/_mobs.txt2
-rw-r--r--world/map/npc/047-3/_warps.txt18
-rw-r--r--world/map/npc/048-2/_mobs.txt2
-rw-r--r--world/map/npc/048-2/_warps.txt34
-rw-r--r--world/map/npc/048-2/bluesageConfig.txt2
-rw-r--r--world/map/npc/048-2/helperChief.txt4
-rw-r--r--world/map/npc/048-2/sageNikolai.txt4
-rw-r--r--world/map/npc/048-2/slimes.txt14
-rw-r--r--world/map/npc/048-2/traveler.txt2
-rw-r--r--world/map/npc/051-1/_mobs.txt2
-rw-r--r--world/map/npc/051-1/desert.txt2
-rw-r--r--world/map/npc/051-1/desertmonsters.txt2
-rw-r--r--world/map/npc/051-1/forest.txt4
-rw-r--r--world/map/npc/051-1/forestmonsters.txt2
-rw-r--r--world/map/npc/051-1/janitor.txt4
-rw-r--r--world/map/npc/051-3/_mobs.txt2
-rw-r--r--world/map/npc/051-3/ambush.txt28
-rw-r--r--world/map/npc/051-3/jailslimes.txt2
-rw-r--r--world/map/npc/051-3/janitor.txt2
-rw-r--r--world/map/npc/051-3/reinforcements.txt6
-rw-r--r--world/map/npc/052-1/_mobs.txt2
-rw-r--r--world/map/npc/052-1/channelling.txt24
-rw-r--r--world/map/npc/052-1/janitor.txt2
-rw-r--r--world/map/npc/052-2/_mobs.txt2
-rw-r--r--world/map/npc/052-2/chest.txt30
-rw-r--r--world/map/npc/052-2/janitor.txt6
-rw-r--r--world/map/npc/052-2/lobby.txt4
-rw-r--r--world/map/npc/052-2/partyroom.txt10
-rw-r--r--world/map/npc/052-2/storage.txt6
-rw-r--r--world/map/npc/055-1/_mobs.txt2
-rw-r--r--world/map/npc/055-1/_warps.txt14
-rw-r--r--world/map/npc/055-1/pumpkins.txt4
-rw-r--r--world/map/npc/055-1/traveler.txt2
-rw-r--r--world/map/npc/055-3/_mobs.txt2
-rw-r--r--world/map/npc/055-3/_warps.txt12
-rw-r--r--world/map/npc/056-2/_mobs.txt2
-rw-r--r--world/map/npc/056-2/_warps.txt4
-rw-r--r--world/map/npc/056-2/mirak.txt2
-rw-r--r--world/map/npc/057-1/_mobs.txt2
-rw-r--r--world/map/npc/057-1/_warps.txt2
-rw-r--r--world/map/npc/annuals/fathertime.txt2
-rw-r--r--world/map/npc/annuals/halloween/config.txt2
-rw-r--r--world/map/npc/annuals/halloween/trick_or_treat.txt4
-rw-r--r--world/map/npc/annuals/xmas/barriers.txt4
-rw-r--r--world/map/npc/annuals/xmas/config.txt14
-rw-r--r--world/map/npc/annuals/xmas/core.txt5
-rw-r--r--world/map/npc/botcheck/_mobs.txt2
-rw-r--r--world/map/npc/functions/DyeConfig.txt42
-rw-r--r--world/map/npc/functions/banker.txt2
-rw-r--r--world/map/npc/functions/barber.txt6
-rw-r--r--world/map/npc/functions/clear_vars.txt403
-rwxr-xr-xworld/map/npc/functions/debug.txt84
-rw-r--r--world/map/npc/functions/default_npc_checks.txt26
-rw-r--r--world/map/npc/functions/ferry.txt10
-rw-r--r--world/map/npc/functions/game_rules.txt77
-rw-r--r--world/map/npc/functions/global_event_handler.txt47
-rw-r--r--world/map/npc/functions/gm_island.txt2
-rw-r--r--world/map/npc/functions/inn.txt12
-rw-r--r--world/map/npc/functions/mob_points.txt4
-rw-r--r--world/map/npc/functions/stat_reset.txt8
-rw-r--r--world/map/npc/functions/time.txt62
-rw-r--r--world/map/npc/functions/travelers.txt65
-rw-r--r--world/map/npc/items/check_wand.txt6
-rw-r--r--world/map/npc/items/magic_gm_top_hat.txt2
-rw-r--r--world/map/npc/items/require_stat.txt11
-rw-r--r--world/map/npc/items/restricted_item.txt4
-rw-r--r--world/map/npc/items/scissors.txt2
-rw-r--r--world/map/npc/items/shock_sweet.txt2
-rw-r--r--world/map/npc/items/unequipcb.txt2
-rw-r--r--world/map/npc/items/warpTowels.txt18
-rw-r--r--world/map/npc/scripts.conf1
471 files changed, 4214 insertions, 4617 deletions
diff --git a/client-data b/client-data
-Subproject 96ec076edceebffdf0ec525d06ef39e98ec7c24
+Subproject 506c8c1593fa09b80c9735012df0d3e4064c8d3
diff --git a/login/conf/login_local.conf.example b/login/conf/login_local.conf.example
index f0ab0bc4..635f22ee 100644
--- a/login/conf/login_local.conf.example
+++ b/login/conf/login_local.conf.example
@@ -22,16 +22,6 @@ admin_pass: admin
//ladminallowip: clear
ladminallowip: 127.0.0.1
-// Gamemaster password, used with the @gm command to obtain GM commands
-// NOTICE: You should also change this one.
-gm_pass: gm
-
-// GM level granted to people using @gm (with the correct password).
-// Builtin default is 60; setting it to 0 will disable the command.
-// To work, @gm also needs to be level 0 in atcommand_local.conf,
-// and atcommand_gm_only needs to be off in battle_local.conf
-level_new_gm: 0
-
// Update host
// If not empty, send address for client to download data.
// This must contain news.txt and resources.xml
diff --git a/tools b/tools
-Subproject 25b7f28166bcafcfae21bff3abd1ae87c51b60c
+Subproject a67f3867ada037efdd6a983e090f014b8ed24b8
diff --git a/world/map/conf/atcommand_athena.conf b/world/map/conf/atcommand_athena.conf
index 5f8f3a50..8b182ab8 100644
--- a/world/map/conf/atcommand_athena.conf
+++ b/world/map/conf/atcommand_athena.conf
@@ -4,6 +4,7 @@
help: 0
servertime: 0
email: 0
+pvp: 0
//gm: 100
// 40: developers
@@ -12,6 +13,7 @@ localbroadcast: 40
die: 40
where: 40
goto: 40
+npc: 40
kick: 40
who: 40
whogroup: 40
@@ -42,16 +44,16 @@ spawn: 50
summon: 50
// 60: game masters
+charpvp: 60
charstatsall: 60
pvpoff: 60
+exprate: 60
pvpon: 60
speed: 60
killmonster: 60
killmonster2: 60
ipcheck: 60
storeall: 60
-killable: 60
-charkillable: 60
alive: 60
blvl: 60
jlvl: 60
@@ -67,7 +69,6 @@ charskreset: 60
charwipe: 60
charsave: 60
kill: 60
-killer: 60
recall: 60
revive: 60
charwarp: 60
diff --git a/world/map/conf/atcommand_local.conf.example b/world/map/conf/atcommand_local.conf.example
index 3935db1b..916a092c 100644
--- a/world/map/conf/atcommand_local.conf.example
+++ b/world/map/conf/atcommand_local.conf.example
@@ -1,8 +1 @@
// Athena atcommand Local Configuration file.
-
-// Command to become a GM. Only players who are not a GM can use this.
-// In addition to changing this to 0, you must also:
-// - set level_new_gm in login_athena.conf to something other than 0
-// - set atcommand_gm_only to false in battle_athena.conf
-// - give the correct password (gm_pass in login_athena.conf)
-gm: 100
diff --git a/world/map/conf/battle_athena.conf b/world/map/conf/battle_athena.conf
index 6e80b1e7..86076009 100644
--- a/world/map/conf/battle_athena.conf
+++ b/world/map/conf/battle_athena.conf
@@ -1,8 +1,5 @@
// eAthena Battle Configuration File
-// Do you want to debug warp points? If set to yes, warp points will appear as flags.(Note 1)
-warp_point_debug: no
-
// When calculating critical, should we take in to account the enimies luck? (Note 1)
enemy_critical: yes
@@ -122,6 +119,9 @@ basic_skill_check: no
// 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
diff --git a/world/map/conf/magic-anchors.sex b/world/map/conf/magic-anchors.sex
index 40bd7de5..3bb16f75 100644
--- a/world/map/conf/magic-anchors.sex
+++ b/world/map/conf/magic-anchors.sex
@@ -1,56 +1,66 @@
"--------------------------------------------------------------------------------"
-"Teleport anchors"
+" Teleport anchors(disabled) "
+" As of now, only the #vorp spell(disabled) uses them "
"--------------------------------------------------------------------------------"
-(TELEPORT-ANCHOR tulimshar "tulimshar"
- (@+
- (@ "001-1" 43 66)
- 3
- 3))
-
-(TELEPORT-ANCHOR hurnscald "hurnscald"
- (@+
- (@ "009-1" 55 37)
- 3
- 3))
-
-(TELEPORT-ANCHOR nivalis "nivalis"
- (@+
- (@ "020-1" 75 63)
- 19
- 12))
-
-(TELEPORT-ANCHOR wizardhut "##00"
- (@+
- (@ "013-1" 41 92)
- 3
- 3))
-
-(TELEPORT-ANCHOR pachua "##01"
- (@+
- (@ "006-1" 22 101)
- 3
- 3))
-
-(TELEPORT-ANCHOR desert "##02"
- (@+
- (@ "005-1" 160 64)
- 5
- 5))
-
-(TELEPORT-ANCHOR forest "##03"
- (@+
- (@ "015-1" 35 35)
- 40
- 40))
-
-(TELEPORT-ANCHOR snakecave "##04"
- (@+
- (@ "011-4" 50 75)
- 3
- 3))
-
-(TELEPORT-ANCHOR dimondscove "##05"
- (@+
- (@ "010-2" 23 79)
- 3
- 3))
+(DISABLED
+ (TELEPORT-ANCHOR tulimshar "tulimshar"
+ (@+
+ (@ "001-1" 43 66)
+ 3
+ 3)))
+
+(DISABLED
+ (TELEPORT-ANCHOR hurnscald "hurnscald"
+ (@+
+ (@ "009-1" 55 37)
+ 3
+ 3)))
+
+(DISABLED
+ (TELEPORT-ANCHOR nivalis "nivalis"
+ (@+
+ (@ "020-1" 75 63)
+ 19
+ 12)))
+
+(DISABLED
+ (TELEPORT-ANCHOR wizardhut "##00"
+ (@+
+ (@ "013-1" 41 92)
+ 3
+ 3)))
+
+(DISABLED
+ (TELEPORT-ANCHOR pachua "##01"
+ (@+
+ (@ "006-1" 22 101)
+ 3
+ 3)))
+
+(DISABLED
+ (TELEPORT-ANCHOR desert "##02"
+ (@+
+ (@ "005-1" 160 64)
+ 5
+ 5)))
+
+(DISABLED
+ (TELEPORT-ANCHOR forest "##03"
+ (@+
+ (@ "015-1" 35 35)
+ 40
+ 40)))
+
+(DISABLED
+ (TELEPORT-ANCHOR snakecave "##04"
+ (@+
+ (@ "011-4" 50 75)
+ 3
+ 3)))
+
+(DISABLED
+ (TELEPORT-ANCHOR dimondscove "##05"
+ (@+
+ (@ "010-2" 23 79)
+ 3
+ 3)))
diff --git a/world/map/conf/magic-debug.sex b/world/map/conf/magic-debug.sex
deleted file mode 100644
index 3cefd3b9..00000000
--- a/world/map/conf/magic-debug.sex
+++ /dev/null
@@ -1,408 +0,0 @@
-"--------------------------------------------------------------------------------"
-"Debug keywords"
-"--------------------------------------------------------------------------------"
-(SPELL () debug "debug" ()
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (message caster
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+ "FLAGS: " "drank=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 1)
- 0))
- ", ")
- "Kmseed=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 2)
- 0))
- ", ")
- "touched-mseed=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 4)
- 0))
- ", ")
- "mseed-max=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 8)
- 0))
- ", ")
- "Kauldsbel=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 16)
- 0))
- ", ")
- "Kwyara=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 32)
- 0))
- ", ")
- "Ksagatha=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 64)
- 0))
- ", ")
- "Kmpotion=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 128)
- 0))
- ", ")
- "mseed-rumour=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 256)
- 0))
- ", ")
- "Kcuttree=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 512)
- 0))
- ", ")
- "cut=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 1024)
- 0))
- ", ")
- "Kdruidtree=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 2048)
- 0))
- ", ")
- "Kimp=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 4096)
- 0))
- ", ")
- "Koldwiz=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 8192)
- 0))
- ", ")
- "made-conc=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 16384)
- 0))
- ", ")
- "elanore-omar=")
- (>
- (&
- (script_int caster "MAGIC_FLAGS")
- 32768)
- 0)))
- (message caster
- (+
- (+
- (+
- (+
- (+ "EXP: "
- (&
- (script_int caster "MAGIC_EXPERIENCE")
- 0xffff))
- ", lastspell=")
- (&
- (>>
- (script_int caster "MAGIC_EXPERIENCE")
- 16)
- 0xff))
- ", healexp=")
- (&
- (>>
- (script_int caster "MAGIC_EXPERIENCE")
- 24)
- 0xff)))
- (message caster
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+
- (+ "STATUS: " "auldsbel:")
- (&
- (script_int caster "QUEST_MAGIC")
- 0x1f))
- ",")
- (&
- (>>
- (script_int caster "QUEST_MAGIC")
- 5)
- 0x7))
- ", ")
- "dt/mb:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC")
- 8)
- 0xf))
- ", ")
- "s-unhappy:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC")
- 12)
- 0xf))
- ", ")
- "sagatha:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC")
- 16)
- 0xff))
- ", ")
- "swords:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC")
- 24)
- 0xff))
- ", ")
- "imp:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC2")
- 0)
- 0xf))
- ", ")
- "elanore:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC2")
- 4)
- 0xf))
- ", ")
- "elanore-sub:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC2")
- 12)
- 0xf))
- ", ")
- "wyara:")
- (&
- (>>
- (script_int caster "QUEST_MAGIC2")
- 8)
- 0xf))))))
-(PROCEDURE debug_xmod (name mask shift gain)
- (SET value
- (+
- (&
- (>>
- (script_int caster name)
- shift)
- mask)
- gain))
- (IF (< value 0)
- (SET value 0))
- (IF (> value mask)
- (SET value mask))
- (CALL set_var name mask shift value))
-(PROCEDURE debug_mod (name delta)
- (IF (== name "mexp")
- (CALL debug_xmod "MAGIC_EXPERIENCE" 0xffff 0 delta)
- (IF (== name "lastspell")
- (CALL debug_xmod "MAGIC_EXPERIENCE" 0xff 16 delta)
- (IF (== name "healexp")
- (CALL debug_xmod "MAGIC_EXPERIENCE" 0xff 24 delta)
- (IF (== name "drank")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 0 delta)
- (IF (== name "Kmseed")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 1 delta)
- (IF (== name "touched-mseed")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 2 delta)
- (IF (== name "mseed-max")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 3 delta)
- (IF (== name "Kauldsbel")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 4 delta)
- (IF (== name "Kwyara")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 5 delta)
- (IF (== name "Ksagatha")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 6 delta)
- (IF (== name "Kmpotion")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 7 delta)
- (IF (== name "mseed-rumour")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 8 delta)
- (IF (== name "Kcuttree")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 9 delta)
- (IF (== name "cut")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 10 delta)
- (IF (== name "Kdruidtree")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 11 delta)
- (IF (== name "Kimp")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 12 delta)
- (IF (== name "oldwiz")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 13 delta)
- (IF (== name "made-conc")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 14 delta)
- (IF (== name "elanore-omar")
- (CALL debug_xmod "MAGIC_FLAGS" 0x1 15 delta)
- (IF (== name "auldsbel")
- (CALL debug_xmod "QUEST_MAGIC" 0x1f 0 delta)
- (IF (== name "Qauldsbel")
- (CALL debug_xmod "QUEST_MAGIC" 0x7 5 delta)
- (IF (== name "dt")
- (CALL debug_xmod "QUEST_MAGIC" 0x3 10 delta)
- (IF (== name "mb")
- (CALL debug_xmod "QUEST_MAGIC" 0x3 8 delta)
- (IF (== name "s-unhappy")
- (CALL debug_xmod "QUEST_MAGIC" 0xff 12 delta)
- (IF (== name "sagatha")
- (CALL debug_xmod "QUEST_MAGIC" 0xff 16 delta)
- (IF (== name "swords")
- (CALL debug_xmod "QUEST_MAGIC" 0xff 24 delta)
- (IF (== name "imp")
- (CALL debug_xmod "QUEST_MAGIC2" 0xf 0 delta)
- (IF (== name "elanore")
- (CALL debug_xmod "QUEST_MAGIC2" 0xf 4 delta)
- (IF (== name "wyara")
- (CALL debug_xmod "QUEST_MAGIC2" 0xf 8 delta)
- (IF (== name "elanore-sub")
- (CALL debug_xmod "QUEST_MAGIC2" 0xf 12 delta)
- (message caster "Unknown"))))))))))))))))))))))))))))))))
-
-(SPELL () debug-up1 "debug+1" (STRING name)
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (CALL debug_mod name 1))))
-
-(SPELL () debug-down1 "debug-1" (STRING name)
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (CALL debug_mod name
- (- 0 1)))))
-
-(SPELL () debug-up16 "debug+16" (STRING name)
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (CALL debug_mod name 16))))
-
-(SPELL () debug-down16 "debug-16" (STRING name)
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (CALL debug_mod name
- (- 0 16)))))
-
-(SPELL () debug-up256 "debug+256" (STRING name)
- (=>
- (REQUIRE DEBUG)
- (EFFECT
-
- (CALL debug_mod name 256))))
-(SPELL () debug-down256 "debug-256" (STRING name)
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (CALL debug_mod name
- (- 0 256)))))
-
-(SPELL () debug-reset "debug-reset" ()
- (=>
- (REQUIRE DEBUG)
- (EFFECT
- (set_script_variable caster "QUEST_MAGIC"
- 0)
- (set_script_variable caster "QUEST_MAGIC2"
- 0)
- (set_script_variable caster "MAGIC_FLAGS"
- 0)
- (set_script_variable caster "MAGIC_EXP"
- 0))))
diff --git a/world/map/conf/magic-level0.sex b/world/map/conf/magic-level0.sex
new file mode 100644
index 00000000..f376b2cd
--- /dev/null
+++ b/world/map/conf/magic-level0.sex
@@ -0,0 +1,39 @@
+"--------------------------------------------------------------------------------"
+" Level 0 spells "
+"--------------------------------------------------------------------------------"
+(SPELL () wand "#confringo" ()
+ (LET school MAGIC)
+ (=>
+ (GUARD
+ (CASTTIME 500))
+ (EFFECT
+ (SCRIPT "{callfunc \"CheckWand\";}")
+ (IF (==
+ (script_int caster "@Wand")
+ 0)
+ (ABORT))
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (CALL install_attack_spell
+ (+ (script_int caster "@Wand")
+ (/ spellpower 10))
+ 1200
+ 3
+ (script_int caster "@WandID"))
+ (CALL gain_xp 1 3)
+ (ATTRIGGER
+ (CALL attack_check target)
+ (SCRIPT "{callfunc \"WandMana\";}")
+ (IF (==
+ (script_int caster "@WandAttack")
+ 0)
+ (ABORT))
+ (SET damage
+ (* (script_int caster "@Wand")
+ (/ spellpower
+ 3)))
+ (SET damage_bonus
+ (* (script_int caster "@Wand")
+ (/ spellpower
+ 3)))
+ (CALL elt_damage target damage damage_bonus ELT_NEUTRAL ELT_NEUTRAL 5)))))
diff --git a/world/map/conf/magic-level1.sex b/world/map/conf/magic-level1.sex
index af34d27a..9ca79f3b 100644
--- a/world/map/conf/magic-level1.sex
+++ b/world/map/conf/magic-level1.sex
@@ -1,54 +1,15 @@
"--------------------------------------------------------------------------------"
-"Level 0 spells"
+" Level 1 spells "
"--------------------------------------------------------------------------------"
-(SPELL () wand "#confringo" ()
- (LET school MAGIC)
- (=>
- (GUARD
- (CASTTIME 500))
- (EFFECT
- (CALL fightclub_check 0 0)
- (SCRIPT "{callfunc \"CheckWand\";}")
- (IF (==
- (script_int caster "@Wand")
- 0)
- (ABORT))
- (CALL adjust_spellpower school)
- (CALL default_effect)
- (CALL install_attack_spell
- (+ (script_int caster "@Wand")
- (/ spellpower 10))
- 1200
- 3
- (script_int caster "@WandID"))
- (CALL gain_xp 1 3)
- (ATTRIGGER
- (CALL attack_check target)
- (SCRIPT "{callfunc \"WandMana\";}")
- (IF (==
- (script_int caster "@WandAttack")
- 0)
- (ABORT))
- (SET damage
- (* (script_int caster "@Wand")
- (/ spellpower
- 3)))
- (SET damage_bonus
- (* (script_int caster "@Wand")
- (/ spellpower
- 3)))
- (CALL elt_damage target damage damage_bonus ELT_NEUTRAL ELT_NEUTRAL 5))
-)))
-
(SPELL () ask-magic-exp "#abizit" ()
- (LET level 0)
+ (LET level 1)
(LET school MAGIC)
(=>
(GUARD
(MANA 1)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level)))
(EFFECT
@@ -120,14 +81,14 @@
(message caster "You feel completely overwhelmed by your magic."))))))))))))))))))
(SPELL () transmute-wood-to-figurine "#parum" (STRING name)
- (LET level 0)
+ (LET level 1)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 5)
(CASTTIME 4000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "RawLog"))
@@ -150,14 +111,14 @@
(message caster "You have no idea what a Skrytlurk looks like."))))))
(SPELL () make-sulphur "#gole" ()
- (LET level 0)
+ (LET level 1)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 4)
(CASTTIME 4000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "PileOfAsh"))
@@ -178,14 +139,14 @@
(CALL gain_xp 1 1))))
(SPELL () lesser-heal "#lum" (STRING target)
- (LET level 0)
+ (LET level 1)
(LET school LIFE)
(=>
(GUARD
(MANA 6)
(CASTTIME 500)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
@@ -203,7 +164,6 @@
(GUARD
(COMPONENTS "Lifestone")))
(EFFECT
- (CALL fightclub_check 1 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(IF (failed
@@ -246,14 +206,14 @@
(CALL gain_xp 1 2))))
(SPELL () flare-dart "#flar" ()
- (LET level 0)
+ (LET level 1)
(LET school WAR)
(=>
(GUARD
(MANA 10)
(CASTTIME 500)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(GUARD
@@ -264,7 +224,6 @@
2))
(COMPONENTS "SulphurPowder"))))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(SET damage
@@ -287,21 +246,20 @@
(CALL elt_damage target damage damage_bonus ELT_WATER ELT_FIRE 15)))))
(SPELL () magic-blade "#chiza" ()
- (LET level 0)
+ (LET level 1)
(LET school WAR)
(=>
(GUARD
(MANA 9)
(CASTTIME 500)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level)))
(|
(=>
(COMPONENTS "SharpKnife")
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower WAR)
(CALL default_effect)
(CALL install_melee_spell
@@ -317,7 +275,6 @@
(=>
(COMPONENTS "Knife")
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower WAR)
(CALL default_effect)
(CALL install_melee_spell
@@ -332,14 +289,14 @@
(str caster)))))))))
(SPELL () aggravate "#itenplz" ()
- (LET level 0)
+ (LET level 1)
(LET school NATURE)
(=>
(GUARD
(MANA 3)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level)))
(EFFECT
@@ -358,19 +315,18 @@
(aggravate target 0 caster)))))))
(SPELL () grow-mauve "#modrilax" ()
- (LET level 0)
+ (LET level 1)
(LET school NATURE)
(=>
(GUARD
(MANA 4)
(CASTTIME 2000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "MauveHerb" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 1 6)
@@ -388,19 +344,18 @@
school))))
(SPELL () grow-alizarin "#modriphoo" ()
- (LET level 0)
+ (LET level 1)
(LET school NATURE)
(=>
(GUARD
(MANA 4)
(CASTTIME 2000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "AlizarinHerb" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 1 7)
@@ -418,19 +373,18 @@
school))))
(SPELL () grow-gamboge "#modriyikam" ()
- (LET level 0)
+ (LET level 1)
(LET school NATURE)
(=>
(GUARD
(MANA 4)
(CASTTIME 2000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "GambogeHerb" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 1 8)
@@ -448,19 +402,18 @@
school))))
(SPELL () grow-cobalt "#modrisump" ()
- (LET level 0)
+ (LET level 1)
(LET school NATURE)
(=>
(GUARD
(MANA 4)
(CASTTIME 2000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "CobaltHerb" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 1 9)
@@ -478,19 +431,18 @@
school))))
(SPELL (LOCAL) summon-maggots "#kalmurk" ()
- (LET level 0)
+ (LET level 1)
(LET school ASTRAL)
(=>
(GUARD
(MANA 21)
(CASTTIME 20000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(COMPONENTS "MaggotSlime" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL gain_xp 1 10)
(CALL summon_spell 1002
@@ -508,14 +460,14 @@
school))))
(SPELL () detect-magic "#miteyo" ()
- (LET level 0)
+ (LET level 1)
(LET school MAGIC)
(=>
(GUARD
(MANA 3)
(CASTTIME 6000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level)))
(EFFECT
diff --git a/world/map/conf/magic-level2.sex b/world/map/conf/magic-level2.sex
index 70a37163..e12a58b8 100644
--- a/world/map/conf/magic-level2.sex
+++ b/world/map/conf/magic-level2.sex
@@ -1,19 +1,19 @@
"--------------------------------------------------------------------------------"
-"Level 1 spells"
+" Level 2 spells "
"--------------------------------------------------------------------------------"
(SPELL () make-arrows "#kularzufrill" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 8)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "RawLog"))
@@ -34,18 +34,18 @@
(CALL gain_xp 1 11))))
(SPELL () make-shirt "#patmuploo" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 25)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS
@@ -57,18 +57,18 @@
(CALL gain_xp 2 12))))
(SPELL () make-tanktop "#patloree" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 25)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS
@@ -80,18 +80,18 @@
(CALL gain_xp 2 13))))
(SPELL () make-short-tanktop "#patviloree" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 25)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS
@@ -103,18 +103,18 @@
(CALL gain_xp 2 14))))
(SPELL () make-iron-powder "#zukminbirf" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 8)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "IronOre"))
@@ -135,18 +135,18 @@
(CALL gain_xp 3 15))))
(SPELL () make-concentration-potion "#loshira" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 8)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "BottleOfWater"
@@ -174,18 +174,18 @@
(CALL gain_xp 4 16))))
(SPELL () merge-concentration-potions "#skrimp" ()
- (LET level 1)
+ (LET level 2)
(LET school TRANSMUTE)
(=>
(GUARD
(MANA 8)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "DarkConcentrationPotion" "DilutedConcentrationPot"))
@@ -200,7 +200,7 @@
(CALL gain_xp 4 17))))
(SPELL () lay-on-hands "#inma" (STRING target)
- (LET level 1)
+ (LET level 2)
(LET school LIFE)
(=>
(GUARD
@@ -213,23 +213,14 @@
(max_hp caster)
20)))
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
- (== (if_then_else (failed (pc target))
- 1
- (not
- (is_in (location (pc target))
- (@+
- (@ "009-7" (script_int caster "$@fightclub_x1") (script_int caster "$@fightclub_y1"))
- (+ (- (script_int caster "$@fightclub_x2") (script_int caster "$@fightclub_x1")) 1)
- (+ (- (script_int caster "$@fightclub_y2") (script_int caster "$@fightclub_y1")) 1))))) 1))
- (REQUIRE
(if_then_else
(failed
(pc target))
@@ -326,11 +317,11 @@
(max_hp caster)
20)
-1))
- (IF (>
+ (IF (>=
(skill caster school)
level)
(itemheal caster h 0))
- (IF (>
+ (IF (>=
(skill caster school)
level)
(SET t 10000))
@@ -341,29 +332,28 @@
18))))
(SPELL () lightning-strike "#ingrav" ()
- (LET level 1)
+ (LET level 2)
(LET school WAR)
(=>
(GUARD
(MANA 20)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(GUARD
(OR
(REQUIRE
- (>
- (skill caster school)
- 3))
+ (>=
+ (skill caster school) "The spell is free at magic lv 4"
+ 4))
(COMPONENTS "IronPowder"))))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(SET damage spellpower)
(SET damage_bonus
@@ -443,18 +433,18 @@
(random 3))))))))
(SPELL (LOCAL) arrow-hail "#frillyar" ()
- (LET level 1)
+ (LET level 2)
(LET school WAR)
(=>
(GUARD
(MANA 25)
(CASTTIME 5000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
@@ -544,18 +534,18 @@
(random 50))))))))
(SPELL () magic-knuckles "#upmarmu" ()
- (LET level 1)
+ (LET level 2)
(LET school WAR)
(=>
(GUARD
(MANA 20)
(CASTTIME 500)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(GUARD
@@ -566,7 +556,6 @@
3))
(COMPONENTS "Beer"))))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower WAR)
(SET str
(str caster))
@@ -581,18 +570,18 @@
(* str 2)))))))
(SPELL (LOCAL) summon-snakes "#halhiss" ()
- (LET level 1)
+ (LET level 2)
(LET school DARK)
(=>
(GUARD
(MANA 40)
(CASTTIME 15000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
@@ -601,7 +590,6 @@
40))
(COMPONENTS "DarkCrystal" "SnakeEgg"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 3 31)
@@ -615,7 +603,7 @@
school))))
(SPELL () toxic-dart "#phlex" ()
- (LET level 1)
+ (LET level 2)
(LET school DARK)
(=>
(GUARD
@@ -626,19 +614,18 @@
(script_int caster "OrumQuest")
37))
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(GUARD
(OR
(REQUIRE
- (>
+ (>=
(skill caster school)
- 2))
+ 3))
(COMPONENTS
(2 "Root")))))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(SET damage
@@ -673,14 +660,14 @@
(* spellpower 1200))))))))
(SPELL (LOCAL) summon-wickedmushroom "#helorp" ()
- (LET level 1)
+ (LET level 2)
(LET school DARK)
(=>
(GUARD
(MANA 35)
(CASTTIME 15000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
@@ -688,12 +675,11 @@
(script_int caster "OrumQuest")
36))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "SmallMushroom" "DarkCrystal"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 3 36)
@@ -707,18 +693,18 @@
school))))
(SPELL () flying-backpack "#plugh" (PC target)
- (LET level 1)
+ (LET level 2)
(LET school NATURE)
(=>
(GUARD
(MANA 12)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(GUARD
@@ -736,7 +722,6 @@
(+ 2
(/ spellpower 30)))))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(IF (!= caster target)
@@ -751,18 +736,18 @@
(sfx target 2 0)))))
(SPELL () protect "#betsanc" (PC target)
- (LET level 1)
+ (LET level 2)
(LET school NATURE)
(=>
(GUARD
(MANA 14)
(CASTTIME 1500)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
@@ -773,9 +758,9 @@
(GUARD
(OR
(REQUIRE
- (>
+ (>=
(skill caster school)
- 3))
+ 4))
(COMPONENTS "HardSpike")))
(REQUIRE
(<
@@ -785,7 +770,6 @@
(+ 2
(/ spellpower 30)))))
(EFFECT
- (CALL fightclub_check 0 1)
(CALL adjust_spellpower school)
(sfx target 11 0)
(IF (!= caster target)
@@ -806,18 +790,18 @@
(sfx target 111 0)))))
(SPELL () happy-curse "#joyplim" (PC target)
- (LET level 1)
+ (LET level 2)
(LET school NATURE)
(=>
(GUARD
(MANA 13)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(GUARD
@@ -853,18 +837,18 @@
(CALL gain_xp 1 23))))
(SPELL (LOCAL) rain "#kaflosh" ()
- (LET level 1)
+ (LET level 2)
(LET school NATURE)
(=>
(GUARD
(MANA 17)
(CASTTIME 3000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
@@ -873,9 +857,9 @@
(GUARD
(OR
(REQUIRE
- (>
+ (>=
(skill caster school)
- 3))
+ 4))
(COMPONENTS "BottleOfWater"))))
(EFFECT
(CALL adjust_spellpower school)
@@ -984,18 +968,18 @@
(+ prob3 prob))))))
(SPELL () shear "#chipchip" ()
- (LET level 1)
+ (LET level 2)
(LET school NATURE)
(=>
(GUARD
(MANA 23)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level)))
(EFFECT
@@ -1043,18 +1027,18 @@
}"))))))))
(SPELL () barrier "#asorm" (PC target)
- (LET level 1)
+ (LET level 2)
(LET school ASTRAL)
(=>
(GUARD
(MANA 16)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
@@ -1077,7 +1061,6 @@
(+ 2
(/ spellpower 30)))))
(EFFECT
- (CALL fightclub_check 0 1)
(CALL adjust_spellpower school)
(sfx target SFX_BARRIER 0)
(IF (!= caster target)
@@ -1098,23 +1081,22 @@
(sfx target SFX_UNBARRIER 0)))))
(SPELL (LOCAL) summon-spiky-mushrooms "#kalrenk" ()
- (LET level 1)
+ (LET level 2)
(LET school ASTRAL)
(=>
(GUARD
(MANA 33)
(CASTTIME 20000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "HardSpike" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 1 26)
@@ -1128,23 +1110,22 @@
school))))
(SPELL (LOCAL) summon-fluffies "#kalakarenk" ()
- (LET level 1)
+ (LET level 2)
(LET school ASTRAL)
(=>
(GUARD
(MANA 39)
(CASTTIME 20000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "WhiteFur" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 1 27)
@@ -1160,23 +1141,22 @@
school))))
(SPELL (LOCAL) summon-mouboo "#kalboo" ()
- (LET level 1)
+ (LET level 2)
(LET school ASTRAL)
(=>
(GUARD
(MANA 35)
(CASTTIME 20000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "MoubooFigurine" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 2 37)
@@ -1190,23 +1170,22 @@
school))))
(SPELL (LOCAL) summon-pinkie "#kalgina" ()
- (LET level 1)
+ (LET level 2)
(LET school ASTRAL)
(=>
(GUARD
(MANA 35)
(CASTTIME 20000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(COMPONENTS "PinkAntenna" "Root"))
(EFFECT
- (CALL fightclub_check 0 0)
(CALL adjust_spellpower school)
(CALL default_effect)
(CALL gain_xp 2 38)
@@ -1220,18 +1199,18 @@
school))))
(SPELL () detect-players "#inwilt" ()
- (LET level 1)
+ (LET level 2)
(LET school MAGIC)
(=>
(GUARD
(MANA 7)
(CASTTIME 300)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level)))
(EFFECT
@@ -1271,18 +1250,18 @@
(+ "You sense the following: " message))))))
(SPELL () enchant-lifestone "#manpahil" ()
- (LET level 1)
+ (LET level 2)
(LET school MAGIC)
(=>
(GUARD
(MANA 15)
(CASTTIME 4000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(GUARD
@@ -1298,18 +1277,18 @@
(CALL gain_xp 1 28))))
(SPELL () sense-spouse "#inzuwilt" ()
- (LET level 1)
+ (LET level 2)
(LET school MAGIC)
(=>
(GUARD
(MANA 7)
(CASTTIME 400)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(REQUIRE
@@ -1430,18 +1409,18 @@
"."))))))))))
(SPELL () hide "#anwiltyp" (PC target)
- (LET level 1)
+ (LET level 2)
(LET school ASTRAL)
(=>
(GUARD
(MANA 11)
(CASTTIME 1000)
(REQUIRE
- (>
+ (>=
(skill caster MAGIC)
level))
(REQUIRE
- (>
+ (>=
(skill caster school)
level))
(GUARD
diff --git a/world/map/conf/magic-level3.sex b/world/map/conf/magic-level3.sex
index d53f1a19..5d4d7374 100644
--- a/world/map/conf/magic-level3.sex
+++ b/world/map/conf/magic-level3.sex
@@ -1,177 +1,179 @@
"--------------------------------------------------------------------------------"
-"Level 2 spells"
+" Level 3 spells "
"--------------------------------------------------------------------------------"
-(SPELL () cure-poison "#anju" (PC target)
- (LET level 2)
- (LET school LIFE)
- (=>
- (GUARD
- (MANA 15)
- (CASTTIME 1000)
- (REQUIRE
- (>
- (skill caster MAGIC)
- level))
- (REQUIRE
- (>
- (skill caster school)
- level))
- (REQUIRE
- (<
- (rdistance
- (location caster)
- (location
- (pc target)))
- (+ 1
- (/ spellpower 60))))
- (COMPONENTS "GambogeHerb"))
- (EFFECT
- (CALL adjust_spellpower school)
- (CALL default_effect)
- (IF (running_status_update target SC_POISON)
- (BLOCK
- (CALL gain_heal_xp 40 1 2 2)
- (stop_status_change target SC_POISON)
- (CALL gain_xp 2 30)
- (IF (!= caster target)
- (sfx target SFX_HEAL 0)))))))
+(DISABLED
+ (SPELL () cure-poison "#anju" (PC target)
+ (LET level 3)
+ (LET school LIFE)
+ (=>
+ (GUARD
+ (MANA 15)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>=
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>=
+ (skill caster school)
+ level))
+ (REQUIRE
+ (<
+ (rdistance
+ (location caster)
+ (location
+ (pc target)))
+ (+ 1
+ (/ spellpower 60))))
+ (COMPONENTS "GambogeHerb"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (IF (running_status_update target SC_POISON)
+ (BLOCK
+ (CALL gain_heal_xp 40 1 2 2)
+ (stop_status_change target SC_POISON)
+ (CALL gain_xp 2 30)
+ (IF (!= caster target)
+ (sfx target SFX_HEAL 0))))))))
-(SPELL () fire-ball "#flarfol" ()
- (LET level 2)
- (LET school WAR)
- (=>
- (GUARD
- (MANA 30)
- (CASTTIME 1000)
- (REQUIRE
- (>
- (skill caster MAGIC)
- level))
- (REQUIRE
- (>
- (skill caster school)
- level))
- (COMPONENTS "PileOfAsh"))
- (EFFECT
- (CALL fightclub_check 0 0)
- (CALL adjust_spellpower school)
- (SET damage
- (min
- (+ 50
- (*
- (skill caster school)
- 40))
- (+ 30
- (/
- (* spellpower 3)
- 2))))
- (SET damage_bonus
- (+
- (level caster)
- (* spellpower 2)))
- (SET radius
- (+ 2
- (/ spellpower 50)))
- (CALL install_attack_spell
- (+ 1
- (/ spellpower 60))
- 5000
- 10
- 31)
- (ATTRIGGER
- (CALL attack_check target)
- (SET loc
- (location target))
- (DISABLED (WAIT 500))
- (sfx loc 16 0)
- (FOREACH TARGET target
- (rbox loc radius)
- (IF (line_of_sight loc
- (location target))
- (BLOCK
- (SET divisor
- (+ 3
- (rdistance loc
- (location target))))
- (CALL elt_damage target
- (/
- (* damage 3)
- divisor)
- (/
- (* damage_bonus 3)
- divisor)
- ELT_WATER
- ELT_FIRE
- 15))))))))
+(DISABLED
+ (SPELL () fire-ball "#flarfol" ()
+ (LET level 3)
+ (LET school WAR)
+ (=>
+ (GUARD
+ (MANA 30)
+ (CASTTIME 1000)
+ (REQUIRE
+ (>=
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>=
+ (skill caster school)
+ level))
+ (COMPONENTS "PileOfAsh"))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (SET damage
+ (min
+ (+ 50
+ (*
+ (skill caster school)
+ 40))
+ (+ 30
+ (/
+ (* spellpower 3)
+ 2))))
+ (SET damage_bonus
+ (+
+ (level caster)
+ (* spellpower 2)))
+ (SET radius
+ (+ 2
+ (/ spellpower 50)))
+ (CALL install_attack_spell
+ (+ 1
+ (/ spellpower 60))
+ 5000
+ 10
+ 31)
+ (ATTRIGGER
+ (CALL attack_check target)
+ (SET loc
+ (location target))
+ (DISABLED (WAIT 500))
+ (sfx loc 16 0)
+ (FOREACH TARGET target
+ (rbox loc radius)
+ (IF (line_of_sight loc
+ (location target))
+ (BLOCK
+ (SET divisor
+ (+ 3
+ (rdistance loc
+ (location target))))
+ (CALL elt_damage target
+ (/
+ (* damage 3)
+ divisor)
+ (/
+ (* damage_bonus 3)
+ divisor)
+ ELT_WATER
+ ELT_FIRE
+ 15)))))))))
-(SPELL () summon-partner "#kalzumin" ()
- (LET level 2)
- (LET school ASTRAL)
- (=>
- (GUARD
- (MANA 30)
- (CASTTIME 2000)
- (REQUIRE
- (>
- (skill caster MAGIC)
- level))
- (REQUIRE
- (>
- (skill caster school)
- level))
- (REQUIRE
- (is_married caster))
- (REQUIRE
- (is_equipped caster "WeddingRing")))
- (EFFECT
- (CALL adjust_spellpower school)
- (CALL default_effect)
- (IF (failed
- (partner caster))
- (message caster "You call out for your partner, but there is no response.")
- (BLOCK
- (message caster
- (+
- (+ "You call out for "
- (name_of
- (partner caster)))
- "."))
- (message
- (partner caster)
- (+
- (name_of caster)
- " is calling for your aid!"))
- (sfx
- (partner caster)
- 2
- 0)
- (WAIT
- (max 5000
- (- 30000
- (* spellpower 60))))
- (IF (failed
- (partner caster))
- (message caster "Your partner has abandoned you.")
- (IF (is_dead
+(DISABLED
+ (SPELL () summon-partner "#kalzumin" ()
+ (LET level 3)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 30)
+ (CASTTIME 2000)
+ (REQUIRE
+ (>=
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>=
+ (skill caster school)
+ level))
+ (REQUIRE
+ (is_married caster))
+ (REQUIRE
+ (is_equipped caster "WeddingRing")))
+ (EFFECT
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (IF (failed
+ (partner caster))
+ (message caster "You call out for your partner, but there is no response.")
+ (BLOCK
+ (message caster
+ (+
+ (+ "You call out for "
+ (name_of
+ (partner caster)))
+ "."))
+ (message
+ (partner caster)
+ (+
+ (name_of caster)
+ " is calling for your aid!"))
+ (sfx
+ (partner caster)
+ 2
+ 0)
+ (WAIT
+ (max 5000
+ (- 30000
+ (* spellpower 60))))
+ (IF (failed
(partner caster))
- (message caster
- (+
- (+ "Something seems to have happened to "
- (name_of
- (partner caster)))
- "."))
- (BLOCK
- (sfx
- (location
- (partner caster))
- SFX_TELEPORT
- 0)
- (SET dest
- (awayfrom
- (location caster)
- (random_dir 1)
- 1))
- (warp
- (partner caster)
- dest)
- (sfx dest SFX_TELEPORT 0)))))))))
+ (message caster "Your partner has abandoned you.")
+ (IF (is_dead
+ (partner caster))
+ (message caster
+ (+
+ (+ "Something seems to have happened to "
+ (name_of
+ (partner caster)))
+ "."))
+ (BLOCK
+ (sfx
+ (location
+ (partner caster))
+ SFX_TELEPORT
+ 0)
+ (SET dest
+ (awayfrom
+ (location caster)
+ (random_dir 1)
+ 1))
+ (warp
+ (partner caster)
+ dest)
+ (sfx dest SFX_TELEPORT 0))))))))))
diff --git a/world/map/conf/magic-level4.sex b/world/map/conf/magic-level4.sex
index f46e7454..f04092f4 100644
--- a/world/map/conf/magic-level4.sex
+++ b/world/map/conf/magic-level4.sex
@@ -1,3 +1,3 @@
"--------------------------------------------------------------------------------"
-"Level 3 spells"
+" Level 4 spells "
"--------------------------------------------------------------------------------"
diff --git a/world/map/conf/magic-level5.sex b/world/map/conf/magic-level5.sex
index 6a7093e5..056c9e50 100644
--- a/world/map/conf/magic-level5.sex
+++ b/world/map/conf/magic-level5.sex
@@ -1,53 +1,55 @@
"--------------------------------------------------------------------------------"
-"Level 4 spells"
+" Level 5 spells "
"--------------------------------------------------------------------------------"
-(SPELL () shroud "#anwilvimar" ()
- (LET level 4)
- (LET school NATURE)
- (=>
- (GUARD
- (MANA 40)
- (CASTTIME 400)
- (REQUIRE
- (>
- (skill caster MAGIC)
- level))
- (REQUIRE
- (>
- (skill caster school)
- level)))
- (EFFECT
- (CALL default_effect)
- (shroud caster 0x04))))
+(DISABLED
+ (SPELL () shroud "#anwilvimar" ()
+ (LET level 5)
+ (LET school NATURE)
+ (=>
+ (GUARD
+ (MANA 40)
+ (CASTTIME 400)
+ (REQUIRE
+ (>=
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>=
+ (skill caster school)
+ level)))
+ (EFFECT
+ (CALL default_effect)
+ (shroud caster 0x04)))))
-(SPELL () teleport "#vorp" (STRING destination)
- (LET level 4)
- (LET school ASTRAL)
- (=>
- (GUARD
- (MANA 80)
- (CASTTIME 400)
- (DISABLED (COMPONENT "EtherEssence"))
- (DISABLED (CATALYST "TeleportCrystal"))
- (REQUIRE
- (>
- (skill caster MAGIC)
- level))
- (REQUIRE
- (>
- (skill caster school)
- level)))
- (EFFECT
- (CALL default_effect)
- (WAIT
- (+ 1000
- (/ 200000
- (+ spellpower 10))))
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)
- (warp caster
- (random_location
- (anchor destination)))
- (sfx caster SFX_TELEPORT 200))))
+(DISABLED
+ (SPELL () teleport "#vorp" (STRING destination)
+ (LET level 5)
+ (LET school ASTRAL)
+ (=>
+ (GUARD
+ (MANA 80)
+ (CASTTIME 400)
+ (COMPONENT "EtherEssence")
+ (CATALYSTS "TeleportCrystal")
+ (REQUIRE
+ (>=
+ (skill caster MAGIC)
+ level))
+ (REQUIRE
+ (>=
+ (skill caster school)
+ level)))
+ (EFFECT
+ (CALL default_effect)
+ (WAIT
+ (+ 1000
+ (/ 200000
+ (+ spellpower 10))))
+ (sfx
+ (location caster)
+ SFX_TELEPORT
+ 200)
+ (warp caster
+ (random_location
+ (anchor destination)))
+ (sfx caster SFX_TELEPORT 200)))))
diff --git a/world/map/conf/magic-misc.sex b/world/map/conf/magic-misc.sex
index 2e4942b7..15672f4c 100644
--- a/world/map/conf/magic-misc.sex
+++ b/world/map/conf/magic-misc.sex
@@ -1,5 +1,5 @@
"--------------------------------------------------------------------------------"
-"Special-purpose quasispells"
+" Special-purpose quasispells "
"--------------------------------------------------------------------------------"
(SPELL (NONMAGIC) dueloff "#dueloff" ()
(=>
@@ -166,48 +166,47 @@
(name_of target)
" turned down your marriage offer."))))))
-(SPELL (LOCAL) mouboo-groan "#g" ()
- (=>
- (GUARD
- (MANA 1)
- (REQUIRE
- (==
- (name_of caster)
- "MOUBOOTAUR")))
- (EFFECT
- (FOREACH PC p
- (rbox
- (location caster)
- 200)
- (SET distance
- (rdistance
+(DISABLED
+ (SPELL (LOCAL) mouboo-groan "#g" ()
+ (=>
+ (GUARD
+ (MANA 1)
+ (REQUIRE
+ (==
+ (name_of caster)
+ "MOUBOOTAUR")))
+ (EFFECT
+ (FOREACH PC p
+ (rbox
(location caster)
- (location p))))
- (IF (< distance 15)
- (message p "The moubootaur's groaning rings in your ears!")
- (IF (< distance 70)
- (message p "You hear a loud groaning noise, not far away...")
- (message p "You hear an odd groaning noise in the distance..."))))))
+ 200)
+ (SET distance
+ (rdistance
+ (location caster)
+ (location p))))
+ (IF (< distance 15)
+ (message p "The moubootaur's groaning rings in your ears!")
+ (IF (< distance 70)
+ (message p "You hear a loud groaning noise, not far away...")
+ (message p "You hear an odd groaning noise in the distance...")))))))
-(SPELL (LOCAL) mouboo-smell "#s" ()
- (=>
- (GUARD
- (MANA 1)
- (REQUIRE
- (==
- (name_of caster)
- "MOUBOOTAUR")))
- (EFFECT
- (WAIT 30000)
- (FOREACH PC p
- (rbox
- (location caster)
- 30)
- (message p "You notice a strange smell all around you.")))))
+(DISABLED
+ (SPELL (LOCAL) mouboo-smell "#s" ()
+ (=>
+ (GUARD
+ (MANA 1)
+ (REQUIRE
+ (==
+ (name_of caster)
+ "MOUBOOTAUR")))
+ (EFFECT
+ (WAIT 30000)
+ (FOREACH PC p
+ (rbox
+ (location caster)
+ 30)
+ (message p "You notice a strange smell all around you."))))))
-"--------------------------------------------------------------------------------"
-"Kill the GM event spell"
-"--------------------------------------------------------------------------------"
(SPELL (NONMAGIC) killgm0 "#pullrabbit" ()
(=>
(REQUIRE
diff --git a/world/map/conf/magic-procedures.sex b/world/map/conf/magic-procedures.sex
index 6157765d..ea62f50f 100644
--- a/world/map/conf/magic-procedures.sex
+++ b/world/map/conf/magic-procedures.sex
@@ -280,37 +280,6 @@
(PROCEDURE install_melee_spell (charges base_delay attack_animation)
(CALL install_attack_spell charges base_delay 1 attack_animation))
-(PROCEDURE fightclub_check (onSelf onTarget)
- (IF (&&
- (is_in (location caster)
- (@+
- (@ "009-7" (script_int caster "$@fightclub_x1") (script_int caster "$@fightclub_y1"))
- (+ (- (script_int caster "$@fightclub_x2") (script_int caster "$@fightclub_x1")) 1)
- (+ (- (script_int caster "$@fightclub_y2") (script_int caster "$@fightclub_y1")) 1)))
- (||
- (== (script_int caster "$@Duel_NoMagic") 1)
- (!= (script_int caster "@Duel_Fighter") 1)))
- (ABORT))
- (IF (== onSelf 1)
- (IF (&&
- (== (substr (location caster) 2 5) "009-7")
- (not
- (is_in (location caster)
- (@+
- (@ "009-7" (script_int caster "$@fightclub_x1") (script_int caster "$@fightclub_y1"))
- (+ (- (script_int caster "$@fightclub_x2") (script_int caster "$@fightclub_x1")) 1)
- (+ (- (script_int caster "$@fightclub_y2") (script_int caster "$@fightclub_y1")) 1)))))
- (ABORT)))
- (IF (== onTarget 1)
- (IF (&&
- (!= (pc target) caster)
- (is_in (location (pc target))
- (@+
- (@ "009-7" (script_int caster "$@fightclub_x1") (script_int caster "$@fightclub_y1"))
- (+ (- (script_int caster "$@fightclub_x2") (script_int caster "$@fightclub_x1")) 1)
- (+ (- (script_int caster "$@fightclub_y2") (script_int caster "$@fightclub_y1")) 1))))
- (ABORT))))
-
(PROCEDURE summon_spell (mob_id count delay lifetime control_level school)
(CALL default_effect)
(sfx location SFX_SUMMON_START 0)
diff --git a/world/map/conf/magic-quickdebug.sex b/world/map/conf/magic-quickdebug.sex
index 63ff5ada..c1d4ff72 100644
--- a/world/map/conf/magic-quickdebug.sex
+++ b/world/map/conf/magic-quickdebug.sex
@@ -3,4 +3,4 @@
"--------------------------------------------------------------------------------"
(SPELL (NONMAGIC SILENT) debug0 "#debug" ()
(EFFECT
- (SCRIPT "{if(!debug)end;callfunc \"Debug\";}")))
+ (SCRIPT "{if(!debug&&(getgmlevel()<99))end;callfunc \"Debug\";}")))
diff --git a/world/map/conf/tmwa-map.conf b/world/map/conf/tmwa-map.conf
index 10dd615e..849779af 100644
--- a/world/map/conf/tmwa-map.conf
+++ b/world/map/conf/tmwa-map.conf
@@ -14,6 +14,8 @@ const_db: db/const-quest.txt
const_db: db/const-mapflags.txt
const_db: db/const-debugflag.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
@@ -35,12 +37,12 @@ skill_db: db/skill_db.txt
magic_conf: conf/magic-config.sex
magic_conf: conf/magic-procedures.sex
+magic_conf: conf/magic-level0.sex
magic_conf: conf/magic-level1.sex
magic_conf: conf/magic-level2.sex
magic_conf: conf/magic-level3.sex
magic_conf: conf/magic-level4.sex
magic_conf: conf/magic-level5.sex
-magic_conf: conf/magic-debug.sex
magic_conf: conf/magic-misc.sex
magic_conf: conf/magic-quests.sex
magic_conf: conf/magic-anchors.sex
diff --git a/world/map/data/012-4.wlk b/world/map/data/012-4.wlk
index bd457f63..1d642c07 100644
--- a/world/map/data/012-4.wlk
+++ b/world/map/data/012-4.wlk
Binary files differ
diff --git a/world/map/data/017-1.wlk b/world/map/data/017-1.wlk
index 483857bb..9cf37da8 100644
--- a/world/map/data/017-1.wlk
+++ b/world/map/data/017-1.wlk
Binary files differ
diff --git a/world/map/data/020-1.wlk b/world/map/data/020-1.wlk
index 545fbe2b..b3b92058 100644
--- a/world/map/data/020-1.wlk
+++ b/world/map/data/020-1.wlk
Binary files differ
diff --git a/world/map/data/029-1.wlk b/world/map/data/029-1.wlk
index bebe118d..5a4e8e7a 100644
--- a/world/map/data/029-1.wlk
+++ b/world/map/data/029-1.wlk
Binary files differ
diff --git a/world/map/data/029-2.wlk b/world/map/data/029-2.wlk
index 7cd78d7b..daec6277 100644
--- a/world/map/data/029-2.wlk
+++ b/world/map/data/029-2.wlk
Binary files differ
diff --git a/world/map/data/029-3.wlk b/world/map/data/029-3.wlk
index 235b703d..c9c173d8 100644
--- a/world/map/data/029-3.wlk
+++ b/world/map/data/029-3.wlk
Binary files differ
diff --git a/world/map/data/051-3.wlk b/world/map/data/051-3.wlk
index 02a17192..92a421b9 100644
--- a/world/map/data/051-3.wlk
+++ b/world/map/data/051-3.wlk
Binary files differ
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
index b8debd26..af5cc476 100644
--- a/world/map/db/const.txt
+++ b/world/map/db/const.txt
@@ -26,6 +26,12 @@ Weight 24 1
MaxWeight 25 1
//JobLevel 55 1
//Upper 56 1
+Str 13 1
+Agi 14 1
+Vit 15 1
+Int 16 1
+Dex 17 1
+Luk 18 1
// BEFORE UNCOMMENTING ANYTHING, TALK TO o11c!
bMaxHP 6
@@ -237,7 +243,7 @@ HC_LIGHT_BLUE 8
HC_DARK_PURPLE 9
HC_BLACK 10
HC_PINK 11
-HC_BROWN 12
+HC_BROWN_TWO 12
HC_WHITE 127
// Colors for dyed items.
@@ -261,7 +267,6 @@ sc_raiseattackspeed0 37
sc_raiseattackstrength 185
// Emotions
-// Note: client-data/emotes.xml uses the wrong numbers.
EMOTE_DISGUST 1
EMOTE_SURPRISE 2
EMOTE_HAPPY 3
@@ -276,34 +281,35 @@ EMOTE_UPSET 11
EMOTE_PERTURBED 12
EMOTE_SPEECH 13
EMOTE_BLAH 14
-EMOTE_SWEAR 15
-EMOTE_MEOW 16
-EMOTE_LAUGH 17
-EMOTE_CHEERFUL 18
-EMOTE_LOVE 19
-EMOTE_MONEY 20
-EMOTE_SLEEP 21
-EMOTE_REST 22
-EMOTE_BOTHERED 23
-EMOTE_AFRAID 24
-EMOTE_DEAD 25
-EMOTE_SUSPICIOUS 26
-EMOTE_MELANCHOLY 27
-EMOTE_FACEPALM 28
-EMOTE_ANGRY 29
-EMOTE_HEADACHE 30
-EMOTE_BORED 31
-EMOTE_HEART 32
-EMOTE_EMPTY 33
-EMOTE_HALLOWEEN 34
-EMOTE_VICIOUS 35
-EMOTE_JOYFUL 36
-EMOTE_CLEVER 37
-EMOTE_SHY 38
-EMOTE_ALIEN 39
-EMOTE_CURIOUS 40
-EMOTE_PAIN 41
-EMOTE_TEARS 42
+// 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
sfx_skillup 1
sfx_magic_generic 2
@@ -344,7 +350,6 @@ FX_CRITICAL 28
FX_LARGE_EXPLOSION 30
FX_MEDIUM_EXPLOSION 31
FX_MEDIUM_SMOKE 32
-FX_PUMPKIN_EXPLOSION 43
FX_MEDIUM_BLINDINGLIGHT 33
FX_CHANNELLING_RAISE 34
FX_CHANNELLING_CAST 35
diff --git a/world/map/db/item_db_chest.txt b/world/map/db/item_db_chest.txt
index de94086c..892b4082 100644
--- a/world/map/db/item_db_chest.txt
+++ b/world/map/db/item_db_chest.txt
@@ -2,7 +2,7 @@
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
523, LeatherShirt, Leather Shirt, 5, 2000, 1000, 20, 0, 4, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
546, DesertShirt, Desert Shirt, 5, 2000, 1000, 20, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
-564, TurtleneckSweater, Turtleneck Sweater, 5, 2000, 1000, 30, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
+564, Turtleneck, Turtleneck Sweater, 5, 2000, 1000, 30, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
624, VNeckSweater, V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -24, 0, 2, 512, 0, 0, 0, {}, {}
625, ChainmailShirt, Chainmail Shirt, 5, 15000, 1500, 800, 0, 20, 0, -120, 0, 2, 512, 0, 0, 0, {}, {}
626, LightPlatemail, Light Platemail, 5, 50000, 2500, 1200, 0, 25, 0, -150, 0, 2, 512, 0, 0, 0, {}, {}
@@ -25,10 +25,10 @@
783, PlatynaRedDress, Platyna Red Dress, 5, 100000, 50000, 35, 0, 15, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
791, YetiSkinShirt, Yeti Skin Shirt, 5, 20000, 10000, 20, 0, 12, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
793, BromenalChest, Bromenal Chest, 5, 100000, 3000, 2000, 0, 25, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
-798, SorcererRobeRed, Sorcerer Robe Red, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+798, SorcererRed, Sorcerer Robe Red, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
870, FineDress, Fine Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-880, LazuriteRobe, Lazurite Robe, 5, 92000, 52000, 30, 0, 7, 0, 60, 0, 2, 512, 0, 90, 0, {}, {set @bStat, bInt;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, bVit;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, ContributorShirt, ContributorShirt, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+880, LazuriteRobe, Lazurite Robe, 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, ContributorShirt, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
1183, AmberChristmasSweater, Amber Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
1184, FunkyChristmasSweater, Funky Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
1185, PinkChristmasSweater, Pink Christmas Sweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
@@ -57,16 +57,16 @@
2067, OrangeVNeckSweater, Orange V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
2068, PurpleVNeckSweater, Purple V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
2069, DarkGreenVNeckSweater, Dark Green V-Neck Sweat, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2070, RedTurtleneckSweater, Red Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2071, GreenTurtleneckSweater, Green Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2072, DarkBlueTurtleneckSweat, Dark Blue Turtleneck Sw, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2073, YellowTurtleneckSweater, Yellow Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2074, LightBlueTurtleneckSwea, Light Blue Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2075, PinkTurtleneckSweater, Pink Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2076, BlackTurtleneckSweater, Black Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2077, OrangeTurtleneckSweater, Orange Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2078, PurpleTurtleneckSweater, Purple Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2079, DarkGreenTurtleneckSwea, Dark Green Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2070, RedTurtleneck, Red Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2071, GreenTurtleneck, Green Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2072, DarkBlueTurtleneck, Dark Blue Turtleneck Sw, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2073, YellowTurtleneck, Yellow Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2074, LightBlueTurtleneck, Light Blue Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2075, PinkTurtleneck, Pink Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2076, BlackTurtleneck, Black Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2077, OrangeTurtleneck, Orange Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2078, PurpleTurtleneck, Purple Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2079, DarkGreenTurtleneck, Dark Green Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
2080, RedSilkRobe, Red Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
2081, GreenSilkRobe, Green Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
2082, DarkBlueSilkRobe, Dark Blue Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
@@ -100,138 +100,138 @@
2128, PurpleShortTankTop, Purple Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
2129, DarkGreenShortTankTop, Dark Green Short Tank T, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2220, RedSorcererRobeRed, Red Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2221, GreenSorcererRobeRed, Green Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2222, DarkBlueSorcererRobeRed, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2223, YellowSorcererRobeRed, Yellow Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2224, LightBlueSorcererRobeRe, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2225, PinkSorcererRobeRed, Pink Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2226, BlackSorcererRobeRed, Black Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2227, OrangeSorcererRobeRed, Orange Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2228, PurpleSorcererRobeRed, Purple Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2229, DarkGreenSorcererRobeRe, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2240, FineRedDress, Fine Red Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2241, FineGreenDress, Fine Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2242, FineDarkBlueDress, Fine Dark Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2243, FineYellowDress, Fine Yellow Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2244, FineLightBlueDress, Fine Light Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2245, FinePinkDress, Fine Pink Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2246, FineBlackDress, Fine Black Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2247, FineOrangeDress, Fine Orange Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2248, FinePurpleDress, Fine Purple Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2249, FineDarkGreenDress, Fine Dark Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2220, RedSorcererRed, Red Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2221, GreenSorcererRed, Green Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2222, DarkBlueSorcererRed, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2223, YellowSorcererRed, Yellow Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2224, LightBlueSorcererRed, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2225, PinkSorcererRed, Pink Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2226, BlackSorcererRed, Black Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2227, OrangeSorcererRed, Orange Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2228, PurpleSorcererRed, Purple Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2229, DarkGreenSorcererRed, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2240, RedFineDress, Fine Red Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2241, GreenFineDress, Fine Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2242, DarkBlueFineDress, Fine Dark Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2243, YellowFineDress, Fine Yellow Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2244, LightBlueFineDress, Fine Light Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2245, PinkFineDress, Fine Pink Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2246, BlackFineDress, Fine Black Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2247, OrangeFineDress, Fine Orange Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2248, PurpleFineDress, Fine Purple Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2249, DarkGreenFineDress, Fine Dark Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5000, RedSorcererRobeGreen, Red Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5001, GreenSorcererRobeGreen, Green Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5002, DarkBlueSorcererRobeGre, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5003, YellowSorcererRobeGreen, Yellow Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5004, LightBlueSorcererRobeGr, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5005, PinkSorcererRobeGreen, Pink Sorcerer Robe Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5006, BlackSorcererRobeGreen, Black Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5007, OrangeSorcererRobeGreen, Orange Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5008, PurpleSorcererRobeGreen, Purple Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5009, DarkGreenSorcererRobeGr, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5010, SorcererRobeGreen, Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5011, RedSorcererRobeDarkBlue, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5012, GreenSorcererRobeDarkBl, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5013, DarkBlueSorcererRobeDar, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5014, YellowSorcererRobeDarkB, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5015, LightBlueSorcererRobeDa, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5016, PinkSorcererRobeDarkBlu, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5017, BlackSorcererRobeDarkBl, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5018, OrangeSorcererRobeDarkB, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5019, PurpleSorcererRobeDarkB, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5020, DarkGreenSorcererRobeDa, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5021, SorcererRobeDarkBlue, Sorcerer Robe Dark Blue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5022, RedSorcererRobeYellow, Red Sorcerer Robe Yello, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5023, GreenSorcererRobeYellow, Green Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5024, DarkBlueSorcererRobeYel, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5025, YellowSorcererRobeYello, Yellow Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5026, LightBlueSorcererRobeYe, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5027, PinkSorcererRobeYellow, Pink Sorcerer Robe Yell, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5028, BlackSorcererRobeYellow, Black Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5029, OrangeSorcererRobeYello, Orange Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5030, PurpleSorcererRobeYello, Purple Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5031, DarkGreenSorcererRobeYe, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5032, SorcererRobeYellow, Sorcerer Robe Yellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5033, RedSorcererRobeLightBlu, Red Sorcerer Robe Light, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5034, GreenSorcererRobeLightB, Green Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5035, DarkBlueSorcererRobeLig, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5036, YellowSorcererRobeLight, Yellow Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5037, LightBlueSorcererRobeLi, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5038, PinkSorcererRobeLightBl, Pink Sorcerer Robe Ligh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5039, BlackSorcererRobeLightB, Black Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5040, OrangeSorcererRobeLight, Orange Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5041, PurpleSorcererRobeLight, Purple Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5042, DarkGreenSorcererRobeLi, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5043, SorcererRobeLightBlue, Sorcerer Robe Light Blu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5044, RedSorcererRobePink, Red Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5045, GreenSorcererRobePink, Green Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5046, DarkBlueSorcererRobePin, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5047, YellowSorcererRobePink, Yellow Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5048, LightBlueSorcererRobePi, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5049, PinkSorcererRobePink, Pink Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5000, RedSorcererGreen, Red Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5001, GreenSorcererGreen, Green Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5002, DarkBlueSorcererGreen, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5003, YellowSorcererGreen, Yellow Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5004, LightBlueSorcererGreen, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5005, PinkSorcererGreen, Pink Sorcerer Robe Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5006, BlackSorcererGreen, Black Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5007, OrangeSorcererGreen, Orange Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5008, PurpleSorcererGreen, Purple Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5009, DarkGreenSorcererGreen, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5010, SorcererGreen, Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5011, RedSorcererDBlue, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5012, GreenSorcererDBlue, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5013, DarkBlueSorcererDBlue, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5014, YellowSorcererDBlue, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5015, LightBlueSorcererDBlue, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5016, PinkSorcererDBlue, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5017, BlackSorcererDBlue, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5018, OrangeSorcererDBlue, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5019, PurpleSorcererDBlue, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5020, DarkGreenSorcererDBlue, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5021, SorcererDBlue, Sorcerer Robe Dark Blue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5022, RedSorcererYellow, Red Sorcerer Robe Yello, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5023, GreenSorcererYellow, Green Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5024, DarkBlueSorcererYellow, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5025, YellowSorcererYellow, Yellow Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5026, LightBlueSorcererYellow, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5027, PinkSorcererYellow, Pink Sorcerer Robe Yell, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5028, BlackSorcererYellow, Black Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5029, OrangeSorcererYellow, Orange Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5030, PurpleSorcererYellow, Purple Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5031, DarkGreenSorcererYellow, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5032, SorcererYellow, Sorcerer Robe Yellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5033, RedSorcererLBlue, Red Sorcerer Robe Light, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5034, GreenSorcererLBlue, Green Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5035, DarkBlueSorcererLBlue, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5036, YellowSorcererLBlue, Yellow Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5037, LightBlueSorcererLBlue, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5038, PinkSorcererLBlue, Pink Sorcerer Robe Ligh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5039, BlackSorcererLBlue, Black Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5040, OrangeSorcererLBlue, Orange Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5041, PurpleSorcererLBlue, Purple Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5042, DarkGreenSorcererLBlue, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5043, SorcererLBlue, Sorcerer Robe Light Blu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5044, RedSorcererPink, Red Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5045, GreenSorcererPink, Green Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5046, DarkBlueSorcererPink, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5047, YellowSorcererPink, Yellow Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5048, LightBlueSorcererPink, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5049, PinkSorcererPink, Pink Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5050, BlackSorcererRobePink, Black Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5051, OrangeSorcererRobePink, Orange Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5052, PurpleSorcererRobePink, Purple Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5053, DarkGreenSorcererRobePi, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5054, SorcererRobePink, Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5055, RedSorcererRobeBlack, Red Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5056, GreenSorcererRobeBlack, Green Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5057, DarkBlueSorcererRobeBla, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5058, YellowSorcererRobeBlack, Yellow Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5059, LightBlueSorcererRobeBl, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5060, PinkSorcererRobeBlack, Pink Sorcerer Robe Blac, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5061, BlackSorcererRobeBlack, Black Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5062, OrangeSorcererRobeBlack, Orange Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5063, PurpleSorcererRobeBlack, Purple Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5064, DarkGreenSorcererRobeBl, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5065, SorcererRobeBlack, Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5066, RedSorcererRobeOrange, Red Sorcerer Robe Orang, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5067, GreenSorcererRobeOrange, Green Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5068, DarkBlueSorcererRobeOra, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5069, YellowSorcererRobeOrang, Yellow Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5070, LightBlueSorcererRobeOr, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5071, PinkSorcererRobeOrange, Pink Sorcerer Robe Oran, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5072, BlackSorcererRobeOrange, Black Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5073, OrangeSorcererRobeOrang, Orange Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5074, PurpleSorcererRobeOrang, Purple Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5075, DarkGreenSorcererRobeOr, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5076, SorcererRobeOrange, Sorcerer Robe Orange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5077, RedSorcererRobePurple, Red Sorcerer Robe Purpl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5078, GreenSorcererRobePurple, Green Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5079, DarkBlueSorcererRobePur, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5080, YellowSorcererRobePurpl, Yellow Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5081, LightBlueSorcererRobePu, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5082, PinkSorcererRobePurple, Pink Sorcerer Robe Purp, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5083, BlackSorcererRobePurple, Black Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5084, OrangeSorcererRobePurpl, Orange Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5085, PurpleSorcererRobePurpl, Purple Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5086, DarkGreenSorcererRobePu, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5087, SorcererRobePurple, Sorcerer Robe Purple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5088, RedSorcererRobeDarkGree, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5089, GreenSorcererRobeDarkGr, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5090, DarkBlueSorcererRobeDar, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5091, YellowSorcererRobeDarkG, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5092, LightBlueSorcererRobeDa, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5093, PinkSorcererRobeDarkGre, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5094, BlackSorcererRobeDarkGr, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5095, OrangeSorcererRobeDarkG, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5096, PurpleSorcererRobeDarkG, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5097, DarkGreenSorcererRobeDa, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5098, SorcererRobeDarkGreen, Sorcerer Robe Dark Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5099, RedSorcererRobeWhite, Red Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5100, GreenSorcererRobeWhite, Green Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5101, DarkBlueSorcererRobeWhi, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5102, YellowSorcererRobeWhite, Yellow Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5103, LightBlueSorcererRobeWh, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5104, PinkSorcererRobeWhite, Pink Sorcerer Robe Whit, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5105, BlackSorcererRobeWhite, Black Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5106, OrangeSorcererRobeWhite, Orange Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5107, PurpleSorcererRobeWhite, Purple Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5108, DarkGreenSorcererRobeWh, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5109, SorcererRobeWhite, Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5050, BlackSorcererPink, Black Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5051, OrangeSorcererPink, Orange Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5052, PurpleSorcererPink, Purple Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5053, DarkGreenSorcererPink, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5054, SorcererPink, Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5055, RedSorcererBlack, Red Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5056, GreenSorcererBlack, Green Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5057, DarkBlueSorcererBlack, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5058, YellowSorcererBlack, Yellow Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5059, LightBlueSorcererBlack, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5060, PinkSorcererBlack, Pink Sorcerer Robe Blac, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5061, BlackSorcererBlack, Black Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5062, OrangeSorcererBlack, Orange Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5063, PurpleSorcererBlack, Purple Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5064, DarkGreenSorcererBlack, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5065, SorcererBlack, Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5066, RedSorcererOrange, Red Sorcerer Robe Orang, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5067, GreenSorcererOrange, Green Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5068, DarkBlueSorcererOrange, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5069, YellowSorcererOrange, Yellow Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5070, LightBlueSorcererOrange, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5071, PinkSorcererOrange, Pink Sorcerer Robe Oran, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5072, BlackSorcererOrange, Black Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5073, OrangeSorcererOrange, Orange Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5074, PurpleSorcererOrange, Purple Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5075, DarkGreenSorcererOrange, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5076, SorcererOrange, Sorcerer Robe Orange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5077, RedSorcererPurple, Red Sorcerer Robe Purpl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5078, GreenSorcererPurple, Green Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5079, DarkBlueSorcererPurple, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5080, YellowSorcererPurple, Yellow Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5081, LightBlueSorcererPurple, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5082, PinkSorcererPurple, Pink Sorcerer Robe Purp, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5083, BlackSorcererPurple, Black Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5084, OrangeSorcererPurple, Orange Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5085, PurpleSorcererPurple, Purple Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5086, DarkGreenSorcererPurple, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5087, SorcererPurple, Sorcerer Robe Purple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5088, RedSorcererDGreen, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5089, GreenSorcererDGreen, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5090, DarkBlueSorcererDGreen, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5091, YellowSorcererDGreen, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5092, LightBlueSorcererDGreen, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5093, PinkSorcererDGreen, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5094, BlackSorcererDGreen, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5095, OrangeSorcererDGreen, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5096, PurpleSorcererDGreen, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5097, DarkGreenSorcererDGreen, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5098, SorcererDGreen, Sorcerer Robe Dark Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5099, RedSorcererWhite, Red Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5100, GreenSorcererWhite, Green Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5101, DarkBlueSorcererWhite, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5102, YellowSorcererWhite, Yellow Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5103, LightBlueSorcererWhite, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5104, PinkSorcererWhite, Pink Sorcerer Robe Whit, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5105, BlackSorcererWhite, Black Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5106, OrangeSorcererWhite, Orange Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5107, PurpleSorcererWhite, Purple Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5108, DarkGreenSorcererWhite, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5109, SorcererWhite, Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
5131, RedContributor, Red Contributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
5132, GreenContributor, Green Contributor, 5, 0, 0, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_head.txt b/world/map/db/item_db_head.txt
index a82e68b7..a467397c 100644
--- a/world/map/db/item_db_head.txt
+++ b/world/map/db/item_db_head.txt
@@ -40,11 +40,11 @@
725, GMCap, GM Cap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "RestrictedItem";}
751, PinkieHat, Pinkie Hat, 5, 5000, 1000, 5, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
752, FluffyHat, Fluffy Hat, 5, 7000, 2000, 10, 0, 2, 0, -5, 0, 2, 256, 0, 0, 0, {}, {}
-759, PaladinsHelmet, Paladin's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-760, OverlordsHelmet, Overlord's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-761, DesertHelmet, Desert Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-764, SailorHat, Sailor Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-765, CaptainsHat, Captain's Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+759, PaladinsHelmet, Paladin's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+760, OverlordsHelmet, Overlord's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+761, DesertHelmet, Desert Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+764, SailorHat, Sailor Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+765, CaptainsHat, Captain's Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
766, TerraniteHelmet, Terranite Helmet, 5, 30000, 3000, 300, 0, 15, 0, -12, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
769, GuyFawkesMask, Guy Fawkes Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
770, FairyHat, Fairy Hat, 5, 2000, 1000, 20, 0, 5, 0, -10, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 3;}
@@ -56,7 +56,7 @@
855, Sunglasses, Sunglasses, 5, 1000, 500, 10, 0, 2, 0, 6, 0, 2, 256, 0, 0, 0, {}, {}
856, KnitCap, KnitCap, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-877, BullHelmet, Bull Helmet, 5, 90000, 60000, 1300, 0, 19, 0, -52, 0, 2, 256, 0, 90, 0, {}, {set @bStat, bStr;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, bVit;set @minbStatVal, 50;callfunc "RequireStat"; set @bStat, bLuk;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;}
+877, BullHelmet, Bull Helmet, 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, Red Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
883, BlueEggshellHat, Blue Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
884, YellowEggshellHat, Yellow Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
@@ -92,7 +92,7 @@
1242, SnowGoggles, Snow Goggles, 5, 7500, 5000, 10, 0, 5, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
1247, HeartGlasses, Heart Glasses, 5, 7500, 5000, 20, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-1255, WhiteRabbitEars, White Rabbit Ears, 5, 7000, 5000, 20, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+1255, RabbitEars, Rabbit Ears, 5, 7000, 5000, 20, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
1256, EggshellHat, Eggshell Hat, 5, 7000, 5000, 15, 0, 12, 0, 0, 0, 2, 256, 0, 1, 0, {}, {bonus bAgi, -1;}
1276, OperaMask, Opera Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
1277, JesterMask, Jester Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
@@ -118,8 +118,6 @@
2147, OrangeCottonHeadband, Orange Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
2148, PurpleCottonHeadband, Purple Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
2149, DarkGreenCottonHeadband, Dark Green Cotton Headb, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2158, PurpleCottonBoots, Purple Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2159, DarkGreenCottonBoots, Dark Green Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
2190, RedRabbitEars, Red Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
2191, GreenRabbitEars, Green Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
2192, DarkBlueRabbitEars, Dark Blue Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
@@ -180,6 +178,6 @@
4032, PanHat, Pan Hat, 5, 1000, 500, 400, 0, 13, 0, -20, 0, 2, 256, 0, 0, 0, {}, {}
4033, ChefHat, Chef Hat, 5, 1000, 500, 30, 0, 2, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
4042, RedNose, Red Nose, 5, 4000, 1000, 4, 0, 2, 0, 7, 0, 2, 256, 0, 0, 0, {}, {}
-5128, DarkHelm, DarkHelm, 5, 50000, 10000, 800, 0, 19, 0, -80, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bMaxHPrate, 10; bonus bAtkRange, -((readparam(bAtkRange)/2)); bonus bInt, -(readparam(bInt));}
-5129, UnderworldMask, UnderworldMask, 5, 50000, 10000, 100, 0, 9, 0, -40, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAtkRange, 1; bonus bInt, -(readparam(bInt));}
-5130, Phylactery, Phylactery, 5, 50000, 10000, 20, 0, 1, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAspdRate, 10; bonus bDex, -(readparam(bDex)/2);}
+5128, DarkHelm, DarkHelm, 5, 50000, 10000, 800, 0, 19, 0, -80, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bMaxHPrate, 10; bonus bAtkRange, -((bAtkRange/2)); bonus bInt, -Int;}
+5129, UnderworldMask, UnderworldMask, 5, 50000, 10000, 100, 0, 9, 0, -40, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAtkRange, 1; bonus bInt, -Int;}
+5130, Phylactery, Phylactery, 5, 50000, 10000, 20, 0, 1, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAspdRate, 10; bonus bDex, -(Dex/2);}
diff --git a/world/map/db/item_db_trinket.txt b/world/map/db/item_db_trinket.txt
index b589f249..fce3f06e 100644
--- a/world/map/db/item_db_trinket.txt
+++ b/world/map/db/item_db_trinket.txt
@@ -7,7 +7,6 @@
830, BromenalFourLeafAmulet, Bromenal Four-Leaf Amul, 5, 20000, 2000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 2;}
831, SilverFourLeafAmulet, Silver Four-Leaf Amulet, 5, 30000, 3000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 3;}
832, GoldenFourLeafAmulet, Golden Four-Leaf Amulet, 5, 40000, 4000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 4;}
-833, BrokenFourLeafAmulet, Broken Four-Leaf Amulet, 3, 100, 1, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
865, Grimoire, Grimoire, 5, 5000, 2500, 100, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bMaxSP, 30;}
879, HeartOfIsis, Heart of Isis, 5, 70000, 35000, 40, 0, 0, 0, 0, 0, 2, 8, 0, 85, 0, {}, {bonus bMaxHPrate, 15; bonus bHPrecovRate, 65;}
1197, SkeletonCharm, Skeleton Charm, 5, 0, 0, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, { callfunc "CheckMunro"; }
diff --git a/world/map/db/item_db_use.txt b/world/map/db/item_db_use.txt
index b2b13008..c0a736b4 100644
--- a/world/map/db/item_db_use.txt
+++ b/world/map/db/item_db_use.txt
@@ -1,59 +1,59 @@
// Name and Label MUST NOT exceed 23 characters (as marked)
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
0, DEFAULT, Default, 0, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-501, CactusDrink, Cactus Drink, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
-502, CactusPotion, Cactus Potion, 0, 70, 35, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 25, 0;}, {}
-506, CandyCane, Candy Cane, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;}, {}
-508, XmasCake, Xmas Cake, 0, 70, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-509, ChocolateBar, Chocolate Bar, 0, 60, 20, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 20, 0;}, {}
-510, Candy, Candy, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;}, {}
-512, GingerBreadMan, Ginger Bread Man, 0, 50, 25, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 25, 0;}, {}
-513, Cake, Cake, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
-514, XmasCandyCane, Xmas Candy Cane, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-519, CherryCake, Cherry Cake, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 35, 0;}, {}
-520, EasterEgg, Easter Egg, 0, 200, 100, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-527, Milk, Milk, 0, 300, 150, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
-533, RoastedMaggot, Roasted Maggot, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
-534, OrangeCupcake, Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-535, RedApple, Red Apple, 0, 25, 6, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-539, Beer, Beer, 0, 175, 87, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 5;}, {}
-541, BottleOfWater, Bottle of Water, 0, 200, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 250, 0;getitem 540, 1;}, {}
-562, ChickenLeg, Chicken Leg, 0, 250, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 500, 0;}, {}
-565, PinkPetal, Pink Petal, 0, 100, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-566, SmallMushroom, Small Mushroom, 0, 125, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+501, CactusDrink, Cactus Drink, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
+502, CactusPotion, Cactus Potion, 0, 70, 35, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 25, 0, 1;}, {}
+506, CandyCane, Candy Cane, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 5, 0, 1;}, {}
+508, XmasCake, Xmas Cake, 0, 70, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
+509, ChocolateBar, Chocolate Bar, 0, 60, 20, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 20, 0, 1;}, {}
+510, Candy, Candy, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 5, 0, 1;}, {}
+512, GingerBreadMan, Ginger Bread Man, 0, 50, 25, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 25, 0, 1;}, {}
+513, Cake, Cake, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
+514, XmasCandyCane, Xmas Candy Cane, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
+519, CherryCake, Cherry Cake, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 35, 0, 1;}, {}
+520, EasterEgg, Easter Egg, 0, 200, 100, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
+527, Milk, Milk, 0, 300, 150, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 150, 0, 1;}, {}
+533, RoastedMaggot, Roasted Maggot, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 150, 0, 1;}, {}
+534, OrangeCupcake, Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
+535, RedApple, Red Apple, 0, 25, 6, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
+539, Beer, Beer, 0, 175, 87, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 5, 1;}, {}
+541, BottleOfWater, Bottle of Water, 0, 200, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 250, 0, 1;getitem 540, 1;}, {}
+562, ChickenLeg, Chicken Leg, 0, 250, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 500, 0, 1;}, {}
+565, PinkPetal, Pink Petal, 0, 100, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
+566, SmallMushroom, Small Mushroom, 0, 125, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
567, IronPotion, Iron Potion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackstrength, 60, 60;}, {}
568, ConcentrationPotion, Concentration Potion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 60, 30;}, {}
-657, Orange, Orange, 0, 40, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
-676, Steak, Steak, 0, 275, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 250, 0;}, {}
-684, TinyHealingPotion, Tiny Healing Potion, 0, 25, 12, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-685, SmallHealingPotion, Small Healing Potion, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
-686, MediumHealingPotion, Medium Healing Potion, 0, 100, 50, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 400, 0;}, {}
-687, LargeHealingPotion, Large Healing Potion, 0, 200, 100, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-705, ManaPotion, Mana Potion, 0, 2000, 300, 50, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 10;callfunc "MagicGainBasic";}, {}
-714, SnakeEgg, Snake Egg, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 30, 0;}, {}
-715, MountainSnakeEgg, Mountain Snake Egg, 0, 80, 40, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 40, 0;}, {}
-716, GrassSnakeEgg, Grass Snake Egg, 0, 100, 50, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-717, CaveSnakeEgg, Cave Snake Egg, 0, 60, 30, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 20, 0;}, {}
-719, GreenApple, Green Apple, 0, 20, 5, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 45, 0;}, {}
+657, Orange, Orange, 0, 40, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
+676, Steak, Steak, 0, 275, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 250, 0, 1;}, {}
+684, TinyHealingPotion, Tiny Healing Potion, 0, 25, 12, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
+685, SmallHealingPotion, Small Healing Potion, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 0, 1;}, {}
+686, MediumHealingPotion, Medium Healing Potion, 0, 100, 50, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 400, 0, 1;}, {}
+687, LargeHealingPotion, Large Healing Potion, 0, 200, 100, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
+705, ManaPotion, Mana Potion, 0, 2000, 300, 50, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 10, 1;callfunc "MagicGainBasic";}, {}
+714, SnakeEgg, Snake Egg, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 30, 0, 1;}, {}
+715, MountainSnakeEgg, Mountain Snake Egg, 0, 80, 40, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 40, 0, 1;}, {}
+716, GrassSnakeEgg, Grass Snake Egg, 0, 100, 50, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
+717, CaveSnakeEgg, Cave Snake Egg, 0, 60, 30, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 20, 0, 1;}, {}
+719, GreenApple, Green Apple, 0, 20, 5, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 45, 0, 1;}, {}
733, PurificationPotion, Purification Potion, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "usePurificationPotion";}, {}
-736, WhiteCake, White Cake, 0, 500, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-737, ChocolateCake, Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 11, 0;}, {}
-738, OrangeCake, Orange Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 12, 0;}, {}
-739, AppleCake, Apple Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 12, 0;}, {}
-743, Acorn, Acorn, 0, 50, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 3, 0;}, {}
+736, WhiteCake, White Cake, 0, 500, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
+737, ChocolateCake, Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 11, 0, 1;}, {}
+738, OrangeCake, Orange Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 12, 0, 1;}, {}
+739, AppleCake, Apple Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 12, 0, 1;}, {}
+743, Acorn, Acorn, 0, 50, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 3, 0, 1;}, {}
744, DilutedConcentrationPot, Diluted Concentration P, 0, 250, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 30, 20;}, {}
745, DarkConcentrationPotion, Dark Concentration Poti, 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, Laced Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 11, 0;}, {}
-748, LacedOrangeCupcake, Laced Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+747, LacedChocolateCake, Laced Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 11, 0, 1;}, {}
+748, LacedOrangeCupcake, Laced Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-750, SlowPoisonPotion, Slow Poison Potion, 0, 500, 200, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;sc_start sc_slowpoison, 180000, 180;}, {}
-784, ZombieNachos, Zombie Nachos, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
-785, LadyFingers, Lady Fingers, 0, 70, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 40, 0;}, {}
-786, JellAhh, Jell-Ahh, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-787, Snapple, Snapple, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 70, 0;}, {}
-788, BeetleJuice, Beetle Juice, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-789, GutBuster, Gut Buster Ale, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
-790, BloodWine, Blood Wine, 0, 150, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+750, SlowPoisonPotion, Slow Poison Potion, 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, Zombie Nachos, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
+785, LadyFingers, Lady Fingers, 0, 70, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 40, 0, 1;}, {}
+786, JellAhh, Jell-Ahh, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
+787, Snapple, Snapple, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 70, 0, 1;}, {}
+788, BeetleJuice, Beetle Juice, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
+789, GutBuster, Gut Buster Ale, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
+790, BloodWine, Blood Wine, 0, 150, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
808, HitchhikersTowel, Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "HitchhikersTowel"; callfunc "WarpTowel";}, {}
809, WhiteHitchhikersTowel, White Hitchhiker's Towe, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "WhiteHitchhikersTowel"; callfunc "WarpTowel";}, {}
810, RedHitchhikersTowel, Red Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "RedHitchhikersTowel"; callfunc "WarpTowel";}, {}
@@ -65,32 +65,32 @@
816, PinkHitchhikersTowel, Pink Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PinkHitchhikersTowel"; callfunc "WarpTowel";}, {}
817, TealHitchhikersTowel, Teal Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "TealHitchhikersTowel"; callfunc "WarpTowel";}, {}
818, LimeHitchhikersTowel, Lime Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "LimeHitchhikersTowel"; callfunc "WarpTowel";}, {}
-825, TinyManaElixir, Tiny Mana Elixir, 0, 100, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 25;}, {}
-826, SmallManaElixir, Small Mana Elixir, 0, 200, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 50;}, {}
-827, MediumManaElixir, Medium Mana Elixir, 0, 400, 40, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 100;}, {}
-828, LargeManaElixir, Large Mana Elixir, 0, 800, 80, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 250;}, {}
-838, CranberryLollipop, Cranberry Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
-839, GrapeLollipop, Grape Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
-840, OrangeLollipop, Orange Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
-1189, PollettEgg, PollettEgg, 0, 250, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 75, 10;}, {}
-1229, CaramelApple, Caramel Apple, 0, 500, 75, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 1000, 0;}, {}
-1230, LollipopColor1, Booberry Blue Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-1231, LollipopColor2, Ghastly Green Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-1232, LollipopColor3, Blood Red Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-1248, Blueberries, Blueberries, 0, 50, 25, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
-1250, Pear, Pear, 0, 50, 25, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
-1251, Plum, Plum, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-1252, Cherry, Cherry, 0, 50, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-1253, GoldenDeliciousApple, Golden Delicious Apple, 0, 1000, 500, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
-1258, Honey, Honey, 0, 100, 80, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 45, 0;}, {}
+825, TinyManaElixir, Tiny Mana Elixir, 0, 100, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 25, 1;}, {}
+826, SmallManaElixir, Small Mana Elixir, 0, 200, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 50, 1;}, {}
+827, MediumManaElixir, Medium Mana Elixir, 0, 400, 40, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 100, 1;}, {}
+828, LargeManaElixir, Large Mana Elixir, 0, 800, 80, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 0, 250, 1;}, {}
+838, CranberryLollipop, Cranberry Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
+839, GrapeLollipop, Grape Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
+840, OrangeLollipop, Orange Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
+1189, PollettEgg, PollettEgg, 0, 250, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 75, 10, 1;}, {}
+1229, CaramelApple, Caramel Apple, 0, 500, 75, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 1000, 0, 1;}, {}
+1230, LollipopColor1, Booberry Blue Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
+1231, LollipopColor2, Ghastly Green Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
+1232, LollipopColor3, Blood Red Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
+1248, Blueberries, Blueberries, 0, 50, 25, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 0, 1;}, {}
+1250, Pear, Pear, 0, 50, 25, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 150, 0, 1;}, {}
+1251, Plum, Plum, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
+1252, Cherry, Cherry, 0, 50, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
+1253, GoldenDeliciousApple, Golden Delicious Apple, 0, 1000, 500, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 200, 0, 1;}, {}
+1258, Honey, Honey, 0, 100, 80, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 45, 0, 1;}, {}
1280, Scissors, Scissors, 0, 1000, 500, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useScissors";}, {}
1281, ShockSweet, Shock Sweet, 0, 1000, 500, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useShockSweet";}, {}
3001, RubberBat, Rubber Bat, 0, 200, 100, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {misceffect 403;getitem 3001,1;}, {}
-3006, TonoriDelight, Tonori Delight, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 2;}, {}
-3007, Marshmallow, Marshmallow, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-3009, JellySkull, Jelly Skull, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-3010, CandyPumpkin, Candy Pumpkin, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-4035, PickledBeets, Pickled Beets, 0, 100, 50, 150, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0; setlook LOOK_HAIR_COLOR, HC_PURPLE;}, {}
-4036, RoastedAcorn, Roasted Acorn, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
-5126, MTJarofOwnBlood, MTJar of Own Blood, 0, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {itemheal -250, 0;getitem 5127, 1;}, {}
+3006, TonoriDelight, Tonori Delight, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 2, 1;}, {}
+3007, Marshmallow, Marshmallow, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
+3009, JellySkull, Jelly Skull, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
+3010, CandyPumpkin, Candy Pumpkin, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
+4035, PickledBeets, Pickled Beets, 0, 100, 50, 150, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 50, 0, 1; setlook LOOK_HAIR_COLOR, HC_PURPLE;}, {}
+4036, RoastedAcorn, Roasted Acorn, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {heal 15, 0, 1;}, {}
+5126, MTJarofOwnBlood, MTJar of Own Blood, 0, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {heal -250, 0;getitem 5127, 1;}, {}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
diff --git a/world/map/db/item_db_weapon.txt b/world/map/db/item_db_weapon.txt
index 0a36f27d..bf8c1899 100644
--- a/world/map/db/item_db_weapon.txt
+++ b/world/map/db/item_db_weapon.txt
@@ -47,12 +47,12 @@
//608, RESERVED, BladeShield, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
//609, RESERVED, Club, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
623, Scythe, Scythe, 4, 100, 50, 1200, 75, 0, 1, 0, 0, 2, 34, 1, 1, 3, {}, {}
-758, WoodenStaff, Wooden Staff, 4, 4000, 2000, 1000, 50, 0, 1, 10, 0, 2, 34, 1, 1, 10, {}, {set @bStat, bInt;set @minbStatVal, 60;callfunc "RequireStat";}
+758, WoodenStaff, Wooden Staff, 4, 4000, 2000, 1000, 50, 0, 1, 10, 0, 2, 34, 1, 1, 10, {}, {set @bStat, Int;set @minbStatVal, 60;callfunc "RequireStat";}
//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-1171, Wand, Wand, 4, 400, 200, 100, 1, 0, 1, 5, 0, 2, 2, 1, 1, 1, {}, {set @bStat, bInt;set @minbStatVal, 5;callfunc "RequireStat";}
+1171, Wand, 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, Terranite Arrow, 10, 80, 20, 1, 50, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 10;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
867, IceGladius, Ice Gladius, 4, 2000, 1000, 1000, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bLuk, 1;}
-878, BansheeBow, Banshee Bow, 4, 101000, 40000, 900, 90, 0, 6, 0, 0, 2, 34, 1, 90, 11, {}, {set @bStat, bDex;set @minbStatVal, 80;callfunc "RequireStat"; bonus2 bHPDrainRate, 100, -4; bonus bAspdRate, 20; bonus bCritical, 70; bonus bMaxHP, -150; bonus bDefRate, -40; bonus bDef2Rate, -35;set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
+878, BansheeBow, Banshee Bow, 4, 101000, 40000, 900, 90, 0, 6, 0, 0, 2, 34, 1, 90, 11, {}, {set @bStat, Dex;set @minbStatVal, 80;callfunc "RequireStat"; bonus2 bHPDrainRate, 100, -4; bonus bAspdRate, 20; bonus bCritical, 70; bonus bMaxHP, -150; bonus bDefRate, -40; bonus bDef2Rate, -35;set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
903, SlingShot, Sling Shot, 4, 500, 50, 10, 5, 0, 3, 0, 0, 2, 34, 1, 1, 11, {}, {set @LauncherType, AMMO_SLING; callfunc "CheckLauncher";}
904, SlingBullet, Sling Bullet, 10, 1, 0, 1, 3, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_SLING; callfunc "CheckAmmo";}
906, KidBook, Kid Book, 4, 10000, 5000, 100, 1, 0, 3, 0, 0, 2, 34, 1, 1, 1, {}, {}
diff --git a/world/map/db/mob_db_0_19.txt b/world/map/db/mob_db_0_19.txt
index 36169593..65ae7b57 100644
--- a/world/map/db/mob_db_0_19.txt
+++ b/world/map/db/mob_db_0_19.txt
@@ -1,14 +1,14 @@
//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, 7, 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
+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, 15, 25, 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
+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
diff --git a/world/map/db/mob_db_20_39.txt b/world/map/db/mob_db_20_39.txt
index b0d1d096..7fe8ca4d 100644
--- a/world/map/db/mob_db_20_39.txt
+++ b/world/map/db/mob_db_20_39.txt
@@ -1,17 +1,17 @@
//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, 8, 15, 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, 7, 15, 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
+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, 7, 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
+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, 60, 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
+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, 50, 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
+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
diff --git a/world/map/db/mob_skill_db.txt b/world/map/db/mob_skill_db.txt
index c10f5232..45c920eb 100644
--- a/world/map/db/mob_skill_db.txt
+++ b/world/map/db/mob_skill_db.txt
@@ -45,7 +45,6 @@
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,
-1051,Vespa@NPC_POISON,attack,178,5,5000,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,
diff --git a/world/map/db/quest-log.txt b/world/map/db/quest-log.txt
new file mode 100644
index 00000000..3802640d
--- /dev/null
+++ b/world/map/db/quest-log.txt
@@ -0,0 +1,13 @@
+//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
diff --git a/world/map/news.d/47-v2015.03.10.txt b/world/map/news.d/47-v2015.03.10.txt
new file mode 100644
index 00000000..9be33a3f
--- /dev/null
+++ b/world/map/news.d/47-v2015.03.10.txt
@@ -0,0 +1,17 @@
+{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
new file mode 100644
index 00000000..4fb1744d
--- /dev/null
+++ b/world/map/news.d/48-v2015.05.04.txt
@@ -0,0 +1,38 @@
+{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/npc/001-1/_mobs.txt b/world/map/npc/001-1/_mobs.txt
index 92c57e45..6fc46da5 100644
--- a/world/map/npc/001-1/_mobs.txt
+++ b/world/map/npc/001-1/_mobs.txt
@@ -8,7 +8,7 @@
001-1,86,84,65,55|monster|SeaSlime|1033,8,100000ms,30000ms,Mob001-1::On1033
-001-1,0,0,0|script|Mob001-1|-1
+001-1,0,0,0|script|Mob001-1|32767
{
end;
diff --git a/world/map/npc/001-1/_warps.txt b/world/map/npc/001-1/_warps.txt
index e19899e0..a560f26c 100644
--- a/world/map/npc/001-1/_warps.txt
+++ b/world/map/npc/001-1/_warps.txt
@@ -1,17 +1,17 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Tulimshar Port warps
-001-1,63,119|warp|South Tulimshar|3,-1,002-1,63,21
-001-1,103,119|warp|South Tulimshar|3,-1,002-1,103,21
-001-1,55,71|warp|To Government Building|-1,-1,001-2,31,27
-001-1,52,71|warp|To Government Building|-1,-1,001-2,28,27
-001-1,49,71|warp|To Government Building|-1,-1,001-2,25,27
-001-1,114,99|warp|To Tulimshar Forge|-1,-1,001-2,25,64
-001-1,27,32|warp|To MIT|-1,-1,001-2,28,101
-001-1,37,32|warp|To MIT|-1,-1,001-2,71,101
-001-1,55,34|warp|To Tulimshar Castle|0,-1,001-2,104,101
-001-1,52,22|warp|Council Chambers|-1,-1,001-2,95,52
-001-1,57,22|warp|Council Chambers|-1,-1,001-2,114,52
-001-1,28,23|warp|To MIT|-1,-1,001-2,28,87
-001-1,28,44|warp|Sewers|-1,-1,021-3,29,61
-001-1,59,98|warp|To Bank|-1,-1,001-2,65,25
+001-1,63,119|warp|South Tulimshar#001-10|3,-1,002-1,63,21
+001-1,103,119|warp|South Tulimshar#001-11|3,-1,002-1,103,21
+001-1,55,71|warp|To Government B#001-12|-1,-1,001-2,31,27
+001-1,52,71|warp|To Government B#001-13|-1,-1,001-2,28,27
+001-1,49,71|warp|To Government B#001-14|-1,-1,001-2,25,27
+001-1,114,99|warp|To Tulimshar Fo#001-15|-1,-1,001-2,25,64
+001-1,27,32|warp|To MIT#001-16|-1,-1,001-2,28,101
+001-1,37,32|warp|To MIT#001-17|-1,-1,001-2,71,101
+001-1,55,34|warp|To Tulimshar Ca#001-18|0,-1,001-2,104,101
+001-1,52,22|warp|Council Chamber#001-19|-1,-1,001-2,95,52
+001-1,57,22|warp|Council Chamber#001-110|-1,-1,001-2,114,52
+001-1,28,23|warp|To MIT#001-111|-1,-1,001-2,28,87
+001-1,28,44|warp|Sewers#001-112|-1,-1,021-3,29,61
+001-1,59,98|warp|To Bank#001-113|-1,-1,001-2,65,25
diff --git a/world/map/npc/001-1/adrian.txt b/world/map/npc/001-1/adrian.txt
index dba78c21..de2966b5 100644
--- a/world/map/npc/001-1/adrian.txt
+++ b/world/map/npc/001-1/adrian.txt
@@ -10,29 +10,31 @@
set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT);
mes "[Adrian]";
- mes "\"Hello. Are you here to get the luggage for some of our passengers?\"";
+ mes "\"Hello. Are you here to pick up some luggage?\"";
if (@state == 1)
menu
- "Yes, Kylian sent me to get his luggage.",L_Get,
+ "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 want to go and drink a beer, but I have to wait here until all the luggage is picked up.\"";
+ 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! Show me the ticket.\"";
- mes "He checks the paper Kylian gave you and then takes a critical look at you.";
+ 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.\"";
+ mes "\"Alright. Here it is. Good luck carrying that thing.\"";
mes "Adrain hands you a very heavy suitcase.";
getitem "LeatherSuitcase", 1;
set @state, 2;
@@ -41,8 +43,8 @@ L_Get:
L_Inventory:
mes "[Adrian]";
- mes "\"The suitcase is rather heavy. You doesn't look as if you can handle that.";
- mes "Maybe if you get rid of some of the other stuff you're carrying.\"";
+ 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:
diff --git a/world/map/npc/001-1/ched.txt b/world/map/npc/001-1/ched.txt
index b6159583..ddfddd95 100644
--- a/world/map/npc/001-1/ched.txt
+++ b/world/map/npc/001-1/ched.txt
@@ -3,21 +3,21 @@
001-1,43,48,0|script|Ched|113
{
mes "[Ched]";
- mes "\"I'm trying to get a spell to work. It's supposed to combine two potions, but I can't seem to figure out which two those are...\"";
+ mes "\"I'm trying to get a spell to work, but I'm having some trouble.\"";
+ mes "\"It's supposed to combine two potions, but I can't seem to figure out which two to combine...\"";
next;
menu
- "Well, good luck with that!", L_Done,
- "What spell is that?", L_Next;
+ "Good luck with that.", L_Done,
+ "What spell is it?", L_Next;
L_Next:
+ mes "";
mes "[Ched]";
- mes "\"Well, I don't know what it's called... I took it out of `Timbleweed's Advanced Transmutations.' It seems awfully hard to cast, somehow.\"";
+ mes "\"Well, I don't remember what it's called... I took it out of 'Timbleweed's Advanced Transmutations,' but it seems awfully hard to cast.\"";
next;
- mes "[Ched]";
- mes "\"Well, the invocation is `" + getspellinvocation("merge-concentration-potions") + "'. You're supposed to just hold up the potions and cast it, and then they're supposed to merge.\"";
+ mes "\"If you want to try it, the invocation is '" + getspellinvocation("merge-concentration-potions") + ".' I just can't get the hang of it though.\"";
next;
- mes "[Ched]";
- mes "\"Maybe I should go back to `detect magic' until I can cast that one properly.\"";
+ mes "\"Maybe I should go back to practicing '" + getspellinvocation("detect-magic") + "' until I can cast it properly.\" %%6";
goto L_Done;
L_Done:
diff --git a/world/map/npc/001-1/children.txt b/world/map/npc/001-1/children.txt
index 6749f0e3..5ad738a9 100644
--- a/world/map/npc/001-1/children.txt
+++ b/world/map/npc/001-1/children.txt
@@ -16,7 +16,7 @@
L_1:
mes "[Aisha]";
- mes "\"Maggots are soo slimey!\"";
+ mes "\"Maggots are so slimey!\" %%^";
goto L_Close;
L_2:
@@ -26,12 +26,12 @@ L_2:
L_3:
mes "[Aisha]";
- mes "\"There are so many monsters; I hate scorpions!\"";
+ 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!\"";
+ mes "\"When I grow up, I want to be strong enough to kill a scorpion!\" %%=";
goto L_Close;
L_5:
@@ -41,7 +41,7 @@ L_5:
L_6:
mes "[Aisha]";
- mes "\"Have you tried to eat a roasted maggot? They are sooo yummy! And you feel much healthier afterwards, too!\"";
+ 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:
@@ -51,23 +51,23 @@ L_7:
L_8:
mes "[Aisha]";
- mes "\"That volcano was sooo scary! The earth was shaking and everything was breaking down... but now they have rebuilt everything.\"";
+ 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 must not say it, because monsters will come and get me if I do!\"";
+ 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 for yourself then.", L_Close;
+ "Oh. You better keep it to yourself then.", L_Close;
L_tell:
mes "[Aisha]";
- mes "\"Yes, I heard my mother say it once. And she made me promise her to never say it. Never.\"";
+ 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 do not need to tell me...", L_giveword,
+ "I understand. You don't need to tell me...", L_giveword,
"Goodbye!", L_Close;
L_keepword:
@@ -77,13 +77,13 @@ L_keepword:
L_giveword:
mes "[Aisha]";
- mes "Aisha looks around as she hushes you to silence. After a few seconds, she whispers to you.";
- mes "\"I like you! So I will tell you the bad word. But you can't tell anyone else about it! The bad word is '" + getspellinvocation("aggravate") + "'.\"";
+ 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 '" + getspellinvocation("aggravate") + ".'\"";
next;
mes "[Aisha]";
mes "Terrified, she looks around once more.";
- mes "\"But you mustn't tell anyone!\"";
+ mes "\"But you can't tell anyone!\" %%>";
goto L_Close;
L_Close:
diff --git a/world/map/npc/001-1/constable.txt b/world/map/npc/001-1/constable.txt
index 73a74a2f..ecc8a0d4 100644
--- a/world/map/npc/001-1/constable.txt
+++ b/world/map/npc/001-1/constable.txt
@@ -3,7 +3,7 @@
001-1,50,74,0|script|Constable Perry Graf|150
{
mes "[Constable Perry Graf]";
- mes "\"Hello, make sure the rules are followed.\"";
+ 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
index 05402b94..0aacdcdb 100644
--- a/world/map/npc/001-1/dock.txt
+++ b/world/map/npc/001-1/dock.txt
@@ -14,7 +14,7 @@
close;
}
-001-1,70,70,0|script|#TulimsharDock|127
+001-1,70,70,0|script|#TulimsharDock|32767
{
end;
OnCommandArrive:
diff --git a/world/map/npc/001-1/eomie.txt b/world/map/npc/001-1/eomie.txt
index 6528ddbe..99085bcf 100644
--- a/world/map/npc/001-1/eomie.txt
+++ b/world/map/npc/001-1/eomie.txt
@@ -33,20 +33,20 @@
if (@state == 8) goto L_GetStuff;
mes "[Eomie]";
- mes "\"I maintain this little spot of grass in the desert.\"";
+ mes "\"I maintain this little oasis in the desert.\"";
if (@state != 7)
goto L_Close;
menu
- "I have this magic fertilizer from Tinris and need a spell cast on it.",L_Next;
+ "I need to learn a spell to use Tinris' magic fertilizer. Can you help me out?",L_Next;
L_Next:
mes "[Eomie]";
- mes "\"Oh? I see, that's a difficult task.";
- mes "I'd be glad to help you, but unfortunately I can't interrupt the magic I use to keep this spot of grass alive.\"";
+ 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. It might have something to do with the aftereffects of the earthquake.\"";
+ mes "\"It's unusually hot at the moment – even for this desert area – so it's really out of the question.\"";
menu
- "Isn't there any possibility?",L_Continue;
+ "Is there any chance you could help me?",L_Continue;
L_Continue:
mes "She hesitates.";
@@ -57,13 +57,13 @@ L_Continue:
L_GetStuff:
// @state == 8
mes "[Eomie]";
- mes "\"I could try to interrupt my spells to be able to cast the spell on the fertilizer, but then I need to prepare the grass for this.";
- mes "Bring me " + @grass_amount + " Grass Seeds, " + @water_amount + " Bottles of Water and " + @ice_amount + " Ice Cubes.\"";
+ 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 have it.",L_More,
+ "I've got everything.",L_More,
"Where can I get Grass Seeds?",L_Hurnscald,
- "How can I get Ice Cubes? We're in the desert!",L_Mine,
- "Ok, I'll go and get it.",L_Close;
+ "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;
@@ -74,38 +74,37 @@ L_More:
set @state, 9;
callsub S_Update_Mask;
mes "[Eomie]";
- mes "\"Very good.\"";
- mes "She takes the things you brought her and uses them to create a bubble of coolness around the spot of grass.";
+ 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 "\"This should last long enough to keep the spot of grass alive until I cast the spell on the fertilizer. And if some of it shrivels I still have the seeds you brought me which I can use to recover it.\"";
+ 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 while she's done and gives it back to you with a smile.";
- misceffect sfx_magic_nature;
+ mes "She takes the fertilizer and casts some invocations. After a minute, she hands the now-glowing substance back to you.";
mes "[Eomie]";
- mes "\"This should help you. I'm glad you're taking care of the plants. Not enough people do that nowadays.\"";
+ 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 Grass Seeds as they gather food. You can find them around Hurnscald. To get there you will have to take the ferry in the harbor district.\"";
+ 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 "\"Hm, that's a difficult task, indeed. Naturally you will find them on the continent of Kaizei, which is high up in the north and covered with snow most time of the year. But it might be difficult to get there.\"";
+ 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 that are around Nivalis. Maybe you can find Ice Cubes in there.\"";
+ 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: // @state >= 9 but below 14
mes "[Eomie]";
- mes "\"The grass wasn't damaged due to the interruption. I hope the magic fertilizer is useful for Anwar.\"";
+ mes "\"Thankfully, the grass wasn't damaged. I hope Anwar finds the magic fertilizer to be useful.\"";
if (@state != 13)
goto L_Close;
menu
- "It was and he created this Silk Headband as a present for you.",L_Present,
+ "It was. He even created this Silk Headband as a present for you!",L_Present,
"(Mumble something and leave)",L_Close;
L_Present:
@@ -116,18 +115,18 @@ L_Present:
set @state, 14;
callsub S_Update_Mask;
mes "[Eomie]";
- mes "\"Oh, this is very friendly! Please tell him I'm very happy about it.\"";
+ mes "\"Oh, that's so nice of him! Please tell him that I really like it!\"";
mes "She smiles.";
goto L_Close;
L_Done: // @state >= 14
mes "[Eomie]";
- mes "\"Hello. I'm happy to see someone like you being dedicated to the needs of plants and people.\"";
+ 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?\"";
+ mes "\"Where is it?\" %%3";
goto L_Close;
L_Close:
diff --git a/world/map/npc/001-1/ferry_master.txt b/world/map/npc/001-1/ferry_master.txt
index 9cfb1e74..c1e6cbb6 100644
--- a/world/map/npc/001-1/ferry_master.txt
+++ b/world/map/npc/001-1/ferry_master.txt
@@ -9,7 +9,7 @@
L_Main:
menu
"How do I use the ferry?", L_Explain,
- "Nothing I guess", L_Close;
+ "Nothing, I guess.", L_Close;
L_Explain:
mes "[Ferry Master]";
diff --git a/world/map/npc/001-1/gate_guards.txt b/world/map/npc/001-1/gate_guards.txt
index dea801ef..4370036d 100644
--- a/world/map/npc/001-1/gate_guards.txt
+++ b/world/map/npc/001-1/gate_guards.txt
@@ -2,25 +2,25 @@
001-1,39,33,0|script|Guard#school|104
{
mes "[Guard]";
- mes "\"I'm just here to provide a presence for the guards at this gate. The mages here can defend themselves without problem.\"";
+ 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 "\"The volcano and earthquake did a lot of damage, but the citizens of Tulimshar sure did a good job of cleaning up.\"";
+ 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 "\"The Palace is North of here. That is where you will find the Council of Wizards.\"";
+ 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 "\"This is a government building. They have some clerical and tax offices in here. There is also a jail in the subbasement.\"";
+ 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
index 283de9d7..a2266498 100644
--- a/world/map/npc/001-1/gossip.txt
+++ b/world/map/npc/001-1/gossip.txt
@@ -2,53 +2,56 @@
001-1,66,104,0|script|Gladys|154
{
- mes "[Gladys, Town Gossip]";
- mes "\"Hello deary! I hear some of the most fascinating rumors and bits of news. I just heard a bit more today!\"";
+ 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
- "Lt. Dausen", L_Intro,
- "Fieri", L_Cook,
- "Sarah", L_Sarah,
- "Sandra", L_Sandra,
- "Desert Mine", L_Desert,
- "Ferry", L_Ferry,
+ "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, Town Gossip]";
- mes "\"Very well. Come back whenever you like. I am always getting juicy bits of news!\"";
+ mes "[Gladys]";
+ mes "\"Very well. Come back later if you want to hear some juicy news!\"";
goto L_Close;
L_Intro:
- mes "[Gladys, Town Gossip]";
- mes "\"Have you met our lovely guard captain yet? He usually keeps a post just outside the gates where he can keep an eye on things. He likes to talk to new adventurers too.\"";
+ 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, Town Gossip]";
- mes "\"I hear the kitchen at the Magic Insitute of Tulimshar needs help.\"";
+ 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.\"";
+ mes "\"The only thing bigger then a wizard's ego is their waistline. Hehe.\" %%8";
goto L_Close;
L_Sarah:
- mes "[Gladys, Town Gossip]";
- mes "\"Do you believe what parents will let their kids do these days?! I heard about this girl in the south east side of town who does nothing but eat sweets all day! Honestly, what is the world coming to?\"";
+ 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, Town Gossip]";
- mes "\"The students and wizards at the Magic Institute of Tulimshar are always looking for people to gather reagents for spells as they are far too busy studing.\"";
+ 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, Town Gossip]";
- mes "\"If you're still looking for adventure, I would suggest talking to some of the guards. I hear there is a monster threat outside the city walls!\"";
+ 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, Town Gossip]";
- mes "I heard that there is a ferry in the north of town that will take people to exotic new places!\"";
+ 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:
diff --git a/world/map/npc/001-1/stat_reset.txt b/world/map/npc/001-1/stat_reset.txt
index 1ad2bc4e..e8c61ca3 100644
--- a/world/map/npc/001-1/stat_reset.txt
+++ b/world/map/npc/001-1/stat_reset.txt
@@ -2,7 +2,7 @@
001-1,117,105,0|script|Malivox|103
{
- set @NpcName$, "Malivox";
+ set @npcname$, "Malivox";
callfunc "StatReset";
close;
}
diff --git a/world/map/npc/001-1/tombstones.txt b/world/map/npc/001-1/tombstones.txt
index 39c98ade..e064a60d 100644
--- a/world/map/npc/001-1/tombstones.txt
+++ b/world/map/npc/001-1/tombstones.txt
@@ -4,7 +4,7 @@
{
mes "~ wushin ~";
- mes "Tonori swallowed him whole.";
+ mes "\"Tonori swallowed him whole.\"";
close;
}
@@ -12,7 +12,7 @@
{
mes "~ Nard ~";
- mes "Crushed by a loom.";
+ mes "\"Crushed by a loom.\"";
close;
}
@@ -20,7 +20,7 @@
{
mes "~ tux9th ~";
- mes "Eaten by bugs.";
+ mes "\"Eaten by bugs.\"";
close;
}
@@ -28,7 +28,7 @@
{
mes "~ o11c ~";
- mes "He asked for it. So they gave it to him.";
+ mes "\"He asked for it, so they gave it to him.\"";
close;
}
@@ -36,41 +36,41 @@
{
mes "~ " + strcharinfo(0) + " ~";
- mes "The tombstone is blank and the grave freshly dug.";
+ mes "The epitath is blank and the grave freshly dug.";
close;
}
001-1,56,106,0|script|RIP#6|400
{
mes "~ Cassy ~";
- mes "Eaten by trolls.";
+ mes "\"Eaten by trolls.\"";
close;
}
001-1,57,106,0|script|RIP#7|400
{
mes "~ George ~";
- mes "Eaten by Snakes.";
+ 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.";
+ 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.";
+ mes "\"Kieron was definitely right.\"";
close;
}
001-1,60,106,0|script|RIP#10|400
{
mes "~ Tyer ~";
- mes "An experiement went wrong.";
+ mes "\"An experiement went wrong.\"";
close;
}
diff --git a/world/map/npc/001-1/weellos.txt b/world/map/npc/001-1/weellos.txt
index ae5604f5..e49c6814 100644
--- a/world/map/npc/001-1/weellos.txt
+++ b/world/map/npc/001-1/weellos.txt
@@ -12,26 +12,24 @@
if (isin("001-1", 48, 20, 61, 28)) goto L_In;
mes "[Weellos]";
- mes "\"This is a very historic building. One of the oldest in the area.\"";
+ mes "\"This is a very historic building – in fact, it's one of the oldest in the area.\"";
next;
- mes "\"It's the current seat of the council of wizards.\"";
+ mes "\"It's also the current seat of both the Council of Wizards and the Magic Institute of Tulimshar.\"";
next;
- mes "\"It's also holds the Magic Institute of Tulimshar.\"";
- next;
- mes "\"Part of It's been turned into a museum as well\"";
+ mes "\"Due to its historical significance, part of it has been turned into a museum.\"";
goto L_BeforeClose;
// If the player is inside the fence with Weellos
L_In:
mes "[Weellos]";
- mes "\"What did you think of the historic building?\"";
+ mes "\"What did you think? Isn't the building intriguing?\"";
goto L_BeforeClose;
L_BeforeClose:
if (@kylian != 4)
goto L_Close;
next;
- mes "You wonder if Kylian would be interested to see this building.";
+ mes "You wonder if Kylian would be interested in seeing this historic landmark...";
goto L_Close;
L_Close:
diff --git a/world/map/npc/001-2/_mobs.txt b/world/map/npc/001-2/_mobs.txt
index 507c59c5..167e1f2e 100644
--- a/world/map/npc/001-2/_mobs.txt
+++ b/world/map/npc/001-2/_mobs.txt
@@ -3,7 +3,7 @@
-001-2,0,0,0|script|Mob001-2|-1
+001-2,0,0,0|script|Mob001-2|32767
{
end;
}
diff --git a/world/map/npc/001-2/_warps.txt b/world/map/npc/001-2/_warps.txt
index 3972182a..f193d192 100644
--- a/world/map/npc/001-2/_warps.txt
+++ b/world/map/npc/001-2/_warps.txt
@@ -1,18 +1,18 @@
// 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|To Outside|-1,-1,001-1,114,100
-001-2,28,102|warp|To Outside|-1,-1,001-1,27,33
-001-2,28,86|warp|To Light|-1,-1,001-1,28,22
-001-2,105,102|warp|To Outside|0,-1,001-1,54,35
-001-2,25,28|warp|To Outside|-1,-1,001-1,49,72
-001-2,28,28|warp|To Outside|-1,-1,001-1,52,72
-001-2,31,28|warp|To Outside|-1,-1,001-1,55,72
-001-2,71,102|warp|To Outside|-1,-1,001-1,37,33
-001-2,105,73|warp|Council Chambers|2,-1,001-2,104,42
-001-2,105,43|warp|Main Floor|2,-1,001-2,104,74
-001-2,114,53|warp|Parapet|-1,-1,001-1,57,23
-001-2,95,53|warp|Parapet|-1,-1,001-1,52,23
-001-2,57,90|warp|Lighthouse|-1,-1,001-2,35,94
-001-2,36,95|warp|MainFloor|-1,0,001-2,58,90
-001-2,65,26|warp|Outside|-1,-1,001-1,59,99
+001-2,25,65|warp|To Outside#001-20|-1,-1,001-1,114,100
+001-2,28,102|warp|To Outside#001-21|-1,-1,001-1,27,33
+001-2,28,86|warp|To Light#001-22|-1,-1,001-1,28,22
+001-2,105,102|warp|To Outside#001-23|0,-1,001-1,54,35
+001-2,25,28|warp|To Outside#001-24|-1,-1,001-1,49,72
+001-2,28,28|warp|To Outside#001-25|-1,-1,001-1,52,72
+001-2,31,28|warp|To Outside#001-26|-1,-1,001-1,55,72
+001-2,71,102|warp|To Outside#001-27|-1,-1,001-1,37,33
+001-2,105,73|warp|Council Chamber#001-28|2,-1,001-2,104,42
+001-2,105,43|warp|Main Floor#001-29|2,-1,001-2,104,74
+001-2,114,53|warp|Parapet#001-210|-1,-1,001-1,57,23
+001-2,95,53|warp|Parapet#001-211|-1,-1,001-1,52,23
+001-2,57,90|warp|Lighthouse#001-212|-1,-1,001-2,35,94
+001-2,36,95|warp|MainFloor#001-213|-1,0,001-2,58,90
+001-2,65,26|warp|Outside#001-214|-1,-1,001-1,59,99
diff --git a/world/map/npc/001-2/government_building.txt b/world/map/npc/001-2/government_building.txt
index d62159cb..51b43a8c 100644
--- a/world/map/npc/001-2/government_building.txt
+++ b/world/map/npc/001-2/government_building.txt
@@ -1,22 +1,22 @@
-// The government builing in the south west
+// 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?\"";
+ mes "\"Hello. What can I do for you?\"";
next;
if (getpartnerid2())
goto L_main_married;
menu
- "I'm looking at getting married.", L_marry,
- "Nothing, I guess.", L_Close;
+ "I'd like to get married.", L_marry,
+ "Never mind.", L_Close;
L_main_married:
menu
- "I'd like a divorce.", L_divorce,
- "Nothing, I guess.", L_Close;
+ "I'd like to file for divorce.", L_divorce,
+ "Never mind.", L_Close;
L_marry:
if (BaseLevel < WEDDING_MIN_LEVEL)
@@ -24,51 +24,56 @@ L_marry:
if (Zeny < WEDDING_FEE)
goto L_marry_too_poor;
+ mes "";
mes "[Estard]";
- mes "\"Are you sure you want to get married? It'll cost " + WEDDING_FEE + " GP.\"";
+ mes "\"Are you sure that you want to get married? It'll cost you ##B" + WEDDING_FEE + " GP##b.\"";
menu
- "Yes", L_marry_do,
- "No", L_Close;
+ "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. You can get married by standing in one of the designated places (like that small rug over there) with your partner, give them their ring, and say 'marry (their name here)'. You both need to have your rings on.\"";
+ 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 atleast " + WEDDING_MIN_LEVEL + " levels old.\"";
+ 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 wedding rings?", L_get_rings,
+ "Can I at least get the wedding rings now?", L_get_rings,
"Thanks anyways.", L_Close;
L_marry_too_poor:
+ mes "";
mes "[Estard]";
- mes "\"You need " + WEDDING_FEE + " GP to get married. That covers all administrative fees for the marriage and provides two wedding rings.\"";
+ 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. They are " + WEDDING_FEE + " GP. That covers all administrative fees for the marriage.\"";
+ 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 anyways. I don't have enough with me.", L_Close;
+ "Thanks, but I don't have enough with me right now.", L_Close;
if (Zeny >= WEDDING_FEE)
menu
- "I'll buy a pair.", L_get_rings_pay,
- "Thanks anyways.", L_Close;
+ "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. Come again.\"";
+ mes "\"There you go! %%1\"";
close;
L_divorce:
@@ -78,11 +83,11 @@ L_divorce:
goto L_divorce_not_enough;
mes "[Estard]";
- mes "\"If you're sure you want a divorce, it'll cost you " + @divorce_cost + " GP.\"";
+ 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 am sure I want it.", L_do_divorce,
- "I don't want it.", L_Close;
+ "I'm sure.", L_do_divorce,
+ "I'm having second thoughts...", L_Close;
L_do_divorce:
if (Zeny < @divorce_cost)
@@ -91,35 +96,45 @@ L_do_divorce:
if (divorce())
goto L_divorce_done;
+ mes "";
mes "[Estard]";
- mes "\"I'm having trouble finding the record. \"";
+ mes "\"I'm having trouble finding your documents. Please come back later.\"";
+ mes "";
mes "[Server]";
- mes "Try again when your partner is online too.";
+ 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 been divorced. Come again.\"";
+ 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 " + @divorce_cost + " GP.\"";
+ 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 "\"Seems you don't have enough money.\"";
+ 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 "\"You don't have enough room to carry these rings.\"";
+ 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:
@@ -139,6 +154,6 @@ S_give_rings:
001-2,22,21,0|script|Guard#govt_in|123
{
mes "[Guard]";
- mes "\"You can't come back here.\"";
+ 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
index e6548542..05044812 100644
--- a/world/map/npc/001-2/heathin.txt
+++ b/world/map/npc/001-2/heathin.txt
@@ -9,28 +9,28 @@
set @state, ((QUEST_NorthTulimshar & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT);
- if (@state == 14) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Trade;
- if (@state == 13) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Ready;
- if (@state == 12) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Forge;
- if (@state == 11) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows;
- if (@state == 10) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor_Ready;
- if (@state == 9) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor_Forge;
- if (@state == 8) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor;
- if (@state == 7) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs_Ready;
- if (@state == 6) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs_Forge;
- if (@state == 5) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs;
- if (@state == 4) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood_Ready;
- if (@state == 3) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood_Forge;
- if (@state == 2) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood;
- if (@state == 2) && (BaseLevel >= 60) goto L_Heathin_Forge_Thanks;
- if (@state == 1) && (BaseLevel >= 60) goto L_Heathin_Forge_Award;
- if (BaseLevel >= 60) goto L_Heathin_Start;
+ if (@state == 14) && (BaseLevel >= 80) goto L_Arrows_Trade;
+ if (@state == 13) && (BaseLevel >= 80) goto L_Arrows_Ready;
+ if (@state == 12) && (BaseLevel >= 80) goto L_Arrows_Forge;
+ if (@state == 11) && (BaseLevel >= 80) goto L_Arrows;
+ if (@state == 10) && (BaseLevel >= 80) goto L_Chest_Armor_Ready;
+ if (@state == 9) && (BaseLevel >= 80) goto L_Chest_Armor_Forge;
+ if (@state == 8) && (BaseLevel >= 80) goto L_Chest_Armor;
+ if (@state == 7) && (BaseLevel >= 80) goto L_Legs_Ready;
+ if (@state == 6) && (BaseLevel >= 80) goto L_Legs_Forge;
+ if (@state == 5) && (BaseLevel >= 80) goto L_Legs;
+ if (@state == 4) && (BaseLevel >= 80) goto L_Hood_Ready;
+ if (@state == 3) && (BaseLevel >= 80) goto L_Hood_Forge;
+ if (@state == 2) && (BaseLevel >= 80) goto L_Hood;
+ if (@state == 2) && (BaseLevel >= 60) goto L_Forge_Thanks;
+ if (@state == 1) && (BaseLevel >= 60) goto L_Forge_Award;
+ if (BaseLevel >= 60) goto L_Start;
mes "[Heathin]";
mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \"";
close;
-L_Heathin_Start:
+L_Start:
mes "[Heathin]";
mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \"";
next;
@@ -38,23 +38,18 @@ L_Heathin_Start:
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_Heathin_Help,
- "I'd rather keep my Coal for my own purposes, thank you very much.", L_Heathin_No,
- "Wait, what kind of award are we talking about?", L_Heathin_Interested;
+ "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_Heathin_Help:
+L_Help:
set @state, 1;
callsub S_Update_Mask;
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_Heathin_No:
- mes "[Heathin]";
- mes "\"That is too bad. If you change your mind, I shall still be here, attempting to get my commission done.\"";
- close;
-
-L_Heathin_Interested:
+L_Interested:
mes "[Heathin]";
mes "\"Well, I can compensate you from the commision I getting from the council.\"";
next;
@@ -62,12 +57,12 @@ L_Heathin_Interested:
next;
mes "\"Does this sound like something you might be interested in?\"";
menu
- "Sure, I'll help!", L_Heathin_Help,
- "I'd rather keep my Coal.", L_Heathin_No,
- "Can you repeat that again?", L_Heathin_Interested;
+ "Sure, I'll help!", L_Help,
+ "I'd rather keep my Coal.", L_No,
+ "Can you repeat that again?", L_Interested;
-L_Heathin_Forge_Award:
- if (countitem ("Coal") < 50) goto L_Heathin_Forge_Wait;
+L_Forge_Award:
+ if (countitem ("Coal") < 50) goto L_Forge_Wait;
getinventorylist;
set @state, 2;
callsub S_Update_Mask;
@@ -80,7 +75,7 @@ L_Heathin_Forge_Award:
mes "\"Time to make some armor. The Council will be pleased. Thank you for your efforts!\"";
close;
-L_Heathin_Forge_Wait:
+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;
@@ -89,12 +84,12 @@ L_Heathin_Forge_Wait:
mes "\"I will be sure to provide an apt award once you are done.\"";
close;
-L_Heathin_Forge_Thanks:
+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_Heathin_Terranite_Hood:
+L_Hood:
mes "[Heathin]";
mes "\"Hello again friend, I just found out about this great metal called terranite.\"";
next;
@@ -108,15 +103,15 @@ L_Heathin_Terranite_Hood:
next;
mes "\"So, what do you say? Are you interested?\"";
menu
- "No, thank you. Maybe later.", L_Heathin_Terranite_No,
- "Armor, you say? Definitely!", L_Heathin_Terranite_Yes;
+ "No, thank you. Maybe later.", L_No,
+ "Armor, you say? Definitely!", L_Yes;
-L_Heathin_Terranite_No:
+L_No:
mes "[Heathin]";
- mes "\"Ah, that is too bad. Come by again anytime.\"";
+ mes "\"Ah, that is too bad. Come back anytime.\"";
close;
-L_Heathin_Terranite_Yes:
+L_Yes:
set @state, 3;
callsub S_Update_Mask;
mes "[Heathin]";
@@ -129,11 +124,11 @@ L_Heathin_Terranite_Yes:
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_Heathin_Terranite_Hood_Forge:
+L_Hood_Forge:
if ( (Zeny < 20000)
|| (countitem("Coal") < 100)
|| (countitem("TerraniteOre") < 10) )
- goto L_Heathin_Terranite_Hood_Wait;
+ goto L_Hood_Wait;
set @state, 4;
callsub S_Update_Mask;
delitem "Coal", 100;
@@ -144,12 +139,12 @@ L_Heathin_Terranite_Hood_Forge:
mes "\"Great, you brought everything! Come back later and I'll have the helm ready for you.\"";
close;
-L_Heathin_Terranite_Hood_Wait:
+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_Heathin_Terranite_Hood_Ready:
+L_Hood_Ready:
getinventorylist;
if ((checkweight("TerraniteHelmet", 1) == 0) || (@inventorylist_count == 100))
goto L_InventoryNoSpace;
@@ -160,7 +155,7 @@ L_Heathin_Terranite_Hood_Ready:
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_Heathin_Terranite_Legs:
+L_Legs:
set @state, 6;
callsub S_Update_Mask;
mes "[Heathin]";
@@ -169,11 +164,11 @@ L_Heathin_Terranite_Legs:
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_Heathin_Terranite_Legs_Forge:
+L_Legs_Forge:
if ( (Zeny < 40000)
|| (countitem("Coal") < 200)
|| (countitem("TerraniteOre") < 30) )
- goto L_Heathin_Terranite_Legs_Wait;
+ goto L_Legs_Wait;
set @state, 7;
callsub S_Update_Mask;
delitem "Coal", 200;
@@ -184,12 +179,12 @@ L_Heathin_Terranite_Legs_Forge:
mes "\"Great, you have brought everything! Come back later and I will have those terranite pants ready for you.\"";
close;
-L_Heathin_Terranite_Legs_Wait:
+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_Heathin_Terranite_Legs_Ready:
+L_Legs_Ready:
getinventorylist;
if ((checkweight("TerraniteLegs", 1) == 0) || (@inventorylist_count == 100))
goto L_InventoryNoSpace;
@@ -200,7 +195,7 @@ L_Heathin_Terranite_Legs_Ready:
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_Heathin_Terranite_Chest_Armor:
+L_Chest_Armor:
set @state, 9;
callsub S_Update_Mask;
mes "[Heathin]";
@@ -209,11 +204,11 @@ L_Heathin_Terranite_Chest_Armor:
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_Heathin_Terranite_Chest_Armor_Forge:
+L_Chest_Armor_Forge:
if ( (Zeny < 50000)
|| (countitem("Coal") < 250)
|| (countitem("TerraniteOre") < 40) )
- goto L_Heathin_Terranite_Chest_Armor_Wait;
+ goto L_Chest_Armor_Wait;
set @state, 10;
callsub S_Update_Mask;
delitem "Coal", 250;
@@ -224,12 +219,12 @@ L_Heathin_Terranite_Chest_Armor_Forge:
mes "\"Splendid, you have brought everything! Come back later and I will have the terranite chest armor ready for you.\"";
close;
-L_Heathin_Terranite_Chest_Armor_Wait:
+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_Heathin_Terranite_Chest_Armor_Ready:
+L_Chest_Armor_Ready:
getinventorylist;
if ((checkweight("TerraniteChestArmor", 1) == 0) || (@inventorylist_count == 100))
goto L_InventoryNoSpace;
@@ -240,21 +235,21 @@ L_Heathin_Terranite_Chest_Armor_Ready:
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_Heathin_Terranite_Arrows:
+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_Heathin_Terranite_Arrows_No,
- "Sure, I could use some arrows.", L_Heathin_Terranite_Arrows_Yes;
+ "No, thank you.", L_Arrows_No,
+ "Sure, I could use some arrows.", L_Arrows_Yes;
-L_Heathin_Terranite_Arrows_No:
+L_Arrows_No:
mes "[Heathin]";
mes "\"Well, if you change your mind, I'm not going anywhere.\"";
close;
-L_Heathin_Terranite_Arrows_Yes:
+L_Arrows_Yes:
set @state, 12;
callsub S_Update_Mask;
mes "[Heathin]";
@@ -263,11 +258,11 @@ L_Heathin_Terranite_Arrows_Yes:
mes "\"See you soon!\"";
close;
-L_Heathin_Terranite_Arrows_Forge:
+L_Arrows_Forge:
if ( (Zeny < @TARROW_REQ_GP)
|| (countitem("Coal") < @TARROW_REQ_COAL)
|| (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) )
- goto L_Heathin_Terranite_Arrows_Wait;
+ goto L_Arrows_Wait;
set @state, 13;
callsub S_Update_Mask;
delitem "Coal", @TARROW_REQ_COAL;
@@ -278,12 +273,12 @@ L_Heathin_Terranite_Arrows_Forge:
mes "\"Wonderful! You have everything I asked for. I will start working on the arrows right away.\"";
close;
-L_Heathin_Terranite_Arrows_Wait:
+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_Heathin_Terranite_Arrows_Ready:
+L_Arrows_Ready:
getinventorylist;
if ((checkweight("TerraniteArrow", 1000) == 0) || (@inventorylist_count == 100))
goto L_InventoryNoSpace;
@@ -294,36 +289,39 @@ L_Heathin_Terranite_Arrows_Ready:
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_Heathin_Terranite_Arrows_Trade:
+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_Heathin_Terranite_Arrows_Trade_No,
- "Yes.", L_Heathin_Terranite_Arrows_Trade_Yes;
+ "No.", L_Arrows_Trade_No,
+ "Yes.", L_Arrows_Trade_Yes;
-L_Heathin_Terranite_Arrows_Trade_No:
+L_Arrows_Trade_No:
mes "[Heathin]";
mes "\"Come back again if you would like to get Terranite Arrows.\"";
close;
-L_Heathin_Terranite_Arrows_Trade_Yes:
+L_Arrows_Trade_Yes:
if ( (Zeny < @TARROW_REQ_GP)
|| (countitem("Coal") < @TARROW_REQ_COAL)
|| (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) )
- goto L_Heathin_Terranite_Arrows_Trade_Wait;
+ 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(readparam(bLuk));
+ set @lucky, 5 * rand(Luk);
+ set @lucky$, "";
getitem "TerraniteArrow", 1000 + @lucky;
mes "[Heathin]";
- mes "\"Here you go! You are lucky, I could forge "+@lucky+" more arrows than expected. Come back again if you want more Terranite Arrows.\"";
+ 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_Heathin_Terranite_Arrows_Trade_Wait:
+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;
diff --git a/world/map/npc/001-2/manakins.txt b/world/map/npc/001-2/manakins.txt
index dabe7fc5..ef1e2982 100644
--- a/world/map/npc/001-2/manakins.txt
+++ b/world/map/npc/001-2/manakins.txt
@@ -3,19 +3,27 @@
// Forge
001-2,29,57,0|script|Terranite Armor#Female|401
{
- mes "Terranite Armor complete set, made to order, inquire with Heathin";
+ 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 "Terranite Armor complete set, made to order, inquire with Heathin";
+ 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! Wait it appears to just be a display model.";
+ mes "Ahhh! A Terranite!";
+ next;
+ mes "Wait a minute...";
+ next;
+ mes "It appears to just be a display model.";
close;
}
@@ -23,25 +31,25 @@
001-2,91,39,0|script|Talponian#Female|404
{
- mes "A Female Talponian.";
+ mes "A female Talponian manakin stands on display.";
close;
}
001-2,91,44,0|script|Talponian#Male|405
{
- mes "A Male Talponian.";
+ mes "A male Talponian manakin stands on display.";
close;
}
001-2,118,39,0|script|Gispaan#Female|406
{
- mes "A Female Gispaan.";
+ mes "A female Gispaan manakin stands on display.";
close;
}
001-2,118,44,0|script|Gispaan#Male|407
{
- mes "A Male Gispaan.";
+ mes "A male Gispaan manakin stands on display.";
close;
}
diff --git a/world/map/npc/001-2/pauline.txt b/world/map/npc/001-2/pauline.txt
index 1136795f..4fbd5a5f 100644
--- a/world/map/npc/001-2/pauline.txt
+++ b/world/map/npc/001-2/pauline.txt
@@ -122,6 +122,8 @@ L_KnowIngredientsMouboo:
"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.\"";
@@ -182,6 +184,8 @@ L_TrySpellMouboo:
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]";
@@ -267,6 +271,8 @@ L_ComeBackLater:
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;
diff --git a/world/map/npc/001-2/sandra.txt b/world/map/npc/001-2/sandra.txt
index 3eceeff6..a94d10a3 100644
--- a/world/map/npc/001-2/sandra.txt
+++ b/world/map/npc/001-2/sandra.txt
@@ -2,9 +2,6 @@
001-2,98,88,0|script|Sandra|114
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (@state >= 2) goto L_Done;
diff --git a/world/map/npc/001-2/wizards.txt b/world/map/npc/001-2/wizards.txt
index 4f88c58b..37efa8bd 100644
--- a/world/map/npc/001-2/wizards.txt
+++ b/world/map/npc/001-2/wizards.txt
@@ -3,58 +3,88 @@
// manaseed
001-2,104,19,0|script|Desert Mana Seed#_M|166
{
- end;
+ mes "Strangely, you feel nothing – as if its membrane is closed to you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,99,22,0|script|Wizard#1|355
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,92,24,0|script|Wizard#2|356
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,92,30,0|script|Wizard#3|357
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,99,32,0|script|Wizard#4|358
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,110,22,0|script|Wizard#5|359
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,117,24,0|script|Wizard#6|360
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,117,30,0|script|Wizard#7|361
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,110,32,0|script|Wizard#8|362
{
- end;
+ mes "The wizard seems to ignore you.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
//
001-2,104,27,0|script|Arch-Wizard#9|354
{
- end;
+ mes "The arch wizard seems to be busy.";
+ next;
+ mes "Perhaps you should come back later.";
+ close;
}
diff --git a/world/map/npc/001-3/_mobs.txt b/world/map/npc/001-3/_mobs.txt
index 3064369a..1c76eac9 100644
--- a/world/map/npc/001-3/_mobs.txt
+++ b/world/map/npc/001-3/_mobs.txt
@@ -4,7 +4,7 @@
001-3,0,0,0,0|monster|Maggot|1002,10,0ms,0ms,Mob001-3::On1002
-001-3,0,0,0|script|Mob001-3|-1
+001-3,0,0,0|script|Mob001-3|32767
{
end;
diff --git a/world/map/npc/001-3/_warps.txt b/world/map/npc/001-3/_warps.txt
index 1c626c4e..10c24a87 100644
--- a/world/map/npc/001-3/_warps.txt
+++ b/world/map/npc/001-3/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Tulimshar Arena warps
-001-3,73,28|warp|To Tulimshar Indoor|-1,-1,002-2,74,59
+001-3,73,28|warp|To Tulimshar In#001-30|-1,-1,002-2,74,59
diff --git a/world/map/npc/002-1/_mobs.txt b/world/map/npc/002-1/_mobs.txt
index 96070290..19933fab 100644
--- a/world/map/npc/002-1/_mobs.txt
+++ b/world/map/npc/002-1/_mobs.txt
@@ -16,7 +16,7 @@
002-1,73,105,20,21|monster|FireGoblin|1011,6,100000ms,30000ms,Mob002-1::On1011
-002-1,0,0,0|script|Mob002-1|-1
+002-1,0,0,0|script|Mob002-1|32767
{
end;
diff --git a/world/map/npc/002-1/_warps.txt b/world/map/npc/002-1/_warps.txt
index fa340f8b..5aef5813 100644
--- a/world/map/npc/002-1/_warps.txt
+++ b/world/map/npc/002-1/_warps.txt
@@ -1,19 +1,19 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Tulimshar South warps
-002-1,63,20|warp|North Tulimshar|3,-1,001-1,63,118
-002-1,103,20|warp|North Tulimshar|3,-1,001-1,103,118
-002-1,119,95|warp|To Snake Desert|-1,1,006-1,21,47
-002-1,92,114|warp|To Desert Mine Camp|-1,-1,002-3,85,49
-002-1,33,109|warp|To Desert Mine Camp|-1,-1,002-3,51,35
-002-1,109,45|warp|To Weavers Shop|-1,-1,002-2,75,100
-002-1,115,45|warp|To Weavers Shop|-1,-1,002-2,83,100
-002-1,99,43|warp|To Jeweler|-1,-1,002-2,120,66
-002-1,114,35|warp|To Trainer|-1,-1,002-2,78,131
-002-1,110,29|warp|To Trainer|-1,-1,002-2,68,122
-002-1,73,35|warp|To Tulimshar Indoor|-1,-1,002-2,44,33
-002-1,57,35|warp|To KPS|-1,-1,002-2,120,94
-002-1,67,29|warp|To Tulimshar Indoor|-1,-1,002-2,23,109
-002-1,113,107|warp|To Snake Cave|-1,-1,005-3,52,35
-002-1,49,20|warp|To Sea Cave|-1,-1,004-3,24,94
-002-1,57,26|warp|Omar's House|-1,-1,002-2,119,131
+002-1,63,20|warp|North Tulimshar#002-10|3,-1,001-1,63,118
+002-1,103,20|warp|North Tulimshar#002-11|3,-1,001-1,103,118
+002-1,119,95|warp|To Snake Desert#002-12|-1,1,006-1,21,47
+002-1,92,114|warp|To Desert Mine #002-13|-1,-1,002-3,85,49
+002-1,33,109|warp|To Desert Mine #002-14|-1,-1,002-3,51,35
+002-1,109,45|warp|To Weavers Shop#002-15|-1,-1,002-2,75,100
+002-1,115,45|warp|To Weavers Shop#002-16|-1,-1,002-2,83,100
+002-1,99,43|warp|To Jeweler#002-17|-1,-1,002-2,120,66
+002-1,114,35|warp|To Trainer#002-18|-1,-1,002-2,78,131
+002-1,110,29|warp|To Trainer#002-19|-1,-1,002-2,68,122
+002-1,73,35|warp|To Tulimshar In#002-110|-1,-1,002-2,44,33
+002-1,57,35|warp|To KPS#002-111|-1,-1,002-2,120,94
+002-1,67,29|warp|To Tulimshar In#002-112|-1,-1,002-2,23,109
+002-1,113,107|warp|To Snake Cave#002-113|-1,-1,005-3,52,35
+002-1,49,20|warp|To Sea Cave#002-114|-1,-1,004-3,24,94
+002-1,57,26|warp|Omar's House#002-115|-1,-1,002-2,119,131
diff --git a/world/map/npc/002-1/elanore.txt b/world/map/npc/002-1/elanore.txt
index da73a88f..b6cdde5a 100644
--- a/world/map/npc/002-1/elanore.txt
+++ b/world/map/npc/002-1/elanore.txt
@@ -17,6 +17,24 @@ function|script|ElanoreFix
return;
}
+function|script|elanore_decrease_exp
+{
+ if (attachrid(@killerrid) == 0)
+ end;
+ 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);
+ return;
+}
+
002-1,75,62,0|script|Elanore#_M|108
{
set @has_magic, getskilllv(SKILL_MAGIC);
@@ -155,22 +173,6 @@ L_Main:
"Goodbye!", L_bye;
goto L_Close;
-OnPCKillEvent:
- if (attachrid(@killerrid) == 0)
- end;
- 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_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.\"";
@@ -178,20 +180,20 @@ L_Lifestones:
menu
"OK, I will get them.", L_Close,
"No way!", L_Close,
- "Here you are!", L_Lifestones_Trade,
- "Can I make them myself?", L_Lifestones_MakeSelf;
-
-L_Lifestones_Trade:
- if (countitem("MauveHerb") < 10) goto L_Lifestones_Trade_Missing;
- if (countitem("GambogeHerb") < 10) goto L_Lifestones_Trade_Missing;
- if (countitem("AlizarinHerb") < 10) goto L_Lifestones_Trade_Missing;
- if (countitem("CobaltHerb") < 10) goto L_Lifestones_Trade_Missing;
+ "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_Lifestones_NoRoom;
+ && countitem("CobaltHerb") > 10) goto L_NoRoom;
delitem "MauveHerb", 10;
delitem "GambogeHerb", 10;
@@ -211,44 +213,44 @@ L_Lifestones_Trade:
mes "[200 experience points]";
goto L_Close;
-L_Lifestones_NoRoom:
+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_Lifestones_Trade_Missing:
+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_Lifestones_MakeSelf:
+L_MakeSelf:
mes "[Elanore the Healer]";
- if (@has_magic < 2) goto L_Lifestones_MakeSelf_no;
- goto L_Lifestones_MakeSelf_yes;
+ if (@has_magic < 2) goto L_MakeSelf_no;
+ goto L_MakeSelf_yes;
-L_Lifestones_MakeSelf_yes:
+L_MakeSelf_yes:
mes "\"Oh, but of course! You are powerful enough to make your own lifestones, using the enchantment '" + getspellinvocation("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_Lifestones_MakeSelf_no:
+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_Teach_Initial;
- if (@Q_status == @STATUS_LEARNED_LIGHT_HEAL) goto L_Teach_CheckAdvanceTo2;
- if (@Q_status == @STATUS_MASTERED_LIGHT_HEAL) goto L_Teach_CheckAdvanceToLOH;
- if (@Q_status == @STATUS_LEARNED_LAY_ON_HANDS) goto L_Teach_Explain3;
- if (@Q_status == @STATUS_WAITING_FOR_KADIYA) goto L_Teach_CheckAdvanceTo3;
- if (@Q_status == @STATUS_READY_TO_LEARN_CURE_POISON) goto L_Teach_CurePosion;
- if (@Q_status == @STATUS_LEARNED_CURE_POISON) goto L_Teach_dunno;
+ 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_Teach_Initial:
+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.";
@@ -274,7 +276,7 @@ L_Teach_Initial:
mes "\"Let me give you a lifestone to get started with.\"";
next;
getinventorylist;
- if ((@inventorylist_count == 100) && (countitem("Lifestone") == 0)) goto L_Teach_Initial_Noroom;
+ 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;
@@ -284,27 +286,27 @@ L_Teach_Initial:
mes "\"Here you are. I hope that it will allow you to do good!\"";
goto L_Close;
-L_Teach_Initial_Noroom:
+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_Teach_CheckAdvanceTo2:
+L_T_ChkAdvTo2:
mes "[Elanore the Healer]";
- if (@Q_heal_exp < 20) goto L_Teach_CheckAdvanceTo2_fail;
+ 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_Teach_AdvanceTo2_warn;
- goto L_Teach_AdvanceTo2_skip;
+ if (getskilllv(SKILL_MAGIC) < 2) goto L_T_AdvTo2_warn;
+ goto L_T_AdvTo2_skip;
-L_Teach_AdvanceTo2_warn:
+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_Teach_AdvanceTo2_skip;
+ goto L_T_AdvTo2_skip;
-L_Teach_AdvanceTo2_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.";
@@ -321,7 +323,7 @@ L_Teach_AdvanceTo2_skip:
callfunc "SkillUp";
goto L_Close;
-L_Teach_CheckAdvanceTo2_fail:
+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.\"";
@@ -331,9 +333,9 @@ L_Teach_CheckAdvanceTo2_fail:
mes "\"You have made good progress, but please do continue in your efforts.\"";
goto L_Close;
-L_Teach_CheckAdvanceToLOH:
- if (getskilllv(SKILL_MAGIC) < 2) goto L_Teach_LOH_advance_abort0;
- if (@Q_heal_exp < 30) goto L_Teach_LOH_advance_abort1;
+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.\"";
@@ -349,19 +351,19 @@ L_Teach_CheckAdvanceToLOH:
callsub S_update_var;
goto L_Close;
-L_Teach_LOH_advance_abort0:
+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_Teach_LOH_advance_abort1:
+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_Teach_Explain3:
- if (getskilllv(SKILL_MAGIC) < 3) goto L_Teach_Explain3_abort;
- if (@Q_heal_exp < 50) goto L_Teach_Explain3_fail;
+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.";
@@ -423,12 +425,12 @@ L_3_where:
next;
goto L_3_menu;
-L_Teach_Explain3_abort:
+L_T_Explain3_abort:
mes "[Elanore the Healer]";
mes "\"I'm sorry, but you lack the magical power to advance.\"";
goto L_Close;
-L_Teach_Explain3_fail:
+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.\"";
@@ -438,17 +440,17 @@ L_Teach_Explain3_fail:
mes "\"You are doing well, but you need some more practice as a healer first.\"";
goto L_Close;
-L_Teach_CheckAdvanceTo3:
+L_T_ChkAdvTo3:
callfunc "KadiyaSubquestConsts";
- if (@Q_kadiya_status >= @Q_STATUS_COMPLETED) goto L_Teach_AdvanceTo3Ready;
+ 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_Teach_AdvanceTo3Ready:
+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.";
@@ -484,7 +486,7 @@ L_Teach_AdvanceTo3Ready:
goto L_Main;
-L_Teach_CurePosion:
+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.\"";
@@ -506,7 +508,7 @@ L_Teach_CurePosion:
callsub S_update_var;
goto L_Main;
-L_Teach_dunno:
+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;
diff --git a/world/map/npc/002-1/lieutenant_dausen.txt b/world/map/npc/002-1/lieutenant_dausen.txt
index 38ac6b08..2751d49a 100644
--- a/world/map/npc/002-1/lieutenant_dausen.txt
+++ b/world/map/npc/002-1/lieutenant_dausen.txt
@@ -3,9 +3,6 @@
002-1,63,67,0|script|Lieutenant Dausen|122
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state == 21) goto L_LD_Key;
diff --git a/world/map/npc/002-1/nickos.txt b/world/map/npc/002-1/nickos.txt
index 45644cee..99f17b5c 100644
--- a/world/map/npc/002-1/nickos.txt
+++ b/world/map/npc/002-1/nickos.txt
@@ -3,27 +3,24 @@
002-1,46,108,0|script|Nickos|123
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
- if (@state == 20) goto L_Nickos_UGQ;
- if (@state == 19) goto L_Nickos_AS_Done;
- if (@state == 18) goto L_Nickos_AS_Start;
- if (@state >= 11) && (@state < 18) goto L_Nickos_Guards;
- if (@state == 10) goto L_Nickos_Check_Happy;
- if (@state > 7) && (@state < 10) goto L_Nickos_Waits;
- if (@state == 7) goto L_Nickos_Mine;
- if (@state == 6) goto L_Nickos_Orders_Received;
- if (@state == 5) goto L_Nickos_Orders;
- if (@state < 5) goto L_Nickos_See_Dausen_First;
+ if (@state == 20) goto L_UGQ;
+ if (@state == 19) goto L_AS_Done;
+ if (@state == 18) goto L_AS_Start;
+ if (@state >= 11) && (@state < 18) goto L_Guards;
+ if (@state == 10) goto L_Check_Happy;
+ if (@state > 7) && (@state < 10) goto L_Waits;
+ if (@state == 7) goto L_Mine;
+ if (@state == 6) goto L_Orders_Received;
+ if (@state == 5) goto L_Orders;
+ if (@state < 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_Nickos_See_Dausen_First:
+L_See_Dausen_First:
mes "[Nickos]";
mes "\"I'm watching this mine to make sure the monsters don't harm the miners.\"";
next;
@@ -31,45 +28,45 @@ L_Nickos_See_Dausen_First:
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_Nickos_Orders:
+L_Orders:
set @state, 6;
callsub S_Update_Var;
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_Nickos_Orders_Received:
+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_Nickos_Mine:
+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_Nickos_Mine_Open,
- "No.", L_Nickos_Disappoint;
+ "Yes.", L_Mine_Open,
+ "No.", L_Disappoint;
-L_Nickos_Disappoint:
+L_Disappoint:
mes "Nickos looks disappointed.";
goto L_Close;
-L_Nickos_Mine_Open:
+L_Mine_Open:
set @state, 8;
callsub S_Update_Var;
mes "[Nickos]";
mes "\"Excellent! You now have my permission to enter the mine. Your assistance helps ease my worries.\"";
goto L_Close;
-L_Nickos_Waits:
+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_Nickos_Check_Happy:
+L_Check_Happy:
set @state, 11;
callsub S_Update_Var;
set Zeny, Zeny + 500;
@@ -77,26 +74,26 @@ L_Nickos_Check_Happy:
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_Nickos_Guards:
+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_Nickos_AS_Start:
+L_AS_Start:
set @state, 19;
callsub S_Update_Var;
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_Nickos_AS_Done:
+L_AS_Done:
if (countitem ("AngryScorpionStinger") < 10)
- goto L_Nickos_AS_NotDone;
+ goto L_AS_NotDone;
getinventorylist;
if (@inventorylist_count - (countitem("AngryScorpionStinger") == 10) > 99)
- goto L_Nickos_TooMany;
+ goto L_TooMany;
set @state, 20;
callsub S_Update_Var;
delitem "AngryScorpionStinger", 10;
@@ -107,17 +104,17 @@ L_Nickos_AS_Done:
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_Nickos_AS_NotDone:
+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_Nickos_TooMany:
+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_Nickos_UGQ:
+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;
diff --git a/world/map/npc/002-1/sarah.txt b/world/map/npc/002-1/sarah.txt
index 83fc6558..3b7a7232 100644
--- a/world/map/npc/002-1/sarah.txt
+++ b/world/map/npc/002-1/sarah.txt
@@ -2,9 +2,6 @@
002-1,93,43,0|script|Sarah|106
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
if (@state >= 2) goto L_Done;
@@ -51,14 +48,15 @@ L_Progress:
mes "\"Whee!\"";
next;
mes "You brought me Cherry Cake! Here is your new hat, as promised.\"";
- emotion EMOTE_TONGUE;
getinventorylist;
if ((@inventorylist_count - (countitem("CherryCake") == 1)) > 99) goto L_TooMany;
delitem "CherryCake", 1;
getitem "SerfHat", 1;
set @state, 2;
callsub S_Update_Var;
- goto L_Close;
+ close2;
+ emotion EMOTE_TONGUE, strcharinfo(0);
+ end;
L_NotEnough:
mes "[Sarah]";
@@ -68,8 +66,9 @@ L_NotEnough:
L_Done:
mes "[Sarah]";
mes "\"It was so tasty, I can't eat anything more... Thank you!\"";
- emotion EMOTE_TONGUE;
- goto L_Close;
+ close2;
+ emotion EMOTE_TONGUE, strcharinfo(0);
+ end;
L_Close:
set @TEMP, 0;
diff --git a/world/map/npc/002-1/soul-menhir.txt b/world/map/npc/002-1/soul-menhir.txt
index 3260e511..fa2a4508 100644
--- a/world/map/npc/002-1/soul-menhir.txt
+++ b/world/map/npc/002-1/soul-menhir.txt
@@ -2,7 +2,6 @@
002-1,58,60,0|script|Soul Menhir#tulimshar|345
{
- callfunc "ClearVariables";
set @map$, "001-1";
setarray @Xs, 57, 58, 59, 57, 59, 57, 59;
setarray @Ys, 59, 59, 59, 60, 60, 61, 61;
diff --git a/world/map/npc/002-1/stewen.txt b/world/map/npc/002-1/stewen.txt
index 4368f590..63808935 100644
--- a/world/map/npc/002-1/stewen.txt
+++ b/world/map/npc/002-1/stewen.txt
@@ -3,9 +3,6 @@
002-1,116,93,0|script|Stewen|123
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state == 4) goto L_TMW_Quest_Received;
diff --git a/world/map/npc/002-1/traveler.txt b/world/map/npc/002-1/traveler.txt
index 0645cce2..975786ae 100644
--- a/world/map/npc/002-1/traveler.txt
+++ b/world/map/npc/002-1/traveler.txt
@@ -4,7 +4,7 @@
002-1,60,41,0|script|Nina the Traveler|103
{
- set @NpcName$, "Nina";
+ set @npcname$, "Nina";
set @NpcTravelBit, $@tulimshar_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/002-2/_mobs.txt b/world/map/npc/002-2/_mobs.txt
index c099a80f..aad2a871 100644
--- a/world/map/npc/002-2/_mobs.txt
+++ b/world/map/npc/002-2/_mobs.txt
@@ -3,7 +3,7 @@
-002-2,0,0,0|script|Mob002-2|-1
+002-2,0,0,0|script|Mob002-2|32767
{
end;
}
diff --git a/world/map/npc/002-2/_warps.txt b/world/map/npc/002-2/_warps.txt
index dc02d56b..9a56fe52 100644
--- a/world/map/npc/002-2/_warps.txt
+++ b/world/map/npc/002-2/_warps.txt
@@ -1,22 +1,22 @@
// 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|Outside|-1,-1,002-1,73,36
-002-2,44,20|warp|First Floor|0,-1,002-2,45,78
-002-2,46,79|warp|First Floor|0,-1,002-2,43,21
-002-2,46,55|warp|Penthouse|0,-1,002-2,44,109
-002-2,45,110|warp|Second Floor|0,-1,002-2,45,56
-002-2,23,110|warp|Outside|-1,-1,002-1,67,30
-002-2,34,20|warp|Casino|-1,-1,002-2,79,69
-002-2,37,20|warp|Theatre|-1,-1,002-2,72,31
-002-2,72,32|warp|First Floor|-1,-1,002-2,37,21
-002-2,79,70|warp|First Floor|-1,-1,002-2,34,21
-002-2,40,20|warp|Salon|-1,-1,002-2,126,35
-002-2,126,36|warp|First Floor|-1,-1,002-2,40,21
-002-2,75,101|warp|Outside|-1,-1,002-1,109,46
-002-2,83,101|warp|Outside|-1,-1,002-1,115,46
-002-2,78,132|warp|Outside|-1,-1,002-1,114,36
-002-2,68,121|warp|Outside|-1,-1,002-1,110,28
-002-2,120,67|warp|Outside|-1,-1,002-1,99,44
-002-2,120,95|warp|Outside|-1,-1,002-1,57,36
-002-2,119,132|warp|To Outside|-1,-1,002-1,57,27
+002-2,44,34|warp|Outside#002-20|-1,-1,002-1,73,36
+002-2,44,20|warp|First Floor#002-21|0,-1,002-2,45,78
+002-2,46,79|warp|First Floor#002-22|0,-1,002-2,43,21
+002-2,46,55|warp|Penthouse#002-23|0,-1,002-2,44,109
+002-2,45,110|warp|Second Floor#002-24|0,-1,002-2,45,56
+002-2,23,110|warp|Outside#002-25|-1,-1,002-1,67,30
+002-2,34,20|warp|Casino#002-26|-1,-1,002-2,79,69
+002-2,37,20|warp|Theatre#002-27|-1,-1,002-2,72,31
+002-2,72,32|warp|First Floor#002-28|-1,-1,002-2,37,21
+002-2,79,70|warp|First Floor#002-29|-1,-1,002-2,34,21
+002-2,40,20|warp|Salon#002-210|-1,-1,002-2,126,35
+002-2,126,36|warp|First Floor#002-211|-1,-1,002-2,40,21
+002-2,75,101|warp|Outside#002-212|-1,-1,002-1,109,46
+002-2,83,101|warp|Outside#002-213|-1,-1,002-1,115,46
+002-2,78,132|warp|Outside#002-214|-1,-1,002-1,114,36
+002-2,68,121|warp|Outside#002-215|-1,-1,002-1,110,28
+002-2,120,67|warp|Outside#002-216|-1,-1,002-1,99,44
+002-2,120,95|warp|Outside#002-217|-1,-1,002-1,57,36
+002-2,119,132|warp|To Outside#002-218|-1,-1,002-1,57,27
diff --git a/world/map/npc/002-2/bakery.txt b/world/map/npc/002-2/bakery.txt
index 5a21678a..28a16b3a 100644
--- a/world/map/npc/002-2/bakery.txt
+++ b/world/map/npc/002-2/bakery.txt
@@ -16,10 +16,9 @@
&& (countitem ("MopoxCurePotion") > 0))
goto L_lace_cupcake;
- mes "\"Would you mind bringing me 6 acorns please? I need them to make flour for the chocolate cakes. I will be so delicious!\"";
+ 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 "\"Um, I mean, the cakes will be delicious...\"";
- emotion EMOTE_BLUSH;
+ mes "\"Uh... I mean... the cakes will be delicious...\" %%;";
next;
set @dq_level, 15;
@@ -33,28 +32,28 @@
callfunc "DailyQuest";
next;
- mes "\"And don't forget, our bakery is the best!\"";
+ mes "\"Don't forget: our bakery is the best!\"";
close;
L_lace_chococake:
next;
menu
- "Thanks! Let me have a look around...", L_End,
+ "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 "As you show Riskim the potion, he leans back, away from it.";
- mes "\"Ooooh, I remember that smell...\"";
- mes "\"Elanore's Mopox potion, right? She made me drink that, too...\"";
+ 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 do want to hide that somehow.\"";
+ 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 and that potion, plus 400 GP, I will bake you a special Chocolate Cake that hides the taste.\"";
+ 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,
@@ -76,42 +75,42 @@ L_Continue:
mes "[Riskim]";
mes "";
mes "\"Please have a seat!\"";
- mes "You watch as Riskim melts the chocolate and stirs in the potion, then glazes a cake with the mixture.";
- mes "\"It's a bit more chocolatey than your average chocolate cake, of course...\"";
+ 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 that this works.\"";
+ 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.\"";
+ 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 ten Chocolate Bars AND your cure potion for this. Please come back later when you have everything.\"";
+ 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 you put this potion into an Orange Cupcake?", L_More,
+ "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 orange allergy.\"";
+ 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 our cupcakes from him.\"";
+ mes "\"Perhaps the Chef at Dimond's Cove can help you. We get all of our cupcakes from him.\"";
next;
goto L_End;
@@ -125,6 +124,8 @@ L_End:
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;
}
@@ -136,7 +137,7 @@ L_End:
{
mes "[Iormo]";
mes "";
- mes "\"This room can get messy.\"";
+ mes "\"The cake sure is good, but this room can get messy with all the flour.\"";
close;
}
@@ -153,6 +154,6 @@ L_End:
{
mes "[Ontas]";
mes "";
- mes "\"We come here every week. This place has some of the best bread I've ever eaten!\"";
+ 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
index 076dbfab..0ed69626 100644
--- a/world/map/npc/002-2/barber.txt
+++ b/world/map/npc/002-2/barber.txt
@@ -2,7 +2,7 @@
002-2,117,30,0|script|Issay|156
{
mes "[Issay the Barber]";
- mes "\"Do you need a change of style?\"";
+ mes "\"Want to change your hairstyle?\"";
next;
callfunc "Barber";
mes "[Issay the Barber]";
diff --git a/world/map/npc/002-2/bleacher.txt b/world/map/npc/002-2/bleacher.txt
index e93201d2..3935fe24 100644
--- a/world/map/npc/002-2/bleacher.txt
+++ b/world/map/npc/002-2/bleacher.txt
@@ -1,293 +1,132 @@
-//
+// IMPORTANT: add your items to DyeConfig, do not edit Candide
002-2,72,92,0|script|Candide|156
{
mes "[Candide]";
- mes "\"I've figured out how that volcanic ash bleaches cloth.";
- mes "I could do it for you, but I'll need three piles of ash and 5,000 GP for supplies per item.\"";
+ 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;
-
- if (countitem("PileOfAsh") < 3) goto L_no_ash;
-
- if (Zeny < 5000) goto L_no_money;
-
menu
+ "What is needed for the bleaching process?", L_Materials,
"I'd like to bleach something.", L_bleach_menu,
- "No thanks.", L_Close;
+ "So long.", L_Close;
-L_bleach_menu:
+L_Materials:
mes "[Candide]";
- mes "\"What would you like to bleach?\"";
+ mes "\"For each item, I will need 3 piles of ash and 5,000 GP for the special ingredients.\"";
next;
-
menu
- "Cotton shirt.", L_cottonshirt,
- "Contributor shirt.", L_contributor,
- "V-Neck sweater.", L_vneck,
- "Turtleneck sweater.", L_tneck,
- "Cotton shorts.", L_shorts,
- "Cotton trousers.", L_trousers,
- "Cotton skirt.", L_skirt,
- "Miniskirt.", L_miniskirt,
- "Tank top .", L_tanktop,
- "Short tank top.", L_tanktop_short,
- "Silk robe.", L_robe,
- "Cotton headband.", L_cotton_headband,
- "Desert hat.", L_desert_hat,
- "Cotton boots.", L_cotton_boots,
- "Cotton gloves.", L_cotton_gloves,
- "Rabbit ears.", L_rabbit_ears,
- "Wizard hat.", L_wizard_hat,
- "Bowler hat.", L_bowler_hat,
- "Sorcerer robe.", L_sorcerer_robe,
- "Bowler hat (brown).", L_bowler_hat_brown,
- "Fine dress.", L_fine_dress,
- "Cotton cloth.", L_cotton_cloth,
- "Nevermind.", L_Close;
-
-L_contributor:
- set @normal, 1178;
- set @dyeBase, 5131;
- goto L_choose_color;
-
-L_cottonshirt:
- set @normal, 1202;
- set @dyeBase, 2050;
- goto L_choose_color;
-
-L_vneck:
- set @normal, 624;
- set @dyeBase, 2060;
- goto L_choose_color;
-
-L_tneck:
- set @normal, 564;
- set @dyeBase, 2070;
- goto L_choose_color;
-
-L_shorts:
- set @normal, 586;
- set @dyeBase, 2110;
- goto L_choose_color;
-
-L_trousers:
- set @normal, 648;
- set @dyeBase, 2180;
- goto L_choose_color;
-
-L_skirt:
- set @normal, 632;
- set @dyeBase, 2100;
- goto L_choose_color;
-
-L_miniskirt:
- set @normal, 771;
- set @dyeBase, 2170;
- goto L_choose_color;
-
-L_tanktop:
- set @normal, 688;
- set @dyeBase, 2090;
- goto L_choose_color;
-
-L_tanktop_short:
- set @normal, 689;
- set @dyeBase, 2120;
- goto L_choose_color;
-
-L_robe:
- set @normal, 720;
- set @dyeBase, 2080;
- goto L_choose_color;
-
-L_cotton_headband:
- set @normal, 724;
- set @dyeBase, 2140;
- goto L_choose_color;
-
-L_desert_hat:
- set @normal, 723;
- set @dyeBase, 2130;
- goto L_choose_color;
-
-L_cotton_boots:
- set @normal, 735;
- set @dyeBase, 2150;
- goto L_choose_color;
-
-L_cotton_gloves:
- set @normal, 741;
- set @dyeBase, 2160;
- goto L_choose_color;
-
-L_rabbit_ears:
- set @normal, 1255;
- set @dyeBase, 2190;
- goto L_choose_color;
-
-L_wizard_hat:
- set @normal, 4028;
- set @dyeBase, 2200;
- goto L_choose_color;
-
-L_bowler_hat:
- set @normal, 4030;
- set @dyeBase, 2210;
- goto L_choose_color;
+ "I'd like to bleach something.", L_bleach_menu,
+ "So long.", L_Close;
-L_sorcerer_robe:
+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 "\"Which one?\"";
+ mes "\"Yes?\"";
next;
menu
- "A red lined one.", L_red_lined_sorcerer_robe,
- "A green lined one.", L_green_lined_sorcerer_robe,
- "A dark blue lined one.", L_dark_blue_lined_sorcerer_robe,
- "A yellow lined one.", L_yellow_lined_sorcerer_robe,
- "A light blue lined one.", L_light_blue_lined_sorcerer_robe,
- "A pink lined one.", L_pink_lined_sorcerer_robe,
- "A black lined one.", L_black_lined_sorcerer_robe,
- "An orange lined one.", L_orange_lined_sorcerer_robe,
- "A purple lined one.", L_purple_lined_sorcerer_robe,
- "A dark green lined one.", L_dark_green_lined_sorcerer_robe,
- "A white lined one.", L_white_lined_sorcerer_robe,
- "Nevermind.", L_Close;
-
-L_red_lined_sorcerer_robe:
- set @normal, 798;
- set @dyeBase, 2220;
- goto L_choose_color;
-
-L_green_lined_sorcerer_robe:
- set @normal, 5010;
- set @dyeBase, 5000;
- goto L_choose_color;
-
-L_dark_blue_lined_sorcerer_robe:
- set @normal, 5021;
- set @dyeBase, 5011;
- goto L_choose_color;
-
-L_yellow_lined_sorcerer_robe:
- set @normal, 5032;
- set @dyeBase, 5022;
- goto L_choose_color;
-
-L_light_blue_lined_sorcerer_robe:
- set @normal, 5043;
- set @dyeBase, 5033;
- goto L_choose_color;
-
-L_pink_lined_sorcerer_robe:
- set @normal, 5054;
- set @dyeBase, 5044;
- goto L_choose_color;
-
-L_black_lined_sorcerer_robe:
- set @normal, 5065;
- set @dyeBase, 5055;
- goto L_choose_color;
-
-L_orange_lined_sorcerer_robe:
- set @normal, 5076;
- set @dyeBase, 5066;
- goto L_choose_color;
-
-L_purple_lined_sorcerer_robe:
- set @normal, 5087;
- set @dyeBase, 5077;
- goto L_choose_color;
-
-L_dark_green_lined_sorcerer_robe:
- set @normal, 5098;
- set @dyeBase, 5088;
- goto L_choose_color;
-
-L_white_lined_sorcerer_robe:
- set @normal, 5109;
- set @dyeBase, 5099;
- goto L_choose_color;
-
-L_bowler_hat_brown:
- set @normal, 800;
- set @dyeBase, 2230;
- goto L_choose_color;
-
-L_fine_dress:
- set @normal, 870;
- set @dyeBase, 2240;
- goto L_choose_color;
-
-L_cotton_cloth:
- set @normal, 660;
- set @dyeBase, 2250;
- goto L_choose_color;
-
-L_choose_color:
+ "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 "\"And the color?\"";
+ mes "\"Sorry, you have nothing to bleach.\"";
next;
-
- menu
- "Red.", L_MenuItems,
- "Green.", L_MenuItems,
- "Dark Blue.", L_MenuItems,
- "Yellow.", L_MenuItems,
- "Light Blue.", L_MenuItems,
- "Pink.", L_MenuItems,
- "Black.", L_MenuItems,
- "Orange.", L_MenuItems,
- "Purple.", L_MenuItems,
- "Dark Green.", L_MenuItems;
+ goto L_Close;
L_MenuItems:
- set @del, @dyeBase + @menu - 1;
-
- if (countitem(@del) == 0) goto L_no_item;
-
if (countitem("PileOfAsh") < 3) goto L_no_ash;
-
if (Zeny < 5000) goto L_no_money;
-
- delitem @del, 1;
- getitem @normal, 1;
+ 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_item:
- mes "[Candide]";
- mes "\"You don't have one of those.\"";
- next;
-
- goto L_again;
-
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.\"";
- set @normal, 0;
- set @dyeBase, 0;
- set @del, 0;
- close;
+ 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
index 14ac5226..b99f6911 100644
--- a/world/map/npc/002-2/casino.txt
+++ b/world/map/npc/002-2/casino.txt
@@ -7,7 +7,7 @@
set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT);
if (@kylian != 6)
goto L_End;
- message strcharinfo(0), "You wonder if Kylian would like to visit the casino in the evening.";
+ message strcharinfo(0), "You wonder if Kylian would be interested in visiting the Casino.";
goto L_End;
L_End:
@@ -18,7 +18,7 @@ L_End:
002-2,86,29,0|script|Valdo|117
{
mes "[Valdo the Worker]";
- mes "\"Please let me work. I'm really in a hurry!\"";
+ mes "\"Please let me work. I've got a lot to do and not enough time to do it!\"";
close;
}
@@ -49,8 +49,8 @@ L_End:
mes "You will need 15 casino coins.\"";
next;
menu
- "Yes", L_Begin,
- "No", L_Close;
+ "Sure.", L_Begin,
+ "Not now.", L_Close;
L_Begin:
if(countitem("CasinoCoins") < 15) goto L_NoCoin;
@@ -58,13 +58,12 @@ L_Begin:
set @croupier, rand(0, 4);
set @croupier, @croupier + 17;
set @player, rand(4, 21);
- mes "\"You got " + @player + " with your cards.";
+ mes "Your cards are worth " + @player + " points.";
if(@player == 21) goto L_End;
mes "Do you want another card?\"";
- next;
menu
- "Yes", L_Another,
- "No", L_End;
+ "Yes.", L_Another,
+ "No.", L_End;
L_Another:
set @tempace, rand(2, 11);
@@ -72,29 +71,29 @@ L_Another:
set @player, @player + @tempace;
if (@player > 21) goto L_Lost;
if (@player == 21) goto L_End;
- mes "\"You got " + @player + " with your cards.";
+ mes "Your cards are worth " + @player + " points.";
mes "Do you want another card?\"";
- next;
menu
- "Yes", L_Another,
- "No", L_End;
+ "Yes.", L_Another,
+ "No.", L_End;
L_End:
if (@player <= @croupier) goto L_Lost;
- mes "\"Congratulations, you won!";
- mes "I had " + @croupier + ".";
- mes "You get 45 casino coins.\"";
+ 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 "\"You need at least 15 coins.\"";
+ mes "\"Sorry, but you need at least 15 coins to play.\"";
goto L_Close;
L_Lost:
- mes "\"I'm sorry but you lost.";
- mes "You got " + @player + " with your cards.";
- mes "I had " + @croupier + ".\"";
+ mes "\"I'm sorry, but you lost.";
+ mes "Your cards are worth " + @player + " points.";
+ mes "I have " + @croupier + " points.\"";
goto L_Close;
L_Ace:
@@ -102,15 +101,14 @@ L_Ace:
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;
+ 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 "\"As you wish.\"";
+ mes "\"Be sure to come back again.\"";
set @croupier, 0;
set @player, 0;
set @tempace, 0;
@@ -129,7 +127,7 @@ L_Close:
"10 coins", L_b10,
"50 coins", L_b50,
"100 coins", L_b100,
- "Maybe I'll play later", L_Close;
+ "Maybe I'll play later.", L_Close;
L_b1:
set @bet, 1;
@@ -154,13 +152,13 @@ L_b100:
L_Check:
if(countitem("CasinoCoins") < @bet) goto L_NoCoin;
menu
- "Choose a color", L_PickColor,
- "Choose a number", L_Number;
+ "Choose a color...", L_PickColor,
+ "Choose a number...", L_Number;
L_PickColor:
menu
- "Black", L_Color,
- "Red", L_Color;
+ "Black.", L_Color,
+ "Red.", L_Color;
L_Color:
delitem "CasinoCoins", @bet;
@@ -184,23 +182,23 @@ L_Menuitems:
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 (@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.\"";
+ mes "\"You don't have enough coins to play.\"";
goto L_Close;
L_Lost:
- mes "\"I'm sorry, you lost.\"";
+ mes "\"I'm sorry, but you lost.\"";
goto L_Close;
L_Close:
- mes "Come again.";
+ mes "Come again!";
set @number, 0;
set @roulette, 0;
set @color, 0;
diff --git a/world/map/npc/002-2/eurni.txt b/world/map/npc/002-2/eurni.txt
index c63a71eb..f965b84b 100644
--- a/world/map/npc/002-2/eurni.txt
+++ b/world/map/npc/002-2/eurni.txt
@@ -2,32 +2,30 @@
002-2,22,77,0|script|Eurni|136
{
+ set @SERVICES_ZENY, 10000;
+
set @halloween_npc_id, $@halloween_npc_eurni;
callfunc "TrickOrTreat";
if (BaseLevel < 10) goto L_TooYoung;
- if (Zeny < 10000) goto L_NoMoney;
+ if (Zeny < @SERVICES_ZENY) goto L_NoMoney;
mes "[Eurni the Surgeon]";
- mes "\"Are you tired of being what you are?\"";
+ mes "\"Are you tired of who you are?\"";
next;
-
- mes "[Eurni the Surgeon]";
- mes "\"Would you maybe be interested in a sex change?\"";
+ mes "\"Would you be interested in changing your sex?";
+ mes "It'll cost ##B" + @SERVICES_ZENY + " GP##b.\"";
next;
- mes "[Server]";
- mes "Warning: All characters under this login will be changed. Once it's done, you will be kicked from the server. Don't panic, as everything is fine.";
- next;
menu
- "Please do, my dear...", L_Change,
- "Leave alone my family treasure!", L_Close;
+ "Please do.", L_Change,
+ "Leave my family treasures alone!", L_Close;
L_Change:
- if (Zeny < 10000)
+ if (Zeny < @SERVICES_ZENY)
goto L_NoMoney;
- set Zeny, Zeny - 10000;
- changesex;
+ set Zeny, Zeny - @SERVICES_ZENY;
+ set Sex, !Sex;
close;
L_TooYoung:
@@ -37,7 +35,7 @@ L_TooYoung:
L_NoMoney:
mes "[Eurni the Surgeon]";
- mes "\"You don't have enough to pay for my services.\"";
+ mes "\"You don't have the kind of money to pay for my services.\"";
close;
L_Close:
diff --git a/world/map/npc/002-2/hetchel.txt b/world/map/npc/002-2/hetchel.txt
index d87c1f64..f6910149 100644
--- a/world/map/npc/002-2/hetchel.txt
+++ b/world/map/npc/002-2/hetchel.txt
@@ -72,7 +72,7 @@ L_Spants_Cry_2:
"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_Wipe_Tears;
+ "Give Hetchel something to dry her tears", L_Spants_Tears;
L_Spants_Start:
mes "[Hetchel the weaver]";
@@ -112,38 +112,38 @@ L_Spants_Cry_Cont_1:
mes "";
menu
"\"Hey, what is the problem?\"", L_Spants_Reply_Cry,
- "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears,
+ "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_Wipe_Tears:
- mes "Hand Hetchel a (please type the Item you want to give her)";
+L_Spants_Tears:
+ mes "Choose the item you want to give her.";
next;
- mes "This is case sensitive. Also do not enter whitespaces.";
- input @spants_wipe_thingy$;
- if (@spants_wipe_thingy$ == "") goto L_Spants_Wrong;
+ 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_Wipe_Tears_Cont;
- if (@spants_wipe_thingy$ == "RedHitchhikersTowel") goto L_Spants_Wipe_Tears_Towel;
+ 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_Wipe_Tears_Towel:
+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_Wrong:
- mes "It appears you forgot to type the item you want to give.";
- goto L_Close;
-
L_Spants_No_Item:
mes "Oh you do not have it.";
goto L_Close;
-L_Spants_Wipe_Tears_Cont:
+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;
@@ -330,7 +330,7 @@ L_Next1:
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;
+ emotion EMOTE_HAPPY, strcharinfo(0);
goto L_Close;
L_sheet_missing_cocoons:
@@ -405,6 +405,8 @@ L_Close:
set @SHEET_ZENY, 0;
set @SheetCount, 0;
set @wg_state, 0;
+ cleararray @items$, "", getarraysize(@items$);
+ cleararray @item_names$, "", getarraysize(@item_names$);
close;
}
diff --git a/world/map/npc/002-2/imec.txt b/world/map/npc/002-2/imec.txt
index 59966ff0..b8f63e4d 100644
--- a/world/map/npc/002-2/imec.txt
+++ b/world/map/npc/002-2/imec.txt
@@ -7,82 +7,98 @@
set @state, ((QUEST_NorthTulimshar & TWOBIT_4_MASK) >> TWOBIT_4_SHIFT);
set @EXP, 90;
set @money, 500;
+ set @lvl, 10;
if (@state >= 3) goto L_Stingers;
if (@state == 2) goto L_Return;
if (@state == 1) goto L_Bring;
mes "[Imec]";
+ mes "%%9";
mes "\"The Wizard's Council shut down my shop!";
- mes "They said I was selling illegal things, but what's so illegal about poison?\"";
+ 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 "\"Anyway, I hope to get a merchant's permit again... One of these days...\"";
mes "He looks at you.";
next;
mes "[Imec]";
- mes "\"You can do an errand for me. I just finished writing a petition to the Council about my shop.";
- mes "If you bring it to the government building near the docks, I'll give you a small reward.\"";
+ 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
- "Where are the docks and what is the government building?",L_Explain,
- "Ok, sounds good.",L_Next,
- "No!",L_Close;
+ "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 "\"Very good. Here is the paper.\"";
- mes "Imec gives you a sealed letter. You put it away in a pocket separated from your inventory, so it won't get lost.";
+ 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 @state, 1;
callsub S_Update_Mask;
goto L_Close;
L_Explain:
+ mes "";
mes "[Imec]";
- mes "\"Follow the road to the north through the gate, then go west when you reach the docks. It's right before the castle mount.\"";
+ mes "\"Head north until you get to the docks – it's just west of the ferry.\"";
next;
- mes "\"In the building there are several offices. If you want to join or form a party, you have to pay your taxes there first.\"";
+ 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 bring my petition to the office in that building?\"";
+ mes "\"So... will you submit my appeal for me?\"";
if (@state == 0)
goto L_Offer;
goto L_Close;
L_Bring:
mes "[Imec]";
- mes "\"What are you waiting for? Bring my petition to the government building.\"";
+ 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.\"";
- mes "You hand the letter of acknowledgement over to Imec.";
+ mes "\"Ah! You're back! How'd it go?\"";
+ mes "You hand the letter of acknowledgment over to Imec.";
next;
mes "[Imec]";
- mes "\"Very well. I'm sure I'll be able to open my shop again soon.\"";
+ mes "\"Great! I'm sure I'll be able to open my shop again soon.\"";
next;
- mes "It seems Imec doesn't notice you anymore.";
+ mes "It seems as though Imec has lost interest in you already.";
menu
- "You mentioned a reward.",L_Next1;
+ "You mentioned a reward...",L_Next1;
L_Next1:
+ mes "";
mes "[Imec]";
- mes "\"What? Ah, right. Here, have this.\"";
+ mes "\"What? Oh, right. Here, have this.\"";
getexp @EXP, 0;
set Zeny, Zeny + @money;
set @state, 3;
callsub S_Update_Mask;
next;
- mes "\"Actually, you could be of further help to me.\"";
+ 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, 10;
+ set @dq_level, @lvl;
set @dq_cost, 3;
set @dq_count, 3;
set @dq_name$, "ScorpionStinger";
diff --git a/world/map/npc/002-2/inya.txt b/world/map/npc/002-2/inya.txt
index 7f0184f8..475c73b6 100644
--- a/world/map/npc/002-2/inya.txt
+++ b/world/map/npc/002-2/inya.txt
@@ -1,7 +1,7 @@
//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|127,SimpleRing:*1
+002-2,116,61,0|shop|#InyaShop|32767,SimpleRing:*1
002-2,116,61,0|script|Inya|106
{
diff --git a/world/map/npc/002-2/kps.txt b/world/map/npc/002-2/kps.txt
index 558166ec..73b40466 100644
--- a/world/map/npc/002-2/kps.txt
+++ b/world/map/npc/002-2/kps.txt
@@ -25,23 +25,25 @@
L_Default:
mes "[KPS Manager]";
- mes "\"Kylian staying at the Inn bought this shop recently.\"";
- mes "\"I'm waiting for him to open the shop.\"";
+ 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?\"";
+ 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 and what how can I help you today?\"";
+ mes "\"Hello! How can I help you today?\"";
menu
- "My name is " + strcharinfo(0), L_MyName,
+ "My name is " + strcharinfo(0) + ".", L_MyName,
"Nothing.", L_Close;
L_MyName:
set @state, 11;
callfunc "SetKylianQuest";
- mes "\"Ahhh, Kylian said you would be dropping by.\"";
+ mes "\"Ah. Kylian said you would be dropping by.\"";
next;
mes "\"I assume you are looking for some work?\"";
menu
@@ -84,10 +86,10 @@ L_RandJob:
goto L_JobInfo;
L_JobInfo:
- mes "\"We have a delivery for:* " + $@random_quests$[@rand_quest] + "\"";
+ mes "\"We have a delivery for ##B" + $@random_quests$[@rand_quest] + "##b.\"";
menu
- "Take It.", L_StartRun,
- "Anything Else?", L_RandJob,
+ "I'll take it.", L_StartRun,
+ "Anything else?", L_RandJob,
"I need a break.", L_Close;
L_StartRun:
@@ -99,7 +101,7 @@ L_StartRun:
goto L_Close;
L_RunStarted:
- mes "Deliver this package to:* " + $@random_quests$[@run] + "\"";
+ mes "Deliver this package to ##B" + $@random_quests$[@run] + "##b.\"";
goto L_Close;
L_RunComplete:
@@ -118,7 +120,7 @@ L_SeeKylian:
goto L_Close;
L_Failed:
- mes "\"You need to be faster next time to earn a bonus.\"";
+ mes "\"If you're faster next time, you can earn a bonus.\"";
next;
goto L_RunAgain;
@@ -131,7 +133,7 @@ L_KylianReward:
mes "[" + $@delivery_money + " money]";
mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]";
next;
- mes "\"I have a message Kylian wants me to send you over right away.\"";
+ mes "\"I've got news for you! Kylian wants me to send you over right away.\"";
goto L_Close;
L_RunAgain:
@@ -141,12 +143,13 @@ L_RunAgain:
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 bonus will give you a bonus.\"";
+ 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 "\"Come back tomorrow, maybe we will have some more work.\"";
+ 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:
diff --git a/world/map/npc/002-2/kylian.txt b/world/map/npc/002-2/kylian.txt
index b1dadac2..c546370d 100644
--- a/world/map/npc/002-2/kylian.txt
+++ b/world/map/npc/002-2/kylian.txt
@@ -26,11 +26,11 @@
// 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 11: Start Time Trial
// state 12: Return
// state 13: Start Daily Timed
// state 14: Return
-// state 15: Completed
+// 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
@@ -39,7 +39,7 @@
// @KylianNTSightSeeing
// @KylianNTCasino
--|script|#businessmanNTconfig|-1
+-|script|#businessmanNTconfig|32767
{
end;
@@ -82,8 +82,6 @@ OnInit:
set @fun_money, 50;
set @fun_exp, 20;
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
set @fieri, ((QUEST_SouthTulimshar & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT);
if (@state == 15) goto L_Done;
@@ -102,62 +100,65 @@ OnInit:
if (@state >= 1) goto L_Suitcase;
mes "[Kylian]";
- mes "\"Ah, are you the room service? I've some requests.\"";
+ 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;
+ "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 errands.",L_Close,
- "No, I'm busy.",L_Close,
- "Mh, ok.",L_Luggage;
+ "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 someone to get my luggage from the docks. Show this paper to the sailor who's watching the luggage.\"";
- mes "He gives you his ticket which you store in your pocket, separated from your inventory.";
+ 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 @state, 1;
callfunc "SetKylianQuest";
goto L_Close;
L_Suitcase: // @state >= 1, but below 3
mes "[Kylian]";
- mes "\"Did you already get my luggage from the docks?\"";
+ mes "\"Did you get my luggage from the docks?\"";
if (@state != 2)
goto L_Close;
menu
"Here it is.",L_Continue,
- "I'm on my way, don't worry.",L_Close;
+ "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 @state, 3;
callfunc "SetKylianQuest";
+ next;
mes "[Kylian]";
- mes "\"Ah, very good. I really need to have a look at some of my papers in there.\"";
+ 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 "\"Oh, and I have some acorns left, I had them with me as travelling fare. You can have them, they're tasty.";
- mes "In case you don't like them, you could also bring them to the Tulimshar bakery. I heard they use them to make some special flour.\"";
- getitem "Acorn", @acorn_amount;
+ 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: // @state == 3
mes "[Kylian]";
- mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here. While I'm going through my papers, could you find out who I have to talk to about opening a shop in this city?\"";
+ 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 talk to Yanis in the government building.",L_GovBuild,
+ "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:
@@ -167,24 +168,24 @@ L_GovBuild:
callfunc "SetKylianQuest";
set @KylianNTLicense, 1;
mes "[Kylian]";
- mes "\"Ah, excellent. That's very helpful. Could you tell me how to get to that building?\"";
- mes "You explain the way to the building.";
+ 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.\"";
+ mes "\"I need to prepare my papers now. I might have some more questions later on though.\"";
goto L_Close;
L_SightSeeing: // @state == 4 and logged out sometime between getting to that state and now
mes "[Kylian]";
- mes "\"You just came here the right moment. I have finished my business affairs. I think I should use my time here to also get a bit of cultural knowledge about the area. Can you tell me if there are any historical places to visit?\"";
+ 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 is a very old historic building not far from here.",L_HistBuild,
- "I don't know, but will have a look around.",L_Close;
+ "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;
@@ -199,12 +200,12 @@ L_HistBuild:
L_Food: // @state == 5
mes "[Kylian]";
- mes "\"While I'm out, I could also get something to eat. Maybe some typical dish for this region. Do you have a good suggestion for that?\"";
+ mes "\"While I'm out, I could also get something to eat. Do you have any suggestions for local cuisine?\"";
if (@fieri < 4) // didn't yet help Fieri make Tonori Delight
goto L_Close;
menu
- "Fieri at the castle makes great Tonori Delight.",L_SoupBer,
- "No idea, I'll try to find out.",L_Close;
+ "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;
@@ -216,14 +217,14 @@ L_SoupBer:
L_SightSeeingDone:
mes "[Kylian]";
- mes "\"I'm going to see the historic building you told me about and try this local food at the castle. Thank you for the suggestions.\"";
+ 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: // @state == 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...\"";
+ 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 a good place to spend the evening? Some place to have fun?\"";
+ 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
@@ -236,19 +237,19 @@ L_CasinoFound:
set @state, 7;
callfunc "SetKylianQuest";
mes "[Kylian]";
- mes "\"Oh, there's a casino in this city? That's a wonderful thing. Where can I find it?\"";
+ 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: // @state == 7
mes "[Kylian]";
- mes "\"I should get proper clothing before I go to the casino tonight. Do you know a reputable shop where clothing of high quality is sold?\"";
+ 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. On the west side of Tulimshar.",L_HarborDistrict,
- "Mh, I don't know.",L_Close;
+ "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;
@@ -256,23 +257,25 @@ L_HarborDistrict:
set @state, 8;
callfunc "SetKylianQuest";
set @KylianNTCasino, 1;
- mes "You explain about Latoy and the high quality shop.";
+ 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.\"";
+ 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: // @state == 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 a lot, so I bought a souvenir for you while I was shopping.\"";
+ 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;
@@ -284,33 +287,33 @@ L_DesertHat: // @state == 8
L_Shop:
mes "[Kylian]";
mes "\"The Council of Wizards approved my shop license!\"";
- mes "\"I purchased a store just acorss the way from the hotel exit.\"";
+ 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.\"";
- mes "\"Mention your name and he will know I sent you.\"";
+ 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 @state, 10;
callfunc "SetKylianQuest";
goto L_Close;
L_OfferedJob:
mes "[Kylian]";
- mes "\"I spoke with the shopkeeper, They said you haven't stopped in yet.\"";
+ mes "\"I spoke with the shopkeeper, and he said you haven't stopped in yet.\"";
next;
- mes "\"I wish you would consider working for KPS.\"";
+ mes "\"I wish you would consider working for me.\"";
next;
- mes "\"KPS needs a well-traveled go getter like you.\"";
+ 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 is great news.\"";
- mes "\"Keep up the good work and I might have something a little extra for you.\"";
+ 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, buisness is booming!\"";
- mes "\"For your hard work take this.\"";
+ 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;
@@ -325,12 +328,12 @@ L_Done:
L_Inventory:
mes "[Kylian]";
- mes "\"Oh, you're carrying a lot of things. Come back when you have more room.\"";
+ 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 is not funny!\"";
+ mes "\"I don't see it! Are you trying to tease me? This isn't funny!\"";
goto L_Close;
L_Close:
@@ -361,7 +364,6 @@ function|script|SetKylianQuest
function|script|KylianDebug
{
set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT);
- callfunc "ClearVarTMW_Quest";
set @fieri, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT);
@@ -372,8 +374,8 @@ L_Menu:
menu
"Show Quest State", L_ShowState,
"Set Quest State", L_SetState,
- "Reset Timer to now", L_WorkTimer,
- "Reset Timer + 24 hours", L_MoreWorkTimer,
+ "Reset Timer to Now", L_WorkTimer,
+ "Reset Timer + 24 Hours", L_MoreWorkTimer,
"Close.", L_Close;
L_ShowState:
diff --git a/world/map/npc/002-2/latoy.txt b/world/map/npc/002-2/latoy.txt
index 49be414e..bb818bc1 100644
--- a/world/map/npc/002-2/latoy.txt
+++ b/world/map/npc/002-2/latoy.txt
@@ -1,7 +1,7 @@
// A snobby store that won't sell to the player
// takes part in quest given by 021-2/kylian.txt
-002-2,86,93,0|shop|#LatoyShop|127,SilkHeadband:*4,SilkGloves:*4,SilkPants:*4,SilkRobe:*4
+002-2,86,93,0|shop|#LatoyShop|32767,SilkHeadband:*4,SilkGloves:*4,SilkPants:*4,SilkRobe:*4
002-2,86,93,0|script|Latoy|106
{
diff --git a/world/map/npc/002-2/troupe_leader.txt b/world/map/npc/002-2/troupe_leader.txt
index de8517c5..79c85dc6 100644
--- a/world/map/npc/002-2/troupe_leader.txt
+++ b/world/map/npc/002-2/troupe_leader.txt
@@ -2,8 +2,6 @@
002-2,81,21,0|script|Troupe Leader|165
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (@inspector == 4) goto L_NohMask_Troupe;
diff --git a/world/map/npc/002-3/_mobs.txt b/world/map/npc/002-3/_mobs.txt
index 3d0486b8..963b8e36 100644
--- a/world/map/npc/002-3/_mobs.txt
+++ b/world/map/npc/002-3/_mobs.txt
@@ -3,7 +3,7 @@
-002-3,0,0,0|script|Mob002-3|-1
+002-3,0,0,0|script|Mob002-3|32767
{
end;
}
diff --git a/world/map/npc/002-3/_warps.txt b/world/map/npc/002-3/_warps.txt
index 385c07a2..19bc2835 100644
--- a/world/map/npc/002-3/_warps.txt
+++ b/world/map/npc/002-3/_warps.txt
@@ -1,6 +1,6 @@
// 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|Deep Caves|-1,-1,043-3,31,27
-002-3,85,51|warp|To Sand Storm Upper|-1,-1,002-1,92,115
-002-3,51,36|warp|To Sand Storm|-1,-1,002-1,33,110
+002-3,22,87|warp|Deep Caves#002-30|-1,-1,043-3,31,27
+002-3,85,51|warp|To Sand Storm U#002-31|-1,-1,002-1,92,115
+002-3,51,36|warp|To Sand Storm#002-32|-1,-1,002-1,33,110
diff --git a/world/map/npc/002-3/mining_camp_barrier.txt b/world/map/npc/002-3/mining_camp_barrier.txt
index e26720d9..a6550990 100644
--- a/world/map/npc/002-3/mining_camp_barrier.txt
+++ b/world/map/npc/002-3/mining_camp_barrier.txt
@@ -2,17 +2,14 @@
002-3,82,32,0|script|#Sandstorm_Mine_Barrier|45,0,0
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
- if (@state >= 8) goto L_Sandstorm_Barrier_Open;
+ if (@state >= 8) goto L_Barrier_Open;
message strcharinfo(0), "Some force seems to block your entrance.";
goto L_End;
-L_Sandstorm_Barrier_Open:
+L_Barrier_Open:
warp "002-4",37,31;
goto L_End;
diff --git a/world/map/npc/002-3/nathan.txt b/world/map/npc/002-3/nathan.txt
index 9661fc18..125c6a01 100644
--- a/world/map/npc/002-3/nathan.txt
+++ b/world/map/npc/002-3/nathan.txt
@@ -2,9 +2,6 @@
002-3,42,45,6|script|Nathan|109
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state >= 20) goto L_Nathan_Complete;
diff --git a/world/map/npc/002-3/traveler.txt b/world/map/npc/002-3/traveler.txt
index a1fd4f6f..48175be8 100644
--- a/world/map/npc/002-3/traveler.txt
+++ b/world/map/npc/002-3/traveler.txt
@@ -4,7 +4,7 @@
002-3,25,28,0|script|Jena the Traveler|103
{
- set @NpcName$, "Jena";
+ set @npcname$, "Jena";
set @NpcTravelBit, $@tul_mine_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/002-4/_mobs.txt b/world/map/npc/002-4/_mobs.txt
index c497e831..0a461429 100644
--- a/world/map/npc/002-4/_mobs.txt
+++ b/world/map/npc/002-4/_mobs.txt
@@ -17,7 +17,7 @@
002-4,63,100,2,5|monster|AngryScorpion|1057,3,100000ms,30000ms,Mob002-4::On1057
-002-4,0,0,0|script|Mob002-4|-1
+002-4,0,0,0|script|Mob002-4|32767
{
end;
diff --git a/world/map/npc/002-4/_warps.txt b/world/map/npc/002-4/_warps.txt
index e4afb1f2..dc3df4b4 100644
--- a/world/map/npc/002-4/_warps.txt
+++ b/world/map/npc/002-4/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Desert Mines warps
-002-4,37,29|warp|To Mining Camp|-1,-1,002-3,82,30
+002-4,37,29|warp|To Mining Camp#002-40|-1,-1,002-3,82,30
diff --git a/world/map/npc/002-4/mine_triggerone.txt b/world/map/npc/002-4/mine_triggerone.txt
index 03cee2da..ef8a75cb 100644
--- a/world/map/npc/002-4/mine_triggerone.txt
+++ b/world/map/npc/002-4/mine_triggerone.txt
@@ -3,9 +3,6 @@
002-4,30,47,0|script|Button#mine-1|400,0,0
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state == 24) goto L_Trigger_Wrong_1;
diff --git a/world/map/npc/002-4/mine_triggerthree.txt b/world/map/npc/002-4/mine_triggerthree.txt
index fe9fe672..707329da 100644
--- a/world/map/npc/002-4/mine_triggerthree.txt
+++ b/world/map/npc/002-4/mine_triggerthree.txt
@@ -3,9 +3,6 @@
002-4,91,99,0|script|Button#mine-3|400,0,0
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state == 24) goto L_Trigger_Wrong_3;
diff --git a/world/map/npc/002-4/mine_triggertwo.txt b/world/map/npc/002-4/mine_triggertwo.txt
index ec181596..5ec5b659 100644
--- a/world/map/npc/002-4/mine_triggertwo.txt
+++ b/world/map/npc/002-4/mine_triggertwo.txt
@@ -5,9 +5,6 @@
002-4,100,37,0|script|Button#mine-2|400,0,0
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state == 24) goto L_Trigger_2;
diff --git a/world/map/npc/002-4/naem.txt b/world/map/npc/002-4/naem.txt
index 9c2c1f65..34e43b49 100644
--- a/world/map/npc/002-4/naem.txt
+++ b/world/map/npc/002-4/naem.txt
@@ -4,9 +4,6 @@
002-4,91,96,6|script|Naem|109
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (FLAGS & FLAG_GOT_NAEM_GLOVES) goto L_Naem_Complete;
diff --git a/world/map/npc/002-4/underground_palace_barrier.txt b/world/map/npc/002-4/underground_palace_barrier.txt
index ecc8b78b..6c9d096a 100644
--- a/world/map/npc/002-4/underground_palace_barrier.txt
+++ b/world/map/npc/002-4/underground_palace_barrier.txt
@@ -2,17 +2,14 @@
002-4,68,98,0|script|#UGP_Barrier|45,0,0
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
- if (@state >= 25) goto L_Underground_Palace_Barrier_Open;
+ if (@state >= 25) goto L_Barrier_Open;
message strcharinfo(0), "Some force seems to block your entrance.";
goto L_End;
-L_Underground_Palace_Barrier_Open:
+L_Barrier_Open:
warp "002-5",35,97;
goto L_End;
diff --git a/world/map/npc/002-5/_mobs.txt b/world/map/npc/002-5/_mobs.txt
index 535198fd..c6894850 100644
--- a/world/map/npc/002-5/_mobs.txt
+++ b/world/map/npc/002-5/_mobs.txt
@@ -20,7 +20,7 @@
002-5,62,62,5,43|monster|AngryFireGoblin|1108,3,100000ms,30000ms,Mob002-5::On1108
-002-5,0,0,0|script|Mob002-5|-1
+002-5,0,0,0|script|Mob002-5|32767
{
end;
diff --git a/world/map/npc/002-5/_warps.txt b/world/map/npc/002-5/_warps.txt
index 4195380c..85886913 100644
--- a/world/map/npc/002-5/_warps.txt
+++ b/world/map/npc/002-5/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Second Level|-1,-1,002-4,68,99
+002-5,34,98|warp|To Second Level#002-50|-1,-1,002-4,68,99
diff --git a/world/map/npc/002-5/chest.txt b/world/map/npc/002-5/chest.txt
index fe0c2448..2cdda691 100644
--- a/world/map/npc/002-5/chest.txt
+++ b/world/map/npc/002-5/chest.txt
@@ -2,9 +2,6 @@
002-5,93,37,0|script|Supply Chest|378
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state >= 26) goto L_Finished;
diff --git a/world/map/npc/002-5/sema.txt b/world/map/npc/002-5/sema.txt
index 7a859f05..c80e9660 100644
--- a/world/map/npc/002-5/sema.txt
+++ b/world/map/npc/002-5/sema.txt
@@ -2,9 +2,6 @@
002-5,43,91,6|script|Sema|340
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & BYTE_2_MASK) >> BYTE_2_SHIFT);
if (@state >= 28) goto L_Sema_Done;
@@ -59,7 +56,7 @@ L_Sema_TooMany:
L_Sema_Not_Happy:
set @state, 26;
callsub S_Update_Var;
- itemheal -Hp, 0;
+ heal -Hp, 0;
mes "A stone falls on your head.";
goto L_Close;
diff --git a/world/map/npc/004-3/_mobs.txt b/world/map/npc/004-3/_mobs.txt
index 5fb9ed43..dce2ec02 100644
--- a/world/map/npc/004-3/_mobs.txt
+++ b/world/map/npc/004-3/_mobs.txt
@@ -10,7 +10,7 @@
004-3,71,63,7,8|monster|Grenadier|1121,1,100000ms,30000ms,Mob004-3::On1121
-004-3,0,0,0|script|Mob004-3|-1
+004-3,0,0,0|script|Mob004-3|32767
{
end;
diff --git a/world/map/npc/004-3/_warps.txt b/world/map/npc/004-3/_warps.txt
index 76cd82d9..6ed5d042 100644
--- a/world/map/npc/004-3/_warps.txt
+++ b/world/map/npc/004-3/_warps.txt
@@ -1,10 +1,10 @@
// 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|To West Beach|-1,-1,002-1,49,21
-004-3,49,80|warp|To Pirate Caves|-1,-1,004-4,49,83
-004-3,31,73|warp|To Pirate Caves|-1,-1,004-4,31,70
-004-3,49,56|warp|To Pirate Caves|-1,-1,004-4,49,51
-004-3,90,64|warp|To Pirate Caves|-1,-1,004-4,90,68
-004-3,80,22|warp|To West Beach House|-1,-1,021-3,44,142
-004-3,77,40|warp|To Pirate Caves|-1,-1,004-4,78,34
+004-3,24,95|warp|To West Beach#004-30|-1,-1,002-1,49,21
+004-3,49,80|warp|To Pirate Caves#004-31|-1,-1,004-4,49,83
+004-3,31,73|warp|To Pirate Caves#004-32|-1,-1,004-4,31,70
+004-3,49,56|warp|To Pirate Caves#004-33|-1,-1,004-4,49,51
+004-3,90,64|warp|To Pirate Caves#004-34|-1,-1,004-4,90,68
+004-3,80,22|warp|To West Beach H#004-35|-1,-1,021-3,44,142
+004-3,77,40|warp|To Pirate Caves#004-36|-1,-1,004-4,78,34
diff --git a/world/map/npc/004-4/_mobs.txt b/world/map/npc/004-4/_mobs.txt
index 113c204f..525a7215 100644
--- a/world/map/npc/004-4/_mobs.txt
+++ b/world/map/npc/004-4/_mobs.txt
@@ -12,7 +12,7 @@
004-4,34,88,10,4|monster|Grenadier|1121,1,100000ms,30000ms,Mob004-4::On1121
-004-4,0,0,0|script|Mob004-4|-1
+004-4,0,0,0|script|Mob004-4|32767
{
end;
diff --git a/world/map/npc/004-4/_warps.txt b/world/map/npc/004-4/_warps.txt
index d90f2939..79c6d665 100644
--- a/world/map/npc/004-4/_warps.txt
+++ b/world/map/npc/004-4/_warps.txt
@@ -1,9 +1,9 @@
// 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|To Pirate Caves|-1,-1,004-3,49,76
-004-4,31,72|warp|To Pirate Caves|-1,-1,004-3,31,74
-004-4,49,53|warp|To Pirate Caves|-1,-1,004-3,49,57
-004-4,90,70|warp|To Pirate Caves|-1,-1,004-3,90,66
-004-4,24,64|warp|To Pirates Den|-1,-1,004-5,24,67
-004-4,78,32|warp|To Pirate Caves|-1,-1,004-3,77,38
+004-4,49,81|warp|To Pirate Caves#004-40|-1,-1,004-3,49,76
+004-4,31,72|warp|To Pirate Caves#004-41|-1,-1,004-3,31,74
+004-4,49,53|warp|To Pirate Caves#004-42|-1,-1,004-3,49,57
+004-4,90,70|warp|To Pirate Caves#004-43|-1,-1,004-3,90,66
+004-4,24,64|warp|To Pirates Den#004-44|-1,-1,004-5,24,67
+004-4,78,32|warp|To Pirate Caves#004-45|-1,-1,004-3,77,38
diff --git a/world/map/npc/004-5/_mobs.txt b/world/map/npc/004-5/_mobs.txt
index 808b2608..2d3acc7e 100644
--- a/world/map/npc/004-5/_mobs.txt
+++ b/world/map/npc/004-5/_mobs.txt
@@ -15,7 +15,7 @@
004-5,81,38,7,3|monster|Swashbuckler|1120,2,100000ms,30000ms,Mob004-5::On1120
-004-5,0,0,0|script|Mob004-5|-1
+004-5,0,0,0|script|Mob004-5|32767
{
end;
diff --git a/world/map/npc/004-5/_warps.txt b/world/map/npc/004-5/_warps.txt
index 88c44fb9..2f90c488 100644
--- a/world/map/npc/004-5/_warps.txt
+++ b/world/map/npc/004-5/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Pirate Den warps
-004-5,24,65|warp|To Pirates Den|-1,-1,004-4,24,62
+004-5,24,65|warp|To Pirates Den#004-50|-1,-1,004-4,24,62
diff --git a/world/map/npc/004-5/chest.txt b/world/map/npc/004-5/chest.txt
index a54739fc..2b815aa3 100644
--- a/world/map/npc/004-5/chest.txt
+++ b/world/map/npc/004-5/chest.txt
@@ -1,8 +1,7 @@
004-5,89,67,0|script|Old Chest#crastur|111
{
- setarray @npc_loc, 89, 67, 1;
+ set @npc_distance, 1;
callfunc "PCtoNPCRange";
- if(@npc_check == 1) goto L_Closer;
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;
@@ -22,10 +21,6 @@ L_Unknown:
mes "You have no idea how to open this chest.";
goto L_Close;
-L_Closer:
- mes "You need to move closer to open the chest.";
- goto L_Close;
-
L_Close:
close;
}
diff --git a/world/map/npc/005-3/_mobs.txt b/world/map/npc/005-3/_mobs.txt
index 0cc8da62..63e58847 100644
--- a/world/map/npc/005-3/_mobs.txt
+++ b/world/map/npc/005-3/_mobs.txt
@@ -6,7 +6,7 @@
005-3,58,57,62,57|monster|GiantMaggot|1006,20,100000ms,30000ms,Mob005-3::On1006
-005-3,0,0,0|script|Mob005-3|-1
+005-3,0,0,0|script|Mob005-3|32767
{
end;
diff --git a/world/map/npc/005-3/_warps.txt b/world/map/npc/005-3/_warps.txt
index 3b042e9f..380fd7f4 100644
--- a/world/map/npc/005-3/_warps.txt
+++ b/world/map/npc/005-3/_warps.txt
@@ -1,10 +1,10 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Snake Pit warps
-005-3,52,33|warp|To Outside|-1,-1,002-1,113,109
-005-3,63,46|warp|Snake Mountain|-1,-1,006-3,89,45
-005-3,85,49|warp|Snake Mountain|-1,-1,006-3,125,65
-005-3,86,30|warp|To Outside|-1,-1,006-1,55,47
-005-3,73,60|warp|To Outside|-1,-1,006-1,51,69
-005-3,78,88|warp|Sandy Dungeon|-1,-1,043-3,116,37
-005-3,33,82|warp|Sandy Dungeon|-1,-1,043-3,31,35
+005-3,52,33|warp|To Outside#005-30|-1,-1,002-1,113,109
+005-3,63,46|warp|Snake Mountain#005-31|-1,-1,006-3,89,45
+005-3,85,49|warp|Snake Mountain#005-32|-1,-1,006-3,125,65
+005-3,86,30|warp|To Outside#005-33|-1,-1,006-1,55,47
+005-3,73,60|warp|To Outside#005-34|-1,-1,006-1,51,69
+005-3,78,88|warp|Sandy Dungeon#005-35|-1,-1,043-3,116,37
+005-3,33,82|warp|Sandy Dungeon#005-36|-1,-1,043-3,31,35
diff --git a/world/map/npc/006-1/_mobs.txt b/world/map/npc/006-1/_mobs.txt
index d2a6f7f0..2288ec92 100644
--- a/world/map/npc/006-1/_mobs.txt
+++ b/world/map/npc/006-1/_mobs.txt
@@ -24,7 +24,7 @@
006-1,100,36,38,24|monster|Snake|1010,2,40000ms,50000ms,Mob006-1::On1010
-006-1,0,0,0|script|Mob006-1|-1
+006-1,0,0,0|script|Mob006-1|32767
{
end;
diff --git a/world/map/npc/006-1/_warps.txt b/world/map/npc/006-1/_warps.txt
index baf86c92..d5f73519 100644
--- a/world/map/npc/006-1/_warps.txt
+++ b/world/map/npc/006-1/_warps.txt
@@ -1,32 +1,32 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Desert Mountains warps
-006-1,40,26|warp|To Desert Mountain Cave|-1,-1,006-3,40,28
-006-1,60,58|warp|To Desert Mountain Cave|-1,-1,006-3,60,70
-006-1,62,30|warp|To Desert Mountain Cave|-1,-1,006-3,62,32
-006-1,55,27|warp|To Desert Mountain Cave|-1,-1,006-3,55,29
-006-1,77,44|warp|To Desert Mountain Cave|-1,-1,006-3,77,46
-006-1,86,24|warp|To Desert Mountain Cave|-1,-1,006-3,86,26
-006-1,91,24|warp|To Desert Mountain Cave|-1,-1,006-3,91,26
-006-1,98,46|warp|To Desert Mountain Cave|-1,-1,006-3,104,46
-006-1,114,22|warp|To Desert Mountain Cave|-1,-1,006-3,122,26
-006-1,114,49|warp|To Desert Mountain Cave|-1,-1,006-3,114,51
-006-1,102,53|warp|To Desert Mountain Cave|-1,-1,006-3,110,58
-006-1,117,57|warp|To Desert Mountain Cave|-1,-1,006-3,125,61
-006-1,92,63|warp|To Desert Mountain Cave|-1,-1,006-3,92,65
-006-1,112,74|warp|To Desert Mountain Cave|-1,-1,006-3,112,76
-006-1,111,110|warp|To Desert Mountain Cave|-1,-1,032-3,56,60
-006-1,83,117|warp|To Desert Mountain Cave|-1,-1,006-3,79,121
-006-1,38,121|warp|To Desert Mountain Cave|-1,-1,006-3,38,123
-006-1,74,90|warp|To Desert Mountain Cave|-1,-1,006-3,74,92
-006-1,51,90|warp|To Desert Mountain Cave|-1,-1,006-3,51,92
-006-1,30,123|warp|To Outback Cave|-1,-1,032-3,128,33
-006-1,33,85|warp|To Pachua's Village|-1,-1,006-2,58,43
-006-1,23,85|warp|To Pachua's Village|-1,-1,006-2,48,43
-006-1,23,100|warp|To Pachua's Village|-1,-1,006-2,67,64
-006-1,21,108|warp|To Pachua's Village|-1,-1,006-2,65,72
-006-1,37,26|warp|To Desert Mountains|-1,-1,006-1,37,23
-006-1,37,24|warp|To Desert Mountains|-1,-1,006-1,37,27
-006-1,55,46|warp|Snake Cave|-1,-1,005-3,86,31
-006-1,20,48|warp|To Sandstorm Desert|-1,0,002-1,118,95
-006-1,51,68|warp|Snake Cave|-1,-1,005-3,73,59
+006-1,40,26|warp|To Desert Mount#006-10|-1,-1,006-3,40,28
+006-1,60,58|warp|To Desert Mount#006-11|-1,-1,006-3,60,70
+006-1,62,30|warp|To Desert Mount#006-12|-1,-1,006-3,62,32
+006-1,55,27|warp|To Desert Mount#006-13|-1,-1,006-3,55,29
+006-1,77,44|warp|To Desert Mount#006-14|-1,-1,006-3,77,46
+006-1,86,24|warp|To Desert Mount#006-15|-1,-1,006-3,86,26
+006-1,91,24|warp|To Desert Mount#006-16|-1,-1,006-3,91,26
+006-1,98,46|warp|To Desert Mount#006-17|-1,-1,006-3,104,46
+006-1,114,22|warp|To Desert Mount#006-18|-1,-1,006-3,122,26
+006-1,114,49|warp|To Desert Mount#006-19|-1,-1,006-3,114,51
+006-1,102,53|warp|To Desert Mount#006-110|-1,-1,006-3,110,58
+006-1,117,57|warp|To Desert Mount#006-111|-1,-1,006-3,125,61
+006-1,92,63|warp|To Desert Mount#006-112|-1,-1,006-3,92,65
+006-1,112,74|warp|To Desert Mount#006-113|-1,-1,006-3,112,76
+006-1,111,110|warp|To Desert Mount#006-114|-1,-1,032-3,56,60
+006-1,83,117|warp|To Desert Mount#006-115|-1,-1,006-3,79,121
+006-1,38,121|warp|To Desert Mount#006-116|-1,-1,006-3,38,123
+006-1,74,90|warp|To Desert Mount#006-117|-1,-1,006-3,74,92
+006-1,51,90|warp|To Desert Mount#006-118|-1,-1,006-3,51,92
+006-1,30,123|warp|To Outback Cave#006-119|-1,-1,032-3,128,33
+006-1,33,85|warp|To Pachua's Vil#006-120|-1,-1,006-2,58,43
+006-1,23,85|warp|To Pachua's Vil#006-121|-1,-1,006-2,48,43
+006-1,23,100|warp|To Pachua's Vil#006-122|-1,-1,006-2,67,64
+006-1,21,108|warp|To Pachua's Vil#006-123|-1,-1,006-2,65,72
+006-1,37,26|warp|To Desert Mount#006-124|-1,-1,006-1,37,23
+006-1,37,24|warp|To Desert Mount#006-125|-1,-1,006-1,37,27
+006-1,55,46|warp|Snake Cave#006-126|-1,-1,005-3,86,31
+006-1,20,48|warp|To Sandstorm De#006-127|-1,0,002-1,118,95
+006-1,51,68|warp|Snake Cave#006-128|-1,-1,005-3,73,59
diff --git a/world/map/npc/006-1/miriam.txt b/world/map/npc/006-1/miriam.txt
index 7fab4bcd..f2c454fd 100644
--- a/world/map/npc/006-1/miriam.txt
+++ b/world/map/npc/006-1/miriam.txt
@@ -20,10 +20,8 @@
006-1,115,111,0|script|Miriam|175
{
- setarray @npc_loc, 115, 111, 2;
+ set @npc_distance, 2;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
if (getskilllv(SKILL_SPEED)) goto L_fast;
if (getequipid(equip_torso) < 0) goto L_naked;
@@ -161,12 +159,11 @@ L_teach:
"I am already fast.", L_notfast;
L_Prepared:
- set @agi, readparam(bAgi);
- set @torso$, getitemname(getequipid(equip_torso));
+ set @torso$, getitemlink(getequipid(equip_torso));
set @weight, MaxWeight/Weight;
if (@weight < 3)
goto L_heavyweight;
- if (@agi < 60)
+ if (Agi < 60)
goto L_slow;
if (BaseLevel < 60)
goto L_lowlevel;
@@ -197,7 +194,7 @@ L_heavymetal:
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!\"";
+ 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:
@@ -212,11 +209,11 @@ L_offer:
if (!(getskilllv(SKILL_POOL)))
goto L_noskill;
menu
- "Yes, I look really good in this " +@torso$+ ".",L_TorsoNext;
+ "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!\"";
+ 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;
@@ -224,7 +221,7 @@ L_TorsoNext:
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;
+ "I don't think I need more speed right now",L_GiveUp;
L_test:
mes "[Miriam]";
@@ -262,7 +259,7 @@ L_noskill:
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:
+L_GiveUp:
mes "[Miriam]";
mes "\"Oh, that is too bad... But if you change your mind, come back!\"";
set QUEST_MIRIAM, 4;
diff --git a/world/map/npc/006-1/pachua.txt b/world/map/npc/006-1/pachua.txt
index 7b39dce7..905ffcb4 100644
--- a/world/map/npc/006-1/pachua.txt
+++ b/world/map/npc/006-1/pachua.txt
@@ -1,9 +1,6 @@
006-1,24,113,0|script|Pachua|143
{
- setarray @npc_loc, 24, 113, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
set @halloween_npc_id, $@halloween_npc_pachua;
callfunc "TrickOrTreat";
diff --git a/world/map/npc/006-1/traveler.txt b/world/map/npc/006-1/traveler.txt
index f87cf083..7c84e040 100644
--- a/world/map/npc/006-1/traveler.txt
+++ b/world/map/npc/006-1/traveler.txt
@@ -4,7 +4,7 @@
006-1,25,95,0|script|Rhutan the Traveler|103
{
- set @NpcName$, "Rhutan";
+ set @npcname$, "Rhutan";
set @NpcTravelBit, $@pachua_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/006-2/_mobs.txt b/world/map/npc/006-2/_mobs.txt
index 25ccb409..13ee9057 100644
--- a/world/map/npc/006-2/_mobs.txt
+++ b/world/map/npc/006-2/_mobs.txt
@@ -3,7 +3,7 @@
-006-2,0,0,0|script|Mob006-2|-1
+006-2,0,0,0|script|Mob006-2|32767
{
end;
}
diff --git a/world/map/npc/006-2/_warps.txt b/world/map/npc/006-2/_warps.txt
index 5ea43dec..25db8727 100644
--- a/world/map/npc/006-2/_warps.txt
+++ b/world/map/npc/006-2/_warps.txt
@@ -1,7 +1,7 @@
// 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|To Desert Mountains|-1,-1,006-1,23,101
-006-2,65,73|warp|To Desert Mountains|-1,-1,006-1,21,109
-006-2,48,44|warp|To Desert Mountains|-1,-1,006-1,23,86
-006-2,58,44|warp|To Desert Mountains|-1,-1,006-1,33,86
+006-2,67,65|warp|To Desert Mount#006-20|-1,-1,006-1,23,101
+006-2,65,73|warp|To Desert Mount#006-21|-1,-1,006-1,21,109
+006-2,48,44|warp|To Desert Mount#006-22|-1,-1,006-1,23,86
+006-2,58,44|warp|To Desert Mount#006-23|-1,-1,006-1,33,86
diff --git a/world/map/npc/006-3/_mobs.txt b/world/map/npc/006-3/_mobs.txt
index db817544..3fa25c29 100644
--- a/world/map/npc/006-3/_mobs.txt
+++ b/world/map/npc/006-3/_mobs.txt
@@ -29,7 +29,7 @@
006-3,83,107,13,14|monster|YellowSlime|1007,6,90000ms,30000ms,Mob006-3::On1007
-006-3,0,0,0|script|Mob006-3|-1
+006-3,0,0,0|script|Mob006-3|32767
{
end;
diff --git a/world/map/npc/006-3/_warps.txt b/world/map/npc/006-3/_warps.txt
index 18c5e0a4..f7abd778 100644
--- a/world/map/npc/006-3/_warps.txt
+++ b/world/map/npc/006-3/_warps.txt
@@ -1,23 +1,23 @@
// 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|To Desert Mountains|-1,-1,006-1,40,28
-006-3,55,27|warp|To Desert Mountains|-1,-1,006-1,55,29
-006-3,62,30|warp|To Desert Mountains|-1,-1,006-1,62,32
-006-3,86,24|warp|To Desert Mountains|-1,-1,006-1,86,26
-006-3,91,24|warp|To Desert Mountains|-1,-1,006-1,91,26
-006-3,122,24|warp|To Desert Mountains|-1,-1,006-1,114,24
-006-3,114,49|warp|To Desert Mountains|-1,-1,006-1,114,51
-006-3,104,44|warp|To Desert Mountains|-1,-1,006-1,98,48
-006-3,77,44|warp|To Desert Mountains|-1,-1,006-1,77,46
-006-3,60,68|warp|To Desert Mountains|-1,-1,006-1,60,60
-006-3,92,63|warp|To Desert Mountains|-1,-1,006-1,92,65
-006-3,112,74|warp|To Desert Mountains|-1,-1,006-1,112,76
-006-3,110,56|warp|To Desert Mountains|-1,-1,006-1,102,55
-006-3,125,59|warp|To Desert Mountains|-1,-1,006-1,117,59
-006-3,74,90|warp|To Desert Mountains|-1,-1,006-1,74,92
-006-3,51,90|warp|To Desert Mountains|-1,-1,006-1,51,92
-006-3,38,121|warp|To Desert Mountains|-1,-1,006-1,38,123
-006-3,79,120|warp|To Desert Mountains|-1,-1,006-1,83,119
-006-3,125,66|warp|Snake Cave|-1,-1,005-3,85,50
-006-3,89,46|warp|Snake Cave|-1,-1,005-3,63,47
+006-3,40,26|warp|To Desert Mount#006-30|-1,-1,006-1,40,28
+006-3,55,27|warp|To Desert Mount#006-31|-1,-1,006-1,55,29
+006-3,62,30|warp|To Desert Mount#006-32|-1,-1,006-1,62,32
+006-3,86,24|warp|To Desert Mount#006-33|-1,-1,006-1,86,26
+006-3,91,24|warp|To Desert Mount#006-34|-1,-1,006-1,91,26
+006-3,122,24|warp|To Desert Mount#006-35|-1,-1,006-1,114,24
+006-3,114,49|warp|To Desert Mount#006-36|-1,-1,006-1,114,51
+006-3,104,44|warp|To Desert Mount#006-37|-1,-1,006-1,98,48
+006-3,77,44|warp|To Desert Mount#006-38|-1,-1,006-1,77,46
+006-3,60,68|warp|To Desert Mount#006-39|-1,-1,006-1,60,60
+006-3,92,63|warp|To Desert Mount#006-310|-1,-1,006-1,92,65
+006-3,112,74|warp|To Desert Mount#006-311|-1,-1,006-1,112,76
+006-3,110,56|warp|To Desert Mount#006-312|-1,-1,006-1,102,55
+006-3,125,59|warp|To Desert Mount#006-313|-1,-1,006-1,117,59
+006-3,74,90|warp|To Desert Mount#006-314|-1,-1,006-1,74,92
+006-3,51,90|warp|To Desert Mount#006-315|-1,-1,006-1,51,92
+006-3,38,121|warp|To Desert Mount#006-316|-1,-1,006-1,38,123
+006-3,79,120|warp|To Desert Mount#006-317|-1,-1,006-1,83,119
+006-3,125,66|warp|Snake Cave#006-318|-1,-1,005-3,85,50
+006-3,89,46|warp|Snake Cave#006-319|-1,-1,005-3,63,47
diff --git a/world/map/npc/007-1/_mobs.txt b/world/map/npc/007-1/_mobs.txt
index b1fedba0..846c9fc5 100644
--- a/world/map/npc/007-1/_mobs.txt
+++ b/world/map/npc/007-1/_mobs.txt
@@ -12,7 +12,7 @@
007-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms,Mob007-1::On1055
-007-1,0,0,0|script|Mob007-1|-1
+007-1,0,0,0|script|Mob007-1|32767
{
end;
diff --git a/world/map/npc/007-1/_warps.txt b/world/map/npc/007-1/_warps.txt
index 3773475b..c865845a 100644
--- a/world/map/npc/007-1/_warps.txt
+++ b/world/map/npc/007-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-007-1,20,54|warp|To Woodland|-1,0,010-1,130,53
-007-1,69,21|warp|To Hurnscald Outskirts|2,-1,008-1,78,101
-007-1,122,20|warp|To Hurnscald|1,-1,008-1,132,98
+007-1,20,54|warp|To Woodland#007-10|-1,0,010-1,130,53
+007-1,69,21|warp|To Hurnscald Ou#007-11|2,-1,008-1,78,101
+007-1,122,20|warp|To Hurnscald#007-12|1,-1,008-1,132,98
diff --git a/world/map/npc/007-1/voltain.txt b/world/map/npc/007-1/voltain.txt
index 9c51fe3f..0366ea5c 100644
--- a/world/map/npc/007-1/voltain.txt
+++ b/world/map/npc/007-1/voltain.txt
@@ -357,7 +357,7 @@ L_Next14:
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;
+ emotion EMOTE_EVIL, strcharinfo(0);
goto L_Close;
L_NOHELP:
diff --git a/world/map/npc/007-1/witch.txt b/world/map/npc/007-1/witch.txt
index 0c921e8e..e8eb1ffc 100644
--- a/world/map/npc/007-1/witch.txt
+++ b/world/map/npc/007-1/witch.txt
@@ -55,7 +55,7 @@ L_DeveloperBoard:
L_Introduce:
if (@illia_go_find_items)
- goto L_AskTeleportSpellItems;
+ goto L_AskItems;
if (@illia_know_witch == 1)
goto L_QuickIntroduce;
mes "[Valia]";
@@ -128,7 +128,7 @@ L_Next3:
next;
if (getusers(1) < 4)
- goto L_NotEnoughPeopleAvailable;
+ goto L_NotPeepAv;
mes "[Valia]";
mes "\"Do you know such people?\"";
@@ -141,48 +141,48 @@ L_Next4:
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_CheckTeleportSpellItems,
- "I don't have them, but I'll try to find.", L_NoTeleportSpellItems;
+ "I have them here.", L_CheckItems,
+ "I don't have them, but I'll try to find.", L_NoItems;
-L_NotEnoughPeopleAvailable:
+L_NotPeepAv:
mes "[Valia]";
mes "\"But it seems there are not enough people around.";
mes "Come back later.\"";
close;
-L_AskTeleportSpellItems:
+L_AskItems:
mes "[Valia]";
mes "\"So, did you bring me what I need?\"";
menu
- "Hum, I forgot what you asked...", L_RepeatTeleportSpellItems,
- "Here they are!", L_CheckTeleportSpellItems;
+ "Hum, I forgot what you asked...", L_RepeatItems,
+ "Here they are!", L_CheckItems;
-L_RepeatTeleportSpellItems:
+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_NoTeleportSpellItems:
+L_NoItems:
set @illia_go_find_items, 1;
close;
-L_MissingTeleportSpellItems:
+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_CheckTeleportSpellItems:
+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_MissingTeleportSpellItems;
+ ) goto L_MissingItems;
// someone started the quest in the meantime, so we cancel this one.
if ($@ILLIA_STATUS > 0)
goto L_Interrupt;
@@ -432,7 +432,7 @@ L_Next5:
(countitem ("IronPowder") < @illia_iron_powder) ||
(countitem ("FrozenYetiTear") < @illia_yeti_tear) ||
(countitem ("IcedWater") < @illia_iced_water)
- ) goto L_MissingTeleportSpellItems;
+ ) goto L_MissingItems;
delitem "SapphirePowder", @illia_sapphire_powder;
delitem "AmethystPowder", @illia_amethyst_powder;
delitem "IronPowder", @illia_iron_powder;
@@ -545,7 +545,7 @@ L_ReactToPlayersReturn:
// the rings will have deleted their memories.
// So the same dialog can apply.
if ($@illia_progress < 8)
- goto L_DisappointedByHeroFail;
+ goto L_Disappoint;
if ($@illia_progress == 8)
goto L_SurprisedByHeroWin;
end;
@@ -555,7 +555,7 @@ L_SurprisedByHeroWin:
emotion EMOTE_SURPRISE;
goto L_EndQuest;
-L_DisappointedByHeroFail:
+L_Disappoint:
npctalk "Oh no... It seems " + $@ILLIA_HERO$ + " did not make it... Who will save my sister now?";
emotion EMOTE_SAD;
goto L_EndQuest;
@@ -681,12 +681,12 @@ OnTimer300000:
goto L_EndQuest;
L_KillHero:
- percentheal -100, 0;
+ heal -Hp, 0;
goto L_EndQuest;
}
-007-1,128,100,0|script|#IlliaDaemon|127
+007-1,128,100,0|script|#IlliaDaemon|32767
{
end;
@@ -742,7 +742,7 @@ OnTimer4500:
// send a message to all the helpers
setarray $@illia_helpers$, $@ILLIA_HELPER1$,$@ILLIA_HELPER2$,$@ILLIA_HELPER3$;
set $@illia_helper_index,0;
- goto L_CheckHelperNeedNotification;
+ goto L_HelperNotification;
OnTimer6500:
if ($@ILLIA_STATUS < 254)
@@ -758,9 +758,9 @@ OnTimer6500:
set $@illia_players_in_luvia_territory, 0;
end;
-L_CheckHelperNeedNotification:
+L_HelperNotification:
if ($@illia_helper_index >= 4)
- goto L_CleanHelpersNotifications;
+ goto L_CleanHelpers;
set $@illia_helper$, $@illia_helpers$[$@illia_helper_index];
if (isloggedin(getcharid(3, $@illia_helper$)) == 0)
goto L_NextHelperToNotify;
@@ -778,9 +778,9 @@ L_CheckHelperNeedNotification:
L_NextHelperToNotify:
set $@illia_helper_index, $@illia_helper_index + 1;
- goto L_CheckHelperNeedNotification;
+ goto L_HelperNotification;
-L_CleanHelpersNotifications:
+L_CleanHelpers:
cleararray $@illia_helpers$, "", 3;
set $@illia_helper$, "";
set $@illia_helper_index,0;
diff --git a/world/map/npc/008-1/_mobs.txt b/world/map/npc/008-1/_mobs.txt
index 6f5e65be..33a425e3 100644
--- a/world/map/npc/008-1/_mobs.txt
+++ b/world/map/npc/008-1/_mobs.txt
@@ -12,7 +12,7 @@
008-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms,Mob008-1::On1055
-008-1,0,0,0|script|Mob008-1|-1
+008-1,0,0,0|script|Mob008-1|32767
{
end;
diff --git a/world/map/npc/008-1/_warps.txt b/world/map/npc/008-1/_warps.txt
index b92d1e11..346b733c 100644
--- a/world/map/npc/008-1/_warps.txt
+++ b/world/map/npc/008-1/_warps.txt
@@ -1,11 +1,11 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Hurnscald Outskirts warps
-008-1,54,61|warp|To Hurnscald West Entra|-1,1,009-1,25,36
-008-1,79,80|warp|To Hurnscald South Entr|2,-1,009-1,48,54
-008-1,127,61|warp|To Hurnscald East Entra|-1,0,009-1,96,36
-008-1,79,49|warp|To Hurnscald North Entr|2,-1,009-1,48,25
-008-1,24,62|warp|To Woodland|-1,2,011-1,123,61
-008-1,79,17|warp|To Woodland Mining Camp|2,-1,018-1,78,97
-008-1,79,102|warp|To Woodland|2,-1,007-1,68,22
-008-1,132,101|warp|To Woodland|1,-1,007-1,122,23
+008-1,54,61|warp|To Hurnscald We#008-10|-1,1,009-1,25,36
+008-1,79,80|warp|To Hurnscald So#008-11|2,-1,009-1,48,54
+008-1,127,61|warp|To Hurnscald Ea#008-12|-1,0,009-1,96,36
+008-1,79,49|warp|To Hurnscald No#008-13|2,-1,009-1,48,25
+008-1,24,62|warp|To Woodland#008-14|-1,2,011-1,123,61
+008-1,79,17|warp|To Woodland Min#008-15|2,-1,018-1,78,97
+008-1,79,102|warp|To Woodland#008-16|2,-1,007-1,68,22
+008-1,132,101|warp|To Woodland#008-17|1,-1,007-1,122,23
diff --git a/world/map/npc/008-1/annualeaster.txt b/world/map/npc/008-1/annualeaster.txt
index 51c901a3..a9ba5963 100644
--- a/world/map/npc/008-1/annualeaster.txt
+++ b/world/map/npc/008-1/annualeaster.txt
@@ -135,7 +135,7 @@ L_End1:
}
-008-1,59,38,0|script|#AnnualEaster|-1
+008-1,59,38,0|script|#AnnualEaster|32767
{
end;
diff --git a/world/map/npc/008-1/diryn.txt b/world/map/npc/008-1/diryn.txt
index dae18c13..6570f1d8 100644
--- a/world/map/npc/008-1/diryn.txt
+++ b/world/map/npc/008-1/diryn.txt
@@ -4,7 +4,7 @@
008-1,81,82,0|script|Diryn the Traveler|103
{
- set @NpcName$, "Diryn";
+ 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
index 4be8ad11..42763609 100644
--- a/world/map/npc/008-1/dock.txt
+++ b/world/map/npc/008-1/dock.txt
@@ -12,7 +12,7 @@
close;
}
-008-1,120,44,0|script|#Hurnscald NorthDock|127
+008-1,120,44,0|script|#Hurnscald NorthDock|32767
{
end;
OnCommandArrive:
@@ -30,7 +30,7 @@ OnCommandWarp:
close;
}
-008-1,65,25,0|script|#Hurnscald SouthDock|127
+008-1,65,25,0|script|#Hurnscald SouthDock|32767
{
end;
OnCommandArrive:
diff --git a/world/map/npc/008-1/hinnak.txt b/world/map/npc/008-1/hinnak.txt
index 0213c3cc..c2360141 100644
--- a/world/map/npc/008-1/hinnak.txt
+++ b/world/map/npc/008-1/hinnak.txt
@@ -7,8 +7,6 @@
008-1,101,30,0|script|Hinnak|142
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (@inspector == 10) goto L_NohMask;
diff --git a/world/map/npc/008-1/mikhail.txt b/world/map/npc/008-1/mikhail.txt
index 3c5f7679..98a58d12 100644
--- a/world/map/npc/008-1/mikhail.txt
+++ b/world/map/npc/008-1/mikhail.txt
@@ -2,17 +2,14 @@
008-1,135,25,0|script|Mikhail|120
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
if (@state >= 6) goto L_Done;
if (@state == 5) goto L_Progress;
if (@state == 4) goto L_Start;
- goto L_Convince_Mikhail_First;
+ goto L_Con_Mik_First;
-L_Convince_Mikhail_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";
diff --git a/world/map/npc/009-1/_import.txt b/world/map/npc/009-1/_import.txt
index 32014688..4c902627 100644
--- a/world/map/npc/009-1/_import.txt
+++ b/world/map/npc/009-1/_import.txt
@@ -3,6 +3,7 @@
map: 009-1
npc: npc/009-1/_mobs.txt
npc: npc/009-1/_warps.txt
+npc: npc/009-1/constable.txt
npc: npc/009-1/dock.txt
npc: npc/009-1/guide.txt
npc: npc/009-1/jack.txt
diff --git a/world/map/npc/009-1/_mobs.txt b/world/map/npc/009-1/_mobs.txt
index bab67b1b..247a3797 100644
--- a/world/map/npc/009-1/_mobs.txt
+++ b/world/map/npc/009-1/_mobs.txt
@@ -8,7 +8,7 @@
009-1,0,0,0,0|monster|Butterfly|1055,5,30ms,20ms,Mob009-1::On1055
-009-1,0,0,0|script|Mob009-1|-1
+009-1,0,0,0|script|Mob009-1|32767
{
end;
diff --git a/world/map/npc/009-1/_warps.txt b/world/map/npc/009-1/_warps.txt
index d636aa2a..d03fd7a4 100644
--- a/world/map/npc/009-1/_warps.txt
+++ b/world/map/npc/009-1/_warps.txt
@@ -1,15 +1,15 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Hurnscald warps
-009-1,49,55|warp|To Hurnscald South Exit|2,-1,008-1,78,81
-009-1,97,36|warp|To Hurnscald East Exit|-1,0,008-1,128,61
-009-1,35,30|warp|To Hurnscald Inn|-1,-1,009-2,50,54
-009-1,58,46|warp|To Storage Room|-1,-1,009-2,27,106
-009-1,59,33|warp|To Archer Shop|-1,-1,009-2,95,29
-009-1,71,30|warp|To Hurnscald Potion Sho|-1,-1,009-2,130,25
-009-1,80,31|warp|To Hurnscald Hospital|-1,-1,009-2,149,66
-009-1,72,44|warp|To Hurnscald House|-1,-1,009-2,114,77
-009-1,91,46|warp|To Hurnscald Forge|0,-1,009-2,182,66
-009-1,24,36|warp|To Hurnscald West Exit|-1,1,008-1,53,61
-009-1,49,24|warp|To Hurnscald North Exit|2,-1,008-1,78,48
-009-1,60,41|warp|To Bedroom|-1,-1,009-2,32,91
+009-1,49,55|warp|To Hurnscald So#009-10|2,-1,008-1,78,81
+009-1,97,36|warp|To Hurnscald Ea#009-11|-1,0,008-1,128,61
+009-1,35,30|warp|To Hurnscald In#009-12|-1,-1,009-2,50,54
+009-1,58,46|warp|To Storage Room#009-13|-1,-1,009-2,27,106
+009-1,59,33|warp|To Archer Shop#009-14|-1,-1,009-2,95,29
+009-1,71,30|warp|To Hurnscald Po#009-15|-1,-1,009-2,130,25
+009-1,80,31|warp|To Hurnscald Ho#009-16|-1,-1,009-2,149,66
+009-1,72,44|warp|To Hurnscald Ho#009-17|-1,-1,009-2,114,77
+009-1,91,46|warp|To Hurnscald Fo#009-18|0,-1,009-2,182,66
+009-1,24,36|warp|To Hurnscald We#009-19|-1,1,008-1,53,61
+009-1,49,24|warp|To Hurnscald No#009-110|2,-1,008-1,78,48
+009-1,60,41|warp|To Bedroom#009-111|-1,-1,009-2,32,91
diff --git a/world/map/npc/009-1/constable.txt b/world/map/npc/009-1/constable.txt
new file mode 100644
index 00000000..c82a8b21
--- /dev/null
+++ b/world/map/npc/009-1/constable.txt
@@ -0,0 +1,11 @@
+//
+
+009-1,52,33,0|script|Constable Bob|419
+{
+ mes "[Constable Hank Atkins]";
+ 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/jack.txt b/world/map/npc/009-1/jack.txt
index 206f0c3e..05c9f8c5 100644
--- a/world/map/npc/009-1/jack.txt
+++ b/world/map/npc/009-1/jack.txt
@@ -16,8 +16,6 @@
// Lumberjack
009-1,40,45,0|script|Jack|141
{
- callfunc "ClearVariables";
-
set @RAWLOGS_AMOUNT, 40;
set @SHIELD_COST, 5000;
set @QUEST_SHIELD_EXP, 2500;
@@ -193,7 +191,7 @@ L_Next10:
if (countitem("RawLog") < @RAWLOGS_AMOUNT)
goto L_Not_enough_logs;
if (Zeny < @SHIELD_COST)
- goto L_Not_enough_money;
+ goto L_not_enough_money;
getinventorylist;
if (@inventorylist_count == 100)
goto L_TooMany;
@@ -227,7 +225,7 @@ L_Not_enough_logs:
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:
+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;
@@ -259,7 +257,6 @@ L_NohMask_Answer:
goto L_Close;
L_Made_Shield:
- next;
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.\"";
diff --git a/world/map/npc/009-1/milly.txt b/world/map/npc/009-1/milly.txt
index 3e389d27..f1408619 100644
--- a/world/map/npc/009-1/milly.txt
+++ b/world/map/npc/009-1/milly.txt
@@ -8,8 +8,6 @@
009-1,81,41,0|script|Milly|114
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
set @got_boneknife, ((QUEST_Forestbow_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) >= 4;
diff --git a/world/map/npc/009-1/old_man.txt b/world/map/npc/009-1/old_man.txt
index 5ce64ec1..4abf906e 100644
--- a/world/map/npc/009-1/old_man.txt
+++ b/world/map/npc/009-1/old_man.txt
@@ -2,34 +2,32 @@
009-1,85,51,0|script|Old Man|159
{
- callfunc "ClearVariables";
-
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_NohMask_Ask;
- if (@inspector == 6) goto L_NohMask_Accuse;
+ if (@inspector == 1) goto L_Ask;
+ if (@inspector == 6) goto L_Accuse;
goto L_Close;
-L_NohMask_Ask:
+L_Ask:
menu
- "Have you seen anything strange lately?", L_NohMask_Ask_Nothing,
- "Do you know anything about the recent robberies?", L_NohMask_Ask_Nothing,
+ "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_NohMask_Ask_Nothing:
+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_NohMask_Accuse:
+L_Accuse:
menu
- "The leader of the troupe said you hung around them a lot while they were in town.", L_NohMask_Accuse_Respond,
+ "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_NohMask_Accuse_Respond:
+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;
diff --git a/world/map/npc/009-1/old_woman.txt b/world/map/npc/009-1/old_woman.txt
index 83e59eaa..d3b26e7e 100644
--- a/world/map/npc/009-1/old_woman.txt
+++ b/world/map/npc/009-1/old_woman.txt
@@ -2,29 +2,25 @@
009-1,29,43,0|script|Old Woman|154
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (BaseLevel < 40) goto L_Lower;
mes "[Old Woman]";
mes "\"Hello deary.\"";
- next;
- goto L_Continue;
+ 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.\"";
- next;
- goto L_Continue;
-
-L_Continue:
if ((@inspector >= 1 && @inspector <= 7) || @inspector == 9)
goto L_NohMask;
- goto L_Close;
+ close;
L_NohMask:
+ next;
if (@inspector == 7)
goto L_NohMask_Alibi;
callfunc "ProcessEquip";
diff --git a/world/map/npc/009-1/sabine.txt b/world/map/npc/009-1/sabine.txt
index 348e28c4..2f960f75 100644
--- a/world/map/npc/009-1/sabine.txt
+++ b/world/map/npc/009-1/sabine.txt
@@ -2,8 +2,6 @@
009-1,88,27,0|script|Sabine|106
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
mes "[Sabine]";
diff --git a/world/map/npc/009-1/soul-menhir.txt b/world/map/npc/009-1/soul-menhir.txt
index 855eddf1..3b8c5cee 100644
--- a/world/map/npc/009-1/soul-menhir.txt
+++ b/world/map/npc/009-1/soul-menhir.txt
@@ -2,7 +2,6 @@
009-1,53,40,0|script|Soul Menhir#hurnscald|344
{
- callfunc "ClearVariables";
set @map$, "009-1";
setarray @Xs, 52, 53, 54, 52, 54, 52, 54;
setarray @Ys, 39, 39, 39, 40, 40, 41, 41;
diff --git a/world/map/npc/009-2/_mobs.txt b/world/map/npc/009-2/_mobs.txt
index 22518d34..e0b8a1a0 100644
--- a/world/map/npc/009-2/_mobs.txt
+++ b/world/map/npc/009-2/_mobs.txt
@@ -3,7 +3,7 @@
-009-2,0,0,0|script|Mob009-2|-1
+009-2,0,0,0|script|Mob009-2|32767
{
end;
}
diff --git a/world/map/npc/009-2/_warps.txt b/world/map/npc/009-2/_warps.txt
index 673bfac7..ca2f04f2 100644
--- a/world/map/npc/009-2/_warps.txt
+++ b/world/map/npc/009-2/_warps.txt
@@ -1,24 +1,24 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Hurnscald Indoor warps
-009-2,75,23|warp|To First Floor|0,-1,009-2,74,47
-009-2,95,30|warp|To Outside|-1,-1,009-1,59,34
-009-2,130,26|warp|To Outside|-1,-1,009-1,71,31
-009-2,144,26|warp|To Second Floor|0,-1,009-2,144,43
-009-2,144,42|warp|To Third Floor|0,-1,009-2,144,25
-009-2,155,48|warp|To First Floor|0,-1,009-2,155,63
-009-2,114,46|warp|To First Floor|0,-1,009-2,114,70
-009-2,50,55|warp|To Outside|-1,-1,009-1,35,31
-009-2,74,53|warp|To Cellar|-1,-1,009-2,143,78
-009-2,74,46|warp|To Second Floor|0,-1,009-2,75,22
-009-2,114,78|warp|To Outside|-1,-1,009-1,72,45
-009-2,114,69|warp|To Second Floor|0,-1,009-2,114,45
-009-2,149,67|warp|To Outside|-1,-1,009-1,80,32
-009-2,143,77|warp|To First Floor|-1,-1,009-2,74,52
-009-2,155,62|warp|To Second Floor|0,-1,009-2,155,46
-009-2,182,67|warp|To Outside|0,-1,009-1,91,47
-009-2,147,90|warp|To Hurnscald Cave|-1,-1,009-3,173,21
-009-2,27,107|warp|To Outside|-1,-1,009-1,58,47
-009-2,46,50|warp|To Inn Private Room|-1,-1,009-2,76,78
-009-2,77,78|warp|To Hurnscald Inn|-1,-1,009-2,47,50
-009-2,31,91|warp|To Outside|-1,-1,009-1,59,41
+009-2,75,23|warp|To First Floor#009-20|0,-1,009-2,74,47
+009-2,95,30|warp|To Outside#009-21|-1,-1,009-1,59,34
+009-2,130,26|warp|To Outside#009-22|-1,-1,009-1,71,31
+009-2,144,26|warp|To Second Floor#009-23|0,-1,009-2,144,43
+009-2,144,42|warp|To Third Floor#009-24|0,-1,009-2,144,25
+009-2,155,48|warp|To First Floor#009-25|0,-1,009-2,155,63
+009-2,114,46|warp|To First Floor#009-26|0,-1,009-2,114,70
+009-2,50,55|warp|To Outside#009-27|-1,-1,009-1,35,31
+009-2,74,53|warp|To Cellar#009-28|-1,-1,009-2,143,78
+009-2,74,46|warp|To Second Floor#009-29|0,-1,009-2,75,22
+009-2,114,78|warp|To Outside#009-210|-1,-1,009-1,72,45
+009-2,114,69|warp|To Second Floor#009-211|0,-1,009-2,114,45
+009-2,149,67|warp|To Outside#009-212|-1,-1,009-1,80,32
+009-2,143,77|warp|To First Floor#009-213|-1,-1,009-2,74,52
+009-2,155,62|warp|To Second Floor#009-214|0,-1,009-2,155,46
+009-2,182,67|warp|To Outside#009-215|0,-1,009-1,91,47
+009-2,147,90|warp|To Hurnscald Ca#009-216|-1,-1,009-3,173,21
+009-2,27,107|warp|To Outside#009-217|-1,-1,009-1,58,47
+009-2,46,50|warp|To Inn Private #009-218|-1,-1,009-2,76,78
+009-2,77,78|warp|To Hurnscald In#009-219|-1,-1,009-2,47,50
+009-2,31,91|warp|To Outside#009-220|-1,-1,009-1,59,41
diff --git a/world/map/npc/009-2/airlia.txt b/world/map/npc/009-2/airlia.txt
index c7e52273..71726331 100644
--- a/world/map/npc/009-2/airlia.txt
+++ b/world/map/npc/009-2/airlia.txt
@@ -42,7 +42,7 @@
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_Airlia_intro;
+ if (QUEST_Graveyard_Caretaker > @Q_STATUS_RECIEVED_FIRST_LETTER) goto L_intro;
goto L_Caretaker;
L_Caretaker:
@@ -52,12 +52,12 @@ L_Caretaker:
if (QUEST_Graveyard_Caretaker < @Q_STATUS_RECIEVED_FIRST_LETTER)
menu
"Sorry, no.", L_Next,
- "My what?", L_Caretaker_mount;
+ "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_Caretaker_first_reward,
- "My what?", L_Caretaker_mount;
+ "I have a letter from your father.", L_first_reward,
+ "My what?", L_mount;
goto L_Next;
L_Next:
@@ -65,12 +65,12 @@ L_Next:
mes "\"Nobody ever does...\"";
close;
-L_Caretaker_mount:
+L_mount:
// The mention of mounts will certainly gather some interest from players,
// this section may be extended.
close;
-L_Caretaker_first_reward:
+L_first_reward:
mes "[Airlia]";
mes "\"Oh! Thank you very, very much! Please take this for your trouble.\"";
if (@LETTER_REWARD_GOLD_INITIAL > 0)
@@ -82,7 +82,7 @@ L_Caretaker_first_reward:
set QUEST_Graveyard_Caretaker, @Q_STATUS_DELIVERED_FIRST_LETTER;
close;
-L_Caretaker_later_rewards:
+L_later_rewards:
mes "[Airlia]";
mes "\"Oh! Thank you very, very much! Please take this for your trouble.\"";
if (@LETTER_REWARD_GOLD > 0)
@@ -94,7 +94,7 @@ L_Caretaker_later_rewards:
set QUEST_Graveyard_Caretaker, @Q_STATUS_HAS_NO_NEW_LETTER;
close;
-L_Airlia_intro:
+L_intro:
mes "[Airlia]";
mes "\"My poor father, doomed to that awful cemetery.\"";
next;
@@ -112,7 +112,7 @@ L_Airlia_intro:
if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER)
menu
"...", L_Next3,
- "Oh, I have a letter from him.", L_Caretaker_later_rewards;
+ "Oh, I have a letter from him.", L_later_rewards;
goto L_Next3;
L_Next3:
@@ -121,8 +121,8 @@ L_Next3:
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_Airlia_intro_mana_loss,
- "Maybe...", L_Airlia_intro_mana_loss,
+ "I believe so, yes.", L_intro_mana_loss,
+ "Maybe...", L_intro_mana_loss,
"No, that is not proven.", L_Next1;
L_Next1:
@@ -130,40 +130,40 @@ L_Next1:
mes "\"Oh...\"";
close;
-L_Airlia_intro_mana_loss:
+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_Airlia_intro_fou,
- "I have heard of them.", L_Airlia_intro_fou,
+ "...", 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_Airlia_intro_fou:
+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_Airlia_intro_fight,
- "Sure, I guess.", L_Airlia_intro_fight,
+ "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_Airlia_intro_fight:
+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_Airlia_intro_proof;
+ "What sort of proof?", L_intro_proof;
L_Next2:
set QUEST_Airlia, @Q_STATUS_HELP_AIRLIA;
goto L_Close;
-L_Airlia_intro_proof:
+L_intro_proof:
mes "[Airlia]";
- mes "\"Let's say " + @FETCH_AMOUNT_INITIAL + " " + getitemname(@FETCH_LABEL_INITIAL$) + "s. You don't know how much this means to me, thank you.\"";
+ 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;
@@ -171,6 +171,7 @@ 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
@@ -179,13 +180,13 @@ L_Fetch:
if (QUEST_Graveyard_Caretaker < @Q_STATUS_HAS_NEW_LETTER)
menu
- "You are welcome.", L_Close,
- "I have collected the " + @FETCH_AMOUNT_INITIAL + " " + getitemname(@FETCH_LABEL_INITIAL$) + "s.", L_Fetch_initial_reward;
+ "Yes.", L_Fetch_initial_reward,
+ "No.", L_Close;
if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER)
menu
- "You are welcome.", L_Close,
- "I have another letter from your father.", L_Caretaker_later_rewards,
- "I have collected the " + @FETCH_AMOUNT_INITIAL + " " + getitemname(@FETCH_LABEL_INITIAL$) + "s.", L_Fetch_initial_reward;
+ "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:
@@ -230,15 +231,16 @@ 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
- "You are welcome.", L_Close,
- "I have collected the " + @FETCH_AMOUNT + " " + getitemname(@FETCH_LABEL$) + "s.", L_Fetch_later_rewards;
+ "Yes.", L_Fetch_later_rewards,
+ "No.", L_Close;
if (QUEST_Graveyard_Caretaker == @Q_STATUS_HAS_NEW_LETTER)
menu
- "You are welcome.", L_Close,
- "I have another letter from your father.", L_Caretaker_later_rewards,
- "I have collected the " + @FETCH_AMOUNT + " " + getitemname(@FETCH_LABEL$) + "s.", L_Fetch_later_rewards;
+ "I have another letter from your father.", L_later_rewards,
+ "Yes.", L_Fetch_later_rewards,
+ "No.", L_Close;
goto L_Close;
L_Close:
diff --git a/world/map/npc/009-2/alan.txt b/world/map/npc/009-2/alan.txt
index 12f5cde8..6e0e6f21 100644
--- a/world/map/npc/009-2/alan.txt
+++ b/world/map/npc/009-2/alan.txt
@@ -10,8 +10,6 @@
// Archer Shop Master
009-2,99,23,0|script|Alan|125
{
- callfunc "ClearVariables";
-
set @Q_MASK, NIBBLE_0_MASK;
set @Q_SHIFT, NIBBLE_0_SHIFT;
@@ -98,7 +96,7 @@ L_State_2:
next;
if (@inspector == 1)
menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next,
+ "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
diff --git a/world/map/npc/009-2/bernard.txt b/world/map/npc/009-2/bernard.txt
index f0c03fbc..1d6b4229 100644
--- a/world/map/npc/009-2/bernard.txt
+++ b/world/map/npc/009-2/bernard.txt
@@ -2,9 +2,6 @@
009-2,67,79,0|script|Bernard|117
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
if (@state >= 6) goto L_Done3;
diff --git a/world/map/npc/009-2/doctor.txt b/world/map/npc/009-2/doctor.txt
index 9137d8d4..f44cda64 100644
--- a/world/map/npc/009-2/doctor.txt
+++ b/world/map/npc/009-2/doctor.txt
@@ -2,8 +2,6 @@
009-2,148,25,0|script|Doctor|107
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (getequipid(equip_head) == 616) goto L_Axe;
diff --git a/world/map/npc/009-2/entertainer.txt b/world/map/npc/009-2/entertainer.txt
index 57119894..61306b25 100644
--- a/world/map/npc/009-2/entertainer.txt
+++ b/world/map/npc/009-2/entertainer.txt
@@ -27,9 +27,13 @@ L_Close:
close;
OnTimer3000:
- emotion rand(EMOTE_DISGUST, EMOTE_TEARS);
- setnpctimer 0;
- end;
+ 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;
diff --git a/world/map/npc/009-2/inspector.txt b/world/map/npc/009-2/inspector.txt
index 1effd16b..d61fc708 100644
--- a/world/map/npc/009-2/inspector.txt
+++ b/world/map/npc/009-2/inspector.txt
@@ -2,31 +2,29 @@
009-2,24,99,0|script|Inspector#Hurnscald|150
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
- if (@inspector == 0 && BaseLevel >= 30) goto L_NohMask_Start;
- if (@inspector == 1) goto L_NohMask_AskVillage;
- if (@inspector == 2) goto L_NohMask_OldWoman;
- if (@inspector == 3) goto L_NohMask_TheaterMask;
- if (@inspector == 4) goto L_NohMask_TravelingTroupe;
- if (@inspector == 5) goto L_NohMask_OldMan;
- if (@inspector == 6) goto L_NohMask_OldMan_2;
- if (@inspector == 7) goto L_NohMask_Alibi;
- if (@inspector == 8) goto L_NohMask_Alibi_2;
- if (@inspector == 9) goto L_NohMask_Alibi_3;
- if (@inspector == 10) goto L_NohMask_Satchel;
- if (@inspector == 11) goto L_NohMask_Basement;
- if (@inspector == 12) goto L_NohMask_Note;
- if (@inspector == 13) goto L_NohMask_TravelingTroupe_2;
- if (@inspector == 14) goto L_NohMask_Over;
- if (@inspector == 15) goto L_NohMask_End;
+ 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_NohMask_Start:
+L_Start:
mes "\"Hmm...what to do.\"";
mes "He looks up and into your face.";
next;
@@ -34,78 +32,78 @@ L_NohMask_Start:
mes "\"You look capable, will you help me solve these robberies?\"";
next;
menu
- "Yes.", L_NohMask_Accept,
+ "Yes.", L_Accept,
"No.", L_Close;
-L_NohMask_Accept:
+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_NohMask_AskVillage:
+L_AskVillage:
mes "[Inspector]";
mes "\"Please continue talking to the villagers.\"";
goto L_Close;
-L_NohMask_OldWoman:
+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_NohMask_TheaterMask:
+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_NohMask_TravelingTroupe:
+L_TravelingTroupe:
mes "[Inspector]";
mes "\"Please go talk to the leader of the traveling troupe about the theater mask.\"";
goto L_Close;
-L_NohMask_OldMan:
+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_NohMask_OldMan_2:
+L_OldMan_2:
mes "[Inspector]";
mes "\"Have you talked with the old man yet?\"";
goto L_Close;
-L_NohMask_Alibi:
+L_Alibi:
mes "[Inspector]";
mes "\"Can you verify that with his wife?\"";
goto L_Close;
-L_NohMask_Alibi_2:
+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_NohMask_Alibi_3:
+L_Alibi_3:
mes "[Inspector]";
mes "\"Made any progress yet?\"";
goto L_Close;
-L_NohMask_Satchel:
+L_Satchel:
mes "[Inspector]";
mes "\"Then go north and investigate!\"";
goto L_Close;
-L_NohMask_Basement:
+L_Basement:
mes "[Inspector]";
mes "\"Did you look over the basement?\"";
goto L_Close;
-L_NohMask_Note:
+L_Note:
set @inspector, 13;
callsub S_Update_Mask;
mes "[Inspector]";
@@ -114,12 +112,12 @@ L_NohMask_Note:
mes "\"By the way, stay sharp! I may call upon you again.\"";
goto L_Close;
-L_NohMask_TravelingTroupe_2:
+L_TravelingTroupe_2:
mes "[Inspector]";
mes "\"Please return the mask to the traveling troupe.\"";
goto L_Close;
-L_NohMask_Over:
+L_Over:
set @inspector, 15;
callsub S_Update_Mask;
mes "[Inspector]";
@@ -128,7 +126,7 @@ L_NohMask_Over:
getexp 2500, 0;
goto L_Close;
-L_NohMask_End:
+L_End:
mes "[Inspector]";
mes "\"Remember to stay sharp. I might need your help on another case.\"";
goto L_Close;
diff --git a/world/map/npc/009-2/kfahr.txt b/world/map/npc/009-2/kfahr.txt
index 49e0c449..8b6cb37d 100644
--- a/world/map/npc/009-2/kfahr.txt
+++ b/world/map/npc/009-2/kfahr.txt
@@ -41,9 +41,9 @@
set @Q_needs_stinger, ((QUEST_Forestbow_state & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT) > 1;
- if (@Q_status == @QS_KNIFE_QUEST) goto L_knife_quest_check;
+ if (@Q_status == @QS_KNIFE_QUEST) goto L_Check;
- if (@Q_status == @QS_STINGER_QUEST) goto L_stinger_quest_check;
+ if (@Q_status == @QS_STINGER_QUEST) goto L_stinger_check;
if (@Q_status > @QS_NEWBIE) goto L_meet_again;
@@ -281,11 +281,11 @@ L_worm_bones:
L_worm_see_bones:
if (@Q_status == @QS_KNIFE_QUEST)
- goto L_boneknife_quest_ip;
+ goto L_bone_ip;
if (@Q_status > @QS_KNIFE_QUEST)
goto L_worm_continue2;
if (BaseLevel >= 40)
- goto L_boneknife_quest;
+ goto L_bone_quest;
mes "[Kfahr the Warrior]";
mes "\"Of course!\"";
@@ -580,9 +580,9 @@ L_tale_desert:
L_gain_power:
if ((@beer_count - @has_beer) < 1)
- goto L_listen_to_a_story_first;
+ goto L_story_first;
if (@Q_status < @QS_KNIFE_QUEST)
- goto L_boneknife_quest;
+ goto L_bone_quest;
mes "[Kfahr the Warrior]";
mes "\"Yeees, yes... doesn't everyone?\"";
@@ -591,19 +591,19 @@ L_gain_power:
next;
goto L_main_menu;
-L_listen_to_a_story_first:
+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_boneknife_quest:
+L_bone_quest:
if (@Q_status == @QS_KNIFE_QUEST)
- goto L_boneknife_quest_ip;
+ goto L_bone_ip;
if (@Q_status > @QS_KNIFE_QUEST)
- goto L_boneknife_quest_completed;
+ goto L_bone_completed;
if (BaseLevel < 40)
- goto L_boneknife_quest_tooweak;
+ goto L_bone_tooweak;
mes "[Kfahr the Warrior]";
mes "Kfahr stares at you for a moment, then nods.";
@@ -612,9 +612,9 @@ L_boneknife_quest:
set @Q_status, @QS_KNIFE_QUEST;
callsub L_Update_Var;
next;
- goto L_boneknife_quest_ip;
+ goto L_bone_ip;
-L_boneknife_quest_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.";
@@ -624,35 +624,35 @@ L_boneknife_quest_ip:
next;
goto L_main_menu;
-L_boneknife_quest_completed:
+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_boneknife_quest_tooweak:
+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_knife_quest_check:
+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_knife_quest_completecheck,
- "Er, what were those things again?", L_boneknife_quest_ip,
+ "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_knife_quest_completecheck:
+L_completecheck:
if (countitem("BlackScorpionStinger") < @BLACK_STINGERS_NR)
- goto L_knife_quest_missing_stingers;
+ goto L_missing_stingers;
if (countitem("SmallMushroom") < @MUSHROOMS_NR)
- goto L_knife_quest_missing_mushrooms;
+ goto L_missing_mushrooms;
mes "[Kfahr the Warrior]";
mes "Kfahr is delighted.";
@@ -672,9 +672,9 @@ L_knife_quest_completecheck:
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_knife_quest_missing_stingers_2;
+ goto L_missing_stingers_2;
if (countitem("SmallMushroom") < @MUSHROOMS_NR)
- goto L_knife_quest_missing_mushrooms_2;
+ goto L_missing_mushrooms_2;
getinventorylist;
if (@inventorylist_count == 100) goto L_Knife_TooMany;
mes "[Kfahr the Warrior]";
@@ -696,7 +696,7 @@ L_Knife_TooMany:
mes "\"You don't have room for this. Come back when you do.\"";
close;
-L_knife_quest_missing_stingers:
+L_missing_stingers:
mes "[Kfahr the Warrior]";
mes "\"No, no... I said " + @BLACK_STINGERS_NR + " black scorpion stingers.";
if (countitem("BlackScorpionStinger"))
@@ -705,7 +705,7 @@ L_knife_quest_missing_stingers:
mes "You didn't bring even a single one!\"";
close;
-L_knife_quest_missing_stingers_2:
+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"))
@@ -714,7 +714,7 @@ L_knife_quest_missing_stingers_2:
mes "You didn't bring even a single one!\"";
close;
-L_knife_quest_missing_mushrooms:
+L_missing_mushrooms:
mes "[Kfahr the Warrior]";
mes "\"No, no... I said " + @MUSHROOMS_NR + " small mushrooms.";
if (countitem("SmallMushroom"))
@@ -723,7 +723,7 @@ L_knife_quest_missing_mushrooms:
mes "You didn't bring me even a single little mushroom!\"";
close;
-L_knife_quest_missing_mushrooms_2:
+L_missing_mushrooms_2:
mes "[Kfahr the Warrior]";
mes "\"You just had " + @MUSHROOMS_NR + " small mushrooms. What happened to them?";
if (countitem("SmallMushroom"))
@@ -732,17 +732,17 @@ L_knife_quest_missing_mushrooms_2:
mes "You didn't bring me even a single little mushroom!\"";
close;
-L_stinger_quest_check:
+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_snakeskins_completecheck,
+ "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_snakeskins_completecheck:
+L_ss_cc:
if (countitem("SnakeSkin") < @SNAKE_SKINS_NR)
goto L_snakeskins_missing;
getinventorylist;
@@ -831,11 +831,11 @@ L_player_out_of_beer:
L_golden_scorpion:
if (@Q_status > @QS_STINGER_QUEST)
- goto L_golden_scorpion_over_ask;
+ goto L_gs_over_ask;
if (@Q_status == @QS_STINGER_QUEST)
- goto L_golden_scorpion_ask_again;
+ goto L_gs_ask_again;
if (@Q_status == @QS_LOST_WRESTLING)
- goto L_golden_scorpion_wrestle_again;
+ goto L_gs_wrestle_again;
mes "[Kfahr the Warrior]";
mes "He grins.";
@@ -849,11 +849,11 @@ 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_too_lowlevel_for_stinger;
+ goto L_lowlvl_for_stinger;
if (@Q_status < @QS_KNIFE_QUEST)
- goto L_golden_requires_knife_quest;
+ goto L_golden_requires_quest;
if (@Q_status < @QS_KNIFE_QUEST_DONE)
- goto L_golden_requires_knife_quest_done;
+ goto L_golden_requires_done;
mes "\"Still, you are a warrior of repute. I'll consider giving it to you...\"";
next;
@@ -861,57 +861,57 @@ L_Next2:
mes "A mischievous sparkle lightens up in his eyes.";
mes "\"...if you arm-wrestle me for it!\"";
next;
- goto L_golden_scorpion_wrestle_intro;
+ goto L_gs_wrestle_intro;
-L_golden_scorpion_wrestle_intro:
+L_gs_wrestle_intro:
menu
"Never!", L_main_menu,
"Wait... what?", L_wrestle_explain,
- "Bring it on!", L_golden_scorpion_wrestle;
+ "Bring it on!", L_gs_wrestle;
-L_golden_requires_knife_quest_done:
+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_knife_quest:
+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_boneknife_quest;
+ 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_golden_scorpion_wrestle_intro;
+ goto L_gs_wrestle_intro;
-L_too_lowlevel_for_stinger:
+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_golden_scorpion_over_ask:
+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_golden_scorpion_ask_again:
+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_golden_scorpion_wrestle_again:
+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_golden_scorpion_wrestle;
+ goto L_gs_wrestle;
-L_golden_scorpion_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;
@@ -920,9 +920,9 @@ L_golden_scorpion_wrestle:
set @KFAHR_AGI, 60 - @beer_count * 5;
set @kfahr_stamina, 120;
- set @PC_STR, readparam(bStr);
- set @PC_AGI, readparam(bAgi);
- set @PC_MAX_STAMINA, readparam(bVit) + 20;
+ set @PC_STR, Str;
+ set @PC_AGI, Agi;
+ set @PC_MAX_STAMINA, Vit + 20;
set @pc_stamina, @PC_MAX_STAMINA;
setarray @positions$,
diff --git a/world/map/npc/009-2/lena.txt b/world/map/npc/009-2/lena.txt
index 3917cec0..6f22030a 100644
--- a/world/map/npc/009-2/lena.txt
+++ b/world/map/npc/009-2/lena.txt
@@ -3,15 +3,12 @@
009-2,146,43,0|script|Lena|182
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
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_Lena_Bandit_Leader_Fail;
- if (@state == 3) goto L_Lena_Bandit_Leader_Fail;
+ 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;
@@ -58,7 +55,7 @@ L_Lena_Fairy_Hat:
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_Lena_Bandit_Leader_Yes,
+ "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:
@@ -70,10 +67,10 @@ 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_Lena_Bandit_Leader_Yes,
+ "Consider it done!", L_LBL_Yes,
"Woah there, that sounds a bit harder than what I can succeed at.", L_Lena_NoWay;
-L_Lena_Bandit_Leader_Yes:
+L_LBL_Yes:
set @state, 3;
callsub S_Update_Var;
areamonster "008-1",25,60,40,65,"Bandit",1064,3, "::";
@@ -87,7 +84,7 @@ L_Lena_NoWay:
mes "\"That is too bad. Feel free to return at any time. This bandit threat needs to be pushed back.\"";
goto L_Close;
-L_Lena_Bandit_Leader_Fail:
+L_LBL_Fail:
set @state, 3;
callsub S_Update_Var;
mes "[Lena]";
diff --git a/world/map/npc/009-2/nurse.txt b/world/map/npc/009-2/nurse.txt
index fa1ee5d2..8a5b3862 100644
--- a/world/map/npc/009-2/nurse.txt
+++ b/world/map/npc/009-2/nurse.txt
@@ -24,7 +24,6 @@
//######################################################################################
009-2,147,65,0|script|Nurse|119
{
- callfunc "ClearVariables";
set @halloween_npc_id, $@halloween_npc_nurse;
callfunc "TrickOrTreat";
diff --git a/world/map/npc/009-2/peter.txt b/world/map/npc/009-2/peter.txt
index 818f09cf..bbb336e2 100644
--- a/world/map/npc/009-2/peter.txt
+++ b/world/map/npc/009-2/peter.txt
@@ -1,5 +1,5 @@
// Nicholas' Apprentice and Armorsmith
-009-2,183,57,0|shop|#PeterShop|127,Knife:*1,SharpKnife:*1,Dagger:*1
+009-2,183,57,0|shop|#PeterShop|32767,Knife:*1,SharpKnife:*1,Dagger:*1
009-2,183,57,0|script|Peter|157
{
@@ -39,7 +39,7 @@ L_Peter_Chain_Mail:
set @peter_crafting_iron_ingot, @peter_chain_mail_ingot;
set @peter_crafting_money, @peter_chain_mail_money;
set @peter_crafting_item$, "ChainmailShirt";
- callsub S_Peter_Get_Smithery_Item;
+ callsub S_Smithery_Item;
goto L_Close;
L_Peter_Light_Plate:
@@ -47,7 +47,7 @@ L_Peter_Light_Plate:
set @peter_crafting_iron_ingot, @peter_light_plate_ingot;
set @peter_crafting_money, @peter_light_plate_money;
set @peter_crafting_item$, "LightPlatemail";
- callsub S_Peter_Get_Smithery_Item;
+ callsub S_Smithery_Item;
goto L_Close;
L_Peter_Warlord_Plate:
@@ -55,7 +55,7 @@ L_Peter_Warlord_Plate:
set @peter_crafting_iron_ingot, @peter_warlord_plate_ingot;
set @peter_crafting_money, @peter_warlord_plate_money;
set @peter_crafting_item$, "WarlordPlate";
- callsub S_Peter_Get_Smithery_Item;
+ callsub S_Smithery_Item;
goto L_Close;
L_Peter_New_Skills:
@@ -75,10 +75,10 @@ L_Peter_Warlord_Boots:
set @peter_crafting_iron_ingot, @peter_warlord_boots_ingot;
set @peter_crafting_money, @peter_warlord_boots_money;
set @peter_crafting_item$, "WarlordBoots";
- callsub S_Peter_Get_Smithery_Item;
+ callsub S_Smithery_Item;
goto L_Close;
-S_Peter_Get_Smithery_Item:
+S_Smithery_Item:
if (Zeny < @peter_crafting_money)
goto L_Peter_NotEnough_Zeny;
if (countitem("IronIngot") < @peter_crafting_iron_ingot)
diff --git a/world/map/npc/009-2/richard.txt b/world/map/npc/009-2/richard.txt
index b39a7969..11c180d4 100644
--- a/world/map/npc/009-2/richard.txt
+++ b/world/map/npc/009-2/richard.txt
@@ -2,7 +2,6 @@
009-2,20,99,0|script|Richard|161
{
- callfunc "ClearVariables";
set @npcname$, "Richard";
callfunc "Banker";
close;
diff --git a/world/map/npc/009-2/selim.txt b/world/map/npc/009-2/selim.txt
index f9dc3b40..474dec3c 100644
--- a/world/map/npc/009-2/selim.txt
+++ b/world/map/npc/009-2/selim.txt
@@ -1,22 +1,57 @@
-//#################################################################################
-//# #
-//# This script file contains the script for the cloth dyer. It has been #
-//# revised to require dye items; collaborating NPCs are Selim and Angus. #
-//# #
-//#################################################################################
-
009-2,32,104,0|script|Selim|326
{
- setarray @all_colours$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green";
-
cleararray @items$, "", getarraysize(@items$);
cleararray @item_names$, "", getarraysize(@item_names$);
- cleararray @items_new, "", getarraysize(@items_new);
- setarray @items_new, 5131, 2250, 2060, 2070, 2110, 2180, 2100, 2170, 2090, 2120, 2080, 2140, 2130, 2150, 2160, 2190, 2200, 2210, 2230, 2240, 5131, 2220, 5000, 5011, 5022, 5033, 5044, 5055, 5066, 5077, 5088, 5099;
- setarray @items$, "CottonShirt", "CottonCloth", "VNeckSweater", "TurtleneckSweater", "CottonShorts", "CottonTrousers", "CottonSkirt", "Miniskirt", "TankTop", "ShortTankTop", "SilkRobe", "CottonHeadband", "DesertHat", "CottonBoots", "CottonGloves", "WhiteRabbitEars", "WizardHat", "BowlerHat", "BowlerHatBrown", "FineDress", "ContributorShirt", "SorcererRobeRed", "SorcererRobeGreen", "SorcererRobeDarkBlue", "SorcererRobeYellow", "SorcererRobeLightBlue", "SorcererRobePink", "SorcererRobeBlack", "SorcererRobeOrange", "SorcererRobePurple", "SorcererRobeDarkGreen", "SorcererRobeWhite";
- setarray @item_names$, "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", "White Rabbit Ears", "Wizard Hat", "Bowler Hat", "Bowler Hat (brown)", "Fine Dress", "Contributor Shirt", "Red lined Sorcerer Robe", "Green lined Sorcerer Robe", "Dark Blue lined Sorcerer Robe", "Yellow lined Sorcerer Robe", "Light Blue lined Sorcerer Robe", "Pink lined Sorcerer Robe", "Black lined Sorcerer Robe", "Orange lined Sorcerer Robe", "Purple lined Sorcerer Robe", "Dark Green lined Sorcerer Robe", "White lined Sorcerer Robe";
- set @default_choice$, "About these sorcerer robes...";
- goto L_clothes_choice;
+ 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_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,
+ "Never mind.", L_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:
mes "[Selim]";
@@ -25,11 +60,10 @@ L_clothes_choice:
callfunc "DynamicItemMenu$";
set @default_choice$, "";
set @item_del$, @item$;
- set @item_new, @items_new[@index];
set @name$, @item_names$[@index];
cleararray @items$, "", getarraysize(@items$);
cleararray @item_names$, "", getarraysize(@item_names$);
- if(@item$ == "") goto L_asksorcererrobe;
+ if(@item$ == "") goto L_Close;
goto L_picked_item;
@@ -53,7 +87,6 @@ L_Next:
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 @item_new, 2250;
menu
"Sure. Here is one.", L_picked_item,
"I have to go pick that.", L_Close;
@@ -66,8 +99,9 @@ L_colour:
mes "[Selim]";
mes "\"Excellent. Now, what color do you want?\"";
next;
- setarray @items$, "RedDye", "GreenDye", "DarkBlueDye", "YellowDye", "LightBlueDye", "PinkDye", "BlackDye", "OrangeDye", "PurpleDye", "DarkGreenDye";
- setarray @item_names$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green";
+ set @r, 0;
+ set @j, getarraysize($@DYE_colors$);
+ callsub S_CloneColors;
set @default_choice$, "I have no dye.";
callfunc "DynamicItemMenu$";
cleararray @items$, "", getarraysize(@items$);
@@ -75,9 +109,17 @@ L_colour:
set @default_choice$, "";
if (@item$ == "") goto L_no_dye;
set @colour, @index;
- set @vial, 690 + @colour;
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.";
@@ -95,15 +137,17 @@ L_explain_dye:
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.\"";
- close;
+ goto L_Close;
L_finish:
- delitem @vial, 1;
+ 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 @item_new + @colour, 1;
+ getitem $@DYE_colors$[@colour] + @item_del$, 1;
mes "[Selim]";
- mes "\"Here's your " + @all_colours$[@colour] + " " + @name$ + "! Please let dry for a minute.\"";
- close;
+ mes "\"Here's your " + $@DYE_color_names$[@colour] + " " + @name$ + "! Please let dry for a minute.\"";
+ goto L_Close;
L_havenone:
mes "[Selim]";
@@ -113,5 +157,8 @@ L_havenone:
goto L_clothes_choice;
L_Close:
- close;
+ mes "\"Farewell and good luck in your journeys!\"";
+ close2;
+ emotion EMOTE_WINK, strcharinfo(0);
+ end;
}
diff --git a/world/map/npc/009-2/wyara.txt b/world/map/npc/009-2/wyara.txt
index c6875740..17f6bc61 100644
--- a/world/map/npc/009-2/wyara.txt
+++ b/world/map/npc/009-2/wyara.txt
@@ -27,8 +27,8 @@
set @has_magic, getskilllv(SKILL_MAGIC);
- if (@Q_status == @STATUS_PURIFY_ONCE) goto L_Magic_purify_once;
- if (@Q_status == @STATUS_PURIFY_TWICE) goto L_Magic_purify_done;
+ 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]";
if (!Sex)
@@ -63,7 +63,7 @@ L_Shop:
close;
L_StatReset:
- set @NpcName$, "Wyara";
+ set @npcname$, "Wyara";
callfunc "StatReset";
goto L_Close;
@@ -200,7 +200,7 @@ L_Q_auldsbel:
next;
goto L_Main;
-L_Magic_no:
+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;
@@ -208,20 +208,20 @@ L_Magic_no:
L_Magic:
if (!@has_magic)
- goto L_Magic_no;
+ 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_Magic_main;
+ goto L_M_main;
-L_Magic_main:
+L_M_main:
menu
- "Can you explain magic to me?", L_Magic_explain,
- "Can you teach me a spell?", L_Magic_spell,
- "Can you train me?", L_Magic_train,
+ "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_Magic_explain:
+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;
@@ -231,76 +231,76 @@ L_Magic_explain:
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_Magic_main;
+ goto L_M_main;
-L_Magic_spell:
+L_M_spell:
if (getskilllv(SKILL_MAGIC_NATURE) > 1)
- goto L_Magic_spell3;
+ goto L_M_spell3;
if (getskilllv(SKILL_MAGIC) > 1)
- goto L_Magic_spell2;
+ 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_Magic_main;
+ goto L_M_main;
-L_Magic_spell3:
+L_M_spell3:
mes "[Wyara the Witch]";
mes "\"Now that you know the basics of nature magic, here is one of my favourites: '" + getspellinvocation("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_Magic_spell2;
+ goto L_M_spell2;
-L_Magic_spell2:
+L_M_spell2:
mes "[Wyara the Witch]";
mes "\"Here is another useful one: '" + getspellinvocation("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_Magic_main;
+ goto L_M_main;
mes "[Wyara the Witch]";
mes "\"Married partners can find each other even more easily. Use the '" + getspellinvocation("sense-spouse") + "' spell instead.\"";
next;
- goto L_Magic_main;
+ goto L_M_main;
-L_Magic_train:
+L_M_train:
if (getskilllv(SKILL_MAGIC_NATURE) > 1)
- goto L_Magic_train_no;
+ goto L_M_train_no;
mes "[Wyara the Witch]";
if (@Q_status >= @STATUS_PURIFY_EXPLAINED)
- goto L_Magic_train_wb;
+ goto L_M_train_wb;
mes "\"Train you? No... you should talk to Sagatha.\"";
mes "She hesitates.";
next;
callfunc "SagathaStatus";
- if (@evil) goto L_Magic_train_evil;
+ 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_Magic_train_dispatch;
+ goto L_M_train_dispatch;
-L_Magic_train_evil:
+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_Magic_main;
+ goto L_M_main;
-L_Magic_train_wb:
+L_M_train_wb:
callfunc "SagathaStatus";
if (@evil)
- goto L_Magic_train_evil;
+ goto L_M_train_evil;
mes "\"Ah, yes, your training...\"";
next;
- goto L_Magic_train_dispatch;
+ goto L_M_train_dispatch;
-L_Magic_train_dispatch:
+L_M_train_dispatch:
if (@Q_status == @STATUS_PURIFY_TWICE)
- goto L_Magic_purify_done;
+ goto L_M_purify_done;
if (@Q_status == @STATUS_PURIFY_ONCE)
- goto L_Magic_purify_once;
+ goto L_M_purify_once;
if (@Q_status == @STATUS_PURIFY_EXPLAINED)
- goto L_Magic_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.\"";
@@ -313,60 +313,60 @@ L_Magic_train_dispatch:
next;
set @Q_status, @STATUS_PURIFY_EXPLAINED;
callsub S_update_var;
- goto L_Magic_purify_explained;
+ goto L_M_purify_explained;
-L_Magic_purify_explained:
+L_M_purify_explained:
if (countitem("PurificationPotion"))
- goto L_Magic_purify_doit;
+ 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_Magic_main,
- "Booring.", L_Magic_main,
+ "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_Magic_purify_nospace;
+ goto L_M_purify_nospace;
if (countitem("MauveHerb") < 20)
- goto L_Magic_purify_lacking;
+ goto L_M_purify_lacking;
if (countitem("MaggotSlime") < 20)
- goto L_Magic_purify_lacking;
+ 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_Magic_purify_doit;
+ goto L_M_purify_doit;
-L_Magic_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_Magic_purify_nospace:
+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_Magic_main;
+ goto L_M_main;
-L_Magic_purify_lacking:
+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_Magic_main;
+ goto L_M_main;
-L_Magic_purify_once:
+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_Magic_purify_doit2;
+ goto L_M_purify_doit2;
mes "[Wyara the Witch]";
mes "\"I'll need twenty more maggot slimes and leaves of mauve.\"";
next;
@@ -378,25 +378,25 @@ L_Magic_purify_once:
L_Next1:
getinventorylist;
if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20))
- goto L_Magic_purify_nospace;
+ goto L_M_purify_nospace;
if (countitem("MauveHerb") < 20)
- goto L_Magic_purify_lacking;
+ goto L_M_purify_lacking;
if (countitem("MaggotSlime") < 20)
- goto L_Magic_purify_lacking;
+ 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_Magic_purify_doit2;
+ goto L_M_purify_doit2;
-L_Magic_purify_doit2:
+L_M_purify_doit2:
mes "[Wyara the Witch]";
mes "\"Please apply this one quickly, again.\"";
close;
-L_Magic_purify_done:
+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.\"";
@@ -406,7 +406,7 @@ L_Magic_purify_done:
next;
menu
"Very well.", L_Next2,
- "No way!", L_Magic_purify_abort;
+ "No way!", L_M_purify_abort;
L_Next2:
mes "[Wyara the Witch]";
@@ -430,29 +430,29 @@ L_Next2:
callsub S_update_var;
close;
-L_Magic_purify_abort:
+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_Magic_train_no:
+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_Magic_train_sagatha;
+ goto L_M_train_sagatha;
-L_Magic_train_sagatha:
+L_M_train_sagatha:
menu
- "OK.", L_Magic_main,
+ "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_Magic_train_sagatha_fail;
+ goto L_M_train_s_fail;
if (getskilllv(SKILL_MAGIC) < 2)
- goto L_Magic_train_sagatha_lvl1;
+ 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)
@@ -461,7 +461,7 @@ L_Next3:
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_Magic_main;
+ 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.\"";
@@ -471,9 +471,9 @@ L_Next3:
next;
set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_DRUIDTREE;
menu
- "What is that tree?", L_Magic_train_tree_backgd,
+ "What is that tree?", L_M_train_t_backgd,
"How should I tend to it?", L_Next4,
- "Nah.", L_Magic_main;
+ "Nah.", L_M_main;
L_Next4:
mes "[Wyara the Witch]";
@@ -483,9 +483,9 @@ L_Next4:
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_Magic_main;
+ goto L_M_main;
-L_Magic_train_tree_backgd:
+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;
@@ -516,40 +516,40 @@ L_Magic_train_tree_backgd:
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_Magic_tree_menu;
+ goto L_M_t_menu;
-L_Magic_tree_menu:
+L_M_t_menu:
menu
- "How should I give him water?", L_Magic_tree_water,
- "How should I thank him?", L_Magic_tree_remind,
- "I will.", L_Magic_main,
- "No.", L_Magic_main;
+ "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_Magic_tree_water:
+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_Magic_tree_menu;
+ goto L_M_t_menu;
-L_Magic_tree_remind:
+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_Magic_tree_menu;
+ goto L_M_t_menu;
-L_Magic_train_sagatha_fail:
+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_Magic_main;
+ goto L_M_main;
-L_Magic_train_sagatha_lvl1:
+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_Magic_main;
+ goto L_M_main;
L_Close:
close;
diff --git a/world/map/npc/009-3/_mobs.txt b/world/map/npc/009-3/_mobs.txt
index 74852403..ab403a12 100644
--- a/world/map/npc/009-3/_mobs.txt
+++ b/world/map/npc/009-3/_mobs.txt
@@ -7,7 +7,7 @@
009-3,145,75,110,151|monster|CaveMaggot|1056,20,100000ms,30000ms,Mob009-3::On1056
-009-3,0,0,0|script|Mob009-3|-1
+009-3,0,0,0|script|Mob009-3|32767
{
end;
diff --git a/world/map/npc/009-3/_warps.txt b/world/map/npc/009-3/_warps.txt
index f8d2a2ea..ad620156 100644
--- a/world/map/npc/009-3/_warps.txt
+++ b/world/map/npc/009-3/_warps.txt
@@ -1,7 +1,7 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Hurnscald Cave warps
-009-3,173,20|warp|To Cellar|-1,-1,009-2,147,89
-009-3,20,57|warp|To Lake Cave|-1,-1,011-4,129,87
-009-3,157,30|warp|To Northern Mines|-1,-1,018-3,179,180
-009-3,117,19|warp|To Woodland Hills Cave|-1,-1,013-3,160,102
+009-3,173,20|warp|To Cellar#009-30|-1,-1,009-2,147,89
+009-3,20,57|warp|To Lake Cave#009-31|-1,-1,011-4,129,87
+009-3,157,30|warp|To Northern Min#009-32|-1,-1,018-3,179,180
+009-3,117,19|warp|To Woodland Hil#009-33|-1,-1,013-3,160,102
diff --git a/world/map/npc/009-4/_mobs.txt b/world/map/npc/009-4/_mobs.txt
index 64e2c4da..e81f350e 100644
--- a/world/map/npc/009-4/_mobs.txt
+++ b/world/map/npc/009-4/_mobs.txt
@@ -10,7 +10,7 @@
009-4,38,116,24,15|monster|Maggot|1002,3,20000ms,14000ms,Mob009-4::On1002
-009-4,0,0,0|script|Mob009-4|-1
+009-4,0,0,0|script|Mob009-4|32767
{
end;
diff --git a/world/map/npc/009-4/_warps.txt b/world/map/npc/009-4/_warps.txt
index ff172624..0eefbe26 100644
--- a/world/map/npc/009-4/_warps.txt
+++ b/world/map/npc/009-4/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Orum Caves warps
-009-4,37,112|warp|To Hurnscald Cave|-1,-1,009-3,163,114
-009-4,72,136|warp|To Torches Cave|-1,-1,009-4,36,27
-009-4,37,123|warp|To Torches Cave|-1,-1,009-4,36,27
-009-4,72,125|warp|To Hurnscald Cave|-1,-1,009-3,163,114
-009-4,103,22|warp|To Torches Cave|-1,-1,009-4,51,46
-009-4,103,76|warp|To Torches Cave|-1,-1,009-4,51,46
+009-4,37,112|warp|To Hurnscald Ca#009-40|-1,-1,009-3,163,114
+009-4,72,136|warp|To Torches Cave#009-41|-1,-1,009-4,36,27
+009-4,37,123|warp|To Torches Cave#009-42|-1,-1,009-4,36,27
+009-4,72,125|warp|To Hurnscald Ca#009-43|-1,-1,009-3,163,114
+009-4,103,22|warp|To Torches Cave#009-44|-1,-1,009-4,51,46
+009-4,103,76|warp|To Torches Cave#009-45|-1,-1,009-4,51,46
diff --git a/world/map/npc/009-4/barriers.txt b/world/map/npc/009-4/barriers.txt
index adaa384e..4a2055fa 100644
--- a/world/map/npc/009-4/barriers.txt
+++ b/world/map/npc/009-4/barriers.txt
@@ -9,8 +9,8 @@ function|script|GetBarrierColor
L_GetBarrierColor:
set @Mask, 15;
- set @Shift, 4 * @Barrier;
- set @BarrierColor, (OrumQuestBarrier >> @Shift) & @Mask;
+ set @shift, 4 * @Barrier;
+ set @BarrierColor, (OrumQuestBarrier >> @shift) & @Mask;
return;
L_Error:
@@ -44,7 +44,7 @@ L_Error2:
// Starting Barrier / Quest Entrance
-009-4,37,119,0|script|#OrumCaveStartMessage|127,0,0
+009-4,37,119,0|script|#OrumCaveStartMessage|32767,0,0
{
if (OrumQuest >= 3) end;
if (OrumQuest == 2) goto L_Started;
@@ -55,10 +55,10 @@ L_Error2:
L_Started:
message strcharinfo(0), "The torches dim as you approach, granting you passage.";
set OrumQuest, 3;
- close;
+ end;
}
-009-4,37,120,0|script|#OrumCaveStartBarrier|127,0,0
+009-4,37,120,0|script|#OrumCaveStartBarrier|32767,0,0
{
if (OrumQuest >= 3) end;
warp "009-4", 37, 118;
@@ -66,18 +66,19 @@ L_Started:
}
// First Barrier
-009-4,57,29,0|script|#OrumCaveFirstBarrier|127,0,0
+009-4,57,29,0|script|#OrumCaveFirstBarrier|32767,0,0
{
- if (OrumQuest >= 5) close;
+ 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;
- close;
+ end;
}
// Second Barrier
-009-4,61,55,0|script|#OrumCaveSecondMessage|127,0,0
+009-4,61,55,0|script|#OrumCaveSecondMessage|32767,0,0
{
+ if (OrumQuest >= 9) end;
if (OrumQuest == 3) set OrumQuest, 4;
set @Barrier, 0;
@@ -103,7 +104,7 @@ L_Advance_Quest:
end;
}
-009-4,61,54,0|script|#OrumCaveSecondBarrier|127,0,0
+009-4,61,54,0|script|#OrumCaveSecondBarrier|32767,0,0
{
if (OrumQuest >= 9) end;
warp "009-4", 60, 56;
@@ -111,8 +112,9 @@ L_Advance_Quest:
}
// Third Barrier
-009-4,24,65,0|script|#OrumCaveThirdMessage|127,0,0
+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;
@@ -152,7 +154,7 @@ L_Advance_Quest:
end;
}
-009-4,24,66,0|script|#OrumCaveThirdBarrier|127,0,0
+009-4,24,66,0|script|#OrumCaveThirdBarrier|32767,0,0
{
if (OrumQuest >= 10) end;
warp "009-4", 23, 64;
@@ -160,7 +162,7 @@ L_Advance_Quest:
}
// Ending Barrier
-009-4,48,37,0|script|#OrumCaveEndMessage|127,0,0
+009-4,48,37,0|script|#OrumCaveEndMessage|32767,0,0
{
if (OrumQuest >= 11) end;
if (OrumQuest == 3) set OrumQuest, 4;
@@ -272,7 +274,7 @@ L_Advance_Quest:
close;
}
-009-4,48,38,0|script|#OrumCaveEndBarrier|127,0,0
+009-4,48,38,0|script|#OrumCaveEndBarrier|32767,0,0
{
if (OrumQuest >= 11) end;
warp "009-4", 47, 36;
diff --git a/world/map/npc/009-4/orum.txt b/world/map/npc/009-4/orum.txt
index 84afced4..df9ac2d9 100644
--- a/world/map/npc/009-4/orum.txt
+++ b/world/map/npc/009-4/orum.txt
@@ -384,7 +384,7 @@ L_Still_Gathering:
mes "[Orum]";
mes "\"Have you finished gathering those things yet?\"";
menu
- "I believe I have!", L_Finished_Gathering_More,
+ "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;
@@ -406,13 +406,13 @@ L_List_Materials_More:
mes "\"And try not to lose this one. I don't have much more to write on!\"";
goto L_Close;
-L_Finished_Gathering_More:
+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_Materials_More;
+ goto L_Missing_Mats_M;
delitem "IronPowder", @BT_IRONPOWDER;
delitem "PileOfAsh", @BT_PILESOFASH;
@@ -440,7 +440,7 @@ L_Finished_Gathering_More:
set OrumQuest, 8;
goto L_Close;
-L_Missing_Materials_More:
+L_Missing_Mats_M:
mes "Orum carefully looks over all of the items then squints his eyes at you.";
next;
mes "[Orum]";
@@ -490,7 +490,7 @@ L_More_Powder_Make:
countitem("GambogeHerb") < @BT_HERBS ||
countitem("AlizarinHerb") < @BT_HERBS ||
countitem("CobaltHerb") < @BT_HERBS)
- goto L_Missing_Materials_More;
+ goto L_Missing_Mats_M;
delitem "IronPowder", @BT_IRONPOWDER;
delitem "PileOfAsh", @BT_PILESOFASH;
diff --git a/world/map/npc/009-4/torches.txt b/world/map/npc/009-4/torches.txt
index 7049b446..4ad0c686 100644
--- a/world/map/npc/009-4/torches.txt
+++ b/world/map/npc/009-4/torches.txt
@@ -4,8 +4,8 @@ function|script|GetTorchColor
if (@Torch < 0 || @Torch > 2) goto L_Error;
set @Mask, 15;
- set @Shift, 4 * @Torch;
- set @TorchColor, (OrumQuestTorch >> @Shift) & @Mask;
+ set @shift, 4 * @Torch;
+ set @TorchColor, (OrumQuestTorch >> @shift) & @Mask;
return;
L_Error:
@@ -36,8 +36,8 @@ function|script|GetTorchIntensity
if (@Torch < 0 || @Torch > 2) goto L_Error;
set @Mask, 15;
- set @Shift, 4 * (@Torch + 3);
- set @TorchIntensity, (OrumQuestTorch >> @Shift) & @Mask;
+ set @shift, 4 * (@Torch + 3);
+ set @TorchIntensity, (OrumQuestTorch >> @shift) & @Mask;
return;
L_Error:
diff --git a/world/map/npc/009-4/waric.txt b/world/map/npc/009-4/waric.txt
index 29eff17b..83c1ba78 100644
--- a/world/map/npc/009-4/waric.txt
+++ b/world/map/npc/009-4/waric.txt
@@ -1,6 +1,6 @@
//# see detailed description at orum.txt
-009-4,99,33,0|script|#WizardTrap|127,2,1
+009-4,99,33,0|script|#WizardTrap|32767,2,1
{
set @gender$, "They're";
if (Sex == 0)
diff --git a/world/map/npc/009-5/_mobs.txt b/world/map/npc/009-5/_mobs.txt
index 7ba8106a..78d520be 100644
--- a/world/map/npc/009-5/_mobs.txt
+++ b/world/map/npc/009-5/_mobs.txt
@@ -3,7 +3,7 @@
-009-5,0,0,0|script|Mob009-5|-1
+009-5,0,0,0|script|Mob009-5|32767
{
end;
}
diff --git a/world/map/npc/009-5/_warps.txt b/world/map/npc/009-5/_warps.txt
index a2862a16..00224f0f 100644
--- a/world/map/npc/009-5/_warps.txt
+++ b/world/map/npc/009-5/_warps.txt
@@ -1,4 +1,4 @@
// 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|to Hurnscald|1,-1,009-3,162,81
+009-5,53,74|warp|to Hurnscald#009-50|1,-1,009-3,162,81
diff --git a/world/map/npc/009-6/_mobs.txt b/world/map/npc/009-6/_mobs.txt
index e0437642..adb1e44e 100644
--- a/world/map/npc/009-6/_mobs.txt
+++ b/world/map/npc/009-6/_mobs.txt
@@ -3,7 +3,7 @@
-009-6,0,0,0|script|Mob009-6|-1
+009-6,0,0,0|script|Mob009-6|32767
{
end;
}
diff --git a/world/map/npc/009-6/_warps.txt b/world/map/npc/009-6/_warps.txt
index 05e14629..23c2abe3 100644
--- a/world/map/npc/009-6/_warps.txt
+++ b/world/map/npc/009-6/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Cave warps
-009-6,36,48|warp|To Hurnscald Cave|-1,-1,009-3,162,82
+009-6,36,48|warp|To Hurnscald Ca#009-60|-1,-1,009-3,162,82
diff --git a/world/map/npc/009-6/brodomir.txt b/world/map/npc/009-6/brodomir.txt
index 9b2c55d5..63bce759 100644
--- a/world/map/npc/009-6/brodomir.txt
+++ b/world/map/npc/009-6/brodomir.txt
@@ -133,11 +133,11 @@ L_Go:
set $@BRODOMIR_MONEY, @brodomir_money;
set $@brodomir_delay_seconds, 600;
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;
+ 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;
+ 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;
+ 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_START_TIME, gettimetick(2) + $@brodomir_delay_seconds;
@@ -146,13 +146,10 @@ L_Go:
goto L_Close;
L_Wait:
- set $@brodomir_seconds, ($@BRODOMIR_START_TIME - gettimetick(2));
+ set @ms, ($@BRODOMIR_START_TIME - gettimetick(2)) * 1000;
+ callfunc "HumanTime";
mes "[Brodomir]";
- if ($@brodomir_seconds/60 == 0)
- mes "\"Just a little longer. I will bring you there in " + $@brodomir_seconds + " seconds.\"";
- if ($@brodomir_seconds/60 > 0)
- mes "\"Just a little longer. I will bring you there in " + $@brodomir_seconds/60 + " minute(s).\"";
- set $@brodomir_seconds, 0;
+ mes "\"Just a little longer. I will bring you there in " + @time$ + ".\"";
goto L_Close;
OnTimer5000:
@@ -169,12 +166,12 @@ L_Warp:
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", "PvP On!", 0;
+ mapannounce "009-5", "Brodomir : PvP On!", 0;
pvpon "009-5";
end;
L_Warpfail:
- mapannounce "009-6", "There are not enough players around to start!", 0;
+ 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)
diff --git a/world/map/npc/009-7/_mobs.txt b/world/map/npc/009-7/_mobs.txt
index deae9123..bb641d0c 100644
--- a/world/map/npc/009-7/_mobs.txt
+++ b/world/map/npc/009-7/_mobs.txt
@@ -3,7 +3,7 @@
-009-7,0,0,0|script|Mob009-7|-1
+009-7,0,0,0|script|Mob009-7|32767
{
end;
}
diff --git a/world/map/npc/009-7/_warps.txt b/world/map/npc/009-7/_warps.txt
index 26acecf5..6977d948 100644
--- a/world/map/npc/009-7/_warps.txt
+++ b/world/map/npc/009-7/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Hurnscald Storage|-1,-1,009-2,38,103
+009-7,21,19|warp|To Hurnscald St#009-70|-1,-1,009-2,38,103
diff --git a/world/map/npc/009-7/battlemaster.txt b/world/map/npc/009-7/battlemaster.txt
index bbac54e9..c7316913 100644
--- a/world/map/npc/009-7/battlemaster.txt
+++ b/world/map/npc/009-7/battlemaster.txt
@@ -5,7 +5,7 @@
mes "\"Hey, you seem tough enough! Would you like to prove your skills?\"";
next;
menu
- "PvP Cave (50gp)", L_PVP,
+ "PvP Cave (50gp)", L_Pvp,
"Last Man Standing (150gp)", L_Brodomir,
"Nevermind.", L_Next;
@@ -30,7 +30,7 @@ L_Brodomir:
savepoint "009-7", 39, 37;
end;
-L_PVP:
+L_Pvp:
if (Zeny < 50) goto L_NoMoney;
set Zeny, Zeny - 50;
mes "[Battle Master]";
@@ -58,33 +58,33 @@ function|script|fightclub_GoBack
L_GoBack:
set DUELS, DUELS &~ $@DuelPvpBit;
warp "009-7", 39, 37;
- gmcommand "@alive";
+ heal MaxHp, MaxSp;
message strcharinfo(0), "Thank you for participating!";
return;
}
-009-6,36,48,0|script|#GoBack2Duels|127,0,1
+009-6,36,48,0|script|#GoBack2Duels|32767,0,1
{
callfunc "fightclub_GoBack";
end;
}
-009-5,53,74,0|script|#GoBack3Duels|127,3,1
+009-5,53,74,0|script|#GoBack3Duels|32767,3,1
{
callfunc "fightclub_GoBack";
end;
}
-009-3,158,83,0|script|#GoBack5Duels|127,7,0
+009-3,158,83,0|script|#GoBack5Duels|32767,7,0
{
callfunc "fightclub_GoBack";
end;
}
-001-2,130,22,0|script|#GoBack4Duels|127,1,1
+001-2,130,22,0|script|#GoBack4Duels|32767,1,1
{
callfunc "fightclub_GoBack";
end;
}
-001-3,73,28,0|script|#GoBack1Duels|127,0,1
+001-3,73,28,0|script|#GoBack1Duels|32767,0,1
{
callfunc "fightclub_GoBack";
end;
diff --git a/world/map/npc/009-7/core.txt b/world/map/npc/009-7/core.txt
index 03eb2095..7ee652d8 100644
--- a/world/map/npc/009-7/core.txt
+++ b/world/map/npc/009-7/core.txt
@@ -2,9 +2,9 @@
function|script|fightclub_sendrequest
{
- goto L_Try;
+ goto L_try;
-L_Try:
+L_try:
set @loop, 0;
goto L_Loop;
@@ -22,7 +22,7 @@ L_ShiftQueue:
set @Duel_Queue$[(@loop + 1)], "";
set @Duel_Queue[(@loop + 1)], 0;
set @loop, (@loop + 1);
- if(@loop >= getarraysize(@Duel_Queue)) goto L_Try;
+ if(@loop >= getarraysize(@Duel_Queue)) goto L_try;
goto L_ShiftQueue;
L_Full:
@@ -235,9 +235,9 @@ function|script|fightclub_Victory
function|script|fightclub_DestroyMe
{
set @Duel_Fighter, 0;
+ setpvpchannel @previous_channel;
sc_end 132; sc_end 14; sc_end 37; sc_end 185; sc_end 194; sc_end 195; sc_end 196; sc_end 197; sc_end 198; sc_end 199; // remove effects
- percentheal -100, 0; // doing @killer is unreliable
- gmcommand "@alive"; // refill hp/mana
+ heal MaxHp, MaxSp; // refill hp/mana
if(getmap() == "009-7") warp "009-7", rand($@fightclub_x1, $@fightclub_x2), rand(($@fightclub_y1 - 2), ($@fightclub_y1 - 3));
return;
}
@@ -303,6 +303,7 @@ function|script|fightclub_StartUp
setarray $@Duel_Queue_Red$, "";
cleararray $@Duel_Queue_Red$, "", ($@Duel_QueueLimit + 1);
set $@Duel_TotalTime, 0;
+ set $@Duel_Channel, 20;
if($fightclub_enabled) set $fightclub_enabled, 0; // this var moved to $SANGUINE
// DUELS flags below
set $@DuelPvpBit, (1 << 1);
@@ -435,7 +436,7 @@ function|script|fightclub_enter
{
set @Duel_Fighter, 1;
warp "009-7", rand($@fightclub_x1,$@fightclub_x2), rand($@fightclub_y1,$@fightclub_y2);
- gmcommand "@alive"; // ensure that you can't duel wih a corpse
+ heal MaxHp, MaxSp; // ensure that you can't duel wih a corpse
sc_end 132; sc_end 14; sc_end 37; sc_end 185; sc_end 194; sc_end 195; sc_end 196; sc_end 197; sc_end 198; sc_end 199; // remove effects
message strcharinfo(0), "Get Ready.";
addtimer ($@Duel_TimeBeforeStart * 1000), "#FightClubUtils::OnBecomeKiller"; // call fightclub_enter_killer in 3 seconds
@@ -445,8 +446,8 @@ function|script|fightclub_enter
// ** called 3 seconds after a player enters the ring
function|script|fightclub_enter_killer
{
- gmcommand "@killable";
- gmcommand "@killer"; // add both killable and killer so if one doesn't kick in, the other (hopefully) will
+ if(getpvpflag(0) != $@Duel_Channel) set @previous_channel, getpvpflag(0);
+ setpvpchannel $@Duel_Channel;
message strcharinfo(0), "GO !";
return;
}
@@ -459,3 +460,36 @@ function|script|fightclub_exit
if(@Duel_HasPendingRequest) message strcharinfo(0), "You have received a new duel request.";
return;
}
+
+
+
+// ** called on OnPCKilledEvent
+function|script|fightclub_event_killed
+{
+ set @duel_killer, 0;
+ if(@Duel_Fighter != 1) goto L_End;
+ if(getmap() != "009-7") goto L_End;
+ set $@duel_loser, getcharid(3); // grab the rid of the victim
+ set $@duel_winner, @killerrid; // grab the rid of the killer
+ set @killerrid, 0; // reset killerid
+ callfunc "fightclub_death";
+ goto L_End;
+L_End:
+ if(getpvpflag(0) == $@Duel_Channel) setpvpflag @previous_channel;
+ return;
+}
+
+// ** called on OnPCDieEvent
+function|script|fightclub_event_die
+{
+ set @duel_killer, 0;
+ if(@Duel_Fighter != 1) goto L_End;
+ if(getmap() != "009-7") goto L_End;
+ set @killerrid, 0; // since the player was not murdered, the killerrid is 0
+ set $@duel_loser, getcharid(3); // grab the rid of the victim
+ callfunc "fightclub_death";
+ goto L_End;
+L_End:
+ if(getpvpflag(0) == $@Duel_Channel) setpvpflag @previous_channel;
+ return;
+}
diff --git a/world/map/npc/009-7/debug.txt b/world/map/npc/009-7/debug.txt
index f5283898..94735b3e 100644
--- a/world/map/npc/009-7/debug.txt
+++ b/world/map/npc/009-7/debug.txt
@@ -19,6 +19,7 @@ L_Menu:
mes "##3$##0Duel_LastDuel: ##7" + $Duel_LastDuel + "##0";
mes "---";
mes "##2@##0Duel_Fighter: ##7" + @Duel_Fighter + "##0";
+ mes "pvp channel: ##7" + getpvpflag(0) + "##0";
next;
menu
"toggle|Toggle $Duel_Enabled", L_DuelEnabled,
@@ -31,20 +32,11 @@ L_Menu:
"edit|Set $@Duel_PlayerQueueLimit", L_PlayerQueueLimit,
"edit|Set $@Duel_PlayerQueueTimeOut", L_PlayerQueueTimeOut,
"edit|Set $Duel_LastDuel", L_LastDuel,
+ "edit|Set pvp channel", L_Channel,
"toggle|Toggle @Duel_Fighter", L_DuelFighter,
- "toggle|Toggle killer state", L_Killer,
- "toggle|Toggle killable state", L_Killable,
"restart|Restart fightclub.", L_Restart,
"quit|Nevermind.", L_End;
-L_Killer:
- gmcommand "@killer";
- goto L_Menu;
-
-L_Killable:
- gmcommand "@killable";
- goto L_Menu;
-
L_DuelEnabled:
if(@due < 1) goto L_DuelEnabled2;
set $SANGUINE, $SANGUINE | $@SV_FCDBit;
@@ -127,6 +119,13 @@ L_LastDuel:
next;
goto L_Restart;
+L_Channel:
+ mes "range: 0~32767";
+ input @chn;
+ if(@last > 32767) goto L_OutOfRange;
+ setpvpchannel @chn;
+ goto L_Menu;
+
L_OutOfRange:
mes "Value out of range or empty.";
goto L_Menu;
diff --git a/world/map/npc/009-7/eventHandler.txt b/world/map/npc/009-7/eventHandler.txt
index 7104d0a7..d20fff4d 100644
--- a/world/map/npc/009-7/eventHandler.txt
+++ b/world/map/npc/009-7/eventHandler.txt
@@ -15,7 +15,7 @@ L_Enter:
end;
}
-009-7,22,38,0|script|#FightClubUtils|127
+009-7,22,38,0|script|#FightClubUtils|32767
{
end;
@@ -44,7 +44,7 @@ OnCommandIntrusion:
end;
}
-009-7,20,45,0|script|#FightClubTimeLimit|127,0,0
+009-7,20,45,0|script|#FightClubTimeLimit|32767,0,0
{
end;
@@ -76,7 +76,7 @@ OnInit:
end;
}
-009-7,20,44,0|script|#FightClubHandler|127,0,0
+009-7,20,44,0|script|#FightClubHandler|32767,0,0
{
end;
diff --git a/world/map/npc/009-7/mapflags.txt b/world/map/npc/009-7/mapflags.txt
index 9fdd3a99..b0589894 100644
--- a/world/map/npc/009-7/mapflags.txt
+++ b/world/map/npc/009-7/mapflags.txt
@@ -1,2 +1,3 @@
009-7|mapflag|noteleport
009-7|mapflag|monster_noteleport
+009-7|mapflag|nopvp
diff --git a/world/map/npc/009-7/shops.txt b/world/map/npc/009-7/shops.txt
index aca61234..c112d60c 100644
--- a/world/map/npc/009-7/shops.txt
+++ b/world/map/npc/009-7/shops.txt
@@ -1,3 +1,3 @@
009-7,34,23,0|shop|Bartender#Duels|177,Beer:*1,IronPotion:*1,ConcentrationPotion:*1,SmallManaElixir:*9,BottleOfWater:*1,Milk:*1
-009-7,27,26,0|shop|Garçon#Duels|180,RoastedMaggot:*1,PickledBeets:*30,ChickenLeg:*1,Steak:*1,Beer:*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/010-1/_mobs.txt b/world/map/npc/010-1/_mobs.txt
index 2536403e..d73c842f 100644
--- a/world/map/npc/010-1/_mobs.txt
+++ b/world/map/npc/010-1/_mobs.txt
@@ -16,7 +16,7 @@
010-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms,Mob010-1::On1055
-010-1,0,0,0|script|Mob010-1|-1
+010-1,0,0,0|script|Mob010-1|32767
{
end;
diff --git a/world/map/npc/010-1/_warps.txt b/world/map/npc/010-1/_warps.txt
index 88acb354..debab9af 100644
--- a/world/map/npc/010-1/_warps.txt
+++ b/world/map/npc/010-1/_warps.txt
@@ -1,8 +1,8 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-010-1,49,24|warp|To Woodland|0,-1,011-1,48,103
-010-1,13,55|warp|To Woodland|-1,0,015-1,92,54
-010-1,36,94|warp|To Dimond's Cove|-1,-1,010-2,32,44
-010-1,56,105|warp|To Woodland|1,-1,016-1,56,19
-010-1,131,54|warp|To Woodland|-1,0,007-1,21,53
+010-1,49,24|warp|To Woodland#010-10|0,-1,011-1,48,103
+010-1,13,55|warp|To Woodland#010-11|-1,0,015-1,92,54
+010-1,36,94|warp|To Dimond's Cov#010-12|-1,-1,010-2,32,44
+010-1,56,105|warp|To Woodland#010-13|1,-1,016-1,56,19
+010-1,131,54|warp|To Woodland#010-14|-1,0,007-1,21,53
diff --git a/world/map/npc/010-2/_mobs.txt b/world/map/npc/010-2/_mobs.txt
index 258716f7..3b258bd5 100644
--- a/world/map/npc/010-2/_mobs.txt
+++ b/world/map/npc/010-2/_mobs.txt
@@ -3,7 +3,7 @@
-010-2,0,0,0|script|Mob010-2|-1
+010-2,0,0,0|script|Mob010-2|32767
{
end;
}
diff --git a/world/map/npc/010-2/_warps.txt b/world/map/npc/010-2/_warps.txt
index 9e737415..81b6ade2 100644
--- a/world/map/npc/010-2/_warps.txt
+++ b/world/map/npc/010-2/_warps.txt
@@ -1,10 +1,10 @@
// 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|To Cellar|-1,-1,010-2,35,68
-010-2,32,45|warp|To Outside|-1,-1,010-1,36,95
-010-2,40,27|warp|To Second Floor|1,-1,010-2,83,28
-010-2,36,68|warp|To First Floor|-1,-1,010-2,28,24
-010-2,67,27|warp|To Third Floor|1,-1,010-2,67,72
-010-2,83,29|warp|To First Floor|1,-1,010-2,40,28
-010-2,67,73|warp|To Second Floor|1,-1,010-2,67,28
+010-2,27,24|warp|To Cellar#010-20|-1,-1,010-2,35,68
+010-2,32,45|warp|To Outside#010-21|-1,-1,010-1,36,95
+010-2,40,27|warp|To Second Floor#010-22|1,-1,010-2,83,28
+010-2,36,68|warp|To First Floor#010-23|-1,-1,010-2,28,24
+010-2,67,27|warp|To Third Floor#010-24|1,-1,010-2,67,72
+010-2,83,29|warp|To First Floor#010-25|1,-1,010-2,40,28
+010-2,67,73|warp|To Second Floor#010-26|1,-1,010-2,67,28
diff --git a/world/map/npc/010-2/band.txt b/world/map/npc/010-2/band.txt
index 86fec363..cabc31bc 100644
--- a/world/map/npc/010-2/band.txt
+++ b/world/map/npc/010-2/band.txt
@@ -27,7 +27,7 @@ function|script|DimondBand
L_Return:
return;
}
--|script|#BandConfig|-1
+-|script|#BandConfig|32767
{
end;
diff --git a/world/map/npc/010-2/loratay.txt b/world/map/npc/010-2/loratay.txt
index c2fa1062..6843bfcc 100644
--- a/world/map/npc/010-2/loratay.txt
+++ b/world/map/npc/010-2/loratay.txt
@@ -44,20 +44,19 @@ OnInit:
set @FINEDRESS_COCOONS, 180;
set @SORCERER_ROBE_SEW_ZENY, 25000;
set @SORCERER_ROBE_NUM_COTTON_CLOTH, 2;
- setarray @item_colors$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green", "white";
set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
- if (@loratay_asking_robe == 1) goto L_ExamineSorcererRobe;
+ 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_proposal_intro;
- if (@wg_state == 14) goto L_proposal_show_materials;
- if (@wg_state == 15) goto L_proposal_search_items;
- if (@wg_state == 16) goto L_proposal_retrieve_design;
- if (@wg_state == 17) goto L_proposal_bringing_design;
- if (@wg_state == 18) goto L_proposal_wait_dress_finished;
- if (@wg_state == 19) goto L_proposal_dress_finished;
- if (@wg_state >= 20 && @wg_state < 23) goto L_proposal_deliver_dress;
+ 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);
@@ -284,7 +283,7 @@ L_main_menu:
"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_sorcerer_robe_linecolor,
+ "Can you enhance a sorcerer robe with another line color?", L_sr_linecolor,
"Goodbye for now.", L_end;
L_Fur:
@@ -341,13 +340,13 @@ L_Next2:
callfunc "setWGState";
goto L_Close;
-L_proposal_intro:
+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_proposal_show_materials:
+L_show_materials:
mes "[Lora Tay the Seamstress]";
mes "\"Did you talk to Agostine about his idea?\"";
next;
@@ -374,9 +373,9 @@ L_Next4:
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_proposal_search_items;
+ goto L_search_items;
-L_proposal_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.\"";
@@ -384,7 +383,7 @@ L_proposal_search_items:
menu
"I will go get them right away!", L_Next5,
- "Here you are.", L_proposal_give_items,
+ "Here you are.", L_give_items,
@FINEDRESS_COCOONS+" silk cocoons for a dress? Find somebody else.", L_end;
L_Next5:
@@ -392,14 +391,14 @@ L_Next5:
callfunc "setWGState";
goto L_Close;
-L_proposal_not_enough_items:
+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_proposal_give_items:
+L_give_items:
if (countitem ("SilkCocoon") < @FINEDRESS_COCOONS)
- goto L_proposal_not_enough_items;
+ goto L_not_enough_items;
delitem "SilkCocoon", @FINEDRESS_COCOONS;
set @wg_state, 16;
callfunc "setWGState";
@@ -409,9 +408,9 @@ L_proposal_give_items:
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_proposal_retrieve_design;
+ goto L_retrieve_design;
-L_proposal_retrieve_design:
+L_retrieve_design:
mes "[Lora Tay the Seamstress]";
mes "\"May you go retrieve the design from Agostine?\"";
next;
@@ -419,7 +418,7 @@ L_proposal_retrieve_design:
"Certainly I'll be back soon!", L_Close,
"Actually I want something else...", L_main_menu;
-L_proposal_bringing_design:
+L_bringing_design:
mes "[Lora Tay the Seamstress]";
mes "\"Welcome back, did you get the drawings I requested?\"";
next;
@@ -433,20 +432,20 @@ L_Next6:
next;
set @wg_state, 18;
callfunc "setWGState";
- goto L_proposal_wait_dress_finished;
+ goto L_wait_dress_finished;
-L_proposal_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_proposal_dress_finished;
+ 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_proposal_dress_finished:
+L_dress_finished:
set @wg_state, 19;
callfunc "setWGState";
mes "[Lora Tay the Seamstress]";
@@ -475,7 +474,7 @@ L_Next8:
callfunc "setWGState";
goto L_Close;
-L_proposal_deliver_dress:
+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
@@ -487,28 +486,30 @@ L_desert_hat:
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, 0, getarraysize(@items);
+ cleararray @items$, "", getarraysize(@items$);
cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items, 724, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149;
- setarray @item_names$, "Here is a Cotton Headband.", "Here is a Red Cotton Headband.", "Here is a Green Cotton Headband.", "Here is a Dark Blue Cotton Headband.", "Here is a Yellow Cotton Headband.", "Here is a Light Blue Cotton Headband.", "Here is a Pink Cotton Headband.", "Here is a Black Cotton Headband.", "Here is an Orange Cotton Headband.", "Here is a Puple Cotton Headband.", "Here is a Dark Green Cotton Headband.";
+ set @o, 1;
+ setarray @items$, "CottonHeadband";
+ setarray @item_names$, "Here is a Cotton Headband.";
+ callsub S_CottonHeadbandColors;
- callfunc "DynamicItemMenu";
- if (@item == 0)
+ callfunc "DynamicItemMenu$";
+ if (@item$ == "")
goto L_main_menu;
- if (@item == 724)
- set @genitem, 723;
- if (@item != 724)
- set @genitem, @item - 10;
- if (countitem(@item) < 1)
+ 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 @item$, 1;
delitem "CottonCloth", 3;
set Zeny, Zeny - 300;
- getitem @genitem, 1;
+ 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.";
@@ -520,6 +521,13 @@ L_desert_hat:
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...\"";
@@ -691,9 +699,9 @@ L_tanktop_menu:
L_tanktop_short:
if (countitem ("CottonCloth") < 5)
- goto L_tanktop_insufficient_cloth;
+ goto L_tanktop_ins_cloth;
if (Zeny < 1000)
- goto L_tanktop_insufficient_Zeny;
+ goto L_tanktop_ins_Zeny;
getinventorylist;
if (@inventorylist_count == 100 && countitem("CottonCloth") > 5)
goto L_TooMany;
@@ -710,9 +718,9 @@ L_tanktop_short:
L_tanktop_long:
if (countitem ("CottonCloth") < 6)
- goto L_tanktop_insufficient_cloth;
+ goto L_tanktop_ins_cloth;
if (Zeny < 1000)
- goto L_tanktop_insufficient_Zeny;
+ goto L_tanktop_ins_Zeny;
getinventorylist;
if (@inventorylist_count == 100 && countitem("CottonCloth") > 6)
goto L_TooMany;
@@ -725,13 +733,13 @@ L_tanktop_long:
next;
goto L_tanktop_menu;
-L_tanktop_insufficient_cloth:
+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_insufficient_Zeny:
+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.\"";
@@ -814,7 +822,7 @@ L_Next12:
if (countitem("SilkSheet") < @ROBE_SHEETS_NR)
goto L_robe_missing_sheets;
if (Zeny < @ROBE_SHEETS_ZENY)
- goto L_robe_sheet_missing_Zeny;
+ goto L_r_sh_miss_zeny;
getinventorylist;
if (@inventorylist_count == 100 && countitem("SilkSheet") > @ROBE_SHEETS_NR)
goto L_TooMany;
@@ -867,7 +875,7 @@ L_robe_missing_sheets:
next;
goto L_main_menu;
-L_robe_sheet_missing_Zeny:
+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;
@@ -908,7 +916,7 @@ L_TooMany:
mes "\"You don't have anywhere to put this. Come back when you have more room.\"";
goto L_Close;
-L_sorcerer_robe_linecolor:
+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.\"";
@@ -920,44 +928,44 @@ L_sorcerer_robe_linecolor:
set @loratay_asking_robe, 1;
goto L_Close;
-L_ExamineSorcererRobe:
+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_SorcererRobeColors;
+ 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 " + @item_colors$[@current_linecolor] + " lined " + @item_colors$[@current_maincolor] + " sorcerer robe. I see. Is that ok?\"";
+ 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_NotSorcererRobe;
+ goto L_NotSR;
menu
- "Yes, that's fine. Take this one.", L_ChooseSorcererLineColor,
- "No, I changed my mind.", L_CleanSorcererRobe;
+ "Yes, that's fine. Take this one.", L_ChooseSRLineColor,
+ "No, I changed my mind.", L_CleanSR;
-L_NotSorcererRobe:
+L_NotSR:
mes "\"This isn't a Sorcerer Robe dear. Stop taking me for a fool.\"";
- goto L_CleanSorcererRobe;
+ goto L_CleanSR;
-L_ChooseSorcererLineColor:
+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 " + @item_colors$[0] + " one.", L_ItemMenus2,
- "A " + @item_colors$[1] + " one.", L_ItemMenus2,
- "A " + @item_colors$[2] + " one.", L_ItemMenus2,
- "A " + @item_colors$[3] + " one.", L_ItemMenus2,
- "A " + @item_colors$[4] + " one.", L_ItemMenus2,
- "A " + @item_colors$[5] + " one.", L_ItemMenus2,
- "A " + @item_colors$[6] + " one.", L_ItemMenus2,
- "A " + @item_colors$[7] + " one.", L_ItemMenus2,
- "A " + @item_colors$[8] + " one.", L_ItemMenus2,
- "A " + @item_colors$[9] + " one.", L_ItemMenus2,
- "A " + @item_colors$[10] + " one.", L_ItemMenus2,
+ "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:
@@ -969,24 +977,24 @@ L_ItemMenus2:
if (countitem(@cotton_cloth_id) < 2)
goto L_NoColoredCottonCloth;
if (@current_linecolor == @chosen_color)
- goto L_SorcererRobe_SameColor;
- callsub S_Get_NewSorcererRobeId;
+ goto L_SR_SameColor;
+ callsub S_Get_NewSRId;
// Should not happen since it has been checked the player submitted a sorcerer robe
- if (@new_sorcerer_robe_id == 0)
+ if (@new_sr_id == 0)
goto L_end;
if (Zeny < @SORCERER_ROBE_SEW_ZENY)
- goto L_SorcererRobe_NoZeny;
+ goto L_SR_NoZeny;
if (countitem(@chest_equip_id) == 0)
- goto L_SorcererRobe_Vanished;
+ 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_sorcerer_robe_id, 1;
- mes "Lora Tay adjusts her glasses and removes carefully the " + @item_colors$[@current_linecolor] + " string of the robe.";
- mes "Then she grabs the " + @item_colors$[@chosen_color] + " cotton cloth, unfolds it and pins her needle in it.";
+ 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;
@@ -997,40 +1005,40 @@ L_ItemMenus2:
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_CleanSorcererRobe;
+ goto L_CleanSR;
-L_SorcererRobe_SameColor:
+L_SR_SameColor:
mes "[Lora Tay the Seamstress]";
mes "\"Are you blind? Your robe is already of this color dear!\"";
- goto L_CleanSorcererRobe;
+ goto L_CleanSR;
-L_SorcererRobe_Vanished:
+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_CleanSorcererRobe;
+ goto L_CleanSR;
-S_Get_NewSorcererRobeId:
+S_Get_NewSRId:
if (@chosen_color == 0 && @current_maincolor == 10)
- set @new_sorcerer_robe_id, 798;
+ set @new_sr_id, 798;
if (@chosen_color == 0 && @current_maincolor < 10)
- set @new_sorcerer_robe_id, 2220 + @current_maincolor;
+ set @new_sr_id, 2220 + @current_maincolor;
if (@chosen_color > 0)
- set @new_sorcerer_robe_id, 5000 + @current_maincolor + (@chosen_color-1)*11;
+ 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_CleanSorcererRobe;
+ goto L_CleanSR;
-L_SorcererRobe_NoZeny:
+L_SR_NoZeny:
mes "[Lora Tay the Seamstress]";
mes "\"You don't seem to be able to afford my services, dear.\"";
- goto L_CleanSorcererRobe;
+ goto L_CleanSR;
-S_Get_SorcererRobeColors:
+S_Get_SRColors:
set @current_maincolor, -1;
set @current_linecolor, -1;
// Line color
@@ -1047,11 +1055,11 @@ S_Get_SorcererRobeColors:
set @current_maincolor, @chest_equip_id - 5000 - (@current_linecolor-1)*11;
return;
-L_CleanSorcererRobe:
+L_CleanSR:
set @current_maincolor, 0;
set @current_linecolor, 0;
set @chest_equip_id, 0;
- set @new_sorcerer_robe_id, 0;
+ set @new_sr_id, 0;
set @chosen_color, 0;
set @cotton_cloth_id, 0;
goto L_Close;
diff --git a/world/map/npc/011-1/_mobs.txt b/world/map/npc/011-1/_mobs.txt
index bc35df56..3a0c0ce3 100644
--- a/world/map/npc/011-1/_mobs.txt
+++ b/world/map/npc/011-1/_mobs.txt
@@ -17,7 +17,7 @@
011-1,92,44,35,28|monster|Maggot|1002,10,30ms,0ms,Mob011-1::On1002
-011-1,0,0,0|script|Mob011-1|-1
+011-1,0,0,0|script|Mob011-1|32767
{
end;
diff --git a/world/map/npc/011-1/_warps.txt b/world/map/npc/011-1/_warps.txt
index 9466fd96..fe83fdde 100644
--- a/world/map/npc/011-1/_warps.txt
+++ b/world/map/npc/011-1/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-011-1,58,92|warp|To Hermit's Cave|-1,-1,011-3,0,0
-011-1,30,61|warp|To Woodland|-1,1,014-1,108,91
-011-1,49,104|warp|To Woodland|0,-1,010-1,48,25
-011-1,124,62|warp|To Hurnscald Outskirts|-1,2,008-1,25,61
-011-1,73,9|warp|To Woodland Hills|0,-1,012-1,132,175
-011-1,38,36|warp|To Bandit Cave|-1,-1,011-6,49,100
+011-1,58,92|warp|To Hermit's Cav#011-10|-1,-1,011-3,0,0
+011-1,30,61|warp|To Woodland#011-11|-1,1,014-1,108,91
+011-1,49,104|warp|To Woodland#011-12|0,-1,010-1,48,25
+011-1,124,62|warp|To Hurnscald Ou#011-13|-1,2,008-1,25,61
+011-1,73,9|warp|To Woodland Hil#011-14|0,-1,012-1,132,175
+011-1,38,36|warp|To Bandit Cave#011-15|-1,-1,011-6,49,100
diff --git a/world/map/npc/011-1/alchemist.txt b/world/map/npc/011-1/alchemist.txt
index e4eade06..ade035dd 100644
--- a/world/map/npc/011-1/alchemist.txt
+++ b/world/map/npc/011-1/alchemist.txt
@@ -84,13 +84,13 @@ L_certain_condition:
L_post_sulphur_option:
if (!@wants_ironpowder)
- goto L_post_ironpowder_option;
+ 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_ironpowder_option;
+ goto L_post_ironpwd_option;
-L_post_ironpowder_option:
+L_post_ironpwd_option:
if (@Q_status == @SETZER_INITIAL)
goto L_post_monster_oil;
set @menuitems$[@c], "Can you make monster oil?";
@@ -958,7 +958,7 @@ L_MenuItems3:
goto L_dark_green_q_toomuch;
if (@guess_accumulator + @QUEST_GUESS_BASE < QUEST_clothdyer_knowsdye)
- goto L_dark_green_q_toolittle;
+ goto L_dark_green_q_little;
// otherwise correct guess
@@ -979,7 +979,7 @@ L_dark_green_q_toomuch:
mes "\"That was too much... you need fewer than " + @guess_accumulator + " thousandths, I think.";
goto L_dark_green_q_again;
-L_dark_green_q_toolittle:
+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;
diff --git a/world/map/npc/011-1/auldsbel.txt b/world/map/npc/011-1/auldsbel.txt
index a99eef70..23e3f84a 100644
--- a/world/map/npc/011-1/auldsbel.txt
+++ b/world/map/npc/011-1/auldsbel.txt
@@ -191,7 +191,7 @@ L_sulphur:
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_sulphur_teach_spell,
+ "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,
@@ -235,9 +235,9 @@ L_sulphur_noroom:
next;
goto L_main_menu;
-L_sulphur_teach_spell:
+L_Sul_t_s:
if (@Q_component_quest <= 4)
- goto L_sulphur_teach_spell_no;
+ 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;
@@ -249,7 +249,7 @@ L_sulphur_teach_spell:
next;
goto L_main_menu;
-L_sulphur_teach_spell_no:
+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;
@@ -270,23 +270,23 @@ L_about_magic:
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_about_magic_minimenu;
+ goto L_a_m_minimenu;
-L_about_magic_minimenu:
+L_a_m_minimenu:
menu
- "What are the five schools?", L_about_magic_schools,
- "How can I advance in magic?", L_about_magic_advance,
- "How do spells work?", L_about_magic_spells,
- "Where can I learn spells?", L_about_magic_learn,
+ "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_about_magic_schools:
+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_about_schools_minimenu;
+ goto L_a_s_minimenu;
-L_about_schools_minimenu:
+L_a_s_minimenu:
menu
"What's Transmutation magic?", L_about_transmutation,
"What's War magic?", L_about_war,
@@ -294,7 +294,7 @@ L_about_schools_minimenu:
"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_about_magic_minimenu;
+ "Thank you.", L_a_m_minimenu;
L_about_transmutation:
mes "[Auldsbel the Wizard]";
@@ -304,7 +304,7 @@ L_about_transmutation:
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_about_schools_minimenu;
+ goto L_a_s_minimenu;
L_about_astral:
mes "[Auldsbel the Wizard]";
@@ -313,7 +313,7 @@ L_about_astral:
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_about_schools_minimenu;
+ goto L_a_s_minimenu;
L_about_war:
mes "[Auldsbel the Wizard]";
@@ -322,27 +322,27 @@ L_about_war:
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_about_schools_minimenu;
+ 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_about_schools_minimenu;
+ 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_about_schools_minimenu;
+ 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, '" + getspellinvocation("detect-magic") + "'.\"";
next;
- goto L_about_schools_minimenu;
+ goto L_a_s_minimenu;
-L_about_magic_advance:
+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;
@@ -358,9 +358,9 @@ L_about_magic_advance:
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_about_magic_minimenu;
+ goto L_a_m_minimenu;
-L_about_magic_learn:
+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;
@@ -373,9 +373,9 @@ L_about_magic_learn:
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_about_magic_minimenu;
+ goto L_a_m_minimenu;
-L_about_magic_spells:
+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;
@@ -388,17 +388,17 @@ L_about_magic_spells:
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_about_spells_minimenu;
+ goto L_a_sp_minimenu;
-L_about_spells_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_about_other_prerequisites,
- "Where can I learn spells?", L_about_magic_learn,
+ "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_about_magic_minimenu;
+ "Never mind.", L_a_m_minimenu;
L_about_astral_power:
mes "[Auldsbel the Wizard]";
@@ -410,31 +410,31 @@ L_about_astral_power:
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_about_spells_minimenu;
+ 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_about_spells_minimenu;
+ 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_about_spells_minimenu;
+ goto L_a_sp_minimenu;
-L_about_other_prerequisites:
+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_about_spells_minimenu;
+ 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_about_spells_minimenu;
+ goto L_a_sp_minimenu;
L_about_auldsbel:
mes "[Auldsbel the Wizard]";
@@ -615,7 +615,7 @@ L_Q_manaseed:
if (MAGIC_FLAGS & MFLAG_DRANK_POTION)
goto L_Q_manaseed_prepared;
if (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)
- goto L_Q_manaseed_touched;
+ 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]";
@@ -623,20 +623,20 @@ L_Q_manaseed:
next;
goto L_main_menu;
-L_Q_manaseed_touched:
+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_manaseed_touched_short;
+ 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_manaseed_touched_short;
+ goto L_Q_ms_tou_short;
-L_Q_manaseed_touched_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,
@@ -646,7 +646,7 @@ 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_manaseed_touched_short;
+ goto L_Q_ms_tou_short;
L_make_mana_potion:
mes "[Auldsbel the Wizard]";
@@ -655,19 +655,19 @@ L_make_mana_potion:
menu
"Here you are.", L_Next1,
"I will look for those items.", L_main_menu,
- "I'm not interested.", L_Q_manaseed_touched_short;
+ "I'm not interested.", L_Q_ms_tou_short;
L_Next1:
if (Zeny < 10000)
- goto L_make_mana_potion_missing;
+ goto L_make_mp_miss;
if (countitem("GambogeHerb") < 10)
- goto L_make_mana_potion_missing;
+ goto L_make_mp_miss;
if (countitem("MauveHerb") < 20)
- goto L_make_mana_potion_missing;
+ goto L_make_mp_miss;
if (countitem("Pearl") < 1)
- goto L_make_mana_potion_missing;
+ goto L_make_mp_miss;
if (countitem("BottleOfWater") < 1)
- goto L_make_mana_potion_missing;
+ goto L_make_mp_miss;
getinventorylist;
if (@inventorylist_count == 100
&& countitem("GambogeHerb") > 10
@@ -707,7 +707,7 @@ L_mana_potion_toomuch:
next;
goto L_main_menu;
-L_make_mana_potion_missing:
+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;
@@ -732,23 +732,23 @@ L_Q_manaseed_maxedout:
L_quest:
if (@Q_component_quest == 0)
- goto L_component_quest_0;
+ goto L_c_quest_0;
if (@Q_component_quest == 1)
- goto L_component_quest_1;
+ goto L_c_quest_1;
if (@Q_component_quest == 2)
- goto L_component_quest_2;
+ goto L_c_quest_2;
if (@Q_component_quest == 3)
- goto L_component_quest_3;
+ goto L_c_quest_3;
if (@Q_component_quest == 4)
- goto L_component_quest_4;
+ goto L_c_quest_4;
if (@Q_component_quest == 5)
- goto L_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_component_quest_0:
+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...\"";
@@ -766,7 +766,7 @@ L_component_quest_0:
L_Next3:
if (countitem ("MauveHerb") < 20)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "MauveHerb", 20;
set Zeny, Zeny + 2500;
mes "[Auldsbel the Wizard]";
@@ -778,7 +778,7 @@ L_Next3:
next;
goto L_main_menu;
-L_component_quest_1:
+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;
@@ -792,13 +792,13 @@ L_component_quest_1:
L_Next4:
if (countitem ("SmallHealingPotion") < 3)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
if (countitem ("MediumHealingPotion") < 3)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
if (countitem ("IronPotion") < 1)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
if (countitem ("ConcentrationPotion") < 1)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "SmallHealingPotion", 3;
delitem "MediumHealingPotion", 3;
delitem "IronPotion", 1;
@@ -813,7 +813,7 @@ L_Next4:
next;
goto L_main_menu;
-L_component_quest_2:
+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;
@@ -826,7 +826,7 @@ L_component_quest_2:
L_Next5:
if (countitem ("SilkCocoon") < 100)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "SilkCocoon", 100;
set Zeny, Zeny + 5000;
mes "[Auldsbel the Wizard]";
@@ -839,7 +839,7 @@ L_Next5:
next;
goto L_main_menu;
-L_component_quest_3:
+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;
@@ -852,9 +852,9 @@ L_component_quest_3:
L_Next6:
if (countitem ("RedScorpionStinger") < 25)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
if (countitem ("MaggotSlime") < 25)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "RedScorpionStinger", 25;
delitem "MaggotSlime", 25;
set Zeny, Zeny + 5000;
@@ -868,7 +868,7 @@ L_Next6:
next;
goto L_main_menu;
-L_component_quest_4:
+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;
@@ -887,11 +887,11 @@ L_component_quest_4:
L_Next7:
if (countitem ("SnakeTongue") < 20)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
if (countitem ("CaveSnakeTongue") < 20)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
if (countitem ("MountainSnakeTongue") < 20)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "SnakeTongue", 20;
delitem "CaveSnakeTongue", 20;
delitem "MountainSnakeTongue", 20;
@@ -918,7 +918,7 @@ L_Next7:
next;
goto L_main_menu;
-L_component_quest_5:
+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;
@@ -928,7 +928,7 @@ L_component_quest_5:
L_Next8:
if (countitem ("GrassSnakeTongue") < 50)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "GrassSnakeTongue", 50;
set Zeny, Zeny + 10000;
mes "[Auldsbel the Wizard]";
@@ -957,7 +957,7 @@ OnSnakeDeath:
message strcharinfo(0), "You gain 5 Boss Points giving you a total of " + BOSS_POINTS + ".";
end;
-L_component_quest_missing:
+L_c_quest_missing:
mes "[Auldsbel the Wizard]";
mes "\"No, you are missing some items. Come back later when you have everything!\"";
next;
@@ -967,19 +967,19 @@ L_learn_spell:
if (@Q_main_status == @Q_STATUS_INITIATION)
goto L_initiation;
if (@Q_main_status == @Q_STATUS_STUDENT)
- goto L_student_start;
+ goto L_stu_start;
if (@Q_main_status == @Q_STATUS_STUDENT0)
- goto L_student_0;
+ goto L_stu_0;
if (@Q_main_status == @Q_STATUS_STUDENT1)
- goto L_student_1;
+ goto L_stu_1;
if (@Q_main_status == @Q_STATUS_STUDENT2)
- goto L_student_2;
+ goto L_stu_2;
if (@Q_main_status == @Q_STATUS_STUDENT3)
- goto L_student_3;
+ goto L_stu_3;
if (@Q_main_status == @Q_STATUS_STUDENT4)
- goto L_student_4;
+ goto L_stu_4;
if (@Q_main_status == @Q_STATUS_STUDENT5)
- goto L_student_5;
+ 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?\"";
@@ -993,7 +993,7 @@ L_learn_spell:
mes "\"You can turn the log into a wooden figurine by imagining the creature whose shape you want in your head and saying `" + getspellinvocation("transmute-wood-to-figurine") + ",' followed by the last syllable of the name of the creature you want to shape it into.\"";
next;
mes "[Auldsbel the Wizard]";
- mes "\"So `" + getspellinvocation("transmute-wood-to-figurine") + " lurk' for a Skrytlurk figurine, for example. If you know what a Skrytlurk is, I mean, otherwise you will have a hard time imagining it. You may want to try some others instead, though.\"";
+ mes "\"So `" + getspellinvocation("transmute-wood-to-figurine") + " 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.\"";
@@ -1007,10 +1007,10 @@ L_learn_spell:
L_repeat_spell:
mes "[Auldsbel the Wizard]";
- mes "\"The invocation is `" + getspellinvocation("transmute-wood-to-figurine") + ",' followed by the last syllable of the name of the creature you want to shape the log into. So `" + getspellinvocation("transmute-wood-to-figurine") + " lurk' for a Skrytlurk figurine.\"";
+ mes "\"The invocation is `" + getspellinvocation("transmute-wood-to-figurine") + ",' followed by the last syllable of the name of the creature you want to shape the log into. So `" + getspellinvocation("transmute-wood-to-figurine") + " 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 Skrytlurk 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.\"";
+ 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.\"";
@@ -1070,7 +1070,7 @@ L_initiation_check:
next;
goto L_main_menu;
-L_student_start:
+L_stu_start:
if (@mexp < 200) goto L_notready;
mes "[Auldsbel the Wizard]";
mes "\"Next, I shall teach you a higher-level transmutation spell.\"";
@@ -1086,7 +1086,7 @@ L_student_start:
L_Next9:
if (countitem("BugLeg") < 10)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "BugLeg", 10;
getexp 1000, 0;
set @Q_main_status, @Q_STATUS_STUDENT0;
@@ -1111,7 +1111,7 @@ L_notready:
next;
goto L_main_menu;
-L_student_0:
+L_stu_0:
if (@mexp < 350)
goto L_notready;
mes "[Auldsbel the Wizard]";
@@ -1126,7 +1126,7 @@ L_student_0:
L_Next10:
if (countitem("MauveHerb") < 20)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "MauveHerb", 20;
getexp 1000, 0;
set @Q_main_status, @Q_STATUS_STUDENT1;
@@ -1141,7 +1141,7 @@ L_Next10:
next;
goto L_main_menu;
-L_student_1:
+L_stu_1:
if (@mexp < 425)
goto L_notready;
mes "[Auldsbel the Wizard]";
@@ -1156,7 +1156,7 @@ L_student_1:
L_Next11:
if (countitem("ScorpionStinger") < 10)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "ScorpionStinger", 10;
getexp 1000, 0;
set @Q_main_status, @Q_STATUS_STUDENT2;
@@ -1171,7 +1171,7 @@ L_Next11:
next;
goto L_main_menu;
-L_student_2:
+L_stu_2:
if (@mexp < 500)
goto L_notready;
mes "[Auldsbel the Wizard]";
@@ -1186,7 +1186,7 @@ L_student_2:
L_Next12:
if (countitem("RawLog") < 20)
- goto L_component_quest_missing;
+ goto L_c_quest_missing;
delitem "RawLog", 20;
getexp 1000, 0;
set @Q_main_status, @Q_STATUS_STUDENT3;
@@ -1201,15 +1201,15 @@ L_Next12:
next;
goto L_main_menu;
-L_student_3:
+L_stu_3:
if (getskilllv(SKILL_MAGIC) < 3)
- goto L_magic_skill_insufficient;
+ 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_student_3_repeat;
+ goto L_stu_3_repeat;
-L_student_3_repeat:
+L_stu_3_repeat:
mes "[Auldsbel the Wizard]";
mes "\"This one has the invocation `" + getspellinvocation("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;
@@ -1223,20 +1223,20 @@ L_student_3_repeat:
callsub S_update_var;
goto L_main_menu;
-L_student_4:
+L_stu_4:
mes "[Auldsbel the Wizard]";
mes "\"Did you manage to transmute a concentration potion?\"";
next;
menu
- "What was the invocation again?", L_student_3_repeat,
+ "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_student_4_no_potion;
+ goto L_stu_4_no_potion;
if (!(MAGIC_FLAGS & MFLAG_MADE_CONC_POTION))
- goto L_student_4_wrong_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!\"";
@@ -1257,25 +1257,25 @@ L_Next13:
next;
goto L_main_menu;
-L_student_4_wrong_potion:
+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_student_4_no_potion:
+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_student_5:
+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_magic_skill_insufficient:
+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;
diff --git a/world/map/npc/011-1/oscar.txt b/world/map/npc/011-1/oscar.txt
index 3cc5c1e3..157dc0c9 100644
--- a/world/map/npc/011-1/oscar.txt
+++ b/world/map/npc/011-1/oscar.txt
@@ -340,7 +340,7 @@ L_TimerFunction:
npctalk "Hurry up " + $@HalloweenQuest_PumpkinHunter$ + "! My farm is being ruined!";
// 7 mins max
if ($@HalloweenQuest_PumpkinsTimer > 420)
- goto L_PumpkinsRuinedEverything;
+ goto L_PumpkinsRuined;
if (getnpctimer(0) >= 2900)
goto L_TrySpawnPumpkin;
@@ -404,10 +404,10 @@ OnPDP:
L_KillBadHunter:
misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- percentheal -100, 0;
+ heal -Hp, 0;
end;
-L_PumpkinsRuinedEverything:
+L_PumpkinsRuined:
npctalk "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;
diff --git a/world/map/npc/011-3/_mobs.txt b/world/map/npc/011-3/_mobs.txt
index 8854cf53..4e4a504e 100644
--- a/world/map/npc/011-3/_mobs.txt
+++ b/world/map/npc/011-3/_mobs.txt
@@ -5,7 +5,7 @@
011-3,0,0,0,0|monster|Silkworm|1035,3,60000ms,30000ms,Mob011-3::On1035
-011-3,0,0,0|script|Mob011-3|-1
+011-3,0,0,0|script|Mob011-3|32767
{
end;
diff --git a/world/map/npc/011-3/_warps.txt b/world/map/npc/011-3/_warps.txt
index 73ba06f8..67ddbd57 100644
--- a/world/map/npc/011-3/_warps.txt
+++ b/world/map/npc/011-3/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Lake Cave|-1,-1,011-4,73,10
+011-3,31,14|warp|To Lake Cave#011-30|-1,-1,011-4,73,10
diff --git a/world/map/npc/011-4/_mobs.txt b/world/map/npc/011-4/_mobs.txt
index 3e91f627..81da8edc 100644
--- a/world/map/npc/011-4/_mobs.txt
+++ b/world/map/npc/011-4/_mobs.txt
@@ -10,7 +10,7 @@
011-4,0,0,0,0|monster|Bat|1017,20,180000ms,40000ms,Mob011-4::On1017
-011-4,0,0,0|script|Mob011-4|-1
+011-4,0,0,0|script|Mob011-4|32767
{
end;
diff --git a/world/map/npc/011-4/_warps.txt b/world/map/npc/011-4/_warps.txt
index c5539e85..663476d7 100644
--- a/world/map/npc/011-4/_warps.txt
+++ b/world/map/npc/011-4/_warps.txt
@@ -1,14 +1,14 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Lake Cave warps
-011-4,73,8|warp|To Hermit's Cave|-1,-1,011-3,31,16
-011-4,129,86|warp|To Hurnscald Cave|-1,-1,009-3,20,56
-011-4,39,35|warp|To Bandit Cave|-1,-1,011-6,47,184
-011-4,16,57|warp|To Bryant Cave|-1,-1,011-6,24,205
-011-4,89,20|warp|To Bandit Cave|-1,-1,011-6,97,168
-011-4,105,32|warp|To Bandit Cave|-1,-1,011-6,114,183
-011-4,114,61|warp|To Bandit Cave|-1,-1,011-6,123,212
-011-4,86,75|warp|To Bandit Cave|-1,-1,011-6,95,226
-011-4,62,86|warp|To Bandit Cave|-1,-1,011-6,68,234
-011-4,32,5|warp|To Small Cave|0,-1,011-6,186,181
-011-4,45,118|warp|To Small Cave|-1,-1,011-6,266,181
+011-4,73,8|warp|To Hermit's Cav#011-40|-1,-1,011-3,31,16
+011-4,129,86|warp|To Hurnscald Ca#011-41|-1,-1,009-3,20,56
+011-4,39,35|warp|To Bandit Cave#011-42|-1,-1,011-6,47,184
+011-4,16,57|warp|To Bryant Cave#011-43|-1,-1,011-6,24,205
+011-4,89,20|warp|To Bandit Cave#011-44|-1,-1,011-6,97,168
+011-4,105,32|warp|To Bandit Cave#011-45|-1,-1,011-6,114,183
+011-4,114,61|warp|To Bandit Cave#011-46|-1,-1,011-6,123,212
+011-4,86,75|warp|To Bandit Cave#011-47|-1,-1,011-6,95,226
+011-4,62,86|warp|To Bandit Cave#011-48|-1,-1,011-6,68,234
+011-4,32,5|warp|To Small Cave#011-49|0,-1,011-6,186,181
+011-4,45,118|warp|To Small Cave#011-410|-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
index 563c3319..14f64f4e 100644
--- a/world/map/npc/011-4/bl_barrier.txt
+++ b/world/map/npc/011-4/bl_barrier.txt
@@ -4,18 +4,18 @@
{
set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- if (@state >= 6) goto L_Bandit_Cave_Abandoned;
- if (@state >= 4) goto L_Bandit_Lord_Barrier_Open;
+ 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_Bandit_Cave_Abandoned:
+L_Cave_Abandoned:
message strcharinfo(0), "This place looks like it was abandoned.";
warp "011-6",251,275;
goto L_End;
-L_Bandit_Lord_Barrier_Open:
+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;
diff --git a/world/map/npc/011-6/_mobs.txt b/world/map/npc/011-6/_mobs.txt
index f86fdd66..4ba7f2ee 100644
--- a/world/map/npc/011-6/_mobs.txt
+++ b/world/map/npc/011-6/_mobs.txt
@@ -50,7 +50,7 @@
011-6,263,236,16,5|monster|CaveMaggot|1056,3,30000ms,100000ms,Mob011-6::On1056
-011-6,0,0,0|script|Mob011-6|-1
+011-6,0,0,0|script|Mob011-6|32767
{
end;
diff --git a/world/map/npc/011-6/_warps.txt b/world/map/npc/011-6/_warps.txt
index 479892e5..18d95347 100644
--- a/world/map/npc/011-6/_warps.txt
+++ b/world/map/npc/011-6/_warps.txt
@@ -1,25 +1,25 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Bandit Cave warps
-011-6,51,75|warp|To Small Bandit Cave|-1,-1,011-6,260,127
-011-6,61,71|warp|To Small Bandit Cave|-1,-1,011-6,270,124
-011-6,270,125|warp|To Bandit Cave|-1,-1,011-6,61,72
-011-6,260,128|warp|To Bandit Cave|-1,-1,011-6,51,76
-011-6,145,118|warp|To Bandit Cave|-1,-1,011-6,47,119
-011-6,196,26|warp|To Small Bandit Cave|-1,-1,011-6,261,46
-011-6,261,47|warp|To Second Bandit Cave|-1,-1,011-6,196,27
-011-6,271,52|warp|To Bandit Cave|-1,-1,011-6,98,31
-011-6,98,30|warp|To Small Bandit Cave|-1,-1,011-6,271,51
-011-6,47,120|warp|To Second Bandit Cave|-1,-1,011-6,145,117
-011-6,49,101|warp|To Woodland|-1,-1,011-1,38,37
-011-6,24,206|warp|To Lake Cave|-1,-1,011-4,16,58
-011-6,47,185|warp|To Lake Cave|-1,-1,011-4,39,36
-011-6,97,169|warp|To Lake Cave|-1,-1,011-4,89,21
-011-6,113,182|warp|To Lake Cave|-1,-1,011-4,106,33
-011-6,122,211|warp|To Lake Cave|-1,-1,011-4,115,62
-011-6,94,225|warp|To Lake Cave|-1,-1,011-4,87,76
-011-6,68,235|warp|To Lake Cave|-1,-1,011-4,62,87
-011-6,251,278|warp|To Lake Cave|-1,-1,011-4,111,122
-011-6,186,182|warp|To Lake Cave|0,-1,011-4,32,6
-011-6,266,182|warp|To Lake Cave|-1,-1,011-4,45,119
-011-6,174,256|warp|To Bandit Lord Cave|-1,-1,011-6,264,237
+011-6,51,75|warp|To Small Bandit#011-60|-1,-1,011-6,260,127
+011-6,61,71|warp|To Small Bandit#011-61|-1,-1,011-6,270,124
+011-6,270,125|warp|To Bandit Cave#011-62|-1,-1,011-6,61,72
+011-6,260,128|warp|To Bandit Cave#011-63|-1,-1,011-6,51,76
+011-6,145,118|warp|To Bandit Cave#011-64|-1,-1,011-6,47,119
+011-6,196,26|warp|To Small Bandit#011-65|-1,-1,011-6,261,46
+011-6,261,47|warp|To Second Bandi#011-66|-1,-1,011-6,196,27
+011-6,271,52|warp|To Bandit Cave#011-67|-1,-1,011-6,98,31
+011-6,98,30|warp|To Small Bandit#011-68|-1,-1,011-6,271,51
+011-6,47,120|warp|To Second Bandi#011-69|-1,-1,011-6,145,117
+011-6,49,101|warp|To Woodland#011-610|-1,-1,011-1,38,37
+011-6,24,206|warp|To Lake Cave#011-611|-1,-1,011-4,16,58
+011-6,47,185|warp|To Lake Cave#011-612|-1,-1,011-4,39,36
+011-6,97,169|warp|To Lake Cave#011-613|-1,-1,011-4,89,21
+011-6,113,182|warp|To Lake Cave#011-614|-1,-1,011-4,106,33
+011-6,122,211|warp|To Lake Cave#011-615|-1,-1,011-4,115,62
+011-6,94,225|warp|To Lake Cave#011-616|-1,-1,011-4,87,76
+011-6,68,235|warp|To Lake Cave#011-617|-1,-1,011-4,62,87
+011-6,251,278|warp|To Lake Cave#011-618|-1,-1,011-4,111,122
+011-6,186,182|warp|To Lake Cave#011-619|0,-1,011-4,32,6
+011-6,266,182|warp|To Lake Cave#011-620|-1,-1,011-4,45,119
+011-6,174,256|warp|To Bandit Lord #011-621|-1,-1,011-6,264,237
diff --git a/world/map/npc/011-6/barrier.txt b/world/map/npc/011-6/barrier.txt
index 15639a18..38188ad2 100644
--- a/world/map/npc/011-6/barrier.txt
+++ b/world/map/npc/011-6/barrier.txt
@@ -2,11 +2,11 @@
{
set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- if (@state >= 6) goto L_Bandit_Lord_Hideout_Open;
+ 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_Bandit_Lord_Hideout_Open:
+L_Lord_Hideout_Open:
warp "011-6",174,255;
goto L_End;
diff --git a/world/map/npc/011-6/bryant.txt b/world/map/npc/011-6/bryant.txt
index fae31706..9969b767 100644
--- a/world/map/npc/011-6/bryant.txt
+++ b/world/map/npc/011-6/bryant.txt
@@ -3,9 +3,6 @@
011-6,27,200,0|script|Bryant|126
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
-
set @state, ((QUEST_Hurnscald & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
if (@state >= 5) goto L_Bryant_Quiet;
diff --git a/world/map/npc/011-6/crastur.txt b/world/map/npc/011-6/crastur.txt
index 16dda84f..bef9f0a7 100644
--- a/world/map/npc/011-6/crastur.txt
+++ b/world/map/npc/011-6/crastur.txt
@@ -2,8 +2,8 @@
{
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 < 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;
@@ -16,7 +16,7 @@ L_Ask:
mes "[Crastur]";
mes "";
mes "\"Just look who arrived here\"";
- emotion EMOTE_EVIL;
+ emotion EMOTE_EVIL, strcharinfo(0);
next;
mes "[Crastur]";
mes "";
@@ -81,6 +81,8 @@ L_Jibber_Cont:
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;
@@ -91,8 +93,6 @@ L_Pirate_Proof:
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.\"";
- set @spants_state, 5;
- callsub S_Update_Spants;
menu
"\"I have it with me.\"", L_Bandana,
"\"I will try my best.\"", L_Close;
@@ -128,7 +128,7 @@ L_Wrong_Item:
next;
mes "[Crastur]";
mes "THIS IS NOT FROM THE PIRATES FROM TULIMSHAR, it is a cheap scam.";
- emotion EMOTE_PERTURBED;
+ emotion EMOTE_PERTURBED, strcharinfo(0);
mes "As far as you can tell through his mask he seems very mad";
goto L_Insult;
@@ -150,7 +150,7 @@ L_Regular:
"\"Ugh, no. I have to leave now. Bye.\"", L_Close;
L_Insult:
- mes "Die " + strcharinfo(0) + "!";
+ npctalk "Crastur : Die " + strcharinfo(0) + "!";
heal -10000, 0;
emotion EMOTE_VICIOUS;
mes "[Crastur]";
@@ -187,8 +187,8 @@ L_Personal:
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;
+ 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\"";
@@ -198,13 +198,13 @@ L_Personal:
goto L_Close;
L_Worm:
- emotion EMOTE_SUSPICIOUS;
+ 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;
+ emotion EMOTE_FACEPALM, strcharinfo(0);
mes "Crastur makes a barking sound that probably was meant as a laugh.";
mes "[Crastur]";
mes "";
diff --git a/world/map/npc/012-1/_mobs.txt b/world/map/npc/012-1/_mobs.txt
index c8f1303c..cdcc8730 100644
--- a/world/map/npc/012-1/_mobs.txt
+++ b/world/map/npc/012-1/_mobs.txt
@@ -14,7 +14,7 @@
012-1,0,0,0,0|monster|Butterfly|1055,20,30ms,20ms,Mob012-1::On1055
-012-1,0,0,0|script|Mob012-1|-1
+012-1,0,0,0|script|Mob012-1|32767
{
end;
diff --git a/world/map/npc/012-1/_warps.txt b/world/map/npc/012-1/_warps.txt
index c9a05a5f..245900b4 100644
--- a/world/map/npc/012-1/_warps.txt
+++ b/world/map/npc/012-1/_warps.txt
@@ -1,14 +1,14 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Hills warps
-012-1,51,39|warp|To Moggun Cave|-1,-1,012-3,370,43
-012-1,147,67|warp|To Moggun Cave|-1,-1,012-3,474,106
-012-1,41,48|warp|To Moggun Cave|-1,-1,012-3,353,78
-012-1,44,88|warp|To Moggun Cave|-1,-1,012-3,355,187
-012-1,92,104|warp|To Moggun Cave|-1,-1,012-3,270,111
-012-1,98,99|warp|To Small Cave|-1,-1,012-3,37,81
-012-1,109,92|warp|To Small Cave|-1,-1,012-3,80,73
-012-1,123,90|warp|To Mana Seed Cave|-1,-1,012-3,38,156
-012-1,150,61|warp|To Woodland Hills|-1,2,013-1,21,75
-012-1,132,176|warp|To Woodland|0,-1,011-1,73,10
-012-1,65,126|warp|To Moggun Cave|-1,-1,012-3,176,140
+012-1,51,39|warp|To Moggun Cave#012-10|-1,-1,012-3,370,43
+012-1,147,67|warp|To Moggun Cave#012-11|-1,-1,012-3,474,106
+012-1,41,48|warp|To Moggun Cave#012-12|-1,-1,012-3,353,78
+012-1,44,88|warp|To Moggun Cave#012-13|-1,-1,012-3,355,187
+012-1,92,104|warp|To Moggun Cave#012-14|-1,-1,012-3,270,111
+012-1,98,99|warp|To Small Cave#012-15|-1,-1,012-3,37,81
+012-1,109,92|warp|To Small Cave#012-16|-1,-1,012-3,80,73
+012-1,123,90|warp|To Mana Seed Ca#012-17|-1,-1,012-3,38,156
+012-1,150,61|warp|To Woodland Hil#012-18|-1,2,013-1,21,75
+012-1,132,176|warp|To Woodland#012-19|0,-1,011-1,73,10
+012-1,65,126|warp|To Moggun Cave#012-110|-1,-1,012-3,176,140
diff --git a/world/map/npc/012-1/injured-mouboo.txt b/world/map/npc/012-1/injured-mouboo.txt
index 58a6af50..de4b8edf 100644
--- a/world/map/npc/012-1/injured-mouboo.txt
+++ b/world/map/npc/012-1/injured-mouboo.txt
@@ -97,6 +97,7 @@ L_pickup_alive:
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$, "", "", "", "", "", "", "", "", "", "", "", "", "";
@@ -113,8 +114,7 @@ L_nloop:
if (countitem(@k$) == 0)
goto L_nloop_skip;
- set @name$, getitemname(@k$);
- set @menuItems$[@ct], @name$;
+ set @menuItems$[@ct], @itemnames$[@n];
set @menuNames$[@ct], @k$;
set @choice_eat[@ct], @itemeat[@n];
set @ct, @ct + 1;
@@ -156,7 +156,7 @@ L_MenuItems:
L_consume:
mes "[Injured Mouboo]";
- mes "The mouboo " + @verb$ + " your " + getitemname(@choice$) + ".";
+ mes "The mouboo " + @verb$ + " your " + getitemlink(@choice$) + ".";
delitem @choice$, 1;
next;
if (@choice$ == "LargeHealingPotion")
@@ -195,7 +195,7 @@ L_dead:
getinventorylist;
if (@inventorylist_count == 100)
goto L_nopickup;
- getitem "BlackTurtleneckSweater", 1;
+ 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;
diff --git a/world/map/npc/012-1/shops.txt b/world/map/npc/012-1/shops.txt
index f93ec464..3620b2c9 100644
--- a/world/map/npc/012-1/shops.txt
+++ b/world/map/npc/012-1/shops.txt
@@ -1,6 +1,6 @@
//
-012-1,36,99,0|shop|#FlowerShop|127,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|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
{
diff --git a/world/map/npc/012-3/_mobs.txt b/world/map/npc/012-3/_mobs.txt
index e1208d64..354fc289 100644
--- a/world/map/npc/012-3/_mobs.txt
+++ b/world/map/npc/012-3/_mobs.txt
@@ -19,7 +19,7 @@
012-3,0,0,0,0|monster|CaveSnake|1021,75,0ms,0ms,Mob012-3::On1021
-012-3,0,0,0|script|Mob012-3|-1
+012-3,0,0,0|script|Mob012-3|32767
{
end;
diff --git a/world/map/npc/012-3/_warps.txt b/world/map/npc/012-3/_warps.txt
index ec1138f0..83fe7005 100644
--- a/world/map/npc/012-3/_warps.txt
+++ b/world/map/npc/012-3/_warps.txt
@@ -1,13 +1,13 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Moggun Cave warps
-012-3,37,82|warp|To Woodland Hills|-1,-1,012-1,98,100
-012-3,80,74|warp|To Woodland Hills|-1,-1,012-1,109,93
-012-3,38,157|warp|To Woodland Hills|-1,-1,012-1,123,91
-012-3,270,112|warp|To Woodland Hills|-1,-1,012-1,92,105
-012-3,176,138|warp|To Blossom Land|-1,-1,012-1,65,128
-012-3,355,188|warp|To Blossom Land|-1,-1,012-1,44,89
-012-3,370,44|warp|To Small Lost Land|-1,-1,012-1,51,40
-012-3,353,79|warp|To Lost Land|-1,-1,012-1,41,49
-012-3,473,106|warp|To Small Closed Hill|-1,-1,012-1,146,67
-012-3,448,61|warp|To Terranite Cave|-1,-1,012-4,193,57
+012-3,37,82|warp|To Woodland Hil#012-30|-1,-1,012-1,98,100
+012-3,80,74|warp|To Woodland Hil#012-31|-1,-1,012-1,109,93
+012-3,38,157|warp|To Woodland Hil#012-32|-1,-1,012-1,123,91
+012-3,270,112|warp|To Woodland Hil#012-33|-1,-1,012-1,92,105
+012-3,176,138|warp|To Blossom Land#012-34|-1,-1,012-1,65,128
+012-3,355,188|warp|To Blossom Land#012-35|-1,-1,012-1,44,89
+012-3,370,44|warp|To Small Lost L#012-36|-1,-1,012-1,51,40
+012-3,353,79|warp|To Lost Land#012-37|-1,-1,012-1,41,49
+012-3,473,106|warp|To Small Closed#012-38|-1,-1,012-1,146,67
+012-3,448,61|warp|To Terranite Ca#012-39|-1,-1,012-4,193,57
diff --git a/world/map/npc/012-3/mana-seed.txt b/world/map/npc/012-3/mana-seed.txt
index 8e5956f5..bb479c2b 100644
--- a/world/map/npc/012-3/mana-seed.txt
+++ b/world/map/npc/012-3/mana-seed.txt
@@ -175,7 +175,7 @@ L_magic_touch:
L_magic_levelup:
set @baselevel_needed, @min_level[getskilllv(SKILL_MAGIC) + 1];
if (BaseLevel < @baselevel_needed)
- goto L_insufficient_baselevel;
+ 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]";
@@ -213,7 +213,7 @@ L_magic_levelup:
set @SUP_xp, @exp_bonus[1 + getskilllv(SKILL_MAGIC)];
set @SUP_lvl, 1 + getskilllv(SKILL_MAGIC);
callfunc "SkillUp";
- itemheal 0, 10000;
+ heal 0, 10000, 1;
next;
goto L_end;
@@ -223,7 +223,7 @@ L_magic_maxed_out:
next;
goto L_magic_mainmenu;
-L_insufficient_baselevel:
+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;
diff --git a/world/map/npc/012-3/traveler.txt b/world/map/npc/012-3/traveler.txt
index aa173080..b3c158ea 100644
--- a/world/map/npc/012-3/traveler.txt
+++ b/world/map/npc/012-3/traveler.txt
@@ -4,7 +4,7 @@
012-3,439,62,0|script|Meridith the Traveler|103
{
- set @NpcName$, "Meridith";
+ set @npcname$, "Meridith";
set @NpcTravelBit, $@terranite_cave_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/012-4/_mobs.txt b/world/map/npc/012-4/_mobs.txt
index 0f61a3cd..e1a4a259 100644
--- a/world/map/npc/012-4/_mobs.txt
+++ b/world/map/npc/012-4/_mobs.txt
@@ -67,7 +67,7 @@
012-4,91,180,23,10|monster|Spider|1012,20,100000ms,30000ms,Mob012-4::On1012
-012-4,0,0,0|script|Mob012-4|-1
+012-4,0,0,0|script|Mob012-4|32767
{
end;
diff --git a/world/map/npc/012-4/_warps.txt b/world/map/npc/012-4/_warps.txt
index 4253093b..a492edcf 100644
--- a/world/map/npc/012-4/_warps.txt
+++ b/world/map/npc/012-4/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Terranite Cave warps
-012-4,193,58|warp|To Moggun Cave|-1,-1,012-3,448,62
-012-4,363,26|warp|To Small Cave|-1,-1,012-4,474,187
-012-4,474,188|warp|To Terranite Cave|-1,-1,012-4,363,27
+012-4,193,58|warp|To Moggun Cave#012-40|-1,-1,012-3,448,62
+012-4,363,26|warp|To Small Cave#012-41|-1,-1,012-4,474,187
+012-4,474,188|warp|To Terranite Ca#012-42|-1,-1,012-4,363,27
diff --git a/world/map/npc/013-1/_mobs.txt b/world/map/npc/013-1/_mobs.txt
index e3492192..7d2efa88 100644
--- a/world/map/npc/013-1/_mobs.txt
+++ b/world/map/npc/013-1/_mobs.txt
@@ -18,7 +18,7 @@
013-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms,Mob013-1::On1055
-013-1,0,0,0|script|Mob013-1|-1
+013-1,0,0,0|script|Mob013-1|32767
{
end;
diff --git a/world/map/npc/013-1/_warps.txt b/world/map/npc/013-1/_warps.txt
index ec205807..d00af258 100644
--- a/world/map/npc/013-1/_warps.txt
+++ b/world/map/npc/013-1/_warps.txt
@@ -1,8 +1,8 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Hills warps
-013-1,125,104|warp|To Woodland Hills Cave|-1,-1,013-3,34,64
-013-1,20,76|warp|To Woodland Hills|-1,2,012-1,149,60
-013-1,46,20|warp|To Woodland Hills|2,-1,017-1,46,104
-013-1,42,90|warp|To Magic House|-1,-1,013-2,63,41
-013-1,136,52|warp|To Woodland Hills|-1,2,055-1,25,52
+013-1,125,104|warp|To Woodland Hil#013-10|-1,-1,013-3,34,64
+013-1,20,76|warp|To Woodland Hil#013-11|-1,2,012-1,149,60
+013-1,46,20|warp|To Woodland Hil#013-12|2,-1,017-1,46,104
+013-1,42,90|warp|To Magic House#013-13|-1,-1,013-2,63,41
+013-1,136,52|warp|To Woodland Hil#013-14|-1,2,055-1,25,52
diff --git a/world/map/npc/013-1/flowerpentagram.txt b/world/map/npc/013-1/flowerpentagram.txt
index 5be2c99a..001b7e0a 100644
--- a/world/map/npc/013-1/flowerpentagram.txt
+++ b/world/map/npc/013-1/flowerpentagram.txt
@@ -1,4 +1,4 @@
-013-1,1,1,0|script|#FlowerPentagram|127
+013-1,1,1,0|script|#FlowerPentagram|32767
{
end;
diff --git a/world/map/npc/013-1/sagatha.txt b/world/map/npc/013-1/sagatha.txt
index 1251d025..456b184b 100644
--- a/world/map/npc/013-1/sagatha.txt
+++ b/world/map/npc/013-1/sagatha.txt
@@ -193,9 +193,9 @@ L_main:
L_teach_initial:
if (@good < 2)
- goto L_teach_initial_nogood;
+ goto L_initial_nogood;
if (getskilllv(SKILL_MAGIC_NATURE) < 2)
- goto L_teach_initial_nonature;
+ 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.\"";
@@ -215,13 +215,13 @@ L_teach_initial:
next;
goto L_main;
-L_teach_initial_nogood:
+L_initial_nogood:
mes "[Sagatha the Witch]";
mes "\"I don't take strangers as students.\"";
next;
goto L_main;
-L_teach_initial_nonature:
+L_initial_nonature:
mes "[Sagatha the Witch]";
mes "\"I might, but you don't even understand the basics of nature magic.\"";
next;
diff --git a/world/map/npc/013-1/traveler.txt b/world/map/npc/013-1/traveler.txt
index efa6c53a..7439b8d8 100644
--- a/world/map/npc/013-1/traveler.txt
+++ b/world/map/npc/013-1/traveler.txt
@@ -1,6 +1,6 @@
013-1,120,90,0|script|Faris the Traveler|103
{
- set @NpcName$, "Faris";
+ set @npcname$, "Faris";
set @NpcTravelBit, $@magic_house_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/013-2/_mobs.txt b/world/map/npc/013-2/_mobs.txt
index be64f4ab..82f242a0 100644
--- a/world/map/npc/013-2/_mobs.txt
+++ b/world/map/npc/013-2/_mobs.txt
@@ -3,7 +3,7 @@
-013-2,0,0,0|script|Mob013-2|-1
+013-2,0,0,0|script|Mob013-2|32767
{
end;
}
diff --git a/world/map/npc/013-2/_warps.txt b/world/map/npc/013-2/_warps.txt
index 21885404..18e78c93 100644
--- a/world/map/npc/013-2/_warps.txt
+++ b/world/map/npc/013-2/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Magic House warps
-013-2,63,42|warp|To Outside|-1,-1,013-1,42,91
-013-2,67,36|warp|To Magic Room|-1,-1,013-2,21,40
-013-2,21,41|warp|To Magic House Entrance|-1,-1,013-2,67,37
+013-2,63,42|warp|To Outside#013-20|-1,-1,013-1,42,91
+013-2,67,36|warp|To Magic Room#013-21|-1,-1,013-2,21,40
+013-2,21,41|warp|To Magic House #013-22|-1,-1,013-2,67,37
diff --git a/world/map/npc/013-3/_mobs.txt b/world/map/npc/013-3/_mobs.txt
index b0f66b65..088e2c72 100644
--- a/world/map/npc/013-3/_mobs.txt
+++ b/world/map/npc/013-3/_mobs.txt
@@ -31,7 +31,7 @@
013-3,67,46,2,1|monster|FireSkull|1023,1,120000ms,60000ms,Mob013-3::On1023
-013-3,0,0,0|script|Mob013-3|-1
+013-3,0,0,0|script|Mob013-3|32767
{
end;
diff --git a/world/map/npc/013-3/_warps.txt b/world/map/npc/013-3/_warps.txt
index f092608a..7cb0c542 100644
--- a/world/map/npc/013-3/_warps.txt
+++ b/world/map/npc/013-3/_warps.txt
@@ -1,30 +1,30 @@
// 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|To Woodland Hills|-1,-1,013-1,0,0
-013-3,34,63|warp|To Woodland Hills|-1,-1,013-1,125,103
-013-3,36,96|warp|To Woodland Hills Cave|-1,-1,013-3,79,126
-013-3,79,125|warp|To Woodland Hills Cave|-1,-1,013-3,35,96
-013-3,22,115|warp|To Woodland Mining Camp|-1,-1,018-1,115,41
-013-3,139,45|warp|To Woodland Mining Camp|-1,-1,018-1,127,37
-013-3,61,179|warp|To Woodland Mining Camp|-1,-1,018-1,134,46
-013-3,69,143|warp|To Northern Mine|-1,-1,018-3,50,89
-013-3,81,103|warp|To Woodland Mining Camp|-1,-1,018-1,147,41
-013-3,177,91|warp|To Jack O Land|-1,-1,018-1,177,21
-013-3,178,44|warp|To Northern Mine|-1,-1,018-3,97,70
-013-3,169,45|warp|To Northern Mine|-1,-1,018-3,27,55
-013-3,152,28|warp|To Northern Mine|-1,-1,018-3,134,62
-013-3,123,104|warp|To Northern Mine|-1,-1,018-3,172,22
-013-3,147,104|warp|To Northern Mine|-1,-1,018-3,177,22
-013-3,158,66|warp|To Northern Mine|-1,-1,018-3,27,90
-013-3,75,51|warp|To Woodland Hills Cave|-1,-1,013-3,109,65
-013-3,109,64|warp|To Woodland Hills Cave|-1,-1,013-3,75,50
-013-3,67,51|warp|To Northern Mine|-1,-1,018-3,90,51
-013-3,71,20|warp|To Demon Mask Chest Cav|-1,-1,013-3,28,39
-013-3,28,41|warp|To Fight Cave|-1,-1,013-3,71,21
-013-3,71,42|warp|To Black Scorpion Cave|-1,-1,013-3,109,21
-013-3,109,20|warp|To Woodland Hills Cave|-1,-1,013-3,71,41
-013-3,111,42|warp|To Magic Bookshelf Cave|-1,-1,018-3,71,123
-013-3,62,100|warp|To Northern Mine|-1,-1,018-3,174,86
-013-3,68,97|warp|To Northern Mine|-1,-1,018-3,102,70
-013-3,160,103|warp|To Hurnscald Cave|-1,-1,009-3,117,20
+013-3,28,20|warp|To Woodland Hil#013-30|-1,-1,013-1,0,0
+013-3,34,63|warp|To Woodland Hil#013-31|-1,-1,013-1,125,103
+013-3,36,96|warp|To Woodland Hil#013-32|-1,-1,013-3,79,126
+013-3,79,125|warp|To Woodland Hil#013-33|-1,-1,013-3,35,96
+013-3,22,115|warp|To Woodland Min#013-34|-1,-1,018-1,115,41
+013-3,139,45|warp|To Woodland Min#013-35|-1,-1,018-1,127,37
+013-3,61,179|warp|To Woodland Min#013-36|-1,-1,018-1,134,46
+013-3,69,143|warp|To Northern Min#013-37|-1,-1,018-3,50,89
+013-3,81,103|warp|To Woodland Min#013-38|-1,-1,018-1,147,41
+013-3,177,91|warp|To Jack O Land#013-39|-1,-1,018-1,177,21
+013-3,178,44|warp|To Northern Min#013-310|-1,-1,018-3,97,70
+013-3,169,45|warp|To Northern Min#013-311|-1,-1,018-3,27,55
+013-3,152,28|warp|To Northern Min#013-312|-1,-1,018-3,134,62
+013-3,123,104|warp|To Northern Min#013-313|-1,-1,018-3,172,22
+013-3,147,104|warp|To Northern Min#013-314|-1,-1,018-3,177,22
+013-3,158,66|warp|To Northern Min#013-315|-1,-1,018-3,27,90
+013-3,75,51|warp|To Woodland Hil#013-316|-1,-1,013-3,109,65
+013-3,109,64|warp|To Woodland Hil#013-317|-1,-1,013-3,75,50
+013-3,67,51|warp|To Northern Min#013-318|-1,-1,018-3,90,51
+013-3,71,20|warp|To Demon Mask C#013-319|-1,-1,013-3,28,39
+013-3,28,41|warp|To Fight Cave#013-320|-1,-1,013-3,71,21
+013-3,71,42|warp|To Black Scorpi#013-321|-1,-1,013-3,109,21
+013-3,109,20|warp|To Woodland Hil#013-322|-1,-1,013-3,71,41
+013-3,111,42|warp|To Magic Booksh#013-323|-1,-1,018-3,71,123
+013-3,62,100|warp|To Northern Min#013-324|-1,-1,018-3,174,86
+013-3,68,97|warp|To Northern Min#013-325|-1,-1,018-3,102,70
+013-3,160,103|warp|To Hurnscald Ca#013-326|-1,-1,009-3,117,20
diff --git a/world/map/npc/013-3/barrier.txt b/world/map/npc/013-3/barrier.txt
index 442870d9..0e00a40c 100644
--- a/world/map/npc/013-3/barrier.txt
+++ b/world/map/npc/013-3/barrier.txt
@@ -2,8 +2,6 @@
013-3,71,21,0|script|#DemonMineBarrier1#_M|45,1,1
{
- callfunc "ClearVariables";
-
set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
if (@state >= 2) goto L_End;
diff --git a/world/map/npc/013-3/mask_chest.txt b/world/map/npc/013-3/mask_chest.txt
index a175b4b2..204eec4c 100644
--- a/world/map/npc/013-3/mask_chest.txt
+++ b/world/map/npc/013-3/mask_chest.txt
@@ -2,8 +2,6 @@
013-3,28,27,0|script|Chest#DemonMask|111
{
- callfunc "ClearVariables";
-
set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
if (@state < 2) goto L_This_shouldn_t_happen;
@@ -31,7 +29,7 @@
if (countitem("TreasureKey") == 0)
goto L_No_treasure_key;
if (countitem("PileOfAsh") == 0)
- goto L_No_ash;
+ goto L_no_ash;
if (countitem("MauveHerb") == 0
|| countitem("CobaltHerb") == 0
|| countitem("GambogeHerb") == 0
@@ -157,7 +155,7 @@ L_No_treasure_key:
mes "No treasure chest key, no opening ritual.";
goto L_Close;
-L_No_ash:
+L_no_ash:
mes "You still need a pile of ash.";
goto L_Close;
diff --git a/world/map/npc/013-3/sword_chest.txt b/world/map/npc/013-3/sword_chest.txt
index de06261d..503dda7e 100644
--- a/world/map/npc/013-3/sword_chest.txt
+++ b/world/map/npc/013-3/sword_chest.txt
@@ -2,7 +2,6 @@
013-3,177,22,0|script|Chest#sword|111
{
- callfunc "ClearVariables";
if (FLAGS & FLAG_HURNSMINE_CHEST) goto L_Finished;
mes "[Chest]";
diff --git a/world/map/npc/014-1/_mobs.txt b/world/map/npc/014-1/_mobs.txt
index 751a04cf..862d1c19 100644
--- a/world/map/npc/014-1/_mobs.txt
+++ b/world/map/npc/014-1/_mobs.txt
@@ -19,7 +19,7 @@
014-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms,Mob014-1::On1055
-014-1,0,0,0|script|Mob014-1|-1
+014-1,0,0,0|script|Mob014-1|32767
{
end;
diff --git a/world/map/npc/014-1/_warps.txt b/world/map/npc/014-1/_warps.txt
index 8b987a73..b0d9c488 100644
--- a/world/map/npc/014-1/_warps.txt
+++ b/world/map/npc/014-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-014-1,109,91|warp|To Woodland|-1,1,011-1,31,61
-014-1,93,58|warp|To Woodland Cave|-1,-1,014-3,57,172
-014-1,76,38|warp|To Woodland Cave|-1,-1,014-3,35,33
+014-1,109,91|warp|To Woodland#014-10|-1,1,011-1,31,61
+014-1,93,58|warp|To Woodland Cav#014-11|-1,-1,014-3,57,172
+014-1,76,38|warp|To Woodland Cav#014-12|-1,-1,014-3,35,33
diff --git a/world/map/npc/014-1/wedding-officiator.txt b/world/map/npc/014-1/wedding-officiator.txt
index 30f6201c..fc237082 100644
--- a/world/map/npc/014-1/wedding-officiator.txt
+++ b/world/map/npc/014-1/wedding-officiator.txt
@@ -96,7 +96,7 @@ L_Next2:
goto L_too_young;
getinventorylist;
if (@inventorylist_count > 98)
- goto L_No_Room_For_Rings;
+ goto L_no_room_for_rings;
set Zeny, Zeny - WEDDING_FEE;
getitem "WeddingRing", 1;
@@ -239,7 +239,7 @@ L_DidDivorce:
mes "\"You are divorced now. Thank you for your business.\"";
close;
-L_No_Room_For_Rings:
+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/_mobs.txt b/world/map/npc/014-3/_mobs.txt
index cc32d1da..ebadbf58 100644
--- a/world/map/npc/014-3/_mobs.txt
+++ b/world/map/npc/014-3/_mobs.txt
@@ -4,7 +4,7 @@
014-3,0,0,0,0|monster|Bat|1017,50,0ms,0ms,Mob014-3::On1017
-014-3,0,0,0|script|Mob014-3|-1
+014-3,0,0,0|script|Mob014-3|32767
{
end;
diff --git a/world/map/npc/014-3/_warps.txt b/world/map/npc/014-3/_warps.txt
index 0ac1df1f..c85fb564 100644
--- a/world/map/npc/014-3/_warps.txt
+++ b/world/map/npc/014-3/_warps.txt
@@ -1,7 +1,7 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Cave warps
-014-3,35,32|warp|To Woodland|-1,-1,014-1,76,39
-014-3,57,173|warp|To Woodland|0,-1,014-1,93,59
-014-3,91,108|warp|To Second Cave|-1,-1,014-3,103,53
-014-3,103,54|warp|To First Cave|-1,-1,014-3,91,109
+014-3,35,32|warp|To Woodland#014-30|-1,-1,014-1,76,39
+014-3,57,173|warp|To Woodland#014-31|0,-1,014-1,93,59
+014-3,91,108|warp|To Second Cave#014-32|-1,-1,014-3,103,53
+014-3,103,54|warp|To First Cave#014-33|-1,-1,014-3,91,109
diff --git a/world/map/npc/015-1/_mobs.txt b/world/map/npc/015-1/_mobs.txt
index 810a4bd8..cad191f2 100644
--- a/world/map/npc/015-1/_mobs.txt
+++ b/world/map/npc/015-1/_mobs.txt
@@ -13,7 +13,7 @@
015-1,0,0,0,0|monster|MauvePlant|1029,4,270000ms,180000ms,Mob015-1::On1029
-015-1,0,0,0|script|Mob015-1|-1
+015-1,0,0,0|script|Mob015-1|32767
{
end;
diff --git a/world/map/npc/015-1/_warps.txt b/world/map/npc/015-1/_warps.txt
index 679f1883..ba04bfa4 100644
--- a/world/map/npc/015-1/_warps.txt
+++ b/world/map/npc/015-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-015-1,93,55|warp|To Woodland|-1,0,010-1,14,54
-015-1,59,31|warp|To Cat's Cave|-1,-1,015-3,31,42
-015-1,59,101|warp|To Woodland Swamp|2,-1,025-1,89,20
+015-1,93,55|warp|To Woodland#015-10|-1,0,010-1,14,54
+015-1,59,31|warp|To Cat's Cave#015-11|-1,-1,015-3,31,42
+015-1,59,101|warp|To Woodland Swa#015-12|2,-1,025-1,89,20
diff --git a/world/map/npc/015-1/barrier.txt b/world/map/npc/015-1/barrier.txt
index a87cfd23..ad20257d 100644
--- a/world/map/npc/015-1/barrier.txt
+++ b/world/map/npc/015-1/barrier.txt
@@ -1,7 +1,7 @@
// This barrier is for checking whether the player went outside after
// progressing with the cat quest.
-015-1,59,32,0|script|#CatOutsideBarrier|127,1,1
+015-1,59,32,0|script|#CatOutsideBarrier|32767,1,1
{
set @catNeedsAlone, 0;
end;
diff --git a/world/map/npc/015-1/sword.txt b/world/map/npc/015-1/sword.txt
index 6e218f9b..7f32bf60 100644
--- a/world/map/npc/015-1/sword.txt
+++ b/world/map/npc/015-1/sword.txt
@@ -171,9 +171,9 @@ L_Levelup2_yes:
next;
if (!MPQUEST)
- goto L_Levelup2_must_reg;
+ goto L_Lvl2_must_reg;
if (MPQUEST && (Mobpt < 1000))
- goto L_Levelup2_must_practice;
+ 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.\"";
@@ -217,7 +217,7 @@ L_Next1:
next;
goto L_Farewell;
-L_Levelup2_must_reg:
+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;
@@ -226,23 +226,18 @@ L_Levelup2_must_reg:
next;
goto L_Farewell;
-L_Levelup2_must_practice:
+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_Farewell:
- mes "[Mystic Sword]";
- mes "\"Farewell for now!\"";
- close;
-
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,
+ "No.", L_Farewell,
"Yes.", L_Next2;
L_Next2:
@@ -250,7 +245,7 @@ L_Next2:
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,
+ "No, I don't want that.", L_Farewell,
"So be it.", L_Next3;
L_Next3:
@@ -285,7 +280,7 @@ L_L2_W10:
next;
menu
"OK.", L_Next4,
- "No way.", L_farewell;
+ "No way.", L_Farewell;
L_Next4:
if (countitem("IronOre") < 1)
@@ -307,14 +302,14 @@ L_Next4:
mes "[Mystic Sword]";
mes "\"This powder thou shalst need to cast the lightning spell. Throw it up into the air and shout '" + getspellinvocation("lightning-strike") + "', and smite thine enemies with lightning.\"";
next;
- goto L_farewell;
+ 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:
+L_Farewell:
mes "[Mystic Sword]";
mes "\"Then I bid thee farewell for now!\"";
close;
diff --git a/world/map/npc/015-3/_mobs.txt b/world/map/npc/015-3/_mobs.txt
index 03f2627c..1b205735 100644
--- a/world/map/npc/015-3/_mobs.txt
+++ b/world/map/npc/015-3/_mobs.txt
@@ -7,7 +7,7 @@
015-3,40,19,1,1|monster|Spider|1012,1,100000ms,30000ms,Mob015-3::On1012
-015-3,0,0,0|script|Mob015-3|-1
+015-3,0,0,0|script|Mob015-3|32767
{
end;
diff --git a/world/map/npc/015-3/_warps.txt b/world/map/npc/015-3/_warps.txt
index fea56f7e..7a815f5c 100644
--- a/world/map/npc/015-3/_warps.txt
+++ b/world/map/npc/015-3/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Woodland|-1,-1,015-1,59,32
+015-3,31,43|warp|To Woodland#015-30|-1,-1,015-1,59,32
diff --git a/world/map/npc/015-3/katze.txt b/world/map/npc/015-3/katze.txt
index 8e94ce06..15dea917 100644
--- a/world/map/npc/015-3/katze.txt
+++ b/world/map/npc/015-3/katze.txt
@@ -43,7 +43,7 @@ L_NeedsMilk:
L_ThrowStone:
set @cat, 0;
callsub S_Update_Katze;
- percentheal -30, 0;
+ 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...";
diff --git a/world/map/npc/016-1/_mobs.txt b/world/map/npc/016-1/_mobs.txt
index 8777b2a4..58b33a9d 100644
--- a/world/map/npc/016-1/_mobs.txt
+++ b/world/map/npc/016-1/_mobs.txt
@@ -13,7 +13,7 @@
016-1,0,0,0,0|monster|Silkworm|1035,7,150000ms,7000ms,Mob016-1::On1035
-016-1,0,0,0|script|Mob016-1|-1
+016-1,0,0,0|script|Mob016-1|32767
{
end;
diff --git a/world/map/npc/016-1/_warps.txt b/world/map/npc/016-1/_warps.txt
index 7437c416..190b684e 100644
--- a/world/map/npc/016-1/_warps.txt
+++ b/world/map/npc/016-1/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-016-1,56,18|warp|To Woodland|1,-1,010-1,56,104
-016-1,20,53|warp|To Woodland Swamp|-1,1,025-1,129,58
+016-1,56,18|warp|To Woodland#016-10|1,-1,010-1,56,104
+016-1,20,53|warp|To Woodland Swa#016-11|-1,1,025-1,129,58
diff --git a/world/map/npc/016-1/gwendolyn.txt b/world/map/npc/016-1/gwendolyn.txt
index f95336e9..8276de08 100644
--- a/world/map/npc/016-1/gwendolyn.txt
+++ b/world/map/npc/016-1/gwendolyn.txt
@@ -442,7 +442,7 @@ L_target_hit:
next;
mes "\"Let me inspect it...\" She walks to the target.";
next;
- if( rand(500) > (2*readparam(bDex) + readparam(bAgi)))
+ if( rand(500) > (2*Dex + Agi))
goto L_target_nohit;
set @Q_hawkseye, 6;
callsub S_Update_Var;
diff --git a/world/map/npc/017-1/_mobs.txt b/world/map/npc/017-1/_mobs.txt
index 79693ffa..fe1c40b4 100644
--- a/world/map/npc/017-1/_mobs.txt
+++ b/world/map/npc/017-1/_mobs.txt
@@ -21,7 +21,7 @@
017-1,0,0,0,0|monster|Squirrel|1038,30,20ms,10ms,Mob017-1::On1038
-017-1,0,0,0|script|Mob017-1|-1
+017-1,0,0,0|script|Mob017-1|32767
{
end;
diff --git a/world/map/npc/017-1/_warps.txt b/world/map/npc/017-1/_warps.txt
index bddbb64d..5ccd8e45 100644
--- a/world/map/npc/017-1/_warps.txt
+++ b/world/map/npc/017-1/_warps.txt
@@ -1,11 +1,11 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Hills warps
-017-1,46,105|warp|To Woodland Hills|2,-1,013-1,45,21
-017-1,43,32|warp|To Theater|-1,-1,017-2,26,30
-017-1,76,31|warp|To Woodland Hills Labyr|-1,-1,017-3,69,68
-017-1,98,20|warp|To Woodland Hills Labyr|-1,-1,017-3,83,52
-017-1,97,31|warp|To Woodland Hills Labyr|-1,-1,017-3,76,65
-017-1,168,90|warp|To Mirak's House|-1,-1,056-2,34,30
-017-1,188,104|warp|To Woodland Hills|-1,-1,055-1,74,21
-017-1,182,16|warp|To Deep Snow Forest|1,-1,045-1,25,178
+017-1,46,105|warp|To Woodland Hil#017-10|2,-1,013-1,45,21
+017-1,43,32|warp|To Theater#017-11|-1,-1,017-2,26,30
+017-1,76,31|warp|To Woodland Hil#017-12|-1,-1,017-3,69,68
+017-1,98,20|warp|To Woodland Hil#017-13|-1,-1,017-3,83,52
+017-1,97,31|warp|To Woodland Hil#017-14|-1,-1,017-3,76,65
+017-1,168,90|warp|To Mirak's Hous#017-15|-1,-1,056-2,34,30
+017-1,188,104|warp|To Woodland Hil#017-16|-1,-1,055-1,74,21
+017-1,182,16|warp|To Deep Snow Fo#017-17|1,-1,045-1,25,178
diff --git a/world/map/npc/017-2/_mobs.txt b/world/map/npc/017-2/_mobs.txt
index 6c094aff..7fbf694f 100644
--- a/world/map/npc/017-2/_mobs.txt
+++ b/world/map/npc/017-2/_mobs.txt
@@ -3,7 +3,7 @@
-017-2,0,0,0|script|Mob017-2|-1
+017-2,0,0,0|script|Mob017-2|32767
{
end;
}
diff --git a/world/map/npc/017-2/_warps.txt b/world/map/npc/017-2/_warps.txt
index 8f26141c..5fc095e5 100644
--- a/world/map/npc/017-2/_warps.txt
+++ b/world/map/npc/017-2/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Theater warps
-017-2,26,31|warp|To Outside|-1,-1,017-1,43,33
-017-2,26,21|warp|To Center Trapdoor Back|-1,-1,017-9,26,27
+017-2,26,31|warp|To Outside#017-20|-1,-1,017-1,43,33
+017-2,26,21|warp|To Center Trapd#017-21|-1,-1,017-9,26,27
diff --git a/world/map/npc/017-3/_mobs.txt b/world/map/npc/017-3/_mobs.txt
index 1dc64829..c498697b 100644
--- a/world/map/npc/017-3/_mobs.txt
+++ b/world/map/npc/017-3/_mobs.txt
@@ -3,7 +3,7 @@
-017-3,0,0,0|script|Mob017-3|-1
+017-3,0,0,0|script|Mob017-3|32767
{
end;
}
diff --git a/world/map/npc/017-3/_warps.txt b/world/map/npc/017-3/_warps.txt
index 53bf76eb..6ed5ec7b 100644
--- a/world/map/npc/017-3/_warps.txt
+++ b/world/map/npc/017-3/_warps.txt
@@ -1,12 +1,12 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Cave warps
-017-3,69,69|warp|To Woodland Hills|-1,-1,017-1,76,32
-017-3,83,53|warp|To Theater Hill|-1,-1,017-1,98,21
-017-3,76,64|warp|To Woodland Hills Labyr|-1,-1,017-1,98,30
-017-3,63,26|warp|To Deeper Labyrinth|-1,-1,017-4,52,24
-017-3,29,48|warp|To Deeper Labyrinth|-1,-1,017-4,30,48
-017-3,69,52|warp|To Deeper Labyrinth|-1,-1,017-4,91,27
-017-3,58,60|warp|To Deeper Labyrinth|-1,-1,017-4,83,40
-017-3,32,70|warp|To Deeper Labyrinth|0,-1,017-4,123,27
-017-3,82,77|warp|To Deeper Cave|1,-1,017-4,166,27
+017-3,69,69|warp|To Woodland Hil#017-30|-1,-1,017-1,76,32
+017-3,83,53|warp|To Theater Hill#017-31|-1,-1,017-1,98,21
+017-3,76,64|warp|To Woodland Hil#017-32|-1,-1,017-1,98,30
+017-3,63,26|warp|To Deeper Labyr#017-33|-1,-1,017-4,52,24
+017-3,29,48|warp|To Deeper Labyr#017-34|-1,-1,017-4,30,48
+017-3,69,52|warp|To Deeper Labyr#017-35|-1,-1,017-4,91,27
+017-3,58,60|warp|To Deeper Labyr#017-36|-1,-1,017-4,83,40
+017-3,32,70|warp|To Deeper Labyr#017-37|0,-1,017-4,123,27
+017-3,82,77|warp|To Deeper Cave#017-38|1,-1,017-4,166,27
diff --git a/world/map/npc/017-4/_mobs.txt b/world/map/npc/017-4/_mobs.txt
index 12f048ec..920a1db5 100644
--- a/world/map/npc/017-4/_mobs.txt
+++ b/world/map/npc/017-4/_mobs.txt
@@ -3,7 +3,7 @@
-017-4,0,0,0|script|Mob017-4|-1
+017-4,0,0,0|script|Mob017-4|32767
{
end;
}
diff --git a/world/map/npc/017-4/_warps.txt b/world/map/npc/017-4/_warps.txt
index b06a8db2..baa3e6db 100644
--- a/world/map/npc/017-4/_warps.txt
+++ b/world/map/npc/017-4/_warps.txt
@@ -1,10 +1,10 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Hideout warps
-017-4,201,25|warp|To Labyrinth|-1,-1,017-4,173,46
-017-4,91,26|warp|To Cave|-1,-1,017-3,69,51
-017-4,123,26|warp|To Cave|-1,-1,017-3,32,69
-017-4,166,26|warp|To Cave|-1,-1,017-3,82,76
-017-4,30,47|warp|To Cave|-1,-1,017-3,29,47
-017-4,52,25|warp|To Cave|-1,-1,017-3,63,27
-017-4,83,41|warp|To Cave|-1,-1,017-3,58,61
+017-4,201,25|warp|To Labyrinth#017-40|-1,-1,017-4,173,46
+017-4,91,26|warp|To Cave#017-41|-1,-1,017-3,69,51
+017-4,123,26|warp|To Cave#017-42|-1,-1,017-3,32,69
+017-4,166,26|warp|To Cave#017-43|-1,-1,017-3,82,76
+017-4,30,47|warp|To Cave#017-44|-1,-1,017-3,29,47
+017-4,52,25|warp|To Cave#017-45|-1,-1,017-3,63,27
+017-4,83,41|warp|To Cave#017-46|-1,-1,017-3,58,61
diff --git a/world/map/npc/017-4/waric.txt b/world/map/npc/017-4/waric.txt
index 618f4a8f..f98cb0d0 100644
--- a/world/map/npc/017-4/waric.txt
+++ b/world/map/npc/017-4/waric.txt
@@ -201,7 +201,7 @@ L_Oath:
next;
mes "Warric screams at your silence.";
mes "[Waric]";
- mes "\Say it! Say it now!\"";
+ mes "\"Say it! Say it now!\"";
next;
menu
"[Say the oath]", L_Next3,
@@ -215,8 +215,8 @@ L_Next3:
set @SUP_lvl, 2;
callfunc "SkillUp";
next;
- percentheal 100, 0;
- percentheal -99, 0;
+ heal MaxHp, 0;
+ heal ((MaxHp/100) * -99), 0;
mes "You feel completely exhausted.";
set OrumQuest, 36;
goto L_Close;
@@ -224,8 +224,8 @@ L_Next3:
L_NoOath:
mes "Waric mumbles something. You guess it's a magic spell.";
warp "005-3", 86 , 33;
- percentheal 100, 0;
- percentheal -50, 0;
+ heal MaxHp, 0;
+ heal ((MaxHp/100) * -50), 0;
set OrumQuest, OrumQuest + 1;
goto L_Close;
@@ -364,7 +364,7 @@ L_Banished:
mes "The wizard looks at you with despise.";
mes "[Waric]";
mes "\"How did you...\"";
- percentheal -100, 0;
+ heal -Hp, 0;
goto L_Close;
L_NoItem:
diff --git a/world/map/npc/017-9/_mobs.txt b/world/map/npc/017-9/_mobs.txt
index 13c93b7b..64e6dd7e 100644
--- a/world/map/npc/017-9/_mobs.txt
+++ b/world/map/npc/017-9/_mobs.txt
@@ -3,7 +3,7 @@
-017-9,0,0,0|script|Mob017-9|-1
+017-9,0,0,0|script|Mob017-9|32767
{
end;
}
diff --git a/world/map/npc/017-9/_warps.txt b/world/map/npc/017-9/_warps.txt
index f092c954..439dea5e 100644
--- a/world/map/npc/017-9/_warps.txt
+++ b/world/map/npc/017-9/_warps.txt
@@ -1,8 +1,8 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Backstage warps
-017-9,22,20|warp|To Nivalis|-1,-1,020-1,60,75
-017-9,26,21|warp|To Hurnscald|-1,-1,009-1,43,45
-017-9,30,20|warp|To Tumlishar|-1,-1,001-1,55,118
-017-9,26,28|warp|To second warpzone|-1,-1,017-2,26,23
-017-9,31,28|warp|To Crypt|-1,-1,027-2,118,109
+017-9,22,20|warp|To Nivalis#017-90|-1,-1,020-1,60,75
+017-9,26,21|warp|To Hurnscald#017-91|-1,-1,009-1,43,45
+017-9,30,20|warp|To Tumlishar#017-92|-1,-1,001-1,55,118
+017-9,26,28|warp|To second warpz#017-93|-1,-1,017-2,26,23
+017-9,31,28|warp|To Crypt#017-94|-1,-1,027-2,118,109
diff --git a/world/map/npc/017-9/announcements.txt b/world/map/npc/017-9/announcements.txt
index 696f961f..aa6df918 100644
--- a/world/map/npc/017-9/announcements.txt
+++ b/world/map/npc/017-9/announcements.txt
@@ -62,7 +62,7 @@ L_CreateBroadcast:
mes "Enter the message to broadcast:";
input $@GMSA_MSG$;
if ($@GMSA_MSG$ == "")
- goto L_InvalidBroadcastMessage;
+ goto L_InvalidBMsg;
next;
mes "[GM Scheduled Broadcasts Board]";
@@ -91,7 +91,7 @@ L_CreateBroadcast:
"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_InvalidBroadcastMessage:
+L_InvalidBMsg:
mes "[GM Scheduled Broadcasts Board]";
mes "The message can't be empty. Please retry.";
goto L_CreateBroadcast;
diff --git a/world/map/npc/017-9/secret.txt b/world/map/npc/017-9/secret.txt
index 555d6837..4c48f0f7 100644
--- a/world/map/npc/017-9/secret.txt
+++ b/world/map/npc/017-9/secret.txt
@@ -1,4 +1,4 @@
-009-1,42,43,0|script|#SecretDoor|127,0,0
+009-1,42,43,0|script|#SecretDoor|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 26, 25;
@@ -8,7 +8,7 @@ L_close:
close;
}
-020-1,60,76,0|script|#SecretDoor2|127,0,0
+020-1,60,76,0|script|#SecretDoor2|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 22, 22;
@@ -18,7 +18,7 @@ L_close:
close;
}
-001-1,54,118,0|script|#SecretDoor3|127,0,0
+001-1,54,118,0|script|#SecretDoor3|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 30, 22;
@@ -28,7 +28,7 @@ L_close:
close;
}
-027-2,118,111,0|script|#SecretDoor4|127,0,0
+027-2,118,111,0|script|#SecretDoor4|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 30, 29;
diff --git a/world/map/npc/018-1/_mobs.txt b/world/map/npc/018-1/_mobs.txt
index 7a5cee1e..942a6d09 100644
--- a/world/map/npc/018-1/_mobs.txt
+++ b/world/map/npc/018-1/_mobs.txt
@@ -30,7 +30,7 @@
018-1,134,80,14,39|monster|Maggot|1002,15,30ms,0ms,Mob018-1::On1002
-018-1,0,0,0|script|Mob018-1|-1
+018-1,0,0,0|script|Mob018-1|32767
{
end;
diff --git a/world/map/npc/018-1/_warps.txt b/world/map/npc/018-1/_warps.txt
index 962433fb..d429039e 100644
--- a/world/map/npc/018-1/_warps.txt
+++ b/world/map/npc/018-1/_warps.txt
@@ -1,20 +1,20 @@
// 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|To Northern Mine|0,-1,018-3,100,132
-018-1,112,61|warp|To Bat Cave|-1,-1,018-3,44,38
-018-1,115,40|warp|To Woodland Hills Cave|-1,-1,013-3,22,114
-018-1,128,56|warp|To Northern Mine|-1,-1,018-3,49,99
-018-1,90,42|warp|To Northern Mine|-1,-1,018-3,123,166
-018-1,69,54|warp|To Northern Mine|-1,-1,018-3,70,105
-018-1,127,36|warp|To Woodland Hills Cave|-1,-1,013-3,139,44
-018-1,134,45|warp|To Woodland Hills Cave|-1,-1,013-3,61,178
-018-1,147,40|warp|To Woodland Hills Cave|-1,-1,013-3,81,102
-018-1,153,46|warp|To Northern Mine|-1,-1,018-3,145,162
-018-1,158,34|warp|To Northern Mine|-1,-1,018-3,64,103
-018-1,162,44|warp|To Northern Mine|-1,-1,018-3,29,166
-018-1,177,20|warp|To Jack O Cave|-1,-1,013-3,177,90
-018-1,65,73|warp|To Woodland Mining Camp|-1,-1,018-2,50,28
-018-1,79,98|warp|To Hurnscald Outskirts|2,-1,008-1,78,18
-018-1,64,70|warp|To Woodland Mining Camp|-1,-1,018-2,41,21
-018-1,78,34|warp|To Northern Mine|-1,-1,018-3,107,147
+018-1,79,59|warp|To Northern Min#018-10|0,-1,018-3,100,132
+018-1,112,61|warp|To Bat Cave#018-11|-1,-1,018-3,44,38
+018-1,115,40|warp|To Woodland Hil#018-12|-1,-1,013-3,22,114
+018-1,128,56|warp|To Northern Min#018-13|-1,-1,018-3,49,99
+018-1,90,42|warp|To Northern Min#018-14|-1,-1,018-3,123,166
+018-1,69,54|warp|To Northern Min#018-15|-1,-1,018-3,70,105
+018-1,127,36|warp|To Woodland Hil#018-16|-1,-1,013-3,139,44
+018-1,134,45|warp|To Woodland Hil#018-17|-1,-1,013-3,61,178
+018-1,147,40|warp|To Woodland Hil#018-18|-1,-1,013-3,81,102
+018-1,153,46|warp|To Northern Min#018-19|-1,-1,018-3,145,162
+018-1,158,34|warp|To Northern Min#018-110|-1,-1,018-3,64,103
+018-1,162,44|warp|To Northern Min#018-111|-1,-1,018-3,29,166
+018-1,177,20|warp|To Jack O Cave#018-112|-1,-1,013-3,177,90
+018-1,65,73|warp|To Woodland Min#018-113|-1,-1,018-2,50,28
+018-1,79,98|warp|To Hurnscald Ou#018-114|2,-1,008-1,78,18
+018-1,64,70|warp|To Woodland Min#018-115|-1,-1,018-2,41,21
+018-1,78,34|warp|To Northern Min#018-116|-1,-1,018-3,107,147
diff --git a/world/map/npc/018-2/_mobs.txt b/world/map/npc/018-2/_mobs.txt
index 8ff2d064..fb451a92 100644
--- a/world/map/npc/018-2/_mobs.txt
+++ b/world/map/npc/018-2/_mobs.txt
@@ -4,7 +4,7 @@
018-2,114,21,4,3|monster|YellowSlime|1007,1,100000ms,30000ms,Mob018-2::On1007
-018-2,0,0,0|script|Mob018-2|-1
+018-2,0,0,0|script|Mob018-2|32767
{
end;
diff --git a/world/map/npc/018-2/_warps.txt b/world/map/npc/018-2/_warps.txt
index d4b61798..ab989a93 100644
--- a/world/map/npc/018-2/_warps.txt
+++ b/world/map/npc/018-2/_warps.txt
@@ -1,10 +1,10 @@
// 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|To Outside|-1,-1,018-1,65,74
-018-2,41,20|warp|To Outside|-1,-1,018-1,64,69
-018-2,20,24|warp|To Bottom Floor|-1,-1,018-2,112,26
-018-2,112,25|warp|To First Floor|-1,-1,018-2,20,23
-018-2,21,28|warp|To Second Floor|0,-1,018-2,79,25
-018-2,79,26|warp|To First Floor|0,-1,018-2,21,29
-018-2,114,19|warp|To Northern Mine|-1,-1,018-3,177,55
+018-2,50,29|warp|To Outside#018-20|-1,-1,018-1,65,74
+018-2,41,20|warp|To Outside#018-21|-1,-1,018-1,64,69
+018-2,20,24|warp|To Bottom Floor#018-22|-1,-1,018-2,112,26
+018-2,112,25|warp|To First Floor#018-23|-1,-1,018-2,20,23
+018-2,21,28|warp|To Second Floor#018-24|0,-1,018-2,79,25
+018-2,79,26|warp|To First Floor#018-25|0,-1,018-2,21,29
+018-2,114,19|warp|To Northern Min#018-26|-1,-1,018-3,177,55
diff --git a/world/map/npc/018-2/angus.txt b/world/map/npc/018-2/angus.txt
index 5b7dda85..e49d91ae 100644
--- a/world/map/npc/018-2/angus.txt
+++ b/world/map/npc/018-2/angus.txt
@@ -5,8 +5,6 @@
set @honorific$, "lad";
if (Sex == 0) set @honorific$, "lass";
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (@inspector == 10) goto L_NohMask;
diff --git a/world/map/npc/018-2/books.txt b/world/map/npc/018-2/books.txt
index cd8148c0..24624762 100644
--- a/world/map/npc/018-2/books.txt
+++ b/world/map/npc/018-2/books.txt
@@ -2,8 +2,6 @@
018-2,112,19,0|script|#Bookcase38|400,0,1
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
if (@inspector == 11) goto L_NohMask;
diff --git a/world/map/npc/018-2/caul.txt b/world/map/npc/018-2/caul.txt
index bf3bc4dd..4709cfc9 100644
--- a/world/map/npc/018-2/caul.txt
+++ b/world/map/npc/018-2/caul.txt
@@ -9,8 +9,6 @@
018-2,37,22,0|script|Caul|107
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
set @SETZER_INITIAL, 0;
@@ -48,7 +46,7 @@
set @choices_nr, 4;
- if !(@Q_status)
+ if (!(@Q_status))
goto L_M_no_monster_oil;
set @choice_idx[@choices_nr], @C_monster_oil;
@@ -102,9 +100,9 @@ L_MenuItems:
set @choice, @choice_idx[@menu - 1];
if (@choice == @C_monster_oil)
- goto L_monster_oil_start;
+ goto L_mo_start;
if (@choice == @C_mopox_cure)
- goto L_mopox_cure_start;
+ goto L_mox_start;
if (@choice == @C_nohmask)
goto L_NohMask;
if (@choice == @C_dementiapotion)
@@ -140,7 +138,7 @@ L_brew:
goto L_CraftLoop;
L_CraftLoop:
- set @throw, rand(readparam(bInt));
+ set @throw, rand(Int);
set @result, 1;
if (@throw >= 5) set @result, 2;
if (@throw >= 15) set @result, 3;
@@ -182,7 +180,7 @@ L_NotEnough:
mes "\"Oh, it seems like you don't have enough herbs. You can find herbs in deep forests.\"";
close;
-L_monster_oil_start:
+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;
@@ -191,42 +189,42 @@ L_monster_oil_start:
"OK, I'll ask around, perhaps someone else knows.", L_Close;
if (@Q_status > @SETZER_KNOWS_OIL)
menu
- "Rauk told me the recipe.", L_monster_oil_knows_recipe;
+ "Rauk told me the recipe.", L_mo_knows_recipe;
close;
-L_monster_oil_knows_recipe:
+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_monster_oil_main_menu;
+ goto L_mo_main_menu;
-L_monster_oil_main_menu:
+L_mo_main_menu:
set @main_menu, 1;
menu
- "What do you mean by 'dangerous'?", L_monster_oil_why_dangerous,
- "What do I need, again?", L_monster_oil_ingredients,
- "How does this work?", L_monster_oil_explain,
- "Let's start!", L_monster_oil_start_brew,
- "Where can I get a golden scorpion stinger?", L_monster_oil_where_gold,
+ "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_monster_oil_why_dangerous:
+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_monster_oil_main_menu;
+ goto L_mo_main_menu;
-L_monster_oil_ingredients:
+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_monster_oil_main_menu;
+ goto L_mo_main_menu;
-L_monster_oil_explain:
+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;
@@ -252,27 +250,27 @@ L_monster_oil_explain:
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_monster_oil_main_menu;
- goto L_monster_oil_loop;
+ goto L_mo_main_menu;
+ goto L_mo_loop;
-L_monster_oil_where_gold:
+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_monster_oil_main_menu;
+ goto L_mo_main_menu;
-L_monster_oil_start_brew:
+L_mo_start_brew:
set @main_menu, 0;
if (countitem ("Pearl") < 1)
- goto L_monster_oil_missing;
+ goto L_mo_missing;
if (countitem ("SnakeSkin") < 2)
- goto L_monster_oil_missing;
+ goto L_mo_missing;
if (countitem ("BlackScorpionStinger") < 3)
- goto L_monster_oil_missing;
+ goto L_mo_missing;
if (countitem ("PileOfAsh") < 2)
- goto L_monster_oil_missing;
+ goto L_mo_missing;
if (countitem ("GoldenScorpionStinger") < 1)
- goto L_monster_oil_missing_gold;
+ goto L_mo_missing_gold;
delitem "Pearl", 1;
delitem "SnakeSkin", 2;
@@ -304,30 +302,30 @@ L_monster_oil_start_brew:
set @auto_mode, 0; // Start by adding a colour or going lighter
- goto L_monster_oil_loop;
+ goto L_mo_loop;
-L_monster_oil_missing:
+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_monster_oil_missing_gold:
+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_monster_oil_loop:
+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_monster_oil_alizarin,
- "Add gamboge leaf", L_monster_oil_gamboge,
- "Add cobalt leaf", L_monster_oil_cobalt,
- "Add mauve leaf", L_monster_oil_mauve,
- "Ask Caul for advice", L_monster_oil_explain,
+ "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:
@@ -339,97 +337,97 @@ L_Explodes:
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_monster_oil_out_of_leaves:
+L_mo_out_of_leaves:
mes "[Brewing monster oil]";
mes "You don't have any of these leaves left!";
next;
- goto L_monster_oil_loop;
+ goto L_mo_loop;
-L_monster_oil_alizarin:
+L_mo_alizarin:
set @use_leaf$, "AlizarinHerb";
set @use_color, 1;
- goto L_monster_oil_leaf_color;
+ goto L_mo_leaf_color;
-L_monster_oil_gamboge:
+L_mo_gamboge:
set @use_leaf$, "GambogeHerb";
set @use_color, 2;
- goto L_monster_oil_leaf_color;
+ goto L_mo_leaf_color;
-L_monster_oil_cobalt:
+L_mo_cobalt:
set @use_leaf$, "CobaltHerb";
set @use_color, 4;
- goto L_monster_oil_leaf_color;
+ goto L_mo_leaf_color;
-L_monster_oil_leaf_color:
+L_mo_leaf_color:
if (countitem (@use_leaf$) < 1)
- goto L_monster_oil_out_of_leaves;
+ goto L_mo_out_of_leaves;
- callsub S_monster_oil_random_move;
+ callsub S_mo_random_move;
if (@color & @use_color)
- goto L_monster_oil_pc_bad;
+ 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_monster_oil_loop;
+ goto L_mo_loop;
-L_monster_oil_mauve:
+L_mo_mauve:
if (countitem("MauveHerb") < 1)
- goto L_monster_oil_out_of_leaves;
+ goto L_mo_out_of_leaves;
delitem "MauveHerb", 1;
- callsub S_monster_oil_random_move;
+ callsub S_mo_random_move;
if (@intensity == 2 && @color == 7)
- goto L_monster_oil_done;
+ goto L_mo_done;
if (@intensity == 2)
- goto L_monster_oil_pc_bad;
+ goto L_mo_pc_bad;
set @intensity, @intensity + 1;
mes "The brew darkens as your mauve leaf dissolves.";
next;
- goto L_monster_oil_loop;
+ goto L_mo_loop;
-S_monster_oil_random_move:
+S_mo_random_move:
mes "[Brewing monster oil]";
mes "You throw in a leaf and stir.";
if (@auto_mode == 1)
- goto L_monster_oil_random_1;
- goto L_monster_oil_random_0;
+ goto L_mo_random_1;
+ goto L_mo_random_0;
-L_monster_oil_random_0: // mode 0: add colour or lighten up
+L_mo_random_0: // mode 0: add colour or lighten up
set @auto_mode, 1;
if (rand(3) == 0)
- goto L_monster_oil_random_0_lighten;
+ goto L_mo_random_0_lighten;
set @choice, 1 << (rand(3));
if (@color & @choice)
- goto L_monster_oil_auto_bad;
+ 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_monster_oil_random_0_lighten:
+L_mo_random_0_lighten:
if (@intensity == 0)
- goto L_monster_oil_auto_bad;
+ 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_monster_oil_random_1: // mode 1: remove colour
+L_mo_random_1: // mode 1: remove colour
set @auto_mode, 0;
set @choice, 1 << (rand(3));
if (!(@color & @choice))
- goto L_monster_oil_auto_bad;
+ 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_monster_oil_pc_bad:
- if (rand(readparam(bInt) + 100) > 60)
- goto L_monster_oil_pc_bad_ok;
+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)
@@ -437,38 +435,38 @@ L_monster_oil_pc_bad:
next;
set @bubble_mode, @bubble_mode + 1;
if (@bubble_mode > 2)
- goto L_monster_oil_explode;
- goto L_monster_oil_loop;
+ goto L_mo_explode;
+ goto L_mo_loop;
-L_monster_oil_pc_bad_ok:
+L_mo_pc_bad_ok:
mes "Your leaf dissolves but seems to have no effect.";
next;
- goto L_monster_oil_loop;
+ goto L_mo_loop;
-L_monster_oil_auto_bad:
+L_mo_auto_bad:
if (rand(3) == 0)
goto L_Return;
- if (rand(readparam(bInt) + 100) > 70)
+ 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_monster_oil_explode;
+ goto L_mo_explode;
return;
-L_monster_oil_explode:
+L_mo_explode:
mes "[Exploding monster oil]";
mes "Your brew explodes!";
- if (rand(readparam(bAgi)) > 40)
- goto L_monster_oil_explode_dodge;
+ if (rand(Agi) > 40)
+ goto L_mo_explode_dodge;
mes "The burst of boiling monster brew hits you.";
next;
- itemheal (15 * rand(readparam(bVit))) - 1500, 0;
+ heal (15 * rand(Vit)) - 1500, 0, 1;
close;
-L_monster_oil_explode_dodge:
+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]";
@@ -476,14 +474,14 @@ L_monster_oil_explode_dodge:
mes "\"I told you, it's dangerous!!\"";
close;
-L_monster_oil_done:
+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_monster_oil_no_gold_end;
+ goto L_mo_no_gold_end;
mes "The brew bubbles once more, then calms completely.";
@@ -504,32 +502,32 @@ L_monster_oil_done:
mes "He hands you the monster oil.";
close;
-L_monster_oil_no_gold_end:
+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_mopox_cure_start:
+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_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_overview_menu:
+L_mox_overview_menu:
menu
- "I'm ready!", L_mopox_cure_setup,
- "What are the ingredients?", L_mopox_cure_ingredients,
- "How does this work?", L_mopox_cure_howto,
+ "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_mopox_cure_ingredients:
+L_mox_ingredients:
mes "[Caul]";
mes "\"You will need one concentration potion, one iron potion, a lifestone, and one gamboge leaf.\"";
next;
- goto L_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_howto:
+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;
@@ -542,37 +540,37 @@ L_mopox_cure_howto:
mes "[Caul]";
mes "\"Oh, and be careful: water will evaporate over time, too.\"";
next;
- goto L_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_no_lifestone:
+L_mox_no_lifestone:
mes "[Caul]";
mes "\"You will need a lifestone.\"";
- goto L_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_no_gamboge:
+L_mox_no_gamboge:
mes "[Caul]";
mes "\"You will need a gamboge leaf.\"";
- goto L_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_no_concentration:
+L_mox_no_concentration:
mes "[Caul]";
mes "\"You will need a concentration potion.\"";
- goto L_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_no_iron:
+L_mox_no_iron:
mes "[Caul]";
mes "\"You will need an iron potion.\"";
- goto L_mopox_cure_overview_menu;
+ goto L_mox_overview_menu;
-L_mopox_cure_setup:
+L_mox_setup:
if (countitem("IronPotion") < 1)
- goto L_mopox_cure_no_iron;
+ goto L_mox_no_iron;
if (countitem("ConcentrationPotion") < 1)
- goto L_mopox_cure_no_concentration;
+ goto L_mox_no_concentration;
if (countitem("GambogeHerb") < 1)
- goto L_mopox_cure_no_gamboge;
+ goto L_mox_no_gamboge;
if (countitem("Lifestone") < 1)
- goto L_mopox_cure_no_lifestone;
+ goto L_mox_no_lifestone;
delitem "IronPotion", 1;
delitem "ConcentrationPotion", 1;
@@ -592,14 +590,14 @@ L_mopox_cure_setup:
if (@stickiness == 3 && @colour == 3)
set @colour, 4; // don't allow insta-win; it's easy enough.
set @rounds, 0;
- goto L_mopox_cure_loop;
+ goto L_mox_loop;
-L_mopox_cure_loop:
+L_mox_loop:
mes "[Brewing Mopox Cure]";
mes "The brew is " + @colours$[@colour] + " and " + @stickinesses$[@stickiness] + ".";
if (@colour == 3 && @stickiness == 3)
- goto L_mopox_cure_win;
+ goto L_mox_win;
next;
set @colour, @colour + 10;
@@ -611,27 +609,27 @@ L_mopox_cure_loop:
"Add sulphur powder", L_mopox_B_sulphur,
"Add mauve", L_mopox_B_mauve,
"...what should I do again?", L_mopox_reexplain,
- "Wait", L_mopox_cure_next;
+ "Wait", L_mox_next;
-L_mopox_cure_next:
+L_mox_next:
set @stickiness, @stickiness + @rounds;
set @rounds, 1 - @rounds;
if (@stickiness < 10)
set @stickiness, 10;
if (@colour < 10)
- goto L_mopox_failed_badcolour;
+ goto L_mopox_fail_bc;
if (@colour > 17)
- goto L_mopox_failed_badcolour;
+ goto L_mopox_fail_bc;
if (@stickiness > 16)
goto L_mopox_failed_hard;
if (@colour > 17)
- goto L_mopox_failed_badcolour;
+ goto L_mopox_fail_bc;
set @colour, @colour - 10;
set @stickiness, @stickiness - 10;
- goto L_mopox_cure_loop;
+ goto L_mox_loop;
L_mopox_reexplain:
mes "[Caul]";
@@ -643,13 +641,13 @@ L_mopox_reexplain:
mes "\"Water and ground roots mostly affect stickiness.\"";
mes "\"Mauve and sulphur powder mostly affect color, with Mauve darkening the brew.\"";
next;
- goto L_mopox_cure_next;
+ goto L_mox_next;
L_mopox_B_none:
mes "[Brewing Mopox Cure]";
mes "You don't have any left!";
next;
- goto L_mopox_cure_next;
+ goto L_mox_next;
L_mopox_B_root:
if (countitem ("Root") < 1)
@@ -661,7 +659,7 @@ L_mopox_B_root:
next;
set @colour, @colour + 1;
set @stickiness, @stickiness + 3;
- goto L_mopox_cure_next;
+ goto L_mox_next;
L_mopox_B_water:
if (countitem ("BottleOfWater") < 1)
@@ -674,7 +672,7 @@ L_mopox_B_water:
next;
set @colour, @colour;
set @stickiness, @stickiness - 2;
- goto L_mopox_cure_next;
+ goto L_mox_next;
L_mopox_B_sulphur:
if (countitem ("SulphurPowder") < 1)
@@ -686,7 +684,7 @@ L_mopox_B_sulphur:
next;
set @colour, @colour - 3;
set @stickiness, @stickiness + 1;
- goto L_mopox_cure_next;
+ goto L_mox_next;
L_mopox_B_mauve:
if (countitem ("MauveHerb") < 1)
@@ -698,9 +696,9 @@ L_mopox_B_mauve:
next;
set @colour, @colour + 2;
set @stickiness, @stickiness + 1;
- goto L_mopox_cure_next;
+ goto L_mox_next;
-L_mopox_failed_badcolour:
+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.\"";
@@ -715,7 +713,7 @@ L_mopox_failed_hard:
mes "Suddenly, the thick mass bends outwards, a huge bubble bursting open right in your face!";
next;
- if (rand(readparam(bVit)) < 40)
+ if (rand(Vit) < 40)
sc_start sc_poison, 1, 20;
mes "[Brewing Mopox Cure]";
@@ -726,7 +724,7 @@ L_mopox_failed_hard:
mes "\"Better luck next time!\"";
close;
-L_mopox_cure_win:
+L_mox_win:
mes "Caul looks pleased. \"Well done! This looks very good to me.\"";
next;
mes "[Caul]";
@@ -734,13 +732,13 @@ L_mopox_cure_win:
mes "\"One potion of Mopox cure, here you are. Good luck!\"";
getitem "MopoxCurePotion", 1;
if (!@Q_can_score_mopox_cure)
- goto L_mopox_cure_win_quick;
+ 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_mopox_cure_win_quick;
+ goto L_mox_win_quick;
-L_mopox_cure_win_quick:
+L_mox_win_quick:
close;
L_DemPotion:
diff --git a/world/map/npc/018-2/miners.txt b/world/map/npc/018-2/miners.txt
index e29f15f6..29192eec 100644
--- a/world/map/npc/018-2/miners.txt
+++ b/world/map/npc/018-2/miners.txt
@@ -3,8 +3,6 @@
018-2,85,23,0|script|Malek|109
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
set @MIN_GEM_AMOUNT, 7;
diff --git a/world/map/npc/018-2/receptionist.txt b/world/map/npc/018-2/receptionist.txt
index 50143f2c..efac07d9 100644
--- a/world/map/npc/018-2/receptionist.txt
+++ b/world/map/npc/018-2/receptionist.txt
@@ -2,8 +2,6 @@
018-2,50,24,0|script|Receptionist#mine|108
{
- callfunc "ClearVariables";
-
set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
mes "[Receptionist]";
diff --git a/world/map/npc/018-3/_mobs.txt b/world/map/npc/018-3/_mobs.txt
index 7ad389b1..46457878 100644
--- a/world/map/npc/018-3/_mobs.txt
+++ b/world/map/npc/018-3/_mobs.txt
@@ -26,7 +26,7 @@
018-3,99,99,17,17|monster|CaveMaggot|1056,4,100000ms,30000ms,Mob018-3::On1056
-018-3,0,0,0|script|Mob018-3|-1
+018-3,0,0,0|script|Mob018-3|32767
{
end;
diff --git a/world/map/npc/018-3/_warps.txt b/world/map/npc/018-3/_warps.txt
index e090848b..de023db1 100644
--- a/world/map/npc/018-3/_warps.txt
+++ b/world/map/npc/018-3/_warps.txt
@@ -1,25 +1,25 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Northern Mines warps
-018-3,100,133|warp|To Woodland Hills|0,-1,018-1,79,60
-018-3,44,39|warp|To Woodland Mining Camp|-1,-1,018-1,112,62
-018-3,49,100|warp|To Woodland Hills|-1,-1,018-1,128,57
-018-3,123,167|warp|To Woodland Mining Camp|-1,-1,018-1,90,43
-018-3,70,106|warp|To Woodland Hills|-1,-1,018-1,69,55
-018-3,50,88|warp|To Woodland Hills Cave|-1,-1,013-3,69,142
-018-3,145,163|warp|To Woodland Mining Camp|-1,-1,018-1,153,47
-018-3,64,104|warp|To Woodland Hills|-1,-1,018-1,158,35
-018-3,29,167|warp|To Woodland Mining Camp|-1,-1,018-1,162,45
-018-3,97,69|warp|To Fight Cave|-1,-1,013-3,178,43
-018-3,27,54|warp|To Woodland Hills Cave|-1,-1,013-3,169,44
-018-3,134,63|warp|To Fight Cave|-1,-1,013-3,152,29
-018-3,177,56|warp|To Woodland Mining Camp|-1,-1,018-2,114,20
-018-3,172,21|warp|To Woodland Hills Cave|-1,-1,013-3,123,103
-018-3,177,21|warp|To Jack O Cave|-1,-1,013-3,147,103
-018-3,27,91|warp|To Jack O Cave|-1,-1,013-3,158,67
-018-3,90,50|warp|To Fight Cave|-1,-1,013-3,67,50
-018-3,71,122|warp|To Black Scorpion Cave|-1,-1,013-3,111,41
-018-3,174,85|warp|To Woodland Hills Cave|-1,-1,013-3,62,99
-018-3,102,69|warp|To Woodland Hills Cave|-1,-1,013-3,68,96
-018-3,179,181|warp|To Hurnscald Cave|-1,-1,009-3,157,31
-018-3,107,146|warp|To Woodland Mining Camp|-1,-1,018-1,78,33
+018-3,100,133|warp|To Woodland Hil#018-30|0,-1,018-1,79,60
+018-3,44,39|warp|To Woodland Min#018-31|-1,-1,018-1,112,62
+018-3,49,100|warp|To Woodland Hil#018-32|-1,-1,018-1,128,57
+018-3,123,167|warp|To Woodland Min#018-33|-1,-1,018-1,90,43
+018-3,70,106|warp|To Woodland Hil#018-34|-1,-1,018-1,69,55
+018-3,50,88|warp|To Woodland Hil#018-35|-1,-1,013-3,69,142
+018-3,145,163|warp|To Woodland Min#018-36|-1,-1,018-1,153,47
+018-3,64,104|warp|To Woodland Hil#018-37|-1,-1,018-1,158,35
+018-3,29,167|warp|To Woodland Min#018-38|-1,-1,018-1,162,45
+018-3,97,69|warp|To Fight Cave#018-39|-1,-1,013-3,178,43
+018-3,27,54|warp|To Woodland Hil#018-310|-1,-1,013-3,169,44
+018-3,134,63|warp|To Fight Cave#018-311|-1,-1,013-3,152,29
+018-3,177,56|warp|To Woodland Min#018-312|-1,-1,018-2,114,20
+018-3,172,21|warp|To Woodland Hil#018-313|-1,-1,013-3,123,103
+018-3,177,21|warp|To Jack O Cave#018-314|-1,-1,013-3,147,103
+018-3,27,91|warp|To Jack O Cave#018-315|-1,-1,013-3,158,67
+018-3,90,50|warp|To Fight Cave#018-316|-1,-1,013-3,67,50
+018-3,71,122|warp|To Black Scorpi#018-317|-1,-1,013-3,111,41
+018-3,174,85|warp|To Woodland Hil#018-318|-1,-1,013-3,62,99
+018-3,102,69|warp|To Woodland Hil#018-319|-1,-1,013-3,68,96
+018-3,179,181|warp|To Hurnscald Ca#018-320|-1,-1,009-3,157,31
+018-3,107,146|warp|To Woodland Min#018-321|-1,-1,018-1,78,33
diff --git a/world/map/npc/018-3/bookcase.txt b/world/map/npc/018-3/bookcase.txt
index a2cf0431..8c5d587f 100644
--- a/world/map/npc/018-3/bookcase.txt
+++ b/world/map/npc/018-3/bookcase.txt
@@ -2,8 +2,6 @@
018-3,75,123,0|script|#DemonMineBookcase1|400
{
- callfunc "ClearVariables";
-
set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
if (@state == 0) goto L_Search;
diff --git a/world/map/npc/018-3/evil-obelisk.txt b/world/map/npc/018-3/evil-obelisk.txt
index ac316fd5..4ecc00b3 100644
--- a/world/map/npc/018-3/evil-obelisk.txt
+++ b/world/map/npc/018-3/evil-obelisk.txt
@@ -2,7 +2,6 @@
018-3,67,28,0|script|Evil Obelisk|185
{
- callfunc "ClearVariables";
set @map$, "018-3";
set @x0, 56;
set @y0, 22;
diff --git a/world/map/npc/019-1/_mobs.txt b/world/map/npc/019-1/_mobs.txt
index a21c8473..505d18df 100644
--- a/world/map/npc/019-1/_mobs.txt
+++ b/world/map/npc/019-1/_mobs.txt
@@ -7,7 +7,7 @@
019-1,0,0,0,0|monster|Santaboo|1112,4,100000ms,30000ms,Mob019-1::On1112
-019-1,0,0,0|script|Mob019-1|-1
+019-1,0,0,0|script|Mob019-1|32767
{
end;
diff --git a/world/map/npc/019-1/_warps.txt b/world/map/npc/019-1/_warps.txt
index bd8ef060..d0c2db28 100644
--- a/world/map/npc/019-1/_warps.txt
+++ b/world/map/npc/019-1/_warps.txt
@@ -1,7 +1,7 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// snow Field warps
-019-1,70,21|warp|To Nivalis|2,-1,020-1,70,127
-019-1,96,40|warp|To Snow Cave|-1,-1,019-3,98,30
-019-1,38,75|warp|To Snow Cave|-1,-1,019-3,39,101
-019-1,21,70|warp|To Snow Path|-1,0,033-1,118,69
+019-1,70,21|warp|To Nivalis#019-10|2,-1,020-1,70,127
+019-1,96,40|warp|To Snow Cave#019-11|-1,-1,019-3,98,30
+019-1,38,75|warp|To Snow Cave#019-12|-1,-1,019-3,39,101
+019-1,21,70|warp|To Snow Path#019-13|-1,0,033-1,118,69
diff --git a/world/map/npc/019-1/santa_helper.txt b/world/map/npc/019-1/santa_helper.txt
index d5b5d3bc..9d8a21b9 100644
--- a/world/map/npc/019-1/santa_helper.txt
+++ b/world/map/npc/019-1/santa_helper.txt
@@ -4,7 +4,6 @@
019-1,74,75,0|script|Santa's Helper|105
{
- callfunc "ClearVariables";
callfunc "XmasStates";
if (($@xmas_time) && (@xmas_sh_done)) goto L_Done;
diff --git a/world/map/npc/019-1/snowman.txt b/world/map/npc/019-1/snowman.txt
index eb72c74a..893ddce4 100644
--- a/world/map/npc/019-1/snowman.txt
+++ b/world/map/npc/019-1/snowman.txt
@@ -3,7 +3,6 @@
019-1,77,44,0|script|Snowman|129
{
- callfunc "ClearVariables";
if (FLAGS & FLAG_SNOWMAN) goto L_Done;
if (gettime(6) == 12 || gettime(6) == 1 || gettime(6) == 2) goto L_Quest;
diff --git a/world/map/npc/019-3/_mobs.txt b/world/map/npc/019-3/_mobs.txt
index b452a5a5..26a7771a 100644
--- a/world/map/npc/019-3/_mobs.txt
+++ b/world/map/npc/019-3/_mobs.txt
@@ -5,7 +5,7 @@
019-3,0,4,0,0|monster|Bat|1017,50,100000ms,30000ms,Mob019-3::On1017
-019-3,0,0,0|script|Mob019-3|-1
+019-3,0,0,0|script|Mob019-3|32767
{
end;
diff --git a/world/map/npc/019-3/_warps.txt b/world/map/npc/019-3/_warps.txt
index 6f5edb73..358f9cac 100644
--- a/world/map/npc/019-3/_warps.txt
+++ b/world/map/npc/019-3/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Snow Cave warps
-019-3,40,102|warp|To Snow Field|-1,-1,019-1,37,74
-019-3,98,29|warp|To Snow Field|-1,-1,019-1,96,39
-019-3,80,103|warp|To Frozen Lake|-1,-1,030-3,54,70
+019-3,40,102|warp|To Snow Field#019-30|-1,-1,019-1,37,74
+019-3,98,29|warp|To Snow Field#019-31|-1,-1,019-1,96,39
+019-3,80,103|warp|To Frozen Lake#019-32|-1,-1,030-3,54,70
diff --git a/world/map/npc/019-4/_mobs.txt b/world/map/npc/019-4/_mobs.txt
index f0b58665..43717e0d 100644
--- a/world/map/npc/019-4/_mobs.txt
+++ b/world/map/npc/019-4/_mobs.txt
@@ -7,7 +7,7 @@
019-4,0,0,0,0|monster|BlueSlime|1091,7,45000ms,30000ms,Mob019-4::On1091
-019-4,0,0,0|script|Mob019-4|-1
+019-4,0,0,0|script|Mob019-4|32767
{
end;
diff --git a/world/map/npc/019-4/_warps.txt b/world/map/npc/019-4/_warps.txt
index 9a1fd50a..52660871 100644
--- a/world/map/npc/019-4/_warps.txt
+++ b/world/map/npc/019-4/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Snow Cave warps
-019-4,74,28|warp|To Snow Hills|-1,-1,047-1,154,93
-019-4,25,124|warp|To Snow Hills|0,-1,046-1,62,27
+019-4,74,28|warp|To Snow Hills#019-40|-1,-1,047-1,154,93
+019-4,25,124|warp|To Snow Hills#019-41|0,-1,046-1,62,27
diff --git a/world/map/npc/020-1/_mobs.txt b/world/map/npc/020-1/_mobs.txt
index 3f534e8d..da1ffd27 100644
--- a/world/map/npc/020-1/_mobs.txt
+++ b/world/map/npc/020-1/_mobs.txt
@@ -4,7 +4,7 @@
020-1,0,0,0,0|monster|WhiteBell|1095,3,100000ms,30000ms,Mob020-1::On1095
-020-1,0,0,0|script|Mob020-1|-1
+020-1,0,0,0|script|Mob020-1|32767
{
end;
diff --git a/world/map/npc/020-1/_warps.txt b/world/map/npc/020-1/_warps.txt
index 2a52ade5..74681fed 100644
--- a/world/map/npc/020-1/_warps.txt
+++ b/world/map/npc/020-1/_warps.txt
@@ -1,13 +1,13 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Nivalis warps
-020-1,76,38|warp|To Ice Cave|1,-1,020-3,31,26
-020-1,47,48|warp|To Nivalis Indoor|-1,-1,020-2,25,35
-020-1,66,52|warp|To Nivalis House|-1,-1,020-2,72,70
-020-1,64,82|warp|To Nivalis Inn|-1,-1,020-2,111,32
-020-1,86,46|warp|To Armory|-1,-1,020-2,32,73
-020-1,57,91|warp|To Nivalis Shop|-1,-1,020-2,65,23
-020-1,70,128|warp|To Snow Field|2,-1,019-1,70,22
-020-1,107,55|warp|To Nivalis Port|-1,-1,031-1,38,55
-020-1,59,45|warp|To Nivalis Storage|-1,-1,020-2,127,68
-020-1,33,93|warp|To Christmas Inn|-1,-1,030-2,88,50
+020-1,76,38|warp|To Ice Cave#020-10|1,-1,020-3,31,26
+020-1,47,48|warp|To Nivalis Indo#020-11|-1,-1,020-2,25,35
+020-1,66,52|warp|To Nivalis Hous#020-12|-1,-1,020-2,72,70
+020-1,64,82|warp|To Nivalis Inn#020-13|-1,-1,020-2,111,32
+020-1,86,46|warp|To Armory#020-14|-1,-1,020-2,32,73
+020-1,57,91|warp|To Nivalis Shop#020-15|-1,-1,020-2,65,23
+020-1,70,128|warp|To Snow Field#020-16|2,-1,019-1,70,22
+020-1,107,55|warp|To Nivalis Port#020-17|-1,-1,031-1,38,55
+020-1,59,45|warp|To Nivalis Stor#020-18|-1,-1,020-2,127,68
+020-1,33,93|warp|To Christmas In#020-19|-1,-1,030-2,88,50
diff --git a/world/map/npc/020-1/soul-menhir.txt b/world/map/npc/020-1/soul-menhir.txt
index 6066c2ea..c8f7740a 100644
--- a/world/map/npc/020-1/soul-menhir.txt
+++ b/world/map/npc/020-1/soul-menhir.txt
@@ -2,7 +2,6 @@
020-1,63,89,0|script|Soul Menhir#nivalis|346
{
- callfunc "ClearVariables";
set @map$, "020-1";
setarray @Xs, 62, 63, 64, 62, 64, 62, 64;
setarray @Ys, 88, 88, 88, 89, 89, 90, 90;
diff --git a/world/map/npc/020-1/traveler.txt b/world/map/npc/020-1/traveler.txt
index d873a57f..421ed0e7 100644
--- a/world/map/npc/020-1/traveler.txt
+++ b/world/map/npc/020-1/traveler.txt
@@ -1,6 +1,6 @@
020-1,57,123,0|script|Knox the Traveler|103
{
- set @NpcName$, "Knox";
+ set @npcname$, "Knox";
set @NpcTravelBit, $@nivalis_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/020-2/_mobs.txt b/world/map/npc/020-2/_mobs.txt
index b0d2646d..62e1f438 100644
--- a/world/map/npc/020-2/_mobs.txt
+++ b/world/map/npc/020-2/_mobs.txt
@@ -3,7 +3,7 @@
-020-2,0,0,0|script|Mob020-2|-1
+020-2,0,0,0|script|Mob020-2|32767
{
end;
}
diff --git a/world/map/npc/020-2/_warps.txt b/world/map/npc/020-2/_warps.txt
index c4504a4f..c3daeac4 100644
--- a/world/map/npc/020-2/_warps.txt
+++ b/world/map/npc/020-2/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Nivalis Indoor warps
-020-2,25,36|warp|To Outside|-1,-1,020-1,47,49
-020-2,64,23|warp|To Outside|-1,-1,020-1,56,91
-020-2,111,33|warp|To Outside|-1,-1,020-1,64,83
-020-2,32,74|warp|To Outside|-1,-1,020-1,86,47
-020-2,72,71|warp|To Outside|-1,-1,020-1,66,53
-020-2,127,69|warp|To Outside|-1,-1,020-1,59,46
+020-2,25,36|warp|To Outside#020-20|-1,-1,020-1,47,49
+020-2,64,23|warp|To Outside#020-21|-1,-1,020-1,56,91
+020-2,111,33|warp|To Outside#020-22|-1,-1,020-1,64,83
+020-2,32,74|warp|To Outside#020-23|-1,-1,020-1,86,47
+020-2,72,71|warp|To Outside#020-24|-1,-1,020-1,66,53
+020-2,127,69|warp|To Outside#020-25|-1,-1,020-1,59,46
diff --git a/world/map/npc/020-2/banker.txt b/world/map/npc/020-2/banker.txt
index 3359501b..edf1c26b 100644
--- a/world/map/npc/020-2/banker.txt
+++ b/world/map/npc/020-2/banker.txt
@@ -1,6 +1,5 @@
020-2,122,64,0|script|Ben|193
{
- callfunc "ClearVariables";
set @npcname$, "Ben";
callfunc "Banker";
close;
diff --git a/world/map/npc/020-2/furquest.txt b/world/map/npc/020-2/furquest.txt
index c03ffc41..dc184aef 100644
--- a/world/map/npc/020-2/furquest.txt
+++ b/world/map/npc/020-2/furquest.txt
@@ -56,14 +56,14 @@ OnInit:
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_AlreadyAccepted;
+ 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_ProposeBuyDress;
+ if (@wg_state == 22) goto L_State_17_PBD;
if (@wg_state >= 23) goto L_State_18;
mes "\"This goes up, this goes left...\"";
@@ -428,7 +428,7 @@ L_State_14_Accept:
callfunc "setWGState";
goto L_Close;
-L_State_14_AlreadyAccepted:
+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;
@@ -554,7 +554,7 @@ L_Next9:
callfunc "setWGState";
goto L_Close;
-L_State_17_NotEnoughItems:
+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.\"";
@@ -562,7 +562,7 @@ L_State_17_NotEnoughItems:
L_State_17_GiveItems:
if (countitem ("CottonCloth") < @FINEDRESS_COTTON_CLOTHS)
- goto L_State_17_NotEnoughItems;
+ goto L_State_17_NoItems;
delitem "CottonCloth", @FINEDRESS_COTTON_CLOTHS;
set @wg_state, 22;
callfunc "setWGState";
@@ -600,7 +600,7 @@ L_Next10:
goto L_State_17_BuyDress;
-L_State_17_ProposeBuyDress:
+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.\"";
@@ -618,7 +618,7 @@ L_Next11:
goto L_State_17_NoMoney;
getinventorylist;
if (@inventorylist_count == 100)
- goto L_State_17_InventoryFull;
+ goto L_State_17_InvFull;
set Zeny, Zeny - @FINEDRESS_GP;
getitem "FineDress", 1;
@@ -632,7 +632,7 @@ L_State_17_NoMoney:
mes "and come back when you have the money.\"";
goto L_Close;
-L_State_17_InventoryFull:
+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;
diff --git a/world/map/npc/020-3/_mobs.txt b/world/map/npc/020-3/_mobs.txt
index 13ed6c8b..edb95973 100644
--- a/world/map/npc/020-3/_mobs.txt
+++ b/world/map/npc/020-3/_mobs.txt
@@ -7,7 +7,7 @@
020-3,0,0,0,0|monster|Pinkie|1018,10,0ms,0ms,Mob020-3::On1018
-020-3,0,0,0|script|Mob020-3|-1
+020-3,0,0,0|script|Mob020-3|32767
{
end;
diff --git a/world/map/npc/020-3/_warps.txt b/world/map/npc/020-3/_warps.txt
index d988159a..8d08abd8 100644
--- a/world/map/npc/020-3/_warps.txt
+++ b/world/map/npc/020-3/_warps.txt
@@ -1,10 +1,10 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Ice cave warps
-020-3,31,25|warp|To Nivalis|-1,-1,020-1,76,37
-020-3,25,22|warp|To Ice Cave|-1,-1,020-3,97,101
-020-3,97,99|warp|To Ice Entrance|-1,-1,020-3,25,24
-020-3,28,57|warp|To Ice Cave|-1,-1,020-3,33,99
-020-3,49,33|warp|To Ice Cave|-1,-1,020-3,110,56
-020-3,33,98|warp|To Ice Entrance|-1,-1,020-3,28,56
-020-3,110,57|warp|To Ice Entrance|-1,-1,020-3,49,34
+020-3,31,25|warp|To Nivalis#020-30|-1,-1,020-1,76,37
+020-3,25,22|warp|To Ice Cave#020-31|-1,-1,020-3,97,101
+020-3,97,99|warp|To Ice Entrance#020-32|-1,-1,020-3,25,24
+020-3,28,57|warp|To Ice Cave#020-33|-1,-1,020-3,33,99
+020-3,49,33|warp|To Ice Cave#020-34|-1,-1,020-3,110,56
+020-3,33,98|warp|To Ice Entrance#020-35|-1,-1,020-3,28,56
+020-3,110,57|warp|To Ice Entrance#020-36|-1,-1,020-3,49,34
diff --git a/world/map/npc/021-3/_mobs.txt b/world/map/npc/021-3/_mobs.txt
index 78c24a7c..8d6c2591 100644
--- a/world/map/npc/021-3/_mobs.txt
+++ b/world/map/npc/021-3/_mobs.txt
@@ -13,7 +13,7 @@
021-3,47,139,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms,Mob021-3::On1056
-021-3,0,0,0|script|Mob021-3|-1
+021-3,0,0,0|script|Mob021-3|32767
{
end;
diff --git a/world/map/npc/021-3/_warps.txt b/world/map/npc/021-3/_warps.txt
index 41d30dee..36db813f 100644
--- a/world/map/npc/021-3/_warps.txt
+++ b/world/map/npc/021-3/_warps.txt
@@ -1,7 +1,7 @@
// 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|To Central Tulimshar|-1,-1,001-1,117,109
-021-3,57,99|warp|To Central Tulimshar|-1,-1,001-1,60,84
-021-3,29,62|warp|To Beach|-1,-1,001-1,28,45
-021-3,44,143|warp|To Sea Cave|-1,-1,004-3,80,23
+021-3,143,127|warp|To Central Tuli#021-30|-1,-1,001-1,117,109
+021-3,57,99|warp|To Central Tuli#021-31|-1,-1,001-1,60,84
+021-3,29,62|warp|To Beach#021-32|-1,-1,001-1,28,45
+021-3,44,143|warp|To Sea Cave#021-33|-1,-1,004-3,80,23
diff --git a/world/map/npc/025-1/_mobs.txt b/world/map/npc/025-1/_mobs.txt
index cddb2696..2a2d27ac 100644
--- a/world/map/npc/025-1/_mobs.txt
+++ b/world/map/npc/025-1/_mobs.txt
@@ -13,7 +13,7 @@
025-1,26,61,15,85|monster|Scorpion|1003,12,100000ms,50000ms,Mob025-1::On1003
-025-1,0,0,0|script|Mob025-1|-1
+025-1,0,0,0|script|Mob025-1|32767
{
end;
diff --git a/world/map/npc/025-1/_warps.txt b/world/map/npc/025-1/_warps.txt
index eaa15fe5..0b34cf75 100644
--- a/world/map/npc/025-1/_warps.txt
+++ b/world/map/npc/025-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Swamp warps
-025-1,19,66|warp|To Swamp|-1,-1,026-1,128,66
-025-1,90,19|warp|To Woodland|2,-1,015-1,59,100
-025-1,130,58|warp|To Woodland|-1,1,016-1,21,53
+025-1,19,66|warp|To Swamp#025-10|-1,-1,026-1,128,66
+025-1,90,19|warp|To Woodland#025-11|2,-1,015-1,59,100
+025-1,130,58|warp|To Woodland#025-12|-1,1,016-1,21,53
diff --git a/world/map/npc/025-3/_mobs.txt b/world/map/npc/025-3/_mobs.txt
index 4ab99039..5ccfdfc0 100644
--- a/world/map/npc/025-3/_mobs.txt
+++ b/world/map/npc/025-3/_mobs.txt
@@ -7,7 +7,7 @@
025-3,69,153,13,1|monster|Skeleton|1043,1,0ms,30000ms,Mob025-3::On1043
-025-3,0,0,0|script|Mob025-3|-1
+025-3,0,0,0|script|Mob025-3|32767
{
end;
diff --git a/world/map/npc/025-3/_warps.txt b/world/map/npc/025-3/_warps.txt
index 1e6e605c..305ad2ce 100644
--- a/world/map/npc/025-3/_warps.txt
+++ b/world/map/npc/025-3/_warps.txt
@@ -1,5 +1,5 @@
// 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|To Woodland Swamp|1,-1,025-1,42,81
-025-3,105,86|warp|To Clauquer's Cave|-1,-1,025-4,28,36
+025-3,112,98|warp|To Woodland Swa#025-30|1,-1,025-1,42,81
+025-3,105,86|warp|To Clauquer's C#025-31|-1,-1,025-4,28,36
diff --git a/world/map/npc/025-3/barriers.txt b/world/map/npc/025-3/barriers.txt
index c9c404fa..e4a794f7 100644
--- a/world/map/npc/025-3/barriers.txt
+++ b/world/map/npc/025-3/barriers.txt
@@ -67,7 +67,7 @@ L_Win:
set $@cave1start, $@cave1start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave1_timer, $@cave1_timer + 5;
if ($@cave1_timer >= 60)
goto L_BadAir;
@@ -194,7 +194,7 @@ L_Win:
set $@cave2start, $@cave2start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave2_timer, $@cave2_timer + 5;
if ($@cave2_timer >= 60)
goto L_BadAir;
@@ -320,7 +320,7 @@ L_Win:
set $@cave3start, $@cave3start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave3_timer, $@cave3_timer + 5;
if ($@cave3_timer >= 60)
goto L_BadAir;
@@ -446,7 +446,7 @@ L_Win:
set $@cave4start, $@cave4start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave4_timer, $@cave4_timer + 5;
if ($@cave4_timer >= 60)
goto L_BadAir;
@@ -572,7 +572,7 @@ L_Win:
set $@cave5start, $@cave5start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave5_timer, $@cave5_timer + 5;
if ($@cave5_timer >= 60)
goto L_BadAir;
@@ -698,7 +698,7 @@ L_Win:
set $@cave6start, $@cave6start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave6_timer, $@cave6_timer + 5;
if ($@cave6_timer >= 60)
goto L_BadAir;
@@ -824,7 +824,7 @@ L_Win:
set $@cave7start, $@cave7start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave7_timer, $@cave7_timer + 5;
if ($@cave7_timer >= 60)
goto L_BadAir;
@@ -950,7 +950,7 @@ L_Win:
set $@cave8start, $@cave8start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave8_timer, $@cave8_timer + 5;
if ($@cave8_timer >= 60)
goto L_BadAir;
@@ -1076,7 +1076,7 @@ L_Win:
set $@cave9start, $@cave9start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave9_timer, $@cave9_timer + 5;
if ($@cave9_timer >= 60)
goto L_BadAir;
@@ -1172,7 +1172,7 @@ L_AlreadyClean:
L_Hurt:
message strcharinfo(0), "As you try to enter, you bump into a magic barrier. Its force pushes you back, hurting you badly.";
- percentheal @barrier_force * 10, 0;
+ heal (MaxHp * (@barrier_force / 10)), 0;
warp "025-3", 77, 164;
end;
@@ -1223,7 +1223,7 @@ L_Win:
set $@cave10start, $@cave10start + 60;
if (Hp - (MaxHp*5)/100 <= 0)
goto L_BadAir;
- percentheal -5, 0;
+ heal ((MaxHp/100) * -5), 0;
set $@cave10_timer, $@cave10_timer + 5;
if ($@cave10_timer >= 60)
goto L_BadAir;
@@ -1293,4 +1293,3 @@ L_AlreadyClean:
setnpctimer 0;
end;
}
-
diff --git a/world/map/npc/025-4/_mobs.txt b/world/map/npc/025-4/_mobs.txt
index 62318520..3ad731de 100644
--- a/world/map/npc/025-4/_mobs.txt
+++ b/world/map/npc/025-4/_mobs.txt
@@ -5,7 +5,7 @@
025-4,94,24,20,21|monster|CaveMaggot|1056,5,0ms,100ms,Mob025-4::On1056
-025-4,0,0,0|script|Mob025-4|-1
+025-4,0,0,0|script|Mob025-4|32767
{
end;
diff --git a/world/map/npc/025-4/_warps.txt b/world/map/npc/025-4/_warps.txt
index 04b6aa8c..dc4bcf29 100644
--- a/world/map/npc/025-4/_warps.txt
+++ b/world/map/npc/025-4/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Rossy Main Hall|-1,-1,025-3,105,87
+025-4,28,37|warp|To Rossy Main H#025-40|-1,-1,025-3,105,87
diff --git a/world/map/npc/025-4/battlecaves.txt b/world/map/npc/025-4/battlecaves.txt
index c21fafbc..ffab9a05 100644
--- a/world/map/npc/025-4/battlecaves.txt
+++ b/world/map/npc/025-4/battlecaves.txt
@@ -16,7 +16,7 @@
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -108,7 +108,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -198,7 +198,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -289,7 +289,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -383,7 +383,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -477,7 +477,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -571,7 +571,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -667,7 +667,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -763,7 +763,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -854,7 +854,7 @@ L_Done:
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.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Start:
@@ -981,7 +981,7 @@ L_Out:
if (Rossy_Quest > 15)
goto L_Done;
message strcharinfo(0), "As you try to walk through, you bump into a strong magical barrier.";
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
end;
L_Done:
@@ -1003,7 +1003,7 @@ L_Done:
L_Cheat:
message strcharinfo(0), "You shouldn't be here, you cheater.";
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Done:
diff --git a/world/map/npc/026-1/_mobs.txt b/world/map/npc/026-1/_mobs.txt
index 34da2792..a99c4bab 100644
--- a/world/map/npc/026-1/_mobs.txt
+++ b/world/map/npc/026-1/_mobs.txt
@@ -14,7 +14,7 @@
026-1,60,76,61,31|monster|GrassSnake|1034,4,100000ms,50000ms,Mob026-1::On1034
-026-1,0,0,0|script|Mob026-1|-1
+026-1,0,0,0|script|Mob026-1|32767
{
end;
diff --git a/world/map/npc/026-1/_warps.txt b/world/map/npc/026-1/_warps.txt
index 34685699..f95d2eff 100644
--- a/world/map/npc/026-1/_warps.txt
+++ b/world/map/npc/026-1/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Swamp warps
-026-1,63,16|warp|To Graveyard|-1,-1,027-1,63,105
-026-1,129,66|warp|To Woodland Swamp|-1,-1,025-1,20,66
+026-1,63,16|warp|To Graveyard#026-10|-1,-1,027-1,63,105
+026-1,129,66|warp|To Woodland Swa#026-11|-1,-1,025-1,20,66
diff --git a/world/map/npc/027-1/_mobs.txt b/world/map/npc/027-1/_mobs.txt
index f72b338d..de1a4b6f 100644
--- a/world/map/npc/027-1/_mobs.txt
+++ b/world/map/npc/027-1/_mobs.txt
@@ -20,7 +20,7 @@
027-1,99,90,34,16|monster|GrassSnake|1034,3,100000ms,50000ms,Mob027-1::On1034
-027-1,0,0,0|script|Mob027-1|-1
+027-1,0,0,0|script|Mob027-1|32767
{
end;
diff --git a/world/map/npc/027-1/_warps.txt b/world/map/npc/027-1/_warps.txt
index aa1fbf7b..a75d6f4e 100644
--- a/world/map/npc/027-1/_warps.txt
+++ b/world/map/npc/027-1/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Graveyard warps
-027-1,88,84|warp|To Caretaker's House|-1,-1,027-2,26,33
-027-1,63,106|warp|To Swamp|-1,-1,026-1,63,17
+027-1,88,84|warp|To Caretaker's #027-10|-1,-1,027-2,26,33
+027-1,63,106|warp|To Swamp#027-11|-1,-1,026-1,63,17
diff --git a/world/map/npc/027-1/traveler.txt b/world/map/npc/027-1/traveler.txt
index ca8d8f47..0c8bb753 100644
--- a/world/map/npc/027-1/traveler.txt
+++ b/world/map/npc/027-1/traveler.txt
@@ -4,7 +4,7 @@
027-1,83,84,0|script|Styx the Traveler|103
{
- set @NpcName$, "Styx";
+ set @npcname$, "Styx";
set @NpcTravelBit, $@graveyard_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/027-2/_mobs.txt b/world/map/npc/027-2/_mobs.txt
index f87f19f9..ab76e3b0 100644
--- a/world/map/npc/027-2/_mobs.txt
+++ b/world/map/npc/027-2/_mobs.txt
@@ -13,7 +13,7 @@
027-2,89,34,11,9|monster|TipsySkeleton|1078,1,100000ms,30000ms,Mob027-2::On1078
-027-2,0,0,0|script|Mob027-2|-1
+027-2,0,0,0|script|Mob027-2|32767
{
end;
diff --git a/world/map/npc/027-2/_warps.txt b/world/map/npc/027-2/_warps.txt
index 1b0edb5b..aa7c0cb1 100644
--- a/world/map/npc/027-2/_warps.txt
+++ b/world/map/npc/027-2/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Graveyard Indoor warps
-027-2,26,34|warp|To Outside|-1,-1,027-1,88,85
-027-2,128,35|warp|To Second Floor|0,-1,027-2,75,93
-027-2,76,95|warp|To First Floor|0,-1,027-2,128,36
-027-2,106,46|warp|To Outside|0,-1,027-1,68,89
-027-2,113,111|warp|To Graveyard|4,-1,027-1,28,68
-027-2,113,78|warp|To Crypts Basement|4,-1,027-3,25,68
+027-2,26,34|warp|To Outside#027-20|-1,-1,027-1,88,85
+027-2,128,35|warp|To Second Floor#027-21|0,-1,027-2,75,93
+027-2,76,95|warp|To First Floor#027-22|0,-1,027-2,128,36
+027-2,106,46|warp|To Outside#027-23|0,-1,027-1,68,89
+027-2,113,111|warp|To Graveyard#027-24|4,-1,027-1,28,68
+027-2,113,78|warp|To Crypts Basem#027-25|4,-1,027-3,25,68
diff --git a/world/map/npc/027-2/gy_inn_shops.txt b/world/map/npc/027-2/gy_inn_shops.txt
index 8808755d..20f03d3a 100644
--- a/world/map/npc/027-2/gy_inn_shops.txt
+++ b/world/map/npc/027-2/gy_inn_shops.txt
@@ -40,7 +40,6 @@
// Bank and Storage
027-2,88,22,0|script|J.P. Morbid|321
{
- callfunc "ClearVariables";
set @npcname$, "J.P. Morbid";
callfunc "Banker";
close;
diff --git a/world/map/npc/027-2/lover.txt b/world/map/npc/027-2/lover.txt
index 5488b8e7..d1ab2a56 100644
--- a/world/map/npc/027-2/lover.txt
+++ b/world/map/npc/027-2/lover.txt
@@ -264,7 +264,7 @@ L_Soul:
getinventorylist;
if (@inventorylist_count == 100)
goto L_Full_Inv;
- getitem "SorcererRobeRed", 1;
+ 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.\"";
diff --git a/world/map/npc/027-3/_mobs.txt b/world/map/npc/027-3/_mobs.txt
index 0d4599a7..4c7c8ff6 100644
--- a/world/map/npc/027-3/_mobs.txt
+++ b/world/map/npc/027-3/_mobs.txt
@@ -11,7 +11,7 @@
027-3,98,84,60,14|monster|FireSkull|1023,2,60000ms,20000ms,Mob027-3::On1023
-027-3,0,0,0|script|Mob027-3|-1
+027-3,0,0,0|script|Mob027-3|32767
{
end;
diff --git a/world/map/npc/027-3/_warps.txt b/world/map/npc/027-3/_warps.txt
index 6206e3ce..b2b2d52a 100644
--- a/world/map/npc/027-3/_warps.txt
+++ b/world/map/npc/027-3/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Crypt Basement warps
-027-3,26,67|warp|To Crypts Entrance|2,-1,027-2,112,77
-027-3,126,98|warp|To Crypts Sub-Basement |1,-1,027-4,125,18
+027-3,26,67|warp|To Crypts Entra#027-30|2,-1,027-2,112,77
+027-3,126,98|warp|To Crypts Sub-B#027-31|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
index 7ad40ce8..6b00f2d3 100644
--- a/world/map/npc/027-3/casket_traps.txt
+++ b/world/map/npc/027-3/casket_traps.txt
@@ -1,79 +1,79 @@
-027-3,32,96,0|script|#casket1|35,1,1
+027-3,32,96,0|script|#casket1|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,38,86,0|script|#casket2|35,1,1
+027-3,38,86,0|script|#casket2|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,46,76,0|script|#casket3|35,1,1
+027-3,46,76,0|script|#casket3|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,38,57,0|script|#casket4|35,1,1
+027-3,38,57,0|script|#casket4|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,22,44,0|script|#casket5|35,1,1
+027-3,22,44,0|script|#casket5|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,48,43,0|script|#casket6|35,1,1
+027-3,48,43,0|script|#casket6|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,86,30,0|script|#casket7|35,1,1
+027-3,86,30,0|script|#casket7|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-3,108,45,0|script|#casket8|35,1,1
+027-3,108,45,0|script|#casket8|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ 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
index 1e7a69cb..9ac26203 100644
--- a/world/map/npc/027-3/general_krukan_door.txt
+++ b/world/map/npc/027-3/general_krukan_door.txt
@@ -1,7 +1,7 @@
// Mini-Boss
// General Krukun
-027-3,82,88,0|script|#GeneralDoor1|35,1,0
+027-3,82,88,0|script|#GeneralDoor1|45,1,0
{
if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT1 != 0) )
goto L_NoKeys;
diff --git a/world/map/npc/027-3/monsters.txt b/world/map/npc/027-3/monsters.txt
index 6664d033..2e552eb2 100644
--- a/world/map/npc/027-3/monsters.txt
+++ b/world/map/npc/027-3/monsters.txt
@@ -6,7 +6,7 @@
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|-1
+027-3,0,0,0|script|specialMob027-3|32767
{
end;
diff --git a/world/map/npc/027-4/_mobs.txt b/world/map/npc/027-4/_mobs.txt
index e5fd7229..cb65135e 100644
--- a/world/map/npc/027-4/_mobs.txt
+++ b/world/map/npc/027-4/_mobs.txt
@@ -8,7 +8,7 @@
027-4,101,36,38,30|monster|LadySkeleton|1044,2,60000ms,8000ms,Mob027-4::On1044
-027-4,0,0,0|script|Mob027-4|-1
+027-4,0,0,0|script|Mob027-4|32767
{
end;
diff --git a/world/map/npc/027-4/_warps.txt b/world/map/npc/027-4/_warps.txt
index 2c5fa785..0478a64c 100644
--- a/world/map/npc/027-4/_warps.txt
+++ b/world/map/npc/027-4/_warps.txt
@@ -1,5 +1,5 @@
// 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|To Crypts Basement|3,-1,027-3,125,98
-027-4,22,98|warp|To Crypts Sub-Basement |2,-1,027-5,124,18
+027-4,125,17|warp|To Crypts Basem#027-40|3,-1,027-3,125,98
+027-4,22,98|warp|To Crypts Sub-B#027-41|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
index 1106aa6d..1aec16ab 100644
--- a/world/map/npc/027-4/casket_traps.txt
+++ b/world/map/npc/027-4/casket_traps.txt
@@ -1,79 +1,79 @@
-027-4,60,23,0|script|#casket9|35,1,1
+027-4,60,23,0|script|#casket9|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,42,23,0|script|#casket10|35,1,1
+027-4,43,23,0|script|#casket10|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,42,47,0|script|#casket11|35,1,1
+027-4,42,47,0|script|#casket11|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,90,47,0|script|#casket12|35,1,1
+027-4,90,47,0|script|#casket12|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,101,48,0|script|#casket13|35,1,1
+027-4,101,48,0|script|#casket13|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,115,17,0|script|#casket14|35,1,1
+027-4,115,17,0|script|#casket14|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,99,76,0|script|#casket15|35,1,1
+027-4,99,76,0|script|#casket15|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-4,22,23,0|script|#casket16|35,1,1
+027-4,22,23,0|script|#casket16|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ 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
index 1b2cd1a4..c7adf137 100644
--- a/world/map/npc/027-4/general_razha_door.txt
+++ b/world/map/npc/027-4/general_razha_door.txt
@@ -1,7 +1,7 @@
// Mini-Boss
// General Razha
-027-4,73,76,0|script|#GeneralDoor2|35,1,0
+027-4,73,76,0|script|#GeneralDoor2|45,1,0
{
if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT2 != 0) )
goto L_NoKeys;
diff --git a/world/map/npc/027-4/monsters.txt b/world/map/npc/027-4/monsters.txt
index 7c071bc5..ef810372 100644
--- a/world/map/npc/027-4/monsters.txt
+++ b/world/map/npc/027-4/monsters.txt
@@ -7,7 +7,7 @@
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|-1
+027-4,0,0,0|script|specialMob027-4|32767
{
end;
diff --git a/world/map/npc/027-5/_mobs.txt b/world/map/npc/027-5/_mobs.txt
index 142d8ee9..e6958ba9 100644
--- a/world/map/npc/027-5/_mobs.txt
+++ b/world/map/npc/027-5/_mobs.txt
@@ -10,7 +10,7 @@
027-5,69,80,99,36|monster|LadySkeleton|1044,8,60000ms,8000ms,Mob027-5::On1044
-027-5,0,0,0|script|Mob027-5|-1
+027-5,0,0,0|script|Mob027-5|32767
{
end;
diff --git a/world/map/npc/027-5/_warps.txt b/world/map/npc/027-5/_warps.txt
index 4f0309f7..35c91f7e 100644
--- a/world/map/npc/027-5/_warps.txt
+++ b/world/map/npc/027-5/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Crypts Sub-Basement |3,-1,027-4,21,97
+027-5,125,17|warp|To Crypts Sub-B#027-50|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
index 659cad99..965f91cb 100644
--- a/world/map/npc/027-5/casket_traps.txt
+++ b/world/map/npc/027-5/casket_traps.txt
@@ -1,79 +1,79 @@
-027-5,60,34,0|script|#casket17|35,1,1
+027-5,60,34,0|script|#casket17|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,34,50,0|script|#casket18|35,1,1
+027-5,34,50,0|script|#casket18|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,49,76,0|script|#casket19|35,1,1
+027-5,49,76,0|script|#casket19|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,60,89,0|script|#casket20|35,1,1
+027-5,60,89,0|script|#casket20|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,90,90,0|script|#casket21|35,1,1
+027-5,90,90,0|script|#casket21|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,92,76,0|script|#casket22|35,1,1
+027-5,92,76,0|script|#casket22|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,117,61,0|script|#casket23|35,1,1
+027-5,117,61,0|script|#casket23|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-5,94,48,0|script|#casket24|35,1,1
+027-5,94,48,0|script|#casket24|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ 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
index 8d403d36..93f4d8c1 100644
--- a/world/map/npc/027-5/general_terogan_door.txt
+++ b/world/map/npc/027-5/general_terogan_door.txt
@@ -1,7 +1,7 @@
// Mini-Boss
// General Terogan
-027-5,70,25,0|script|#GeneralDoor3|35,1,0
+027-5,70,25,0|script|#GeneralDoor3|45,1,0
{
if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT3 != 0) )
goto L_NoKeys;
diff --git a/world/map/npc/027-6/_mobs.txt b/world/map/npc/027-6/_mobs.txt
index c5f45581..407a697e 100644
--- a/world/map/npc/027-6/_mobs.txt
+++ b/world/map/npc/027-6/_mobs.txt
@@ -3,7 +3,7 @@
-027-6,0,0,0|script|Mob027-6|-1
+027-6,0,0,0|script|Mob027-6|32767
{
end;
}
diff --git a/world/map/npc/027-6/casket_traps.txt b/world/map/npc/027-6/casket_traps.txt
index aaed6904..551f9d6b 100644
--- a/world/map/npc/027-6/casket_traps.txt
+++ b/world/map/npc/027-6/casket_traps.txt
@@ -1,69 +1,69 @@
-027-6,32,39,0|script|#casket25|35,1,1
+027-6,32,39,0|script|#casket25|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-6,27,48,0|script|#casket26|35,1,1
+027-6,27,48,0|script|#casket26|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-6,52,50,0|script|#casket27|35,1,1
+027-6,52,50,0|script|#casket27|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-6,45,48,0|script|#casket28|35,1,1
+027-6,45,48,0|script|#casket28|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-6,47,30,0|script|#casket29|35,1,1
+027-6,47,30,0|script|#casket29|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-6,33,31,0|script|#casket30|35,1,1
+027-6,33,31,0|script|#casket30|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ heal ((MaxHp/100) * -10), 0;
specialeffect 301;
specialeffect 302;
end;
}
-027-6,52,40,0|script|#casket31|35,1,1
+027-6,52,40,0|script|#casket31|127,1,1
{
end;
OnTouch:
- percentheal -10, 0;
+ 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
index 637befc8..91d8b35f 100644
--- a/world/map/npc/027-6/general_krukan.txt
+++ b/world/map/npc/027-6/general_krukan.txt
@@ -215,17 +215,17 @@ L_End:
OnInit:
setarray $@CRYPT_FIGHT1_MESSAGES$,
- "General Krukan:* 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 Krukan:* Ha, Looks like your tougher then 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!.";
+ "General Krukan : 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 Krukan : Ha, Looks like your tougher then 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
index 89d3a6d9..c522657c 100644
--- a/world/map/npc/027-6/general_krukan_exitdoor.txt
+++ b/world/map/npc/027-6/general_krukan_exitdoor.txt
@@ -1,7 +1,7 @@
// Mini-Boss
// General Krukan exit
-027-6,38,61,0|script|#GeneralExit1|35,6,0
+027-6,38,61,0|script|#GeneralExit1|45,6,0
{
if ($@CRYPT_FIGHT1 == 1)
goto L_Block;
diff --git a/world/map/npc/027-7/_mobs.txt b/world/map/npc/027-7/_mobs.txt
index 482bf900..43867927 100644
--- a/world/map/npc/027-7/_mobs.txt
+++ b/world/map/npc/027-7/_mobs.txt
@@ -3,7 +3,7 @@
-027-7,0,0,0|script|Mob027-7|-1
+027-7,0,0,0|script|Mob027-7|32767
{
end;
}
diff --git a/world/map/npc/027-7/general_razha.txt b/world/map/npc/027-7/general_razha.txt
index 9a99e8b8..60886f78 100644
--- a/world/map/npc/027-7/general_razha.txt
+++ b/world/map/npc/027-7/general_razha.txt
@@ -169,7 +169,7 @@ OnPetDeath:
end;
L_CleanUpLosers:
- mapannounce "027-7", "General Razha:* Oh where did you all go, I was beginning to have fun here.", 0;
+ 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;
@@ -184,7 +184,7 @@ L_CleanUpLosers:
end;
L_CleanUp:
- mapannounce "027-7", "General Razha:* How in all hells could that happen? I am lost forever.", 0;
+ 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 "027-7", 0, 0, 79, 84, 10, "General Razha::OnReward";
set $@CRYPT_FIGHT2, 0;
@@ -219,17 +219,17 @@ L_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!.";
+ "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
index 5389a74b..0b15fa96 100644
--- a/world/map/npc/027-7/general_razha_exitdoor.txt
+++ b/world/map/npc/027-7/general_razha_exitdoor.txt
@@ -1,7 +1,7 @@
// Mini-Boss
// General Razha
-027-7,36,61,0|script|#GeneralExit2|35,6,0
+027-7,36,61,0|script|#GeneralExit2|45,6,0
{
if ($@CRYPT_FIGHT2 != 0)
goto L_Block;
diff --git a/world/map/npc/027-8/_mobs.txt b/world/map/npc/027-8/_mobs.txt
index 30810f3c..d38bf647 100644
--- a/world/map/npc/027-8/_mobs.txt
+++ b/world/map/npc/027-8/_mobs.txt
@@ -3,7 +3,7 @@
-027-8,0,0,0|script|Mob027-8|-1
+027-8,0,0,0|script|Mob027-8|32767
{
end;
}
diff --git a/world/map/npc/027-8/general_terogan.txt b/world/map/npc/027-8/general_terogan.txt
index 1d2b2165..099430ee 100644
--- a/world/map/npc/027-8/general_terogan.txt
+++ b/world/map/npc/027-8/general_terogan.txt
@@ -149,8 +149,8 @@ L_CryptLogic:
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;
+ 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;
@@ -226,14 +226,14 @@ OnPetDeath:
end;
L_Failure:
- if $@CRYPT_FAIL_ANNOUNCED goto L_NextWave;
+ 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;
+ 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;
@@ -248,7 +248,7 @@ L_CleanUpLosers:
end;
L_CleanUp:
- mapannounce "027-8", "General Terogan: You might have won this battle, but you will never defeat me!", 0;
+ mapannounce "027-8", "General Terogan : You might have won this battle, but you will never defeat me!", 0;
areatimer "027-8", 0, 0, 79, 84, 10, "General Terogan#Main::OnReward";
set $@CRYPT_FIGHT3, 0;
set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
@@ -284,18 +284,18 @@ L_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!.";
+ "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;
}
diff --git a/world/map/npc/027-8/general_terogan_exitdoor.txt b/world/map/npc/027-8/general_terogan_exitdoor.txt
index 6f0e01f0..41392b0a 100644
--- a/world/map/npc/027-8/general_terogan_exitdoor.txt
+++ b/world/map/npc/027-8/general_terogan_exitdoor.txt
@@ -1,7 +1,7 @@
// Mini-Boss
// General Krukun
-027-8,38,61,0|script|#GeneralExit3|35,3,0
+027-8,38,61,0|script|#GeneralExit3|45,3,0
{
if ($@CRYPT_FIGHT3 != 0)
goto L_Block;
diff --git a/world/map/npc/028-1/_mobs.txt b/world/map/npc/028-1/_mobs.txt
index 76a2715f..fc1aa291 100644
--- a/world/map/npc/028-1/_mobs.txt
+++ b/world/map/npc/028-1/_mobs.txt
@@ -15,7 +15,7 @@
028-1,60,45,1,1|monster|Fallen|1045,1,700000ms,300000ms,Mob028-1::On1045
-028-1,0,0,0|script|Mob028-1|-1
+028-1,0,0,0|script|Mob028-1|32767
{
end;
diff --git a/world/map/npc/028-1/_warps.txt b/world/map/npc/028-1/_warps.txt
index 0b20b6f9..8f2ffd4a 100644
--- a/world/map/npc/028-1/_warps.txt
+++ b/world/map/npc/028-1/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// GM Island warps
-028-1,120,125|warp|To Easter Island Cave|-1,-1,028-3,33,77
+028-1,120,125|warp|To Easter Islan#028-10|-1,-1,028-3,33,77
diff --git a/world/map/npc/028-3/_mobs.txt b/world/map/npc/028-3/_mobs.txt
index ce323fad..fd5fe855 100644
--- a/world/map/npc/028-3/_mobs.txt
+++ b/world/map/npc/028-3/_mobs.txt
@@ -7,7 +7,7 @@
028-3,50,49,61,60|monster|Bat|1017,10,60000ms,10000ms,Mob028-3::On1017
-028-3,0,0,0|script|Mob028-3|-1
+028-3,0,0,0|script|Mob028-3|32767
{
end;
diff --git a/world/map/npc/028-3/_warps.txt b/world/map/npc/028-3/_warps.txt
index cc19bd75..393f8340 100644
--- a/world/map/npc/028-3/_warps.txt
+++ b/world/map/npc/028-3/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Easter Island|-1,-1,028-1,120,126
+028-3,33,78|warp|To Easter Islan#028-30|-1,-1,028-1,120,126
diff --git a/world/map/npc/029-1/_mobs.txt b/world/map/npc/029-1/_mobs.txt
index 55bc216b..bad7d55a 100644
--- a/world/map/npc/029-1/_mobs.txt
+++ b/world/map/npc/029-1/_mobs.txt
@@ -9,7 +9,7 @@
029-1,76,42,52,25|monster|ManaBug|1131,3,30ms,0ms,Mob029-1::On1131
-029-1,0,0,0|script|Mob029-1|-1
+029-1,0,0,0|script|Mob029-1|32767
{
end;
diff --git a/world/map/npc/029-1/_warps.txt b/world/map/npc/029-1/_warps.txt
index acaf85f1..0cd326bb 100644
--- a/world/map/npc/029-1/_warps.txt
+++ b/world/map/npc/029-1/_warps.txt
@@ -1,7 +1,8 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Candor Island warps
-029-1,40,88|warp|To Valon's House|-1,-1,029-2,29,61
-029-1,44,83|warp|To Storeroom|-1,-1,029-2,22,92
-029-1,52,84|warp|To The Magic Shack|-1,-1,029-2,103,61
-029-1,58,79|warp|To Two Arms|-1,-1,029-2,94,30
+029-1,40,88|warp|To Valon's Hous#029-10|-1,-1,029-2,29,61
+029-1,44,83|warp|To Storeroom#029-11|-1,-1,029-2,22,92
+029-1,52,84|warp|To The Magic Sh#029-12|-1,-1,029-2,103,61
+029-1,58,79|warp|To Two Arms#029-13|-1,-1,029-2,94,30
+029-1,49,77|warp|To The Bank#029-14|-1,-1,029-2,24,123
diff --git a/world/map/npc/029-1/aahna.txt b/world/map/npc/029-1/aahna.txt
index e9da0d20..92f7ff6b 100644
--- a/world/map/npc/029-1/aahna.txt
+++ b/world/map/npc/029-1/aahna.txt
@@ -3,10 +3,8 @@
// Npc
029-1,71,52,0|script|Aahna|404
{
- setarray @npc_loc, 71, 52, 3;
+ set @npc_distance, 3;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Range;
goto L_Meet;
L_Meet:
@@ -14,10 +12,6 @@ L_Meet:
mes "\"Hello, What a lovely day for a stroll.\"";
goto L_Close;
-L_Range:
- message strcharinfo(0), "Whats that? Come closer I can't hear you.";
- goto L_Close;
-
L_Close:
close;
}
diff --git a/world/map/npc/029-1/barrier.txt b/world/map/npc/029-1/barrier.txt
index 1e5281a4..e6c580ad 100644
--- a/world/map/npc/029-1/barrier.txt
+++ b/world/map/npc/029-1/barrier.txt
@@ -10,10 +10,14 @@ L_Block:
end;
}
-029-1,69,61,0|script|#CandorAnnouncer|127
+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:
- npctalk $@candor_npctalk$;
+ areatimer "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
index 61f8a242..f0628440 100644
--- a/world/map/npc/029-1/dock.txt
+++ b/world/map/npc/029-1/dock.txt
@@ -13,7 +13,7 @@
close;
}
-029-1,55,110,0|script|#CandorDock|127
+029-1,55,110,0|script|#CandorDock|32767
{
end;
OnCommandArrive:
diff --git a/world/map/npc/029-1/hasan.txt b/world/map/npc/029-1/hasan.txt
index cf5298f5..eef3eb64 100644
--- a/world/map/npc/029-1/hasan.txt
+++ b/world/map/npc/029-1/hasan.txt
@@ -8,11 +8,8 @@
029-1,35,33,0|script|Scared Man|160
{
- setarray @npc_loc, 35, 33, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_End;
- if (@tutorial >= 13)
+ if (QL_BEGIN >= 13)
goto L_TutDone;
message strcharinfo(0), "He looks too afraid to say anything.";
goto L_End;
@@ -26,23 +23,19 @@ L_End:
}
029-1,33,33,0|script|Hasan|189,3,3
{
- setarray @npc_loc, 33, 33, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
goto L_Main;
L_Main:
- callfunc "TutorialState";
if ((getcharid(3) == $@ScorpionFighter) || ($@ScorpionFighter && $@ScorpionFighter != getcharid(3)))
goto L_Afraid;
- if (@tutorial == 14)
+ if (QL_BEGIN == 14)
goto L_TutDone;
- if (@tutorial == 13)
+ if (QL_BEGIN == 13)
goto L_Thank;
- if (@tutorial == 12)
+ if (QL_BEGIN == 12)
goto L_Trick;
- if ((@tutorial == 9) || (@tutorial == 10) || (@tutorial == 11))
+ if ((QL_BEGIN == 9) || (QL_BEGIN == 10) || (QL_BEGIN == 11))
goto L_FightAgain;
mes "You over hear some people nearby.";
@@ -60,12 +53,11 @@ L_Main:
mes "[Scared Man]";
mes "\"No, please don't. *sob*\"";
mes "Sounds like this person is in trouble.\"";
- set @tutorial_tmp, 9;
- callfunc "SetTutorialMask";
+ 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,
+ "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:
@@ -112,8 +104,7 @@ L_Thank:
mes "\"Let me tell you something, I will no longer bully people.";
mes "And you can have my Sharp Knife.\"";
getitem "SharpKnife", 1;
- set @tutorial_tmp, 14;
- callfunc "SetTutorialMask";
+ 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,
@@ -152,11 +143,11 @@ L_Close:
close;
OnTouch:
- if (@tutorial >= 13)
+ if (QL_BEGIN >= 13)
end;
goto L_Main;
}
-029-1,0,0,0|script|#ScorpionTrigger|35
+029-1,0,0,0|script|#ScorpionTrigger|32767
{
end;
@@ -170,7 +161,7 @@ L_Summon:
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!";
- percentheal -100, 0;
+ heal -Hp, 0;
goto L_Summon;
OnTimer5000:
@@ -187,11 +178,12 @@ OnTimer5000:
OnScorpionDeath:
if (getcharid(3) != $@ScorpionFighter)
goto L_SummonAgain;
- if (@tutorial != 12)
+ if (QL_BEGIN != 12)
goto L_Clean;
- set @tutorial_tmp, 13;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 13;
message strcharinfo(0), "You saved Hasan.";
+ set @mobID, 1003;
+ callfunc "MobPoints";
goto L_Clean;
L_TimeOut:
diff --git a/world/map/npc/029-1/hideandseek.txt b/world/map/npc/029-1/hideandseek.txt
index 31653f95..e0ed487f 100644
--- a/world/map/npc/029-1/hideandseek.txt
+++ b/world/map/npc/029-1/hideandseek.txt
@@ -1,5 +1,5 @@
// Children playing Hide and Seek
-// QUEST_NorthTulimshar
+// QL_HIDENSEEK
// BYTE 0
// Bit 0: started quest at Ayasha
// Bit 1 - 5: found one of the kids each
@@ -7,7 +7,7 @@
// Bit 7: unused
// Author: Jenalya
--|script|#hideandseekNTconfig|-1
+-|script|#hideandseekNTconfig|32767
{
end;
@@ -24,15 +24,15 @@ OnInit:
function|script|CountHideNSeek
{
set @hidden_kid_cnt, 0;
- if (QUEST_NorthTulimshar & $@hideandseekNT_found1)
+ if (QL_HIDENSEEK & $@hideandseekNT_found1)
set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QUEST_NorthTulimshar & $@hideandseekNT_found2)
+ if (QL_HIDENSEEK & $@hideandseekNT_found2)
set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QUEST_NorthTulimshar & $@hideandseekNT_found3)
+ if (QL_HIDENSEEK & $@hideandseekNT_found3)
set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QUEST_NorthTulimshar & $@hideandseekNT_found4)
+ if (QL_HIDENSEEK & $@hideandseekNT_found4)
set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
- if (QUEST_NorthTulimshar & $@hideandseekNT_found5)
+ if (QL_HIDENSEEK & $@hideandseekNT_found5)
set @hidden_kid_cnt, (@hidden_kid_cnt + 1);
return;
}
@@ -45,26 +45,25 @@ function|script|CountHideNSeek
"Close.", L_Close;
L_Show:
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
- mes "State: " + @state;
- if (QUEST_NorthTulimshar & $@hideandseekNT_started)
+ mes "State: " + QL_HIDENSEEK;
+ if (QL_HIDENSEEK & $@hideandseekNT_started)
mes "Start set";
- if (QUEST_NorthTulimshar & $@hideandseekNT_found1)
+ if (QL_HIDENSEEK & $@hideandseekNT_found1)
mes "Found 1 set";
- if (QUEST_NorthTulimshar & $@hideandseekNT_found2)
+ if (QL_HIDENSEEK & $@hideandseekNT_found2)
mes "Found 2 set";
- if (QUEST_NorthTulimshar & $@hideandseekNT_found3)
+ if (QL_HIDENSEEK & $@hideandseekNT_found3)
mes "Found 3 set";
- if (QUEST_NorthTulimshar & $@hideandseekNT_found4)
+ if (QL_HIDENSEEK & $@hideandseekNT_found4)
mes "Found 4 set";
- if (QUEST_NorthTulimshar & $@hideandseekNT_found5)
+ if (QL_HIDENSEEK & $@hideandseekNT_found5)
mes "Found 5 set";
- if (QUEST_NorthTulimshar & $@hideandseekNT_ended)
+ if (QL_HIDENSEEK & $@hideandseekNT_ended)
mes "Complete set";
goto L_Close;
L_Reset:
- set QUEST_NorthTulimshar, 0;
+ set QL_HIDENSEEK, 0;
goto L_Close;
L_Close:
@@ -80,13 +79,11 @@ OnInit:
set @child_number, 0;
callfunc "XmasList";
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
-
set @EXP, 75;
- if (@state > 63) goto L_Done;
- if (@state == 63) goto L_Reward;
- if (@state > 0) goto L_Doing;
+ 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]";
@@ -109,21 +106,21 @@ L_Next1:
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 QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_started;
+ 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.\"";
+ 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 QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_ended;
+ set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_ended;
menu
"I think I need to do other things now.",L_Next2;
@@ -140,7 +137,6 @@ L_Done:
goto L_Close;
L_Close:
- set @state, 0;
set @EXP, 0;
close;
}
@@ -149,13 +145,11 @@ L_Close:
{
set @child_number, 1;
callfunc "XmasList";
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
-
set @EXP, 15;
- if (@state > 63) goto L_Done;
- if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found1)) goto L_Find;
- if (@state > 0) goto L_Doing;
+ 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
@@ -185,7 +179,7 @@ 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 QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_found1;
+ set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found1;
mes "\"Here, do you want a candy?\"";
getitem "Candy", 1;
goto L_Close;
@@ -203,7 +197,6 @@ L_Done:
goto L_Close;
L_Close:
- set @state, 0;
set @EXP, 0;
close;
}
@@ -212,13 +205,11 @@ L_Close:
{
set @child_number, 2;
callfunc "XmasList";
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
-
set @EXP, 15;
- if (@state > 63) goto L_Done;
- if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found2)) goto L_Find;
- if (@state > 0) goto L_Doing;
+ 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.\"";
@@ -229,7 +220,7 @@ L_Find:
mes "[Charda]";
mes "\"Oh! Got me! You're good at this.\"";
getexp @EXP, 0;
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_found2;
+ 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;
@@ -254,7 +245,6 @@ L_Done:
goto L_Close;
L_Close:
- set @state, 0;
set @EXP, 0;
close;
}
@@ -263,13 +253,11 @@ L_Close:
{
set @child_number, 3;
callfunc "XmasList";
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
-
set @EXP, 25;
- if (@state > 63) goto L_Done;
- if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found3)) goto L_Find;
- if (@state > 0) goto L_Doing;
+ 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?\"";
@@ -287,7 +275,7 @@ L_Find:
mes "\"You found me! Well done. You look a bit thirsty, here.\"";
getexp @EXP, 0;
getitem "CactusDrink", 1;
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_found3;
+ 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.\"";
@@ -306,7 +294,6 @@ L_Done:
goto L_Close;
L_Close:
- set @state, 0;
set @EXP, 0;
close;
}
@@ -315,13 +302,12 @@ L_Close:
{
set @child_number, 4;
callfunc "XmasList";
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
set @EXP, 15;
- if (@state > 63) goto L_Done;
- if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found4)) goto L_Find;
- if (@state > 0) goto L_Doing;
+ 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.";
@@ -332,7 +318,7 @@ L_Find:
mes "[Rasin]";
mes "\"Ah, you found me. I need to find a better place to hide next time.\"";
getexp @EXP, 0;
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_found4;
+ set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found4;
goto L_Close;
L_Doing:
@@ -349,7 +335,6 @@ L_Done:
goto L_Close;
L_Close:
- set @state, 0;
set @EXP, 0;
close;
}
@@ -358,13 +343,12 @@ L_Close:
{
set @child_number, 5;
callfunc "XmasList";
- set @state, ((QUEST_NorthTulimshar & BYTE_0_MASK) >> BYTE_0_SHIFT);
set @EXP, 15;
- if (@state > 63) goto L_Done;
- if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found5)) goto L_Find;
- if (@state > 0) goto L_Doing;
+ 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
@@ -381,7 +365,7 @@ L_Find:
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 QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_found5;
+ set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found5;
goto L_Close;
L_Doing:
@@ -397,7 +381,6 @@ L_Done:
goto L_Close;
L_Close:
- set @state, 0;
set @EXP, 0;
close;
}
diff --git a/world/map/npc/029-1/kaan.txt b/world/map/npc/029-1/kaan.txt
index 1c3cf0bb..297849fa 100644
--- a/world/map/npc/029-1/kaan.txt
+++ b/world/map/npc/029-1/kaan.txt
@@ -3,24 +3,17 @@
029-1,46,95,0|script|Kaan|160
{
- setarray @npc_loc, 46, 97, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_OutOfRange;
- callfunc "TutorialState";
+ set @kaan_talked, (STARTAREA & $@SpokeToKaan);
if (!(@kaan_talked)) goto L_Tanisha;
- if (@tutorial >= 13) goto L_TutDone;
- if (@tutorial == 12) goto L_Plan;
- if (@tutorial == 11) goto L_TrickKnown;
- if (@tutorial == 10) goto L_Trick;
- if (@tutorial == 9) goto L_Hasan;
+ 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_OutOfRange:
- message strcharinfo(0), "Come closer!";
- goto L_Close;
-
L_Tanisha:
set STARTAREA, STARTAREA | $@SpokeToKaan;
mes "[Young Man]";
@@ -69,8 +62,7 @@ L_Next1:
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 @tutorial_tmp, 10;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 10;
goto L_Trick;
L_Trick:
@@ -91,8 +83,7 @@ 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 @tutorial_tmp, 12;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 12;
next;
goto L_Explain;
diff --git a/world/map/npc/029-1/liana.txt b/world/map/npc/029-1/liana.txt
index c0eacba6..4cde049b 100644
--- a/world/map/npc/029-1/liana.txt
+++ b/world/map/npc/029-1/liana.txt
@@ -2,16 +2,13 @@
029-1,62,96,0|script|Liana|205
{
- setarray @npc_loc, 62, 96, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_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 (@tutorial == 10) goto L_Hasan;
+ if (QL_BEGIN == 10) goto L_Hasan;
goto L_Close;
L_Hasan:
@@ -24,7 +21,7 @@ L_Hasan:
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 "\"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!\"";
@@ -34,12 +31,7 @@ L_Next:
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 @tutorial_tmp, 11;
- callfunc "SetTutorialMask";
- goto L_Close;
-
-L_End:
- mes "You'll have to move closer";
+ set QL_BEGIN, 11;
goto L_Close;
L_Close:
diff --git a/world/map/npc/029-1/rewards_master.txt b/world/map/npc/029-1/rewards_master.txt
index acfafc58..1ed99ac2 100644
--- a/world/map/npc/029-1/rewards_master.txt
+++ b/world/map/npc/029-1/rewards_master.txt
@@ -136,7 +136,7 @@ S_give_item:
getitem @item$, 1;
- mes "You received one " + getitemname(@item$) + "!";
+ mes "You received one " + getitemlink(@item$) + "!";
return;
S_give_noinv:
diff --git a/world/map/npc/029-1/soul-menhir.txt b/world/map/npc/029-1/soul-menhir.txt
index d38f5e85..8113d9c5 100644
--- a/world/map/npc/029-1/soul-menhir.txt
+++ b/world/map/npc/029-1/soul-menhir.txt
@@ -2,7 +2,6 @@
029-1,39,101,0|script|Soul Menhir#candor|344
{
- callfunc "ClearVariables";
set @map$, "029-1";
setarray @Xs, 38, 39, 40, 38, 40, 38, 39, 40;
setarray @Ys, 100, 100, 100, 101, 101, 102, 102, 102;
diff --git a/world/map/npc/029-1/traveler.txt b/world/map/npc/029-1/traveler.txt
index 1d7f354a..befa8eef 100644
--- a/world/map/npc/029-1/traveler.txt
+++ b/world/map/npc/029-1/traveler.txt
@@ -4,7 +4,7 @@
029-1,69,68,0|script|Knitra the Traveler|103
{
- set @NpcName$, "Knitra";
+ 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
index ddaea587..e6f31c4a 100644
--- a/world/map/npc/029-1/tutorial.txt
+++ b/world/map/npc/029-1/tutorial.txt
@@ -1,7 +1,7 @@
// 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|-1
+-|script|#TutorialConfig|32767
{
end;
@@ -12,19 +12,6 @@ OnInit:
set $@SpokeToKaan, (1 << 31);
end;
}
-function|script|TutorialState
-{
- callfunc "ClearVariables";
- set @tutorial, ((STARTAREA & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
- set @kaan_talked, (STARTAREA & $@SpokeToKaan);
- return;
-}
-function|script|SetTutorialMask
-{
- set STARTAREA, (STARTAREA & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
- set @tutorial_tmp, 0;
- return;
-}
029-2,21,26,0|script|TutDebug|154
{
mes "[TutDebug]";
@@ -35,16 +22,14 @@ function|script|SetTutorialMask
"No.",L_Close;
L_Kaan:
- set @tutorial_tmp, 8;
- set STARTAREA, (STARTAREA & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
+ set QL_BEGIN, 8;
set STARTAREA, STARTAREA &~ $@SpokeToKaan;
mes "Reset!";
goto L_Close;
L_Reset:
set TUT_var, 0;
- set @tutorial_tmp, 0;
- set STARTAREA, (STARTAREA & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
+ set QL_BEGIN, 0;
set STARTAREA, STARTAREA &~ $@SpokeToKaan;
mes "Reset!";
goto L_Close;
@@ -59,14 +44,12 @@ OnInit:
}
029-1,32,99,0|script|#tutorialoutside|45,0,0
{
- callfunc "TutorialState";
- if (@tutorial >= 8)
+ if (QL_BEGIN >= 8)
goto L_Warp;
goto L_ResetTutorial;
L_ResetTutorial:
- set @tutorial_tmp, 8;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 8;
goto L_Warp;
L_Warp:
diff --git a/world/map/npc/029-1/valon.txt b/world/map/npc/029-1/valon.txt
index 49bb6c5d..e7a276c8 100644
--- a/world/map/npc/029-1/valon.txt
+++ b/world/map/npc/029-1/valon.txt
@@ -1,6 +1,6 @@
// This file is part of the Tutorial
// Author: Jenalya, Wushin
--|script|#ValonConfig|-1
+-|script|#ValonConfig|32767
{
end;
@@ -10,21 +10,14 @@ OnInit:
setarray $@ValonMobCnt, 10,5,3,1;
end;
}
-function|script|ValonState
+function|script|ValonCount
{
- set @valon_state, ((STARTAREA & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT);
set @valon_mob, 0;
- if (@valon_state >= 2)
- set @valon_mob, (@valon_state - 2);
+ if (QL_VALON >= 2)
+ set @valon_mob, (QL_VALON - 2);
set @valon_count, ((STARTAREA & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
return;
}
-function|script|setValonMask
-{
- set STARTAREA, (STARTAREA & ~(NIBBLE_1_MASK) | (@valon_tmp << NIBBLE_1_SHIFT));
- set @valon_tmp, 0;
- return;
-}
function|script|ResetValonCntMask
{
set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT));
@@ -42,8 +35,8 @@ function|script|AddValonCntMask
}
function|script|ValonProgress
{
- callfunc "ValonState";
- if ((@valon_state > 1) && (@valon_state < 6))
+ callfunc "ValonCount";
+ if ((QL_VALON > 1) && (QL_VALON < 6))
message strcharinfo(0), $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob];
return;
}
@@ -56,7 +49,7 @@ function|script|ValonProgress
"No.", L_Close;
L_Reset:
- set STARTAREA, (STARTAREA & ~(NIBBLE_1_MASK) | (0 << NIBBLE_1_SHIFT));
+ set QL_VALON, 0;
set STARTAREA, (STARTAREA & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT));
mes "Reset!";
goto L_Close;
@@ -71,18 +64,15 @@ OnInit:
}
029-1,72,86,0|script|Valon|156
{
- setarray @npc_loc, 72, 86, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
- callfunc "ValonState";
- if (@valon_state >= 6)
+ callfunc "ValonCount";
+ if (QL_VALON >= 6)
goto L_QuestComplete;
- if (@valon_start == 1)
+ if (QL_VALON == 1)
goto L_QuestAskAgain;
if (@valon_count >= $@ValonMobCnt[@valon_mob])
goto L_NextMob;
- if ((@valon_state >= 2) && (@valon_state < 6))
+ if ((QL_VALON >= 2) && (QL_VALON < 6))
goto L_QuestStarted;
goto L_QuestAsk;
@@ -102,17 +92,15 @@ L_QuestAsk:
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 @valon_tmp, 1;
- callfunc "setValonMask";
+ set QL_VALON, 1;
callfunc "ResetValonCntMask";
menu
"YES!!! let me at them!", L_Accept,
"Maybe some other time.", L_Close;
L_Accept:
- set @valon_tmp, 2;
- callfunc "setValonMask";
- callfunc "ValonState";
+ set QL_VALON, 2;
+ callfunc "ValonCount";
goto L_NewMob;
L_NextMob:
@@ -120,10 +108,9 @@ L_NextMob:
mes "\"I see you killed all the " + $@ValonMobName$[@valon_mob] + " needed.\"";
mes "\"The Wizard's thank thee as well.\"";
set Zeny, Zeny + 25;
- set @valon_tmp, (@valon_state + 1);
- callfunc "setValonMask";
+ set QL_VALON, (QL_VALON + 1);
callfunc "ResetValonCntMask";
- callfunc "ValonState";
+ callfunc "ValonCount";
if (@valon_mob == getarraysize($@ValonMob))
goto L_QuestOver;
goto L_NewMob;
@@ -144,8 +131,7 @@ L_QuestOver:
mes "[Valon]";
mes "\"Thanks once again for helping with the monsters in the island.\"";
getexp 50, 0;
- set @valon_tmp, (@valon_state + 1);
- callfunc "setValonMask";
+ set QL_VALON, (QL_VALON + 1);
goto L_Close;
L_QuestComplete:
diff --git a/world/map/npc/029-1/vincent.txt b/world/map/npc/029-1/vincent.txt
index a9cf7291..ab157e25 100644
--- a/world/map/npc/029-1/vincent.txt
+++ b/world/map/npc/029-1/vincent.txt
@@ -9,7 +9,7 @@
"No.", L_Close;
L_Reset:
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT));
+ set QL_VINCENT, 0;
mes "Reset!";
goto L_Close;
@@ -23,18 +23,14 @@ OnInit:
}
029-1,107,110,0|script|Vincent|113
{
- // This NPC previously used the variable TMW_Quest
- callfunc "ClearVarTMW_Quest";
set @halloween_npc_id, $@halloween_npc_vincent;
callfunc "TrickOrTreat";
- set @state, ((QUEST_SouthTulimshar & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
+ if (QL_VINCENT >= 2) goto L_Done;
+ if (QL_VINCENT == 1) goto L_Progress;
+ goto L_Con_Vin_First;
- if (@state >= 2) goto L_Done;
- if (@state == 1) goto L_Progress;
- goto L_Convince_Vincent_First;
-
-L_Convince_Vincent_First:
+L_Con_Vin_First:
mes "[Vincent]";
mes "\"I'm making an action figure. I'm almost done with it.\"";
next;
@@ -73,8 +69,7 @@ L_Ask:
"No.", L_Close;
L_Sure:
- set @state, 1;
- callsub S_Update_Var;
+ set QL_VINCENT, 1;
set @TEMP, rand(4);
if(@TEMP == 1) goto L_Req2;
if(@TEMP == 2) goto L_Req3;
@@ -125,8 +120,7 @@ L_Have:
delitem "BugLeg", 5;
getexp 50, 0;
set Zeny, Zeny + 1000;
- set @state, 2;
- callsub S_Update_Var;
+ set QL_VINCENT, 2;
mes "[Vincent]";
mes "\"Here you go, a little of my appreciation!\"";
@@ -140,11 +134,5 @@ L_Done:
goto L_Close;
L_Close:
- set @TEMP, 0;
- set @state, 0;
close;
-
-S_Update_Var:
- set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_2_MASK) | (@state << NIBBLE_2_SHIFT));
- return;
}
diff --git a/world/map/npc/029-1/zegas.txt b/world/map/npc/029-1/zegas.txt
index f9cefcbd..a350447d 100644
--- a/world/map/npc/029-1/zegas.txt
+++ b/world/map/npc/029-1/zegas.txt
@@ -3,26 +3,19 @@
// Npc
029-1,45,85,0|script|Zegas|165
{
- setarray @npc_loc, 45, 85, 2;
+ set @npc_distance, 2;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Range;
- callfunc "CheckBarrelQuest";
- if (@barrel_quest == 1)
+ if (QL_ZEGAS == 1)
goto L_Find;
- if (@barrel_quest == 2)
+ if (QL_ZEGAS == 2)
goto L_Looking;
- if (@barrel_quest == 3)
+ if (QL_ZEGAS == 3)
goto L_QuestEnd;
- if (@barrel_quest == 4)
+ if (QL_ZEGAS == 4)
goto L_Thanks;
goto L_Meet;
-L_Range:
- message strcharinfo(0), "Whats that? Come closer I can't hear you.";
- goto L_Close;
-
L_Meet:
mes "[Zegas]";
mes "\"Hey do you have a second?\"";
@@ -32,8 +25,7 @@ L_Meet:
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 @barrel_tmp, 1;
- callfunc "SetBarrelMask";
+ set QL_ZEGAS, 1;
menu
"Sure.",L_Start,
"Maybe some other time.",L_Close;
@@ -49,8 +41,7 @@ L_Find:
L_Start:
mes "[Zegas]";
- set @barrel_tmp, 2;
- callfunc "SetBarrelMask";
+ set QL_ZEGAS, 2;
mes "\"Thanks, come back and see me once you found the bug bomb and set it off.\"";
goto L_Close;
@@ -62,11 +53,10 @@ L_Looking:
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.\"";
+ 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 @barrel_tmp, 4;
- callfunc "SetBarrelMask";
+ set QL_ZEGAS, 4;
goto L_Close;
L_Thanks:
@@ -86,7 +76,7 @@ L_Close:
"No.", L_Close;
L_Reset:
- set STARTAREA, (STARTAREA & ~(NIBBLE_4_MASK) | (0 << NIBBLE_4_SHIFT));
+ set QL_ZEGAS, 0;
set STARTAREA, STARTAREA &~ (1 << 20);
set STARTAREA, STARTAREA &~ (1 << 21);
set STARTAREA, STARTAREA &~ (1 << 22);
diff --git a/world/map/npc/029-2/_import.txt b/world/map/npc/029-2/_import.txt
index 086ac850..29e2607a 100644
--- a/world/map/npc/029-2/_import.txt
+++ b/world/map/npc/029-2/_import.txt
@@ -3,10 +3,13 @@
map: 029-2
npc: npc/029-2/_mobs.txt
npc: npc/029-2/_warps.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
diff --git a/world/map/npc/029-2/_mobs.txt b/world/map/npc/029-2/_mobs.txt
index d6535efd..02d3fbd9 100644
--- a/world/map/npc/029-2/_mobs.txt
+++ b/world/map/npc/029-2/_mobs.txt
@@ -4,7 +4,7 @@
029-2,33,57,24,7|monster|HouseMaggot|1050,7,100000ms,30000ms,Mob029-2::On1050
-029-2,0,0,0|script|Mob029-2|-1
+029-2,0,0,0|script|Mob029-2|32767
{
end;
diff --git a/world/map/npc/029-2/_warps.txt b/world/map/npc/029-2/_warps.txt
index 77fee9b3..9b3d0e52 100644
--- a/world/map/npc/029-2/_warps.txt
+++ b/world/map/npc/029-2/_warps.txt
@@ -1,8 +1,9 @@
// 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|To Outside|-1,-1,029-1,40,89
-029-2,22,93|warp|To Outside|-1,-1,029-1,44,84
-029-2,112,84|warp|To Bedroom|-1,-1,029-2,44,30
-029-2,103,62|warp|To Outside|-1,-1,029-1,52,85
-029-2,94,31|warp|To Outside|-1,-1,029-1,58,80
+029-2,29,62|warp|To Outside#029-20|-1,-1,029-1,40,89
+029-2,22,93|warp|To Outside#029-21|-1,-1,029-1,44,84
+029-2,112,84|warp|To Bedroom#029-22|-1,-1,029-2,44,30
+029-2,103,62|warp|To Outside#029-23|-1,-1,029-1,52,85
+029-2,94,31|warp|To Outside#029-24|-1,-1,029-1,58,80
+029-2,24,124|warp|To Outside#029-25|-1,-1,029-1,49,78
diff --git a/world/map/npc/029-2/bankroom.txt b/world/map/npc/029-2/bankroom.txt
new file mode 100644
index 00000000..dea5a428
--- /dev/null
+++ b/world/map/npc/029-2/bankroom.txt
@@ -0,0 +1,9 @@
+// Nyle is part of the Tutorial.
+// He explains how to use the bank.
+// Author: Cassy
+
+029-2,36,122,0|script|#BankRoom|45,1,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
index 4ff3e6de..39bd0ad3 100644
--- a/world/map/npc/029-2/barrels.txt
+++ b/world/map/npc/029-2/barrels.txt
@@ -2,7 +2,6 @@
// Author: Wushin
029-2,23,86,0|script|Barrel#0|400
{
- setarray @npc_loc, 23, 86, 2;
set @barrel, 0;
callfunc "CheckBarrel";
end;
@@ -14,49 +13,42 @@ OnMaggotDeath:
}
029-2,28,86,0|script|Barrel#1|400
{
- setarray @npc_loc, 28, 86, 2;
set @barrel, 1;
callfunc "CheckBarrel";
end;
}
029-2,31,91,0|script|Barrel#2|400
{
- setarray @npc_loc, 31, 91, 2;
set @barrel, 2;
callfunc "CheckBarrel";
end;
}
029-2,36,85,0|script|Barrel#3|400
{
- setarray @npc_loc, 36, 85, 2;
set @barrel, 3;
callfunc "CheckBarrel";
end;
}
029-2,40,89,0|script|Barrel#4|400
{
- setarray @npc_loc, 40, 89, 2;
set @barrel, 4;
callfunc "CheckBarrel";
end;
}
029-2,38,91,0|script|Barrel#5|400
{
- setarray @npc_loc, 38, 91, 2;
set @barrel, 5;
callfunc "CheckBarrel";
end;
}
029-2,29,92,0|script|Barrel#6|400
{
- setarray @npc_loc, 29, 92, 2;
set @barrel, 6;
callfunc "CheckBarrel";
end;
}
029-2,24,91,0|script|Barrel#7|400
{
- setarray @npc_loc, 24, 91, 2;
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
index 665903fb..b2e340a6 100644
--- a/world/map/npc/029-2/barrels_config.txt
+++ b/world/map/npc/029-2/barrels_config.txt
@@ -1,7 +1,7 @@
// Barrels
// Author: Wushin
029-2,33,88,24,7|monster|HouseMaggot|1050,2,100000ms,30000ms,Barrel#0::OnMaggotDeath
--|script|#BarrelConfig|-1
+-|script|#BarrelConfig|32767
{
end;
@@ -14,25 +14,13 @@ OnInit:
set $@BarrelMax, getarraysize($@BarrelBits);
end;
}
-function|script|SetBarrelMask
-{
- set STARTAREA, (STARTAREA & ~(NIBBLE_4_MASK) | (@barrel_tmp << NIBBLE_4_SHIFT));
- set @barrel_tmp, 0;
- return;
-}
-function|script|CheckBarrelQuest
-{
- callfunc "CountBarrels";
- set @barrel_quest, ((STARTAREA & NIBBLE_4_MASK) >> NIBBLE_4_SHIFT);
- return;
-}
function|script|CountBarrels
{
set @barrel_count, 0;
set @count_tmp, 0;
goto L_Loop;
-L_Loop:
+L_Loop:
if (STARTAREA & $@BarrelBits[@barrel_count])
goto L_AddOne;
goto L_LoopAgain;
@@ -52,11 +40,9 @@ L_BarrelTally:
}
function|script|CheckBarrel
{
+ set @npc_distance, 2;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Range;
- callfunc "CheckBarrelQuest";
- if (!(@barrel_quest == 2))
+ if (!(QL_ZEGAS == 2))
goto L_NoI;
if (STARTAREA & $@BarrelBits[@barrel])
goto L_Empty;
@@ -71,10 +57,6 @@ function|script|CheckBarrel
goto L_Spawn;
goto L_Reward;
-L_Range:
- message strcharinfo(0), "You'll need to get closer.";
- goto L_Return;
-
L_NoI:
message strcharinfo(0), "Nothing interesting here.";
goto L_Return;
@@ -86,14 +68,15 @@ L_Empty:
L_QuestReward:
message strcharinfo(0), "You found the bug bomb.";
misceffect 33;
- set @barrel_tmp, 3;
- callfunc "SetBarrelMask";
+ set QL_ZEGAS, 3;
killmonster getmap() + "", "Barrel#0::OnMaggotDeath";
goto L_Return;
L_Spawn:
message strcharinfo(0), "Uck, More Maggots!";
- areamonster getmap() + "", @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath";
+ setarray @npc_loc, getnpcx(), getnpcy();
+ areamonster getmap(), @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath";
+ cleararray @npc_loc, 0, 2;
goto L_Return;
L_Reward:
diff --git a/world/map/npc/029-2/cynric.txt b/world/map/npc/029-2/cynric.txt
new file mode 100644
index 00000000..2a133e41
--- /dev/null
+++ b/world/map/npc/029-2/cynric.txt
@@ -0,0 +1,8 @@
+//
+
+029-2,30,118,0|script|Cynric|161
+{
+ set @npcname$, "Cynric";
+ callfunc "Banker";
+ close;
+}
diff --git a/world/map/npc/029-2/morgan.txt b/world/map/npc/029-2/morgan.txt
index f6679f67..3f7d3e1e 100644
--- a/world/map/npc/029-2/morgan.txt
+++ b/world/map/npc/029-2/morgan.txt
@@ -3,18 +3,6 @@
// Gains Access to Magic School
// See 024-2 clean that shit up
// Morgan, liana
-function|script|MorganState
-{
- callfunc "ClearVariables";
- set @morgan, ((STARTAREA & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
- return;
-}
-function|script|SetMorganMask
-{
- set STARTAREA, (STARTAREA & ~(NIBBLE_3_MASK) | (@morgan_tmp << NIBBLE_3_SHIFT));
- set @morgan_tmp, 0;
- return;
-}
029-2,105,57,0|script|MorganDebug|355
{
mes "[Morgan Debug]";
@@ -23,7 +11,7 @@ function|script|SetMorganMask
"Yes.", L_Reset,
"No.", L_End;
L_Reset:
- set STARTAREA, (STARTAREA & ~(NIBBLE_3_MASK) | (0 << NIBBLE_3_SHIFT));
+ set QL_MORGAN, 0;
mes "Reset!";
goto L_End;
@@ -37,31 +25,26 @@ OnInit:
}
029-2,101,57,0|script|Morgan#_M|355
{
- setarray @npc_loc, 101, 57, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
- callfunc "MorganState";
- if (readparam(bInt) >= 5)
+ if (Int >= 5)
goto L_Learn;
goto L_NotMagic;
L_Learn:
- if (@morgan == 0)
+ if (QL_MORGAN == 0)
goto L_NotSeen;
- if (@morgan == 1)
+ if (QL_MORGAN == 1)
goto L_Seen;
- if (@morgan == 2)
+ if (QL_MORGAN == 2)
goto L_Started;
- if (@morgan == 3)
+ if (QL_MORGAN == 3)
goto L_CastOnce;
- if (@morgan == 4)
+ if (QL_MORGAN == 4)
goto L_LearningDone;
goto L_Close;
L_NotSeen:
- set @morgan_tmp, 1;
- callfunc "SetMorganMask";
+ set QL_MORGAN, 1;
mes "[Morgan]";
mes "\"Welcome to the magic school of Candor\"";
mes "\"My name is Morgan, I'm Head of Wizardry.\"";
@@ -86,8 +69,7 @@ L_NotMagic:
goto L_Close;
L_Start:
- set @morgan_tmp, 2;
- callfunc "SetMorganMask";
+ 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.\"";
@@ -115,8 +97,9 @@ L_CastOnce:
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.).\"";
- set @morgan_tmp, 4;
- callfunc "SetMorganMask";
+ 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:
diff --git a/world/map/npc/029-2/nyle.txt b/world/map/npc/029-2/nyle.txt
new file mode 100644
index 00000000..3e15d6cb
--- /dev/null
+++ b/world/map/npc/029-2/nyle.txt
@@ -0,0 +1,51 @@
+// 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, your 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
index 0c0fef07..984312cf 100644
--- a/world/map/npc/029-2/sorfina.txt
+++ b/world/map/npc/029-2/sorfina.txt
@@ -2,19 +2,16 @@
// Author: Jenalya
029-2,27,27,0|script|Sorfina|154,0,1
{
- setarray @npc_loc, 27, 27, 2;
+ set @npc_distance, 2;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
goto L_Main;
L_Main:
- callfunc "TutorialState";
- if (@tutorial == 10) goto L_Hasan;
- if (@tutorial >= 4) goto L_Again;
- if (@tutorial == 3) goto L_Clothes;
- if (@tutorial == 2) goto L_Dresser;
- if (@tutorial == 1) goto L_Carpet;
+ 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:
@@ -28,9 +25,9 @@ L_Start:
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;
+ strcharinfo(0), L_name;
-L_Name:
+L_name:
mes "[Old Woman]";
mes "\"Well " + strcharinfo(0) + " what else can you tell me about yourself?.\"";
menu
@@ -60,8 +57,7 @@ L_Carpet:
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 @tutorial_tmp, 1;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 1;
goto L_Close;
L_Dresser:
@@ -98,8 +94,7 @@ L_Clothes:
mes "\"And here is some money for you. Don't spend it all in one place.";
mes "Now go help Tanisha downstairs.\"";
set Zeny, Zeny + 30;
- set @tutorial_tmp, 4;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 4;
goto L_Close;
L_Again:
@@ -138,7 +133,7 @@ L_Walk:
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 " or click on the place you want to go to.";
mes "This only works if that place is reachable and walkable.\"";
goto L_Close;
@@ -164,7 +159,7 @@ L_Items:
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.";
+ 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;
@@ -215,7 +210,7 @@ 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 "\"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!\"";
@@ -225,8 +220,7 @@ L_Next:
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 @tutorial_tmp, 11;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 11;
goto L_Close;
L_SkipTut:
@@ -245,17 +239,15 @@ L_Bye:
getitem "HitchhikersTowel", 1;
getitem "CottonShirt", 1;
getitem "RaggedShorts", 1;
- set Zeny, Zeny + 50;
- set @tutorial_tmp, 8;
- callfunc "SetTutorialMask";
+ set Zeny, Zeny + 35; // tanisha gives 5 zeny
+ set QL_BEGIN, 8;
goto L_Close;
L_Close:
close;
OnTouch:
- callfunc "TutorialState";
- if (@tutorial > 0)
+ if (QL_BEGIN > 0)
end;
goto L_Start;
}
@@ -265,8 +257,7 @@ OnTouch:
end;
OnTouch:
- callfunc "TutorialState";
- if (@tutorial != 1)
+ if (QL_BEGIN != 1)
end;
mes "[Sorfina]";
mes "\"You should get dressed now.\"";
@@ -274,20 +265,19 @@ OnTouch:
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;
mes "\"Now get the clothes out of the dresser.\"";
- set @tutorial_tmp, 2;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 2;
close;
}
029-2,29,23,0|script|Dresser#tutorial|400
{
- setarray @npc_loc, 29, 23, 2;
+ set @npc_distance, 2;
+ set @distance_handler, 1;
callfunc "PCtoNPCRange";
if (@npc_check)
goto L_CloseDis;
- callfunc "TutorialState";
- if (@tutorial > 2) goto L_Empty;
- if (@tutorial == 2) goto L_Shirt;
+ if (QL_BEGIN > 2) goto L_Empty;
+ if (QL_BEGIN == 2) goto L_Shirt;
goto L_Walk;
L_Walk:
@@ -304,8 +294,7 @@ L_Shirt:
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 @tutorial_tmp, 3;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 3;
close;
L_Empty:
@@ -322,8 +311,7 @@ L_CloseDis:
end;
OnTouch:
- callfunc "TutorialState";
- if (@tutorial < 4)
+ if (QL_BEGIN < 4)
goto L_Block;
warp "029-2", 112, 85;
end;
diff --git a/world/map/npc/029-2/stat_reset.txt b/world/map/npc/029-2/stat_reset.txt
index 896bbf6b..c1dafd7b 100644
--- a/world/map/npc/029-2/stat_reset.txt
+++ b/world/map/npc/029-2/stat_reset.txt
@@ -2,10 +2,7 @@
029-2,98,92,0|script|Jessie|159
{
- setarray @npc_loc, 98, 91, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
if (BaseLevel >= 10)
goto L_Sorry;
diff --git a/world/map/npc/029-2/tanisha.txt b/world/map/npc/029-2/tanisha.txt
index 450bc77c..9a7ee081 100644
--- a/world/map/npc/029-2/tanisha.txt
+++ b/world/map/npc/029-2/tanisha.txt
@@ -4,23 +4,19 @@
029-2,110,88,0|script|Tanisha|114
{
- setarray @npc_loc, 110, 88, 4;
callfunc "PCtoNPCRange";
- if (@npc_check)
- goto L_Close;
if (isin("029-2", 98, 84, 106, 89))
goto L_Fighting;
- callfunc "TutorialState";
- if (@tutorial >= 8) goto L_Tut_Done;
- if (@tutorial == 7) goto L_Stats;
- if (@tutorial == 6) goto L_Fail;
- if (@tutorial == 5) goto L_Maggots;
+ 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;
+ emotion EMOTE_HAPPY, strcharinfo(0);
mes "\"Are you feeling better?\"";
menu
"Yes, thank you.",L_Next,
@@ -30,8 +26,7 @@ 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 @tutorial_tmp, 5;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 5;
goto L_Maggots;
L_Maggots:
@@ -67,24 +62,21 @@ L_Fight_Again:
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 @tutorial, 2;
+ // 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
- callfunc "TutorialState";
- if (@tutorial == 5)
+ if (QL_BEGIN == 5)
goto L_GetFightItems;
goto L_ContinueFight;
L_GetFightItems:
- set @tutorial_tmp, 6;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 6;
getitem "Knife", 1;
getitem "SlingShot", 1;
getitem "SlingBullet", 500;
goto L_ContinueFight;
L_ContinueFight:
- set @tutorial_tmp, 6;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 6;
set @Maggot_Kills, 0;
set @time, 0;
if (getareausers("029-2", 98, 84, 106, 89) == 0)
@@ -118,8 +110,7 @@ L_StatsRe:
mes "\"My Uncle sitting at the counter knows a spell to help the younglings reset their stats.\"";
mes "\"He also knows of mages with even more powerful reset spells.\"";
next;
- callfunc "TutorialState";
- if (@tutorial == 7)
+ if (QL_BEGIN == 7)
goto L_Money;
goto L_Advice;
@@ -128,8 +119,7 @@ L_Money:
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 @tutorial_tmp, 8;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 8;
set Zeny, Zeny + 5;
next;
goto L_Advice;
@@ -137,7 +127,7 @@ L_Money:
L_Advice:
mes "\"When you go to Hurnscald, you should see Bernard. He can make a delicious soup!";
mes "Good luck!\"";
- emotion EMOTE_HAPPY;
+ emotion EMOTE_HAPPY, strcharinfo(0);
goto L_Close;
L_Explain:
@@ -263,8 +253,7 @@ OnMaggotDeath:
goto L_Summon;
// else, complete
warp "029-2", 110, 88;
- set @tutorial_tmp, 7;
- callfunc "SetTutorialMask";
+ set QL_BEGIN, 7;
set @Maggot_Kills, 0;
set @time, 0;
if (getareausers("029-2", 98, 84, 106, 89) == 0)
@@ -284,8 +273,7 @@ OnInit:
end;
OnTouch:
- callfunc "TutorialState";
- if (@tutorial >= 8)
+ if (QL_BEGIN >= 8)
goto L_Warp;
goto L_Block;
diff --git a/world/map/npc/029-3/_mobs.txt b/world/map/npc/029-3/_mobs.txt
index 61f8c33f..9a83bf7f 100644
--- a/world/map/npc/029-3/_mobs.txt
+++ b/world/map/npc/029-3/_mobs.txt
@@ -3,7 +3,7 @@
-029-3,0,0,0|script|Mob029-3|-1
+029-3,0,0,0|script|Mob029-3|32767
{
end;
}
diff --git a/world/map/npc/029-3/parua.txt b/world/map/npc/029-3/parua.txt
index d8e100fb..41e1fe8c 100644
--- a/world/map/npc/029-3/parua.txt
+++ b/world/map/npc/029-3/parua.txt
@@ -105,12 +105,10 @@ L_Enjoy:
goto L_Exit;
L_Wait:
- set @seconds, ($@ANNOUNCE_TIME - gettimetick(2));
+ set @ms, ($@ANNOUNCE_TIME - gettimetick(2)) * 1000;
+ callfunc "HumanTime";
mes "[Parua]";
- if (@seconds/60 == 0)
- mes "\"Be Patient... The fight will start in " + @seconds + " seconds.\"";
- if (@seconds/60 > 0)
- mes "\"Be Patient... The fight will start in " + @seconds/60 + " minute(s).\"";
+ mes "\"Be Patient... The fight will start in " + @time$ + ".\"";
goto L_Exit;
L_NotEnough:
@@ -221,7 +219,7 @@ L_NextRound:
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;
+ 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;
@@ -267,25 +265,25 @@ L_GlobalAnnounce:
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 ##75 minutes##1 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 ##75 minutes##1 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 ##75 minutes##1 and, at the moment, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ 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;
+ 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;
+ 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;
@@ -345,7 +343,7 @@ OnNewRound:
goto L_IdleCheckPassed;
set @candor_idle_counter, @candor_idle_counter + 1;
sc_start sc_poison, 1, @candor_idle_counter*25;
- percentheal -20 * @candor_idle_counter, 0;
+ heal ((MaxHp/100) * (-20 * @candor_idle_counter)), 0;
message strcharinfo(0), "The evil energy of this place hurts you. You should keep moving!";
end;
diff --git a/world/map/npc/030-2/_mobs.txt b/world/map/npc/030-2/_mobs.txt
index 4e45ffc1..664e8111 100644
--- a/world/map/npc/030-2/_mobs.txt
+++ b/world/map/npc/030-2/_mobs.txt
@@ -3,7 +3,7 @@
-030-2,0,0,0|script|Mob030-2|-1
+030-2,0,0,0|script|Mob030-2|32767
{
end;
}
diff --git a/world/map/npc/030-2/_warps.txt b/world/map/npc/030-2/_warps.txt
index a004a838..1bfc17a2 100644
--- a/world/map/npc/030-2/_warps.txt
+++ b/world/map/npc/030-2/_warps.txt
@@ -1,18 +1,18 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Christmas Inn warps
-030-2,88,51|warp|To Outside|-1,-1,020-1,33,94
-030-2,72,31|warp|To Basement|-1,-1,030-2,51,31
-030-2,194,68|warp|To Fourth Floor|-1,-1,030-2,78,88
-030-2,52,31|warp|To First Floor|-1,-1,030-2,73,31
-030-2,75,19|warp|To Second Floor|0,-1,030-2,127,50
-030-2,102,19|warp|To Second Floor|0,-1,030-2,153,50
-030-2,127,51|warp|To First Floor|0,-1,030-2,75,20
-030-2,154,51|warp|To First Floor|0,-1,030-2,101,20
-030-2,156,24|warp|To Third Floor|-1,0,030-2,21,78
-030-2,20,78|warp|To Second Floor|-1,0,030-2,155,24
-030-2,42,105|warp|To Fourth Floor|0,-1,030-2,93,74
-030-2,94,73|warp|To Third Floor|0,-1,030-2,41,104
-030-2,102,73|warp|To Fifth Floor|0,-1,030-2,127,104
-030-2,127,105|warp|To Fourth Floor|0,-1,030-2,102,74
-030-2,78,87|warp|To Private Room|-1,-1,030-2,194,67
+030-2,88,51|warp|To Outside#030-20|-1,-1,020-1,33,94
+030-2,72,31|warp|To Basement#030-21|-1,-1,030-2,51,31
+030-2,194,68|warp|To Fourth Floor#030-22|-1,-1,030-2,78,88
+030-2,52,31|warp|To First Floor#030-23|-1,-1,030-2,73,31
+030-2,75,19|warp|To Second Floor#030-24|0,-1,030-2,127,50
+030-2,102,19|warp|To Second Floor#030-25|0,-1,030-2,153,50
+030-2,127,51|warp|To First Floor#030-26|0,-1,030-2,75,20
+030-2,154,51|warp|To First Floor#030-27|0,-1,030-2,101,20
+030-2,156,24|warp|To Third Floor#030-28|-1,0,030-2,21,78
+030-2,20,78|warp|To Second Floor#030-29|-1,0,030-2,155,24
+030-2,42,105|warp|To Fourth Floor#030-210|0,-1,030-2,93,74
+030-2,94,73|warp|To Third Floor#030-211|0,-1,030-2,41,104
+030-2,102,73|warp|To Fifth Floor#030-212|0,-1,030-2,127,104
+030-2,127,105|warp|To Fourth Floor#030-213|0,-1,030-2,102,74
+030-2,78,87|warp|To Private Room#030-214|-1,-1,030-2,194,67
diff --git a/world/map/npc/030-2/avalia.txt b/world/map/npc/030-2/avalia.txt
index a23cacb7..818fabae 100644
--- a/world/map/npc/030-2/avalia.txt
+++ b/world/map/npc/030-2/avalia.txt
@@ -168,9 +168,9 @@ L_Reward:
mes "[Avalia]";
mes "\"Thanks for all the help.\"";
mes "\"Take this as a token of my gratitude.\"";
- if @xmas_reward2_done_state
+ if (@xmas_reward2_done_state)
set @xmas_state, $@xmas_reward_done;
- if @xmas_reward_start_state
+ if (@xmas_reward_start_state)
set @xmas_state, $@xmas_reward1_done;
callfunc "XmasSetState";
callfunc "XmasMainXpBpReward";
diff --git a/world/map/npc/030-3/_mobs.txt b/world/map/npc/030-3/_mobs.txt
index 2831fc8d..9d4b3b43 100644
--- a/world/map/npc/030-3/_mobs.txt
+++ b/world/map/npc/030-3/_mobs.txt
@@ -3,7 +3,7 @@
-030-3,0,0,0|script|Mob030-3|-1
+030-3,0,0,0|script|Mob030-3|32767
{
end;
}
diff --git a/world/map/npc/030-3/_warps.txt b/world/map/npc/030-3/_warps.txt
index 91ef9673..2927632e 100644
--- a/world/map/npc/030-3/_warps.txt
+++ b/world/map/npc/030-3/_warps.txt
@@ -1,4 +1,4 @@
// 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|To Snow Cave|-1,-1,019-3,80,102
+030-3,54,69|warp|To Snow Cave#030-30|-1,-1,019-3,80,102
diff --git a/world/map/npc/030-3/orum_homunculus.txt b/world/map/npc/030-3/orum_homunculus.txt
index b580476a..c31cbf04 100644
--- a/world/map/npc/030-3/orum_homunculus.txt
+++ b/world/map/npc/030-3/orum_homunculus.txt
@@ -175,7 +175,7 @@ L_OffSeason:
end;
L_XmasMain:
- if !(@xmas_knows_route) goto L_SetPath;
+ 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;
@@ -449,9 +449,9 @@ L_Quick:
L_Reward:
mes "[Orum's Homunculus]";
mes "\"Revenge is a dish best served cold..\"";
- if @xmas_reward2_done_state
+ if (@xmas_reward2_done_state)
set @xmas_state, $@xmas_reward_done;
- if @xmas_reward_start_state
+ if (@xmas_reward_start_state)
set @xmas_state, $@xmas_reward1_done;
callfunc "XmasSetState";
diff --git a/world/map/npc/030-4/_mobs.txt b/world/map/npc/030-4/_mobs.txt
index f9ab4f5e..97ff93a8 100644
--- a/world/map/npc/030-4/_mobs.txt
+++ b/world/map/npc/030-4/_mobs.txt
@@ -3,7 +3,7 @@
-030-4,0,0,0|script|Mob030-4|-1
+030-4,0,0,0|script|Mob030-4|32767
{
end;
}
diff --git a/world/map/npc/030-4/mana_battery.txt b/world/map/npc/030-4/mana_battery.txt
index 18507bc9..9a198c21 100644
--- a/world/map/npc/030-4/mana_battery.txt
+++ b/world/map/npc/030-4/mana_battery.txt
@@ -277,7 +277,7 @@ OnTick:
L_DangerCell:
message strcharinfo(0), "Target Aquired. Locking on Now.";
misceffect 10001, strcharinfo(0);
- percentheal -20, 0;
+ heal ((MaxHp/100) * -20), 0;
end;
OnGuardDeath:
@@ -360,34 +360,34 @@ L_Restart:
"", // 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.";
+ "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!";
+ "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
@@ -438,7 +438,7 @@ S_ClearVariables:
return;
}
-030-4,0,0,0|script|#XmasChamberCooler|-1
+030-4,0,0,0|script|#XmasChamberCooler|32767
{
end;
OnCommandCoolDown:
diff --git a/world/map/npc/031-1/_mobs.txt b/world/map/npc/031-1/_mobs.txt
index 26374da6..d5a747fb 100644
--- a/world/map/npc/031-1/_mobs.txt
+++ b/world/map/npc/031-1/_mobs.txt
@@ -7,7 +7,7 @@
031-1,0,0,0,0|monster|WhiteBell|1095,4,100000ms,30000ms,Mob031-1::On1095
-031-1,0,0,0|script|Mob031-1|-1
+031-1,0,0,0|script|Mob031-1|32767
{
end;
diff --git a/world/map/npc/031-1/_warps.txt b/world/map/npc/031-1/_warps.txt
index 08eba8f1..7c281c2a 100644
--- a/world/map/npc/031-1/_warps.txt
+++ b/world/map/npc/031-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Nivalis Port warps
-031-1,37,55|warp|To Nivalis|-1,-1,020-1,106,55
-031-1,76,24|warp|To Ice Labyrinth|-1,-1,031-3,212,299
-031-1,90,115|warp|To Nivalis Storage|-1,-1,031-2,73,29
+031-1,37,55|warp|To Nivalis#031-10|-1,-1,020-1,106,55
+031-1,76,24|warp|To Ice Labyrint#031-11|-1,-1,031-3,212,299
+031-1,90,115|warp|To Nivalis Stor#031-12|-1,-1,031-2,73,29
diff --git a/world/map/npc/031-1/dock.txt b/world/map/npc/031-1/dock.txt
index 37ec98ed..b19cf271 100644
--- a/world/map/npc/031-1/dock.txt
+++ b/world/map/npc/031-1/dock.txt
@@ -13,7 +13,7 @@
close;
}
-031-1,100,100,0|script|#NivalisDock|127
+031-1,100,100,0|script|#NivalisDock|32767
{
end;
diff --git a/world/map/npc/031-2/_mobs.txt b/world/map/npc/031-2/_mobs.txt
index 61d16cc9..ab4d5c66 100644
--- a/world/map/npc/031-2/_mobs.txt
+++ b/world/map/npc/031-2/_mobs.txt
@@ -3,7 +3,7 @@
-031-2,0,0,0|script|Mob031-2|-1
+031-2,0,0,0|script|Mob031-2|32767
{
end;
}
diff --git a/world/map/npc/031-2/_warps.txt b/world/map/npc/031-2/_warps.txt
index d7c00951..0365ad8d 100644
--- a/world/map/npc/031-2/_warps.txt
+++ b/world/map/npc/031-2/_warps.txt
@@ -1,5 +1,5 @@
// 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|To Outside|-1,-1,031-1,95,81
-031-2,73,30|warp|To Outside|-1,-1,031-1,90,116
+031-2,23,30|warp|To Outside#031-20|-1,-1,031-1,95,81
+031-2,73,30|warp|To Outside#031-21|-1,-1,031-1,90,116
diff --git a/world/map/npc/031-2/cindyHouse.txt b/world/map/npc/031-2/cindyHouse.txt
index 5a1c20cc..bd4c17fb 100644
--- a/world/map/npc/031-2/cindyHouse.txt
+++ b/world/map/npc/031-2/cindyHouse.txt
@@ -31,7 +31,7 @@ L_Happy_Random:
strcharinfo(0) + ", you are sooo strong! Amazing! But my dad is strong too!";
set @random, rand(9);
if (@random != 5)
- emotion EMOTE_HAPPY;
+ emotion EMOTE_HAPPY, strcharinfo(0);
set @quote$, "\"" + @quote_Cindy$[@random] + "\"";
mes "[Cindy]";
mes @quote$;
diff --git a/world/map/npc/031-3/_mobs.txt b/world/map/npc/031-3/_mobs.txt
index d22f769f..ccfb1199 100644
--- a/world/map/npc/031-3/_mobs.txt
+++ b/world/map/npc/031-3/_mobs.txt
@@ -92,7 +92,7 @@
031-3,52,285,14,9|monster|BlueSlime|1091,2,100000ms,30000ms,Mob031-3::On1091
-031-3,0,0,0|script|Mob031-3|-1
+031-3,0,0,0|script|Mob031-3|32767
{
end;
diff --git a/world/map/npc/031-3/_warps.txt b/world/map/npc/031-3/_warps.txt
index f99990e0..e6599a37 100644
--- a/world/map/npc/031-3/_warps.txt
+++ b/world/map/npc/031-3/_warps.txt
@@ -1,52 +1,52 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Ice Labyrinth warps
-031-3,212,300|warp|To Nivalis Port|-1,-1,031-1,76,25
-031-3,205,264|warp|To Ice Labyrinth|-1,-1,031-3,150,260
-031-3,149,259|warp|To Ice Labyrinth|-1,-1,031-3,206,265
-031-3,225,282|warp|To Ice Labyrinth|-1,-1,031-3,274,299
-031-3,274,300|warp|To Ice Labyrinth|-1,-1,031-3,225,283
-031-3,283,271|warp|To Ice Labyrinth|-1,-1,031-3,269,244
-031-3,269,245|warp|To Ice Labyrinth|-1,-1,031-3,283,272
-031-3,148,150|warp|To Ice Labyrinth|-1,-1,031-3,128,134
-031-3,139,258|warp|To Ice Labyrinth|-1,-1,031-3,156,196
-031-3,155,195|warp|To Ice Labyrinth|-1,-1,031-3,139,259
-031-3,142,301|warp|To Ice Labyrinth|-1,-1,031-3,98,300
-031-3,97,301|warp|To Ice Labyrinth|-1,-1,031-3,143,300
-031-3,135,196|warp|To Ice Labyrinth|-1,-1,031-3,106,231
-031-3,106,232|warp|To Ice Labyrinth|-1,-1,031-3,135,197
-031-3,286,190|warp|To Ice Labyrinth|-1,-1,031-3,227,241
-031-3,227,242|warp|To Ice Labyrinth|-1,-1,031-3,286,191
-031-3,236,211|warp|To Ice Labyrinth|-1,-1,031-3,187,227
-031-3,187,228|warp|To Ice Labyrinth|-1,-1,031-3,236,212
-031-3,94,254|warp|To Ice Labyrinth|-1,-1,031-3,54,251
-031-3,54,250|warp|To Ice Labyrinth|-1,-1,031-3,94,255
-031-3,103,199|warp|To Ice Labyrinth|-1,-1,031-3,52,176
-031-3,52,177|warp|To Ice Labyrinth|-1,-1,031-3,103,200
-031-3,212,193|warp|To Ice Labyrinth|-1,-1,031-3,207,167
-031-3,207,168|warp|To Ice Labyrinth|-1,-1,031-3,212,194
-031-3,235,167|warp|To Ice Labyrinth|-1,-1,031-3,195,123
-031-3,195,122|warp|To Ice Labyrinth|-1,-1,031-3,235,166
-031-3,296,97|warp|To Ice Labyrinth|-1,-1,031-3,292,124
-031-3,292,123|warp|To Ice Labyrinth|-1,-1,031-3,296,96
-031-3,289,164|warp|To Ice Labyrinth|-1,-1,031-3,228,122
-031-3,228,121|warp|To Ice Labyrinth|-1,-1,031-3,289,163
-031-3,24,157|warp|To Ice Labyrinth|-1,-1,031-3,31,143
-031-3,31,144|warp|To Ice Labyrinth|-1,-1,031-3,24,158
-031-3,36,249|warp|To Ice Labyrinth|-1,-1,031-3,35,225
-031-3,35,226|warp|To Ice Labyrinth|-1,-1,031-3,36,250
-031-3,34,25|warp|To Ice Labyrinth|-1,-1,031-3,281,24
-031-3,281,22|warp|To Ice Labyrinth|-1,-1,031-3,34,27
-031-3,283,48|warp|To Ice Labyrinth|-1,-1,031-3,275,74
-031-3,275,73|warp|To Ice Labyrinth|-1,-1,031-3,283,47
-031-3,26,178|warp|To Ice Labyrinth|-1,-1,031-3,36,201
-031-3,36,200|warp|To Ice Labyrinth|-1,-1,031-3,26,177
-031-3,91,125|warp|To Ice Labyrinth|-1,-1,031-3,36,79
-031-3,36,80|warp|To Ice Labyrinth|-1,-1,031-3,91,126
-031-3,52,78|warp|To Ice Labyrinth|-1,-1,031-3,192,71
-031-3,192,70|warp|To Ice Labyrinth|-1,-1,031-3,52,77
-031-3,128,135|warp|To Ice Labyrinth|-1,-1,031-3,148,151
-031-3,232,93|warp|To Ice Labyrinth|-1,-1,031-3,234,26
-031-3,234,25|warp|To Ice Labyrinth|-1,-1,031-3,232,92
-031-3,200,50|warp|To Ice Labyrinth|-1,-1,031-3,136,30
-031-3,136,29|warp|To Ice Labyrinth|-1,-1,031-3,200,49
+031-3,212,300|warp|To Nivalis Port#031-30|-1,-1,031-1,76,25
+031-3,205,264|warp|To Ice Labyrint#031-31|-1,-1,031-3,150,260
+031-3,149,259|warp|To Ice Labyrint#031-32|-1,-1,031-3,206,265
+031-3,225,282|warp|To Ice Labyrint#031-33|-1,-1,031-3,274,299
+031-3,274,300|warp|To Ice Labyrint#031-34|-1,-1,031-3,225,283
+031-3,283,271|warp|To Ice Labyrint#031-35|-1,-1,031-3,269,244
+031-3,269,245|warp|To Ice Labyrint#031-36|-1,-1,031-3,283,272
+031-3,148,150|warp|To Ice Labyrint#031-37|-1,-1,031-3,128,134
+031-3,139,258|warp|To Ice Labyrint#031-38|-1,-1,031-3,156,196
+031-3,155,195|warp|To Ice Labyrint#031-39|-1,-1,031-3,139,259
+031-3,142,301|warp|To Ice Labyrint#031-310|-1,-1,031-3,98,300
+031-3,97,301|warp|To Ice Labyrint#031-311|-1,-1,031-3,143,300
+031-3,135,196|warp|To Ice Labyrint#031-312|-1,-1,031-3,106,231
+031-3,106,232|warp|To Ice Labyrint#031-313|-1,-1,031-3,135,197
+031-3,286,190|warp|To Ice Labyrint#031-314|-1,-1,031-3,227,241
+031-3,227,242|warp|To Ice Labyrint#031-315|-1,-1,031-3,286,191
+031-3,236,211|warp|To Ice Labyrint#031-316|-1,-1,031-3,187,227
+031-3,187,228|warp|To Ice Labyrint#031-317|-1,-1,031-3,236,212
+031-3,94,254|warp|To Ice Labyrint#031-318|-1,-1,031-3,54,251
+031-3,54,250|warp|To Ice Labyrint#031-319|-1,-1,031-3,94,255
+031-3,103,199|warp|To Ice Labyrint#031-320|-1,-1,031-3,52,176
+031-3,52,177|warp|To Ice Labyrint#031-321|-1,-1,031-3,103,200
+031-3,212,193|warp|To Ice Labyrint#031-322|-1,-1,031-3,207,167
+031-3,207,168|warp|To Ice Labyrint#031-323|-1,-1,031-3,212,194
+031-3,235,167|warp|To Ice Labyrint#031-324|-1,-1,031-3,195,123
+031-3,195,122|warp|To Ice Labyrint#031-325|-1,-1,031-3,235,166
+031-3,296,97|warp|To Ice Labyrint#031-326|-1,-1,031-3,292,124
+031-3,292,123|warp|To Ice Labyrint#031-327|-1,-1,031-3,296,96
+031-3,289,164|warp|To Ice Labyrint#031-328|-1,-1,031-3,228,122
+031-3,228,121|warp|To Ice Labyrint#031-329|-1,-1,031-3,289,163
+031-3,24,157|warp|To Ice Labyrint#031-330|-1,-1,031-3,31,143
+031-3,31,144|warp|To Ice Labyrint#031-331|-1,-1,031-3,24,158
+031-3,36,249|warp|To Ice Labyrint#031-332|-1,-1,031-3,35,225
+031-3,35,226|warp|To Ice Labyrint#031-333|-1,-1,031-3,36,250
+031-3,34,25|warp|To Ice Labyrint#031-334|-1,-1,031-3,281,24
+031-3,281,22|warp|To Ice Labyrint#031-335|-1,-1,031-3,34,27
+031-3,283,48|warp|To Ice Labyrint#031-336|-1,-1,031-3,275,74
+031-3,275,73|warp|To Ice Labyrint#031-337|-1,-1,031-3,283,47
+031-3,26,178|warp|To Ice Labyrint#031-338|-1,-1,031-3,36,201
+031-3,36,200|warp|To Ice Labyrint#031-339|-1,-1,031-3,26,177
+031-3,91,125|warp|To Ice Labyrint#031-340|-1,-1,031-3,36,79
+031-3,36,80|warp|To Ice Labyrint#031-341|-1,-1,031-3,91,126
+031-3,52,78|warp|To Ice Labyrint#031-342|-1,-1,031-3,192,71
+031-3,192,70|warp|To Ice Labyrint#031-343|-1,-1,031-3,52,77
+031-3,128,135|warp|To Ice Labyrint#031-344|-1,-1,031-3,148,151
+031-3,232,93|warp|To Ice Labyrint#031-345|-1,-1,031-3,234,26
+031-3,234,25|warp|To Ice Labyrint#031-346|-1,-1,031-3,232,92
+031-3,200,50|warp|To Ice Labyrint#031-347|-1,-1,031-3,136,30
+031-3,136,29|warp|To Ice Labyrint#031-348|-1,-1,031-3,200,49
diff --git a/world/map/npc/031-4/_mobs.txt b/world/map/npc/031-4/_mobs.txt
index 45fe61d8..cc2f2d21 100644
--- a/world/map/npc/031-4/_mobs.txt
+++ b/world/map/npc/031-4/_mobs.txt
@@ -3,7 +3,7 @@
-031-4,0,0,0|script|Mob031-4|-1
+031-4,0,0,0|script|Mob031-4|32767
{
end;
}
diff --git a/world/map/npc/031-4/cindyCave.txt b/world/map/npc/031-4/cindyCave.txt
index 2bce44bf..218e4c08 100644
--- a/world/map/npc/031-4/cindyCave.txt
+++ b/world/map/npc/031-4/cindyCave.txt
@@ -238,17 +238,17 @@ L_End:
OnInit:
setarray $@FIGHT_YETI_MESSAGES$,
"", // 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!";
+ // " : " 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/032-3/_mobs.txt b/world/map/npc/032-3/_mobs.txt
index b1a0c1d4..2e336d50 100644
--- a/world/map/npc/032-3/_mobs.txt
+++ b/world/map/npc/032-3/_mobs.txt
@@ -13,7 +13,7 @@
032-3,0,0,0,0|monster|Bat|1017,25,30000ms,100000ms,Mob032-3::On1017
-032-3,0,0,0|script|Mob032-3|-1
+032-3,0,0,0|script|Mob032-3|32767
{
end;
diff --git a/world/map/npc/032-3/_warps.txt b/world/map/npc/032-3/_warps.txt
index ce7bce36..a4348c6d 100644
--- a/world/map/npc/032-3/_warps.txt
+++ b/world/map/npc/032-3/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Outback Cave warps
-032-3,128,34|warp|To Desert Mountains|-1,-1,006-1,30,124
-032-3,56,61|warp|To Desert Mountains|-1,-1,006-1,111,111
+032-3,128,34|warp|To Desert Mount#032-30|-1,-1,006-1,30,124
+032-3,56,61|warp|To Desert Mount#032-31|-1,-1,006-1,111,111
diff --git a/world/map/npc/033-1/_mobs.txt b/world/map/npc/033-1/_mobs.txt
index 6f86b16a..afbd35ed 100644
--- a/world/map/npc/033-1/_mobs.txt
+++ b/world/map/npc/033-1/_mobs.txt
@@ -7,7 +7,7 @@
033-1,0,0,0,0|monster|WhiteBell|1095,3,100000ms,30000ms,Mob033-1::On1095
-033-1,0,0,0|script|Mob033-1|-1
+033-1,0,0,0|script|Mob033-1|32767
{
end;
diff --git a/world/map/npc/033-1/_warps.txt b/world/map/npc/033-1/_warps.txt
index 00baf864..daca389c 100644
--- a/world/map/npc/033-1/_warps.txt
+++ b/world/map/npc/033-1/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// snow Path warps
-033-1,22,20|warp|To Snow Forest|-1,0,034-1,159,19
-033-1,119,70|warp|To Snow Field|-1,0,019-1,22,69
+033-1,22,20|warp|To Snow Forest#033-10|-1,0,034-1,159,19
+033-1,119,70|warp|To Snow Field#033-11|-1,0,019-1,22,69
diff --git a/world/map/npc/033-1/barbarianinit.txt b/world/map/npc/033-1/barbarianinit.txt
index bf044bab..2523ebae 100644
--- a/world/map/npc/033-1/barbarianinit.txt
+++ b/world/map/npc/033-1/barbarianinit.txt
@@ -1,4 +1,4 @@
--|script|#barbarian033_1init|-1
+-|script|#barbarian033_1init|32767
{
end;
diff --git a/world/map/npc/033-1/kimarr.txt b/world/map/npc/033-1/kimarr.txt
index f51eae66..e1c26251 100644
--- a/world/map/npc/033-1/kimarr.txt
+++ b/world/map/npc/033-1/kimarr.txt
@@ -330,7 +330,7 @@ L_Punish:
areamonster "033-1", 79, 29, 88, 42, "", 1072, 1, "Kimarr::OnYetiDeath";
npctalk strcharinfo(0) + "! This hunt is for " + $@Fluffy_Fighter$ + " alone!";
- percentheal -100, 0;
+ heal -Hp, 0;
set @MobID, 0;
end;
diff --git a/world/map/npc/033-1/traveler.txt b/world/map/npc/033-1/traveler.txt
index 681a4100..462e2586 100644
--- a/world/map/npc/033-1/traveler.txt
+++ b/world/map/npc/033-1/traveler.txt
@@ -4,7 +4,7 @@
033-1,63,30,0|script|Khoenan the Traveler|103
{
- set @NpcName$, "Khoenan";
+ set @npcname$, "Khoenan";
set @NpcTravelBit, $@barbarians_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/034-1/_mobs.txt b/world/map/npc/034-1/_mobs.txt
index 0b2cc9b5..e02e496b 100644
--- a/world/map/npc/034-1/_mobs.txt
+++ b/world/map/npc/034-1/_mobs.txt
@@ -9,7 +9,7 @@
034-1,1,1,0,0|monster|IceGoblin|1058,25,100000ms,30000ms,Mob034-1::On1058
-034-1,0,0,0|script|Mob034-1|-1
+034-1,0,0,0|script|Mob034-1|32767
{
end;
diff --git a/world/map/npc/034-1/_warps.txt b/world/map/npc/034-1/_warps.txt
index 892c7ed9..714852f0 100644
--- a/world/map/npc/034-1/_warps.txt
+++ b/world/map/npc/034-1/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Snow Forest warps
-034-1,160,20|warp|To Snow Field|-1,0,033-1,23,19
-034-1,16,103|warp|To Deep Snow Forest|-1,1,045-1,176,133
-034-1,15,31|warp|To Deep Snow Forest|-1,0,045-1,174,59
-034-1,95,18|warp|To Highlands|0,-1,046-1,94,123
-034-1,31,68|warp|To Trapper|-1,-1,034-2,28,31
-034-1,64,99|warp|To Cabin|-1,-1,034-2,73,29
+034-1,160,20|warp|To Snow Field#034-10|-1,0,033-1,23,19
+034-1,16,103|warp|To Deep Snow Fo#034-11|-1,1,045-1,176,133
+034-1,15,31|warp|To Deep Snow Fo#034-12|-1,0,045-1,174,59
+034-1,95,18|warp|To Highlands#034-13|0,-1,046-1,94,123
+034-1,31,68|warp|To Trapper#034-14|-1,-1,034-2,28,31
+034-1,64,99|warp|To Cabin#034-15|-1,-1,034-2,73,29
diff --git a/world/map/npc/034-1/yetiSpawn.txt b/world/map/npc/034-1/yetiSpawn.txt
index 81d76ddd..c1f60312 100644
--- a/world/map/npc/034-1/yetiSpawn.txt
+++ b/world/map/npc/034-1/yetiSpawn.txt
@@ -51,7 +51,7 @@ L_End:
L_NonQuestKill:
message strcharinfo(0), "The dying Yeti takes you along to the other side.";
- percentheal -100, 0;
+ heal -Hp, 0;
goto L_End;
S_Update_Mask:
diff --git a/world/map/npc/034-2/_mobs.txt b/world/map/npc/034-2/_mobs.txt
index c7fe5fe1..709fcb08 100644
--- a/world/map/npc/034-2/_mobs.txt
+++ b/world/map/npc/034-2/_mobs.txt
@@ -3,7 +3,7 @@
-034-2,0,0,0|script|Mob034-2|-1
+034-2,0,0,0|script|Mob034-2|32767
{
end;
}
diff --git a/world/map/npc/034-2/_warps.txt b/world/map/npc/034-2/_warps.txt
index 5c80fc0a..b1d27c28 100644
--- a/world/map/npc/034-2/_warps.txt
+++ b/world/map/npc/034-2/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Trappers Huts warps
-034-2,28,32|warp|To Outside|-1,-1,034-1,31,69
-034-2,73,30|warp|To Outside|-1,-1,034-1,64,100
+034-2,28,32|warp|To Outside#034-20|-1,-1,034-1,31,69
+034-2,73,30|warp|To Outside#034-21|-1,-1,034-1,64,100
diff --git a/world/map/npc/035-2/_mobs.txt b/world/map/npc/035-2/_mobs.txt
index 7f718921..899a8d04 100644
--- a/world/map/npc/035-2/_mobs.txt
+++ b/world/map/npc/035-2/_mobs.txt
@@ -3,7 +3,7 @@
-035-2,0,0,0|script|Mob035-2|-1
+035-2,0,0,0|script|Mob035-2|32767
{
end;
}
diff --git a/world/map/npc/035-2/emblems.txt b/world/map/npc/035-2/emblems.txt
index c5ba04c6..bf0cc7eb 100644
--- a/world/map/npc/035-2/emblems.txt
+++ b/world/map/npc/035-2/emblems.txt
@@ -38,6 +38,6 @@
{
end;
OnCommandDing:
- misceffect 402;
+ specialeffect 402;
end;
}
diff --git a/world/map/npc/036-2/_mobs.txt b/world/map/npc/036-2/_mobs.txt
index 3d4e9883..0cebfbc8 100644
--- a/world/map/npc/036-2/_mobs.txt
+++ b/world/map/npc/036-2/_mobs.txt
@@ -3,7 +3,7 @@
-036-2,0,0,0|script|Mob036-2|-1
+036-2,0,0,0|script|Mob036-2|32767
{
end;
}
diff --git a/world/map/npc/036-2/emblems.txt b/world/map/npc/036-2/emblems.txt
index 1ffcc995..31b90955 100644
--- a/world/map/npc/036-2/emblems.txt
+++ b/world/map/npc/036-2/emblems.txt
@@ -26,6 +26,6 @@
{
end;
OnCommandDing:
- misceffect 402;
+ specialeffect 402;
end;
}
diff --git a/world/map/npc/043-3/_mobs.txt b/world/map/npc/043-3/_mobs.txt
index 44c6c10f..085615a4 100644
--- a/world/map/npc/043-3/_mobs.txt
+++ b/world/map/npc/043-3/_mobs.txt
@@ -12,7 +12,7 @@
043-3,94,44,40,18|monster|GreenSlime|1005,5,30000ms,15000ms,Mob043-3::On1005
-043-3,0,0,0|script|Mob043-3|-1
+043-3,0,0,0|script|Mob043-3|32767
{
end;
diff --git a/world/map/npc/043-3/_warps.txt b/world/map/npc/043-3/_warps.txt
index d4dbfc7e..5d2b158c 100644
--- a/world/map/npc/043-3/_warps.txt
+++ b/world/map/npc/043-3/_warps.txt
@@ -1,7 +1,7 @@
// 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|Mine Camp|-1,-1,002-3,22,86
-043-3,77,30|warp|To Lower Level|-1,-1,043-4,47,67
-043-3,116,36|warp|To Snake Cave|-1,-1,005-3,78,87
-043-3,32,37|warp|To Snake Cave|0,-1,005-3,33,83
+043-3,31,26|warp|Mine Camp#043-30|-1,-1,002-3,22,86
+043-3,77,30|warp|To Lower Level#043-31|-1,-1,043-4,47,67
+043-3,116,36|warp|To Snake Cave#043-32|-1,-1,005-3,78,87
+043-3,32,37|warp|To Snake Cave#043-33|0,-1,005-3,33,83
diff --git a/world/map/npc/043-4/_mobs.txt b/world/map/npc/043-4/_mobs.txt
index 1ebb5b99..a06642d0 100644
--- a/world/map/npc/043-4/_mobs.txt
+++ b/world/map/npc/043-4/_mobs.txt
@@ -25,7 +25,7 @@
043-4,133,123,30,23|monster|Troll|1054,3,100000ms,50000ms,Mob043-4::On1054
-043-4,0,0,0|script|Mob043-4|-1
+043-4,0,0,0|script|Mob043-4|32767
{
end;
diff --git a/world/map/npc/043-4/_warps.txt b/world/map/npc/043-4/_warps.txt
index 2818d051..2147820d 100644
--- a/world/map/npc/043-4/_warps.txt
+++ b/world/map/npc/043-4/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Sandy Dungeon Level 2 warps
-043-4,47,68|warp|To Upper Level|-1,-1,043-3,77,31
-043-4,153,27|warp|To Deeper Level|-1,-1,043-4,193,32
-043-4,193,33|warp|To Upper Level|-1,-1,043-4,153,28
+043-4,47,68|warp|To Upper Level#043-40|-1,-1,043-3,77,31
+043-4,153,27|warp|To Deeper Level#043-41|-1,-1,043-4,193,32
+043-4,193,33|warp|To Upper Level#043-42|-1,-1,043-4,153,28
diff --git a/world/map/npc/045-1/_mobs.txt b/world/map/npc/045-1/_mobs.txt
index 7502a8c3..37357556 100644
--- a/world/map/npc/045-1/_mobs.txt
+++ b/world/map/npc/045-1/_mobs.txt
@@ -18,7 +18,7 @@
045-1,104,149,79,10|monster|IceGoblin|1058,4,100000ms,30000ms,Mob045-1::On1058
-045-1,0,0,0|script|Mob045-1|-1
+045-1,0,0,0|script|Mob045-1|32767
{
end;
diff --git a/world/map/npc/045-1/_warps.txt b/world/map/npc/045-1/_warps.txt
index b917e01c..feffd6aa 100644
--- a/world/map/npc/045-1/_warps.txt
+++ b/world/map/npc/045-1/_warps.txt
@@ -1,6 +1,6 @@
// 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|To Snow Forest|-1,0,034-1,16,30
-045-1,177,132|warp|To Snow Forest|-1,1,034-1,17,102
-045-1,26,179|warp|To Woodland Hills|2,-1,017-1,182,17
+045-1,175,60|warp|To Snow Forest#045-10|-1,0,034-1,16,30
+045-1,177,132|warp|To Snow Forest#045-11|-1,1,034-1,17,102
+045-1,26,179|warp|To Woodland Hil#045-12|2,-1,017-1,182,17
diff --git a/world/map/npc/046-1/_mobs.txt b/world/map/npc/046-1/_mobs.txt
index 90bc7a5f..d5551ecd 100644
--- a/world/map/npc/046-1/_mobs.txt
+++ b/world/map/npc/046-1/_mobs.txt
@@ -14,7 +14,7 @@
046-1,145,67,10,9|monster|Wolvern|1090,2,100000ms,30000ms,Mob046-1::On1090
-046-1,0,0,0|script|Mob046-1|-1
+046-1,0,0,0|script|Mob046-1|32767
{
end;
diff --git a/world/map/npc/046-1/_warps.txt b/world/map/npc/046-1/_warps.txt
index 02bb62d1..1c599849 100644
--- a/world/map/npc/046-1/_warps.txt
+++ b/world/map/npc/046-1/_warps.txt
@@ -1,13 +1,13 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Rock Plateau warps
-046-1,95,124|warp|To Snow Forest|0,-1,034-1,94,19
-046-1,29,20|warp|To Highlands|-1,-1,047-1,70,178
-046-1,31,20|warp|To Highlands|-1,-1,047-1,70,178
-046-1,78,37|warp|To Frosty Underground|-1,-1,046-3,78,29
-046-1,131,55|warp|To Frosty Underground|-1,-1,046-3,131,47
-046-1,131,62|warp|To Frosty Underground|-1,-1,046-3,131,54
-046-1,139,26|warp|To Frosty Underground|-1,-1,046-3,139,18
-046-1,83,50|warp|To Frosty Underground|-1,-1,046-3,83,42
-046-1,124,116|warp|To Frosty Underground|-1,-1,046-3,124,108
-046-1,62,26|warp|To Frosty Underground|-1,-1,019-4,24,123
+046-1,95,124|warp|To Snow Forest#046-10|0,-1,034-1,94,19
+046-1,29,20|warp|To Highlands#046-11|-1,-1,047-1,70,178
+046-1,31,20|warp|To Highlands#046-12|-1,-1,047-1,70,178
+046-1,78,37|warp|To Frosty Under#046-13|-1,-1,046-3,78,29
+046-1,131,55|warp|To Frosty Under#046-14|-1,-1,046-3,131,47
+046-1,131,62|warp|To Frosty Under#046-15|-1,-1,046-3,131,54
+046-1,139,26|warp|To Frosty Under#046-16|-1,-1,046-3,139,18
+046-1,83,50|warp|To Frosty Under#046-17|-1,-1,046-3,83,42
+046-1,124,116|warp|To Frosty Under#046-18|-1,-1,046-3,124,108
+046-1,62,26|warp|To Frosty Under#046-19|-1,-1,019-4,24,123
diff --git a/world/map/npc/046-3/_mobs.txt b/world/map/npc/046-3/_mobs.txt
index 5d82dc0e..95c498ed 100644
--- a/world/map/npc/046-3/_mobs.txt
+++ b/world/map/npc/046-3/_mobs.txt
@@ -18,7 +18,7 @@
046-3,113,48,12,8|monster|Yeti|1072,2,100000ms,30000ms,Mob046-3::On1072
-046-3,0,0,0|script|Mob046-3|-1
+046-3,0,0,0|script|Mob046-3|32767
{
end;
diff --git a/world/map/npc/046-3/_warps.txt b/world/map/npc/046-3/_warps.txt
index 19981232..b9c90ea3 100644
--- a/world/map/npc/046-3/_warps.txt
+++ b/world/map/npc/046-3/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Frosty Underground warps
-046-3,139,19|warp|To Outside|-1,-1,046-1,139,27
-046-3,78,30|warp|To Outside|-1,-1,046-1,78,38
-046-3,83,43|warp|To Outside|-1,-1,046-1,83,51
-046-3,131,48|warp|To Outside|-1,-1,046-1,131,56
-046-3,131,55|warp|To Outside|-1,-1,046-1,131,63
-046-3,124,109|warp|To Outside|-1,-1,046-1,124,117
+046-3,139,19|warp|To Outside#046-30|-1,-1,046-1,139,27
+046-3,78,30|warp|To Outside#046-31|-1,-1,046-1,78,38
+046-3,83,43|warp|To Outside#046-32|-1,-1,046-1,83,51
+046-3,131,48|warp|To Outside#046-33|-1,-1,046-1,131,56
+046-3,131,55|warp|To Outside#046-34|-1,-1,046-1,131,63
+046-3,124,109|warp|To Outside#046-35|-1,-1,046-1,124,117
diff --git a/world/map/npc/047-1/_mobs.txt b/world/map/npc/047-1/_mobs.txt
index fd2ca939..a502dcdf 100644
--- a/world/map/npc/047-1/_mobs.txt
+++ b/world/map/npc/047-1/_mobs.txt
@@ -25,7 +25,7 @@
047-1,132,70,4,5|monster|BlueSlime|1091,2,100000ms,30000ms,Mob047-1::On1091
-047-1,0,0,0|script|Mob047-1|-1
+047-1,0,0,0|script|Mob047-1|32767
{
end;
diff --git a/world/map/npc/047-1/_warps.txt b/world/map/npc/047-1/_warps.txt
index 75a0f9a7..c0e9eb60 100644
--- a/world/map/npc/047-1/_warps.txt
+++ b/world/map/npc/047-1/_warps.txt
@@ -1,17 +1,17 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// snow Hills warps
-047-1,108,165|warp|To Small Cave|-1,-1,047-3,110,102
-047-1,108,156|warp|To Small Cave|-1,-1,047-3,119,94
-047-1,102,111|warp|To Small Cave|-1,-1,047-3,119,58
-047-1,102,107|warp|To Small Cave|-1,-1,047-3,128,45
-047-1,154,92|warp|To Deeper Snow Cave|-1,-1,019-4,74,27
-047-1,101,143|warp|To Snow Hills Cave|-1,-1,047-3,126,180
-047-1,37,173|warp|To Snow Hills Cave|-1,-1,047-3,33,175
-047-1,45,73|warp|To Snow Hills Cave|-1,-1,047-3,46,76
-047-1,78,109|warp|To Snow Hills Cave|-1,-1,047-3,35,41
-047-1,83,123|warp|To Snow Hills Cave|-1,-1,047-3,108,165
-047-1,71,179|warp|To Rock Plateau|1,-1,046-1,29,21
-047-1,130,50|warp|To Blue Sage Mansion|-1,-1,047-1,130,47
-047-1,130,48|warp|To Snow Hills|-1,-1,047-1,130,51
-047-1,128,39|warp|To Blue Sage|-1,-1,048-2,40,48
+047-1,108,165|warp|To Small Cave#047-10|-1,-1,047-3,110,102
+047-1,108,156|warp|To Small Cave#047-11|-1,-1,047-3,119,94
+047-1,102,111|warp|To Small Cave#047-12|-1,-1,047-3,119,58
+047-1,102,107|warp|To Small Cave#047-13|-1,-1,047-3,128,45
+047-1,154,92|warp|To Deeper Snow #047-14|-1,-1,019-4,74,27
+047-1,101,143|warp|To Snow Hills C#047-15|-1,-1,047-3,126,180
+047-1,37,173|warp|To Snow Hills C#047-16|-1,-1,047-3,33,175
+047-1,45,73|warp|To Snow Hills C#047-17|-1,-1,047-3,46,76
+047-1,78,109|warp|To Snow Hills C#047-18|-1,-1,047-3,35,41
+047-1,83,123|warp|To Snow Hills C#047-19|-1,-1,047-3,108,165
+047-1,71,179|warp|To Rock Plateau#047-110|1,-1,046-1,29,21
+047-1,130,50|warp|To Blue Sage Ma#047-111|-1,-1,047-1,130,47
+047-1,130,48|warp|To Snow Hills#047-112|-1,-1,047-1,130,51
+047-1,128,39|warp|To Blue Sage#047-113|-1,-1,048-2,40,48
diff --git a/world/map/npc/047-3/_mobs.txt b/world/map/npc/047-3/_mobs.txt
index 3ceb7884..adf84729 100644
--- a/world/map/npc/047-3/_mobs.txt
+++ b/world/map/npc/047-3/_mobs.txt
@@ -24,7 +24,7 @@
047-3,121,172,9,8|monster|WhiteSlime|1093,7,100000ms,30000ms,Mob047-3::On1093
-047-3,0,0,0|script|Mob047-3|-1
+047-3,0,0,0|script|Mob047-3|32767
{
end;
diff --git a/world/map/npc/047-3/_warps.txt b/world/map/npc/047-3/_warps.txt
index b48b781f..31dcdd0c 100644
--- a/world/map/npc/047-3/_warps.txt
+++ b/world/map/npc/047-3/_warps.txt
@@ -1,12 +1,12 @@
// 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|To Snow Hills|-1,-1,047-1,45,75
-047-3,33,176|warp|To Snow Hills|-1,-1,047-1,37,174
-047-3,126,181|warp|To Snow Hills|-1,-1,047-1,101,144
-047-3,35,42|warp|To Snow Hills|-1,-1,047-1,78,110
-047-3,108,163|warp|To Snow Hills|-1,-1,047-1,83,125
-047-3,110,103|warp|To Snow Hills|-1,-1,047-1,108,166
-047-3,119,95|warp|To Snow Hills|-1,-1,047-1,108,157
-047-3,119,59|warp|To Snow Hills|-1,-1,047-1,102,112
-047-3,128,46|warp|To Snow Hills|-1,-1,047-1,102,108
+047-3,46,74|warp|To Snow Hills#047-30|-1,-1,047-1,45,75
+047-3,33,176|warp|To Snow Hills#047-31|-1,-1,047-1,37,174
+047-3,126,181|warp|To Snow Hills#047-32|-1,-1,047-1,101,144
+047-3,35,42|warp|To Snow Hills#047-33|-1,-1,047-1,78,110
+047-3,108,163|warp|To Snow Hills#047-34|-1,-1,047-1,83,125
+047-3,110,103|warp|To Snow Hills#047-35|-1,-1,047-1,108,166
+047-3,119,95|warp|To Snow Hills#047-36|-1,-1,047-1,108,157
+047-3,119,59|warp|To Snow Hills#047-37|-1,-1,047-1,102,112
+047-3,128,46|warp|To Snow Hills#047-38|-1,-1,047-1,102,108
diff --git a/world/map/npc/048-2/_mobs.txt b/world/map/npc/048-2/_mobs.txt
index 0c85dbac..87b5b1d4 100644
--- a/world/map/npc/048-2/_mobs.txt
+++ b/world/map/npc/048-2/_mobs.txt
@@ -3,7 +3,7 @@
-048-2,0,0,0|script|Mob048-2|-1
+048-2,0,0,0|script|Mob048-2|32767
{
end;
}
diff --git a/world/map/npc/048-2/_warps.txt b/world/map/npc/048-2/_warps.txt
index 7b50efbd..2e3b8ab7 100644
--- a/world/map/npc/048-2/_warps.txt
+++ b/world/map/npc/048-2/_warps.txt
@@ -1,20 +1,20 @@
// 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|To Second Floor|0,-1,048-2,84,23
-048-2,60,21|warp|To Second Floor|0,-1,048-2,121,26
-048-2,40,50|warp|To Outside|-1,-1,047-1,128,40
-048-2,84,21|warp|To Third Floor|0,-1,048-2,22,76
-048-2,113,23|warp|To Office|-1,-1,048-2,147,35
-048-2,122,28|warp|To First Floor|0,-1,048-2,59,22
-048-2,95,23|warp|To Office|-1,-1,048-2,178,35
-048-2,147,36|warp|To Corridor|-1,-1,048-2,113,24
-048-2,178,36|warp|To Corridor|-1,-1,048-2,95,24
-048-2,27,141|warp|To Corridor|-1,-1,048-2,52,102
-048-2,60,71|warp|To Fourth Floor|0,-1,048-2,60,104
-048-2,23,73|warp|To Library|-1,-1,048-2,85,132
-048-2,55,73|warp|To Library|-1,-1,048-2,121,132
-048-2,61,106|warp|To Third Floor|0,-1,048-2,59,73
-048-2,52,101|warp|To Bedroom|-1,-1,048-2,27,140
-048-2,121,133|warp|To Corridor|-1,-1,048-2,55,74
-048-2,85,133|warp|To Corridor|-1,-1,048-2,23,74
+048-2,22,78|warp|To Second Floor#048-20|0,-1,048-2,84,23
+048-2,60,21|warp|To Second Floor#048-21|0,-1,048-2,121,26
+048-2,40,50|warp|To Outside#048-22|-1,-1,047-1,128,40
+048-2,84,21|warp|To Third Floor#048-23|0,-1,048-2,22,76
+048-2,113,23|warp|To Office#048-24|-1,-1,048-2,147,35
+048-2,122,28|warp|To First Floor#048-25|0,-1,048-2,59,22
+048-2,95,23|warp|To Office#048-26|-1,-1,048-2,178,35
+048-2,147,36|warp|To Corridor#048-27|-1,-1,048-2,113,24
+048-2,178,36|warp|To Corridor#048-28|-1,-1,048-2,95,24
+048-2,27,141|warp|To Corridor#048-29|-1,-1,048-2,52,102
+048-2,60,71|warp|To Fourth Floor#048-210|0,-1,048-2,60,104
+048-2,23,73|warp|To Library#048-211|-1,-1,048-2,85,132
+048-2,55,73|warp|To Library#048-212|-1,-1,048-2,121,132
+048-2,61,106|warp|To Third Floor#048-213|0,-1,048-2,59,73
+048-2,52,101|warp|To Bedroom#048-214|-1,-1,048-2,27,140
+048-2,121,133|warp|To Corridor#048-215|-1,-1,048-2,55,74
+048-2,85,133|warp|To Corridor#048-216|-1,-1,048-2,23,74
diff --git a/world/map/npc/048-2/bluesageConfig.txt b/world/map/npc/048-2/bluesageConfig.txt
index 0aeda5fc..bab552f8 100644
--- a/world/map/npc/048-2/bluesageConfig.txt
+++ b/world/map/npc/048-2/bluesageConfig.txt
@@ -51,7 +51,7 @@
// Bit 0: started the subquest
// Bit 1 - 7: each spawn point is unique and saved with a flag
--|script|#bluesageconfig|-1
+-|script|#bluesageconfig|32767
{
end;
diff --git a/world/map/npc/048-2/helperChief.txt b/world/map/npc/048-2/helperChief.txt
index 30fc12ce..7eae6f63 100644
--- a/world/map/npc/048-2/helperChief.txt
+++ b/world/map/npc/048-2/helperChief.txt
@@ -8,7 +8,7 @@
{
set @investigate, ((QUEST_BlueSage & $@Q_BlueSageInvestigate_MASK) >> $@Q_BlueSageInvestigate_SHIFT);
- if (@investigate >= 11) goto L_GoodJob;
+ if (@investigate >= 11) goto L_Goodjob;
if (@investigate > 1) goto L_Investigate;
mes "[Oskari]";
@@ -82,7 +82,7 @@ L_Continue:
callfunc "updateBlueSageInvestigate";
goto L_Close;
-L_GoodJob:
+L_Goodjob:
mes "[Oskari]";
mes "\"Thanks again for your investigations.\"";
menu
diff --git a/world/map/npc/048-2/sageNikolai.txt b/world/map/npc/048-2/sageNikolai.txt
index dc85d5f8..dced46d6 100644
--- a/world/map/npc/048-2/sageNikolai.txt
+++ b/world/map/npc/048-2/sageNikolai.txt
@@ -168,7 +168,7 @@ L_MenuChoice:
if (@choice_idx[@menu] == @C_slimes)
goto L_SlimesAdvice;
if (@choice_idx[@menu] == @C_startInvestigate)
- goto L_StartInvestigateAdvice;
+ goto L_StartInvAdvice;
if (@choice_idx[@menu] == @C_investigate)
goto L_InvestigateAdvice;
if (@choice_idx[@menu] == @C_investigate2)
@@ -217,7 +217,7 @@ L_SlimesAdvice:
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_StartInvestigateAdvice:
+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.\"";
diff --git a/world/map/npc/048-2/slimes.txt b/world/map/npc/048-2/slimes.txt
index 99a1b7e3..b07420db 100644
--- a/world/map/npc/048-2/slimes.txt
+++ b/world/map/npc/048-2/slimes.txt
@@ -36,7 +36,7 @@
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
@@ -125,7 +125,7 @@ L_ClearedPoint:
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
@@ -214,7 +214,7 @@ L_ClearedPoint:
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
@@ -303,7 +303,7 @@ L_ClearedPoint:
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
@@ -392,7 +392,7 @@ L_ClearedPoint:
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
@@ -481,7 +481,7 @@ L_ClearedPoint:
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
@@ -570,7 +570,7 @@ L_ClearedPoint:
goto L_End;
L_BlowUp:
- percentheal -100, 0;
+ 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;
diff --git a/world/map/npc/048-2/traveler.txt b/world/map/npc/048-2/traveler.txt
index 4d8af7fe..7b654d85 100644
--- a/world/map/npc/048-2/traveler.txt
+++ b/world/map/npc/048-2/traveler.txt
@@ -4,7 +4,7 @@
048-2,23,46,0|script|Drake the Traveler|103
{
- set @NpcName$, "Drake";
+ set @npcname$, "Drake";
set @NpcTravelBit, $@blue_sage_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/051-1/_mobs.txt b/world/map/npc/051-1/_mobs.txt
index 8e092790..752c527c 100644
--- a/world/map/npc/051-1/_mobs.txt
+++ b/world/map/npc/051-1/_mobs.txt
@@ -5,7 +5,7 @@
051-1,42,35,41,22|monster|SpikyMushroom|1019,10,100000ms,30000ms,Mob051-1::On1019
-051-1,0,0,0|script|Mob051-1|-1
+051-1,0,0,0|script|Mob051-1|32767
{
end;
diff --git a/world/map/npc/051-1/desert.txt b/world/map/npc/051-1/desert.txt
index 10164b36..02289bf4 100644
--- a/world/map/npc/051-1/desert.txt
+++ b/world/map/npc/051-1/desert.txt
@@ -50,7 +50,7 @@ OnTimer6500:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_HintToHelpers:
diff --git a/world/map/npc/051-1/desertmonsters.txt b/world/map/npc/051-1/desertmonsters.txt
index 310566ce..a3497055 100644
--- a/world/map/npc/051-1/desertmonsters.txt
+++ b/world/map/npc/051-1/desertmonsters.txt
@@ -1,7 +1,7 @@
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|-1
+051-1,0,0,0|script|IlliaDMobs051-1|32767
{
end;
diff --git a/world/map/npc/051-1/forest.txt b/world/map/npc/051-1/forest.txt
index b0ff78af..870465c3 100644
--- a/world/map/npc/051-1/forest.txt
+++ b/world/map/npc/051-1/forest.txt
@@ -22,7 +22,7 @@
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_HandleHelper:
@@ -71,7 +71,7 @@ L_TaskComplete:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_Blocked:
diff --git a/world/map/npc/051-1/forestmonsters.txt b/world/map/npc/051-1/forestmonsters.txt
index 4942cf2b..4d646ed3 100644
--- a/world/map/npc/051-1/forestmonsters.txt
+++ b/world/map/npc/051-1/forestmonsters.txt
@@ -1,6 +1,6 @@
051-1,52,32,10,8|monster|GreenSlime|1005,20,100000ms,30000ms,IlliaFMobs051-1::On1005
-051-1,0,0,0|script|IlliaFMobs051-1|-1
+051-1,0,0,0|script|IlliaFMobs051-1|32767
{
end;
diff --git a/world/map/npc/051-1/janitor.txt b/world/map/npc/051-1/janitor.txt
index f0b8b771..623690f0 100644
--- a/world/map/npc/051-1/janitor.txt
+++ b/world/map/npc/051-1/janitor.txt
@@ -1,5 +1,5 @@
// Forest janitor
-051-1,1,1,0|script|#IlliaJanitor1|127
+051-1,1,1,0|script|#IlliaJanitor1|32767
{
end;
@@ -10,7 +10,7 @@ OnCommandClean:
}
// Desert janitor
-051-1,1,1,0|script|#IlliaJanitor3|127
+051-1,1,1,0|script|#IlliaJanitor3|32767
{
end;
diff --git a/world/map/npc/051-3/_mobs.txt b/world/map/npc/051-3/_mobs.txt
index 0887b1de..711bf39c 100644
--- a/world/map/npc/051-3/_mobs.txt
+++ b/world/map/npc/051-3/_mobs.txt
@@ -19,7 +19,7 @@
051-3,60,94,18,5|monster|CopperSlime|1098,7,100000ms,60000ms,Mob051-3::On1098
-051-3,0,0,0|script|Mob051-3|-1
+051-3,0,0,0|script|Mob051-3|32767
{
end;
diff --git a/world/map/npc/051-3/ambush.txt b/world/map/npc/051-3/ambush.txt
index 63b9775f..305423ca 100644
--- a/world/map/npc/051-3/ambush.txt
+++ b/world/map/npc/051-3/ambush.txt
@@ -29,7 +29,7 @@ L_PrepareAmbush:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
@@ -47,12 +47,12 @@ L_MakeAmbush:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
message strcharinfo(0), "Your throat got cut by a sneaky bandit!";
end;
}
-051-3,1,1,0|script|#BndtTl|127
+051-3,1,1,0|script|#BndtTl|32767
{
end;
@@ -92,7 +92,7 @@ OnA:
if (strcharinfo(0) == $@ILLIA_HELPER3$)
goto L_CaptureHelper3;
// kill that player otherwise, since not part of the quest.
- percentheal -100,0;
+ heal -Hp, 0;
end;
L_CaptureHero:
@@ -100,8 +100,8 @@ L_CaptureHero:
// Unequip all equipments
nude;
// put the health at 40%.
- percentheal 100, 0;
- percentheal -60, 0;
+ heal MaxHp, 0;
+ heal ((MaxHp/100) * -60), 0;
warp "051-3", 69, 109;
message strcharinfo(0), "Meh... Where am I?";
end;
@@ -111,8 +111,8 @@ L_CaptureHelper1:
// Unequip all equipments
nude;
// put the health at 40%.
- percentheal 100, 0;
- percentheal -60, 0;
+ heal MaxHp, 0;
+ heal ((MaxHp/100) * -60), 0;
warp "051-3", 64, 102;
message strcharinfo(0), "Meh... Where am I?";
end;
@@ -122,8 +122,8 @@ L_CaptureHelper2:
// Unequip all equipments
nude;
// put the health at 40%.
- percentheal 100, 0;
- percentheal -60, 0;
+ heal MaxHp, 0;
+ heal ((MaxHp/100) * -60), 0;
warp "051-3", 62, 102;
message strcharinfo(0), "Meh... Where am I?";
end;
@@ -133,15 +133,15 @@ L_CaptureHelper3:
// Unequip all equipments
nude;
// put the health at 40%.
- percentheal 100, 0;
- percentheal -60, 0;
+ 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|127
+051-3,29,94,0|script|Sneaky Bandit|32767
{
end;
@@ -161,7 +161,7 @@ OnTimer3600:
}
-051-3,33,95,0|script|Another Sneaky Bandit|127
+051-3,33,95,0|script|Another Sneaky Bandit|32767
{
end;
diff --git a/world/map/npc/051-3/jailslimes.txt b/world/map/npc/051-3/jailslimes.txt
index d153097a..8544fb1a 100644
--- a/world/map/npc/051-3/jailslimes.txt
+++ b/world/map/npc/051-3/jailslimes.txt
@@ -4,7 +4,7 @@
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|-1
+051-3,0,0,0|script|IlliaCMobs051-3|32767
{
end;
diff --git a/world/map/npc/051-3/janitor.txt b/world/map/npc/051-3/janitor.txt
index 905fe4dd..edef5856 100644
--- a/world/map/npc/051-3/janitor.txt
+++ b/world/map/npc/051-3/janitor.txt
@@ -1,5 +1,5 @@
// Bandit cave janitor
-051-3,1,1,0|script|#IlliaJanitor2|127
+051-3,1,1,0|script|#IlliaJanitor2|32767
{
end;
diff --git a/world/map/npc/051-3/reinforcements.txt b/world/map/npc/051-3/reinforcements.txt
index e52242cd..73236dec 100644
--- a/world/map/npc/051-3/reinforcements.txt
+++ b/world/map/npc/051-3/reinforcements.txt
@@ -10,7 +10,7 @@ L_CallReinforcements:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
@@ -24,7 +24,7 @@ L_ShouldNotBeHere:
"Do nothing", L_Close;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_TryOpen:
@@ -48,7 +48,7 @@ OnRnfrcmts:
// 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;
+ mapannounce "051-3", "Bandit Lords : Do not let them escape!!" , 0;
areatimer "051-3", 25, 20, 80, 85, 10, "Door::OnDRnfrcmts";
end;
diff --git a/world/map/npc/052-1/_mobs.txt b/world/map/npc/052-1/_mobs.txt
index 684c78fc..c386d5d1 100644
--- a/world/map/npc/052-1/_mobs.txt
+++ b/world/map/npc/052-1/_mobs.txt
@@ -4,7 +4,7 @@
052-1,55,29,43,39|monster|AzulSlime|1100,18,100000ms,20000ms,Mob052-1::On1100
-052-1,0,0,0|script|Mob052-1|-1
+052-1,0,0,0|script|Mob052-1|32767
{
end;
diff --git a/world/map/npc/052-1/channelling.txt b/world/map/npc/052-1/channelling.txt
index b5c36dae..01364b41 100644
--- a/world/map/npc/052-1/channelling.txt
+++ b/world/map/npc/052-1/channelling.txt
@@ -21,7 +21,7 @@ L_EnchantDoor:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
@@ -33,7 +33,7 @@ L_ShouldNotBeHere:
L_PushBack:
warp "052-1", 57, 34;
- percentheal -20, 0;
+ 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.";
@@ -101,7 +101,7 @@ function|script|StartChannelling
set $@illia_level_4_progress, 1;
set $@illia_char_channelling$, strcharinfo(0);
- set @bonus, (readparam(bInt)+1) / 25;
+ 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
@@ -114,11 +114,11 @@ function|script|StartChannelling
setarray $@illia_large_lazurites, 21,40, 34,25;
// amount of initial magic power
- set $@illia_magic_power, 1811 + readparam(bInt)*2;
+ 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*readparam(bInt);
+ set $@illia_magic_power_required, 5707 - 2*Int;
// magic power loss depends also on Int
- set $@illia_magic_power_loss, 53 - ((readparam(bInt)+1)*2)/10;
+ 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)
@@ -231,7 +231,7 @@ S_CheckChannelling:
goto L_ChannellingFail;
// Display an effect showing the drain
misceffect FX_CHANNELLING_RAISE;
- percentheal -4, 0;
+ heal ((MaxHp/100) * -4), 0;
if (isdead())
goto L_ChannellingDead;
@@ -239,7 +239,7 @@ S_CheckChannelling:
goto L_ChannellingMoved;
// check the magic power
if ($@illia_magic_power <= 0)
- goto L_ChannellingPowerVanished;
+ goto L_ChPwrVanish;
if ($@illia_magic_power >= $@illia_magic_power_required)
goto L_ChannellingComplete;
@@ -298,14 +298,14 @@ L_ChannellingMoved:
// and does not need being killed)
if (isin("052-1",1,1,100,80) == 0)
goto L_ChannellingFail;
- percentheal -100, 0;
+ 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_ChannellingPowerVanished:
+L_ChPwrVanish:
// kill the player as part of the process: the magic process drained his life.
- percentheal -100, 0;
+ 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;
@@ -324,6 +324,6 @@ L_ChannellingFail:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
diff --git a/world/map/npc/052-1/janitor.txt b/world/map/npc/052-1/janitor.txt
index dbbd54dc..6acd12ed 100644
--- a/world/map/npc/052-1/janitor.txt
+++ b/world/map/npc/052-1/janitor.txt
@@ -1,6 +1,6 @@
// Illia Island janitor
-052-1,1,1,0|script|#IlliaJanitor4|127
+052-1,1,1,0|script|#IlliaJanitor4|32767
{
end;
diff --git a/world/map/npc/052-2/_mobs.txt b/world/map/npc/052-2/_mobs.txt
index 916b6761..1fb96829 100644
--- a/world/map/npc/052-2/_mobs.txt
+++ b/world/map/npc/052-2/_mobs.txt
@@ -3,7 +3,7 @@
-052-2,0,0,0|script|Mob052-2|-1
+052-2,0,0,0|script|Mob052-2|32767
{
end;
}
diff --git a/world/map/npc/052-2/chest.txt b/world/map/npc/052-2/chest.txt
index 7ba0d2df..2012e0a8 100644
--- a/world/map/npc/052-2/chest.txt
+++ b/world/map/npc/052-2/chest.txt
@@ -26,12 +26,14 @@
goto L_Pick;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
OnInit:
- setarray $@illia_item_common_rewards, 601, 636, 637, 638, 639, 625, 626, 658, 571, 579, 876, 782, 545, 758, 4028, 602, 536, 720, 532, 570, 642;
- setarray $@illia_item_unique_rewards, 877, 878, 879, 880;
+ setarray $@illia_common_rewards$, "SteelShield", "WarlordHelmet", "KnightsHelmet", "InfantryHelmet", "CrusadeHelmet", "ChainmailShirt", "LightPlatemail", "WarlordPlate", "Setzer", "RockKnife", "WarlordBoots", "ForestArmor", "ForestBow", "WoodenStaff", "WizardHat", "WoodenShield", "ShortSword", "SilkRobe", "LeatherGloves", "BoneKnife", "JeansChaps";
+ 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", "Wooden Shield", "Short Sword", "Silk Robe", "Leather Gloves", "Bone Knife", "Jeans Chaps";
+ setarray $@illia_unique_rewards$, "BullHelmet", "BansheeBow", "HeartOfIsis", "LazuriteRobe";
+ setarray $@illia_unique_rewards_n$, "Bull Helmet", "Banshee Bow", "Heart of Isis", "Lazurite Robe";
end;
L_ResumePick:
@@ -58,13 +60,14 @@ L_GetCommonReward:
if (@illia_current_num_rewards == $@illia_num_common_reward_items)
goto L_RewardDone;
getinventorylist;
- set @reward, $@illia_item_common_rewards[rand(getarraysize($@illia_item_common_rewards))];
- if ((checkweight(@reward, 1) == 0) || (@inventorylist_count == 100))
+ 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 " + getitemname(@reward) + "!";
- set @reward, 0;
+ getitem @reward$, 1;
+ mes "You found a " + $@illia_common_rewards_n$[@index] + "!";
+ set @reward$, "";
goto L_GetCommonReward;
L_GetUniqueReward:
@@ -73,17 +76,18 @@ L_GetUniqueReward:
if (Illia_Uniques_Count >= 2)
goto L_GetUniqueReward2;
getinventorylist;
- set @reward, $@illia_item_unique_rewards[rand(getarraysize($@illia_item_unique_rewards))];
- if ((checkweight(@reward, 1) == 0) || (@inventorylist_count == 100))
+ 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 " + getitemname(@reward) + "!";
+ getitem @reward$, 1;
+ mes "You found a " + $@illia_unique_rewards_n$[@index] + "!";
set Illia_Uniques_Count, Illia_Uniques_Count + 1;
- set @reward, 0;
+ set @reward$, "";
goto L_GetUniqueReward;
L_GetUniqueReward2:
diff --git a/world/map/npc/052-2/janitor.txt b/world/map/npc/052-2/janitor.txt
index 7435f005..73858ce4 100644
--- a/world/map/npc/052-2/janitor.txt
+++ b/world/map/npc/052-2/janitor.txt
@@ -1,5 +1,5 @@
// Lobby janitor
-052-2,1,1,0|script|#IlliaJanitor5|127
+052-2,1,1,0|script|#IlliaJanitor5|32767
{
end;
@@ -12,7 +12,7 @@ OnCommandClean:
}
// Storage janitor
-052-2,1,1,0|script|#IlliaJanitor6|127
+052-2,1,1,0|script|#IlliaJanitor6|32767
{
end;
@@ -24,7 +24,7 @@ OnCommandClean:
}
// Final boss janitor
-052-2,1,1,0|script|#IlliaJanitor7|127
+052-2,1,1,0|script|#IlliaJanitor7|32767
{
end;
diff --git a/world/map/npc/052-2/lobby.txt b/world/map/npc/052-2/lobby.txt
index 50eb472f..a8a2dfa2 100644
--- a/world/map/npc/052-2/lobby.txt
+++ b/world/map/npc/052-2/lobby.txt
@@ -28,7 +28,7 @@ L_Warp:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -100, 0;
end;
}
@@ -46,7 +46,7 @@ L_StartVoices:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -100, 0;
end;
}
diff --git a/world/map/npc/052-2/partyroom.txt b/world/map/npc/052-2/partyroom.txt
index ce9c9f7d..a602704e 100644
--- a/world/map/npc/052-2/partyroom.txt
+++ b/world/map/npc/052-2/partyroom.txt
@@ -22,7 +22,7 @@ L_SpawnLuvia:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
@@ -59,7 +59,7 @@ L_Start:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
OnTimer1000:
@@ -83,7 +83,7 @@ OnTimer15000:
}
-052-2,88,15,0|script|#LuviaDaemon|127
+052-2,88,15,0|script|#LuviaDaemon|32767
{
end;
@@ -214,7 +214,7 @@ OnDeath:
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;
+ 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 "052-2", 73, 11, 115, 49, 0, "#LuviaDaemon::OnBP";
@@ -281,6 +281,6 @@ OnW00t:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
diff --git a/world/map/npc/052-2/storage.txt b/world/map/npc/052-2/storage.txt
index 62f9cd46..8abbb732 100644
--- a/world/map/npc/052-2/storage.txt
+++ b/world/map/npc/052-2/storage.txt
@@ -17,7 +17,7 @@
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
L_StartItemInvoker:
@@ -27,7 +27,7 @@ L_StartItemInvoker:
}
-052-2,1,1,0|script|#ItemsInvoker|127
+052-2,1,1,0|script|#ItemsInvoker|32767
{
end;
@@ -185,7 +185,7 @@ L_Warp:
end;
L_ShouldNotBeHere:
- percentheal -100, 0;
+ heal -Hp, 0;
end;
}
diff --git a/world/map/npc/055-1/_mobs.txt b/world/map/npc/055-1/_mobs.txt
index a1226612..35741d32 100644
--- a/world/map/npc/055-1/_mobs.txt
+++ b/world/map/npc/055-1/_mobs.txt
@@ -20,7 +20,7 @@
055-1,0,0,0,0|monster|SpikyMushroom|1019,7,10000ms,60000ms,Mob055-1::On1019
-055-1,0,0,0|script|Mob055-1|-1
+055-1,0,0,0|script|Mob055-1|32767
{
end;
diff --git a/world/map/npc/055-1/_warps.txt b/world/map/npc/055-1/_warps.txt
index 0ad8aa39..f42bd6e2 100644
--- a/world/map/npc/055-1/_warps.txt
+++ b/world/map/npc/055-1/_warps.txt
@@ -1,10 +1,10 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland Hills warps
-055-1,100,83|warp|To Cave|-1,-1,055-3,30,27
-055-1,100,89|warp|To Cave|-1,-1,055-3,50,42
-055-1,22,52|warp|To Woodland Hills|-1,2,013-1,135,51
-055-1,137,96|warp|To Cave|-1,-1,055-3,76,39
-055-1,60,93|warp|To Cave|-1,-1,055-3,96,70
-055-1,75,20|warp|To Woods|0,-1,017-1,188,103
-055-1,149,63|warp|To Woodland|-1,1,057-1,20,63
+055-1,100,83|warp|To Cave#055-10|-1,-1,055-3,30,27
+055-1,100,89|warp|To Cave#055-11|-1,-1,055-3,50,42
+055-1,22,52|warp|To Woodland Hil#055-12|-1,2,013-1,135,51
+055-1,137,96|warp|To Cave#055-13|-1,-1,055-3,76,39
+055-1,60,93|warp|To Cave#055-14|-1,-1,055-3,96,70
+055-1,75,20|warp|To Woods#055-15|0,-1,017-1,188,103
+055-1,149,63|warp|To Woodland#055-16|-1,1,057-1,20,63
diff --git a/world/map/npc/055-1/pumpkins.txt b/world/map/npc/055-1/pumpkins.txt
index f0b9741c..96931e04 100644
--- a/world/map/npc/055-1/pumpkins.txt
+++ b/world/map/npc/055-1/pumpkins.txt
@@ -4,7 +4,7 @@
055-1,132,24,6,4|monster|Pumpkin|1063,4,10000ms,5000ms,PumpkinMob055-1::On1063
-055-1,0,0,0|script|PumpkinMob055-1|-1
+055-1,0,0,0|script|PumpkinMob055-1|32767
{
end;
@@ -62,7 +62,7 @@ L_HeavyPoison1:
L_HeavyPoison2:
set @discover_poisonous_pumpkin, @discover_poisonous_pumpkin + 1;
misceffect FX_PUMPKIN_EXPLOSION, strcharinfo(0);
- percentheal -100,0;
+ heal -Hp, 0;
end;
}
diff --git a/world/map/npc/055-1/traveler.txt b/world/map/npc/055-1/traveler.txt
index 0277fbd4..1f36de77 100644
--- a/world/map/npc/055-1/traveler.txt
+++ b/world/map/npc/055-1/traveler.txt
@@ -4,7 +4,7 @@
055-1,135,60,0|script|Sherman the Traveler|103
{
- set @NpcName$, "Sherman";
+ set @npcname$, "Sherman";
set @NpcTravelBit, $@hurns_farms_bit;
callfunc "Traveler";
end;
diff --git a/world/map/npc/055-3/_mobs.txt b/world/map/npc/055-3/_mobs.txt
index 071d0347..bc14b844 100644
--- a/world/map/npc/055-3/_mobs.txt
+++ b/world/map/npc/055-3/_mobs.txt
@@ -11,7 +11,7 @@
055-3,52,78,36,23|monster|BlackScorpion|1009,3,50000ms,100000ms,Mob055-3::On1009
-055-3,0,0,0|script|Mob055-3|-1
+055-3,0,0,0|script|Mob055-3|32767
{
end;
diff --git a/world/map/npc/055-3/_warps.txt b/world/map/npc/055-3/_warps.txt
index 610db378..7a72b4cb 100644
--- a/world/map/npc/055-3/_warps.txt
+++ b/world/map/npc/055-3/_warps.txt
@@ -1,9 +1,9 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Cave warps
-055-3,77,40|warp|To Woodland Hills|0,-1,055-1,137,97
-055-3,30,26|warp|To Woodland Hills|-1,-1,055-1,100,82
-055-3,50,43|warp|To Outside|-1,-1,055-1,100,90
-055-3,96,71|warp|To Woodland Hills|0,-1,055-1,60,94
-055-3,58,96|warp|To Cave|0,-1,055-3,98,115
-055-3,98,114|warp|To Cave|-1,-1,055-3,57,95
+055-3,77,40|warp|To Woodland Hil#055-30|0,-1,055-1,137,97
+055-3,30,26|warp|To Woodland Hil#055-31|-1,-1,055-1,100,82
+055-3,50,43|warp|To Outside#055-32|-1,-1,055-1,100,90
+055-3,96,71|warp|To Woodland Hil#055-33|0,-1,055-1,60,94
+055-3,58,96|warp|To Cave#055-34|0,-1,055-3,98,115
+055-3,98,114|warp|To Cave#055-35|-1,-1,055-3,57,95
diff --git a/world/map/npc/056-2/_mobs.txt b/world/map/npc/056-2/_mobs.txt
index b4690913..267e0d8a 100644
--- a/world/map/npc/056-2/_mobs.txt
+++ b/world/map/npc/056-2/_mobs.txt
@@ -3,7 +3,7 @@
-056-2,0,0,0|script|Mob056-2|-1
+056-2,0,0,0|script|Mob056-2|32767
{
end;
}
diff --git a/world/map/npc/056-2/_warps.txt b/world/map/npc/056-2/_warps.txt
index 951596f3..0c0d660f 100644
--- a/world/map/npc/056-2/_warps.txt
+++ b/world/map/npc/056-2/_warps.txt
@@ -1,5 +1,5 @@
// 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|To First Floor|-1,-1,056-2,23,32
-056-2,35,30|warp|To Woods|-1,-1,017-1,169,90
+056-2,63,34|warp|To First Floor#056-20|-1,-1,056-2,23,32
+056-2,35,30|warp|To Woods#056-21|-1,-1,017-1,169,90
diff --git a/world/map/npc/056-2/mirak.txt b/world/map/npc/056-2/mirak.txt
index 93dca520..e1a37347 100644
--- a/world/map/npc/056-2/mirak.txt
+++ b/world/map/npc/056-2/mirak.txt
@@ -103,7 +103,7 @@ L_TooSoon:
L_Kill:
misceffect sfx_magic_war, strcharinfo(0);
- percentheal -100, 0;
+ heal -Hp, 0;
set @annoy, 0;
callsub S_Update_Mask_Annoy;
set Mirak_Bantime, gettimetick(2) + 86400;
diff --git a/world/map/npc/057-1/_mobs.txt b/world/map/npc/057-1/_mobs.txt
index 48bdaa2b..5988ce83 100644
--- a/world/map/npc/057-1/_mobs.txt
+++ b/world/map/npc/057-1/_mobs.txt
@@ -21,7 +21,7 @@
057-1,27,46,14,52|monster|Squirrel|1038,6,10000ms,50000ms,Mob057-1::On1038
-057-1,0,0,0|script|Mob057-1|-1
+057-1,0,0,0|script|Mob057-1|32767
{
end;
diff --git a/world/map/npc/057-1/_warps.txt b/world/map/npc/057-1/_warps.txt
index 59fce137..8a16eb4f 100644
--- a/world/map/npc/057-1/_warps.txt
+++ b/world/map/npc/057-1/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Woodland warps
-057-1,19,63|warp|To Woodland Hills|-1,1,055-1,148,63
+057-1,19,63|warp|To Woodland Hil#057-10|-1,1,055-1,148,63
diff --git a/world/map/npc/annuals/fathertime.txt b/world/map/npc/annuals/fathertime.txt
index 53912f86..852b0025 100644
--- a/world/map/npc/annuals/fathertime.txt
+++ b/world/map/npc/annuals/fathertime.txt
@@ -1,6 +1,6 @@
// Annual Timer
// One timer to check to enable all holiday events
-017-9,26,28,0|script|#HolidayConfig|-1
+017-9,26,28,0|script|#HolidayConfig|32767
{
end;
diff --git a/world/map/npc/annuals/halloween/config.txt b/world/map/npc/annuals/halloween/config.txt
index 8e9169e8..34ffb875 100644
--- a/world/map/npc/annuals/halloween/config.txt
+++ b/world/map/npc/annuals/halloween/config.txt
@@ -81,7 +81,7 @@
// BIT 30: NPC #1
// BIT 31: NPC #0
--|script|#HalloweenConfig|-1
+-|script|#HalloweenConfig|32767
{
end;
diff --git a/world/map/npc/annuals/halloween/trick_or_treat.txt b/world/map/npc/annuals/halloween/trick_or_treat.txt
index 24a359d2..10265382 100644
--- a/world/map/npc/annuals/halloween/trick_or_treat.txt
+++ b/world/map/npc/annuals/halloween/trick_or_treat.txt
@@ -71,7 +71,7 @@ L_MaskMemoryCheck:
L_MaskMemoryYes:
// not necessarily true
- mes "\"I remember you, " + getequipname(equip_head) + " person. No more treats for you!\"";
+ mes "\"I remember you, " + getitemlink(getequipid(equip_head)) + " person. No more treats for you!\"";
goto L_Close;
L_MaskMemoryNo:
@@ -285,7 +285,7 @@ L_Explain:
next;
set @npc_check_loop, 0;
goto L_NpcCheckLoop;
-
+
L_NpcCheckLoop:
mes $@halloween_npc_names$[@npc_check_loop];
next;
diff --git a/world/map/npc/annuals/xmas/barriers.txt b/world/map/npc/annuals/xmas/barriers.txt
index 4c7837af..5dd30774 100644
--- a/world/map/npc/annuals/xmas/barriers.txt
+++ b/world/map/npc/annuals/xmas/barriers.txt
@@ -92,7 +92,7 @@ L_EnterDialogue:
"Hit it with my strong fist.", L_Enter;
L_Tux9th:
- itemheal -20, 0;
+ heal -20, 0;
message strcharinfo(0), "Ouch, that hurt!";
setlook LOOK_HAIR_STYLE, rand(20);
goto L_Fail;
@@ -110,7 +110,7 @@ L_Sword:
L_Gloves:
mes "Wow! Next time you plan to hit a wall,";
mes "you had better equip some decent gloves in advance.";
- itemheal -20, 0;
+ heal -20, 0;
message strcharinfo(0), "Ouch, that hurt!";
goto L_QueryWarp;
diff --git a/world/map/npc/annuals/xmas/config.txt b/world/map/npc/annuals/xmas/config.txt
index 33ddcf97..90eab504 100644
--- a/world/map/npc/annuals/xmas/config.txt
+++ b/world/map/npc/annuals/xmas/config.txt
@@ -38,7 +38,7 @@
// 30: Helper Bit
// 31: Side Choosen: Naughty vs. Nice
--|script|#XmasConfig|-1
+-|script|#XmasConfig|32767
{
end;
@@ -129,12 +129,12 @@ L_Main:
goto L_XmasError;
// Santas Helper quest rewards
setarray $@SantasHelper_Annual_Reward$,
- "RedTurtleneckSweater",
- "YellowTurtleneckSweater",
- "LightBlueTurtleneckSwea",
- "PinkTurtleneckSweater",
- "OrangeTurtleneckSweater",
- "PurpleTurtleneckSweater",
+ "RedTurtleneck",
+ "YellowTurtleneck",
+ "LightBlueTurtleneck",
+ "PinkTurtleneck",
+ "OrangeTurtleneck",
+ "PurpleTurtleneck",
"KnitCap",
"KnitCap";
diff --git a/world/map/npc/annuals/xmas/core.txt b/world/map/npc/annuals/xmas/core.txt
index d064efca..517ac084 100644
--- a/world/map/npc/annuals/xmas/core.txt
+++ b/world/map/npc/annuals/xmas/core.txt
@@ -130,7 +130,7 @@ L_SetRewardBonus:
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 + ((readparam(bLuk)) / 5);
+ 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;
@@ -159,8 +159,7 @@ L_LevelingReward:
goto L_XmasExp;
L_XmasLevel:
- gmcommand "@blvl 1";
- gmcommand "@l I was a good kid this year.";
+ set BaseLevel, BaseLevel + 1;
return;
L_XmasExp:
diff --git a/world/map/npc/botcheck/_mobs.txt b/world/map/npc/botcheck/_mobs.txt
index a7151fe7..91d023cd 100644
--- a/world/map/npc/botcheck/_mobs.txt
+++ b/world/map/npc/botcheck/_mobs.txt
@@ -3,7 +3,7 @@
-botcheck,0,0,0|script|Mobbotcheck|-1
+botcheck,0,0,0|script|Mobbotcheck|32767
{
end;
}
diff --git a/world/map/npc/functions/DyeConfig.txt b/world/map/npc/functions/DyeConfig.txt
new file mode 100644
index 00000000..e2d9640e
--- /dev/null
+++ b/world/map/npc/functions/DyeConfig.txt
@@ -0,0 +1,42 @@
+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$, "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$, "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/banker.txt b/world/map/npc/functions/banker.txt
index ea5dfa22..9492f0f5 100644
--- a/world/map/npc/functions/banker.txt
+++ b/world/map/npc/functions/banker.txt
@@ -8,6 +8,7 @@ function|script|Banker
goto L_Start;
L_Start:
+ if(@npcname$ == "") set @npcname$, strnpcinfo(1);
mes "[" + @npcname$ + "]";
mes "\"Welcome to the bank!";
mes "How can I help you?\"";
@@ -248,5 +249,6 @@ L_Change_Bank:
goto L_Start;
L_Return:
+ set @npcname$, "";
return;
}
diff --git a/world/map/npc/functions/barber.txt b/world/map/npc/functions/barber.txt
index e7491cf3..2c940c33 100644
--- a/world/map/npc/functions/barber.txt
+++ b/world/map/npc/functions/barber.txt
@@ -133,7 +133,7 @@ L_SameColor:
mes "You are either bald or your hair is already that color.";
goto L_Main;
-L_Done:
+S_Janitor:
// cleanup
set @menu, 0;
set @style, 0;
@@ -143,4 +143,8 @@ L_Done:
set @hairOpts, 0;
set @colorOpts, 0;
return;
+
+L_Done:
+ callsub S_Janitor;
+ return;
}
diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt
index c894586b..f26164df 100644
--- a/world/map/npc/functions/clear_vars.txt
+++ b/world/map/npc/functions/clear_vars.txt
@@ -2,75 +2,88 @@
function|script|ClearVariables
{
- // Tutorial
- if ((TUTORIAL) || (sorfina))
- goto L_ResetTut;
- goto L_Heathin;
+ 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_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_Xmas2006;
+ callsub S_Xmas2007;
+ callsub S_Xmas2008;
+ callsub S_Xmas2009;
+ callsub S_Xmas2010;
+ callsub S_Xmas2011;
+ callsub S_Xmas2012;
+
+ callsub S_Misc;
+ return; // go back to global handler
+
+S_Return: // this is to end execution of a sub
+ return;
-L_ResetTut:
- //TUTORIAL to STARTAREA
- if ((sorfina) || (kaan) || (hasan) || (tanisha))
- goto L_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;
- goto L_Heathin;
+////////////////////////////////////////////////////////////////
-L_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;
- goto L_Heathin;
+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;
-L_Heathin:
- if (HEATHIN_QUEST > 0)
- set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK)) | (HEATHIN_QUEST << NIBBLE_6_SHIFT);
- set HEATHIN_QUEST, 0;
- goto L_Easter;
+S_Halloween2007:
+ set QUEST_Halloween07_state, 0;
+ return;
-L_Easter:
- // Easter
- set EasterQuest, 0;
+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;
- // Halloween 2006
+S_Halloween2006:
+ if(!HWQUEST1) goto S_Return;
set HWQUEST1, 0;
set HWQUEST2, 0;
set HWQUEST3, 0;
@@ -92,60 +105,49 @@ L_Easter:
set HWQUEST18, 0;
set HWQUEST19, 0;
set HWQUEST20, 0;
+ return;
- // Christmas 2006
- 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;
-
- set QUEST_Halloween07_state, 0;
-
- set QUEST_xmas07_state, 0;
- set QUEST_xmas07_milk, 0;
- set QUEST_xmas07_cookies, 0;
- set QUEST_xmas07_presents, 0;
+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;
- set Candyman, 0; // Halloween 2009
+S_Halloween2009:
+ set Candyman, 0;
+ return;
+S_Xmas2009:
set QUEST_Christmas09_state, 0;
+ return;
- set QUEST_Easter09_slots, 0;
-
- // easter 2010
- // This must not be cleared: since some people would like to go to the easter island!
- // set Easter_2010_QuestState, 0;
+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;
- // halloween 2010
+S_Halloween2010:
+ if(!hween10) goto S_Return;
set hween10, 0;
set hween10_collect_canpump, 0;
set hween10_credits, 0;
@@ -155,8 +157,10 @@ L_Easter:
set hween10_bonecount, 0;
set hween10_collect_tondel, 0;
set hween10_paid, 0;
+ return;
- // Xmas 2010:
+S_Xmas2010:
+ if(!Xmas2010) goto S_Return;
set Count_Yellow, 0;
set Count_White, 0;
set Maze, 0;
@@ -164,32 +168,34 @@ L_Easter:
set White, 0;
set Xmas2010, 0;
set Golbenez_Inn_Cost, 0;
+ return;
+S_Easter2011:
set QUEST_Easter11, 0;
+ return;
- // contains bad karma information
- // set hw2011, 0;
+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;
-
- // Tulimshar and Mine Variables which aren't used anymore
- set Scorp, 0;
- set Bugleg, 0;
- // variable isn't used
set QUEST_clothdyer_state, 0;
- // variable was moved to a temporary player variable
- set KatzeBeenOutside, 0;
- // variable was moved to Nibble 1 of the variable Katze
- set LastHiss, 0;
- // quest was turned into a Daily Quest, so the variable isn't needed anymore
- set CaveSnakeLamp, 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);
@@ -206,8 +212,9 @@ L_Easter:
set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (Inspector << NIBBLE_3_SHIFT);
set Inspector, 0;
set @inspector, 0;
+ return;
- //These lines are needed to migrate stuff from variables to flags
+S_Flags:
if (Open_Underground_Palace_Barrier)
set FLAGS, FLAGS | FLAG_OPENED_UNDERGROUND;
set Open_Underground_Palace_Barrier, 0;
@@ -227,109 +234,152 @@ L_Easter:
if (ChestQuest)
set FLAGS, FLAGS | FLAG_HURNSMINE_CHEST;
set ChestQuest, 0;
+ return;
- if (#BankAccount < 0)
- goto L_FixBank;
-
- goto L_Fix_Skills;
-
-L_FixBank:
+S_FixBank:
+ if(#BankAccount >= 0) goto S_Return;
if (Zeny >= -#BankAccount)
- goto L_Fix_Full;
-
+ goto S_Fix_Bank_Full;
// Partial fix
set #BankAccount, #BankAccount + Zeny;
set Zeny, 0;
- goto L_Fix_Skills;
+ return;
-L_Fix_Full:
+S_Fix_Bank_Full:
set Zeny, Zeny + #BankAccount;
set #BankAccount, 0;
- goto L_Fix_Skills;
+ return;
-L_Fix_Skills:
- if(getskilllv(SKILL_TRADE) > 0) setskill SKILL_TRADE, 0;
- if(getskilllv(SKILL_PARTY) > 0) setskill SKILL_PARTY, 0;
- if(getskilllv(SKILL_EMOTE) > 0) setskill SKILL_EMOTE, 0;
- goto L_Barber_Janitor;
+S_Remove_Skills:
+ if(getskilllv(SKILL_TRADE) < 1) goto S_Return;
+ setskill SKILL_TRADE, 0;
+ setskill SKILL_PARTY, 0;
+ setskill SKILL_EMOTE, 0;
+ return;
-L_Barber_Janitor:
- callfunc "getHeadStyles"; // this converts class, color and hair
- goto L_Return;
+S_Misc:
+ if(Death_Kill) 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
+ return;
-L_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;
-}
-// The variable TMW_Quest was used to save the progress in several subquests linearly.
-// The subquests are moved to different nibbles of other variables
-// to make it possible to do some of the quests in parallel.
-function|script|ClearVarTMW_Quest
-{
- if (TMW_Quest == 0) goto L_Done;
- if (TMW_Quest <= 6) goto L_Bernard_Mikhail;
- if (TMW_Quest <= 8) goto L_Sarah;
- if (TMW_Quest <= 10) goto L_Vincent;
- if (TMW_Quest <= 12) goto L_Sandra;
- if (TMW_Quest <= 40) goto L_Desert;
- goto L_Bandit;
-
-L_Bandit:
-// move Bandit subquest into Nibble 0 of QUEST_Hurnscald
- set @bandit, TMW_Quest - 40;
- set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_0_MASK) | (@bandit << NIBBLE_0_SHIFT));
- set TMW_Quest, 40;
- set @bandit, 0;
- goto L_Desert;
+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;
-L_Desert:
-// move guard and miner subquest into Byte 2 (Nibble 4 and 5) of QUEST_SouthTulimshar
+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;
- goto L_Sandra;
+ return;
-L_Sandra:
-// move Sandra subquest into Nibble 3 of QUEST_SouthTulimshar
+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;
- goto L_Vincent;
+ return;
-L_Vincent:
-// move Vincent subquest into Nibble 2 of QUEST_SouthTulimshar
+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;
- goto L_Sarah;
+ return;
-L_Sarah:
-// move Sarah subquest into Nibble 1 of QUEST_SouthTulimshar
+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;
- goto L_Bernard_Mikhail;
+ return;
-L_Bernard_Mikhail:
-// move Bernard and Mikhail subquest into Nibble 0 of QUEST_SouthTulimshar
+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;
- goto L_Done;
+ return;
-L_Done:
+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;
-}
--|script|#ClearGlobalVars|-1
-{
- end;
+L_Deprecated:
+ debugmes "Explicitely calling ClearVariables after login is deprecated.";
+ mapexit;
+}
-OnInit:
+function|script|ClearGlobalVars
+{
// Clear some entries of the arrays which save the Fluffy Hunting highscore list
set $@loop, 5;
goto L_FluffyClear;
@@ -387,6 +437,5 @@ L_EventClear:
// Variable was used in Voltain's script, was renamed and turned into a temporary variable
set $state, 0;
-
end;
}
diff --git a/world/map/npc/functions/debug.txt b/world/map/npc/functions/debug.txt
index be8d4fb4..bcb54777 100755
--- a/world/map/npc/functions/debug.txt
+++ b/world/map/npc/functions/debug.txt
@@ -2,7 +2,12 @@
function|script|Debug
{
- goto L_Begin;
+ if(!@debug_npc) goto L_Begin;
+ mes "The debug NPCs have been deprecated. Please use this magic spell instead:";
+ mes "";
+ mes "%%E ##a"+ getspellinvocation("debug0") +"##0";
+ set @debug_npc, 0;
+ close;
L_Begin:
set @debug_mask, 65535;
@@ -59,12 +64,12 @@ L_Status:
"Close.", L_Close;
L_ChangeAllStats:
- statusup2 bStr, 99 - readparam(bStr);
- statusup2 bAgi, 99 - readparam(bAgi);
- statusup2 bVit, 99 - readparam(bVit);
- statusup2 bInt, 99 - readparam(bInt);
- statusup2 bDex, 99 - readparam(bDex);
- statusup2 bLuk, 99 - readparam(bLuk);
+ 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;
@@ -76,7 +81,7 @@ L_ChangeStrength:
goto L_StatTooLow;
if (@str > 99)
goto L_StatTooHigh;
- statusup2 bStr, @str - readparam(bStr);
+ set Str, @str;
goto L_ChangeAgility;
L_ChangeAgility:
@@ -86,7 +91,7 @@ L_ChangeAgility:
goto L_StatTooLow;
if (@agi > 99)
goto L_StatTooHigh;
- statusup2 bAgi, @agi - readparam(bAgi);
+ set Agi, @agi;
goto L_ChangeVitality;
L_ChangeVitality:
@@ -96,7 +101,7 @@ L_ChangeVitality:
goto L_StatTooLow;
if (@vit > 99)
goto L_StatTooHigh;
- statusup2 bVit, @vit - readparam(bVit);
+ set Vit, @vit;
goto L_ChangeIntelligence;
L_ChangeIntelligence:
@@ -106,7 +111,7 @@ L_ChangeIntelligence:
goto L_StatTooLow;
if (@int > 99)
goto L_StatTooHigh;
- statusup2 bInt, @int - readparam(bInt);
+ set Int, @int;
goto L_ChangeDexterity;
L_ChangeDexterity:
@@ -116,7 +121,7 @@ L_ChangeDexterity:
goto L_StatTooLow;
if (@dex > 99)
goto L_StatTooHigh;
- statusup2 bDex, @dex - readparam(bDex);
+ set Dex, @dex;
goto L_ChangeLuck;
L_ChangeLuck:
@@ -126,13 +131,13 @@ L_ChangeLuck:
goto L_StatTooLow;
if (@luk > 99)
goto L_StatTooHigh;
- statusup2 bLuk, @luk - readparam(bLuk);
- mes "You now have " + readparam(bStr) + " in strength.";
- mes "You now have " + readparam(bAgi) + " in agility.";
- mes "You now have " + readparam(bVit) + " in vitality.";
- mes "You now have " + readparam(bInt) + " in intelligence.";
- mes "You now have " + readparam(bDex) + " in dexterity.";
- mes "You now have " + readparam(bLuk) + " in luck.";
+ 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;
@@ -165,8 +170,8 @@ L_ChangeStrengthSingle:
goto L_StatTooLow;
if (@str > 99)
goto L_StatTooHigh;
- statusup2 bStr, @str - readparam(bStr);
- mes "You now have " + readparam(bStr) + " in strength.";
+ set Str, @str;
+ mes "You now have " + Str + " in strength.";
next;
goto L_Begin;
@@ -177,8 +182,8 @@ L_ChangeAgilitySingle:
goto L_StatTooLow;
if (@agi > 99)
goto L_StatTooHigh;
- statusup2 bAgi, @agi - readparam(bAgi);
- mes "You now have " + readparam(bAgi) + " in agility.";
+ set Agi, @agi;
+ mes "You now have " + Agi + " in agility.";
next;
goto L_Begin;
@@ -189,8 +194,8 @@ L_ChangeVitalitySingle:
goto L_StatTooLow;
if (@vit > 99)
goto L_StatTooHigh;
- statusup2 bVit, @vit - readparam(bVit);
- mes "You now have " + readparam(bVit) + " in vitality.";
+ set Vit, @vit;
+ mes "You now have " + Vit + " in vitality.";
next;
goto L_Begin;
@@ -201,8 +206,8 @@ L_ChangeIntelligenceSingle:
goto L_StatTooLow;
if (@int > 99)
goto L_StatTooHigh;
- statusup2 bInt, @int - readparam(bInt);
- mes "You now have " + readparam(bInt) + " in intelligence.";
+ set Int, @int;
+ mes "You now have " + Int + " in intelligence.";
next;
goto L_Begin;
@@ -213,8 +218,8 @@ L_ChangeDexteritySingle:
goto L_StatTooLow;
if (@dex > 99)
goto L_StatTooHigh;
- statusup2 bDex, @dex - readparam(bDex);
- mes "You now have " + readparam(bDex) + " in dexterity.";
+ set Dex, @dex;
+ mes "You now have " + Dex + " in dexterity.";
next;
goto L_Begin;
@@ -225,8 +230,8 @@ L_ChangeLuckSingle:
goto L_StatTooLow;
if (@luk > 99)
goto L_StatTooHigh;
- statusup2 bLuk, @luk - readparam(bLuk);
- mes "You now have " + readparam(bLuk) + " in luck.";
+ set Luk, @luk;
+ mes "You now have " + Luk + " in luck.";
next;
goto L_Begin;
@@ -918,6 +923,7 @@ L_Close:
029-2,30,26,0|script|Debug#0|154
{
+ set @debug_npc, 1;
callfunc "Debug";
end;
OnInit:
@@ -928,6 +934,7 @@ OnInit:
001-1,53,47,0|script|Debug#1|154
{
+ set @debug_npc, 1;
callfunc "Debug";
end;
OnInit:
@@ -936,8 +943,9 @@ OnInit:
end;
}
-009-1,52,33,0|script|Debug#2|154
+009-1,45,33,0|script|Debug#2|154
{
+ set @debug_npc, 1;
callfunc "Debug";
end;
OnInit:
@@ -948,6 +956,7 @@ OnInit:
020-1,75,85,0|script|Debug#3|154
{
+ set @debug_npc, 1;
callfunc "Debug";
end;
OnInit:
@@ -956,18 +965,9 @@ OnInit:
end;
}
-017-9,21,24,0|script|Debug#4|154
-{
- callfunc "Debug";
- end;
-OnInit:
- if (!debug)
- disablenpc "Debug#4";
- end;
-}
-
027-2,125,103,0|script|Debug#5|154
{
+ set @debug_npc, 1;
callfunc "Debug";
end;
OnInit:
diff --git a/world/map/npc/functions/default_npc_checks.txt b/world/map/npc/functions/default_npc_checks.txt
index 446cf961..d20ed187 100644
--- a/world/map/npc/functions/default_npc_checks.txt
+++ b/world/map/npc/functions/default_npc_checks.txt
@@ -1,13 +1,16 @@
// Default NPC Checks
-// Author: Wushin
+// Author: Wushin, mekolat
// Range
-// Map, X, Y, Distance in Tiles
-// setarray @npc_loc, 24, 113, 4;
+// Distance in Tiles
+// set @npc_distance, 4;
function|script|PCtoNPCRange
{
set @npc_check, 0;
- set @Nmap$, getmap() + "";
+ set @Nmap$, strnpcinfo(3);
+ if(!@npc_distance) set @npc_distance, 4; // <== default distance
+ 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]);
@@ -15,9 +18,22 @@ function|script|PCtoNPCRange
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;
+ mes "You need to move closer to interact with this npc.";
+ close2;
goto L_Return;
+L_Named:
+ message strcharinfo(0), "##3"+@dnpc_name$+" : ##BPlease move closer.";
+ end;
+
L_Return:
+ set @dnpc_name$, "";
+ set @distance_handler, 0;
+ set @npc_distance, 0;
+ cleararray @npc_loc, 0, 3;
return;
}
@@ -109,7 +125,7 @@ L_ReturnMissing:
goto L_MissingMsg;
L_MissingMsg:
- mes "[@@"+@delitem_ids[@msg_loop]+"|"+getitemname(@delitem_ids[@msg_loop])+"@@] "+countitem(getitemname(@delitem_ids[@msg_loop]))+"/"+@delitem_counts[@msg_loop];
+ 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:
diff --git a/world/map/npc/functions/ferry.txt b/world/map/npc/functions/ferry.txt
index 54c79aa2..3737bb18 100644
--- a/world/map/npc/functions/ferry.txt
+++ b/world/map/npc/functions/ferry.txt
@@ -1,6 +1,6 @@
// The ferry system
-017-9,27,28,0|script|#FerryConfig|-1
+017-9,27,28,0|script|#FerryConfig|32767
{
end;
@@ -40,8 +40,6 @@ L_NextDock:
donpcevent "#k1sound::OnCommandDing";
donpcevent "#k2sound::OnCommandDing";
- //mapannounce "035-2.tmx", " Koga - Main:* Now arriving in "+$@MainDocks$[$@MainCurrentDock]+".", 0;
- //mapannounce "036-2.tmx", " Koga - Candor:* Now arriving in "+$@CandorDocks$[$@CandorCurrentDock]+".", 0;
initnpctimer;
if($@MainCurrentDock == 2) goto L_k1city1;
@@ -52,8 +50,6 @@ L_NextDock:
OnTimer8000:
if ($@DockTickCount > $@DockLeaveCount)
goto L_NextDock;
- //mapannounce "035-2.tmx", "Koga - Main:* Now docked in "+$@MainDocks$[$@MainCurrentDock]+", Departing soon", 0;
- //mapannounce "036-2.tmx", "Koga - Candor:* Now docked in "+$@CandorDocks$[$@CandorCurrentDock]+", Departing soon", 0;
set $@DockTickCount, $@DockTickCount + 1;
initnpctimer;
end;
@@ -138,7 +134,7 @@ function|script|BoardFerry
"No.", L_Return;
L_Board:
- warp "035-2.tmx",39,29;
+ warp "035-2",39,29;
goto L_Return;
L_Return:
@@ -153,7 +149,7 @@ function|script|BoardCandorFerry
"No.", L_Return;
L_Board:
- warp "036-2.tmx",39,29;
+ warp "036-2",39,29;
goto L_Return;
L_Return:
diff --git a/world/map/npc/functions/game_rules.txt b/world/map/npc/functions/game_rules.txt
index cbd4b8fb..10cbc71d 100644
--- a/world/map/npc/functions/game_rules.txt
+++ b/world/map/npc/functions/game_rules.txt
@@ -15,7 +15,9 @@ function|script|GameRules
"Svenska (Swedish)", L_Swedish,
"Portugues (Portuguese)", L_Portuguese,
"Polski (Polish)", L_Polish,
- "Italiano (Italian)", L_Italian;
+ "Italiano (Italian)", L_Italian,
+ "繁體中文 (Traditional Chinese)", L_zhHant,
+ "Русский (Russian)", L_Russian;
L_English:
mes "Players breaking the following rules may be banned (up to and including a permanent ban) or have their characters reset at the GM's discretion:";
@@ -66,26 +68,26 @@ L_Danish:
goto L_End;
L_French:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "Les joueurs ne respectant pas les regles suivantes pourront, a la discretion des moderateurs (GM), etre bannis (jusqu'au banissement eternel inclus) ou avoir leur personnage reinitialise:*";
- mes "1. Ne manquez pas de respect envers les autres joueurs (insultes, language grossier, et autres choses du meme genre a l'intention d'un(e) joueur(se) en particulier ou d'un groupe de joueurs(ses))";
- mes "2. N'utilisez pas de \"bot\" (ceci inclus n'importe quelle activite dans le jeu en etant loin du clavier, dont poser un objet sur le clavier pour attaquer automatiquement les monstres)";
- mes "3. Ne faites pas de publicite inadequate (spam) et de repetitions intempestives (flood) (ceci inclus la repetition de demande de troc (trade))";
- mes "4. Ne demandez pas d'items ou d'argent (les echanges doivent se faire de preference sur forums.themanaworld.org)";
- mes "5. Parlez anglais dans les salons de discussions publics (principalement en ville)";
- mes "6. Traitez les autres de la meme maniere que vous voudriez etre traite(e)";
- mes "L'utilisation de \"bot\" sera determinee en parlant aux joueurs(ses) en train de bouger et/ou d'attaquer.";
+ 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 infrinjan las siguientes reglas pueden ser bloqueados (incluso permanentemente) o se reiniciarán al nivel 1 sus personajes, según el criterio de los GM:";
- mes "1. No abuse de otros jugadores (esto incluye insultos, malas palabras, y similares dirigidas a una o varias personas)";
- mes "2. No utilizar programas automáticos (incluyendo CUALQUIER actividad con el usuario lejos del teclado o el seguimiento automático)";
- mes "3. No envíe mensajes publicitarios o inunde el chat de mensajes (incluyendo los mensajes de intercambio)";
+ 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. Escriba únicamente en Inglés en el chat público";
- mes "6. Trate 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 se determinará hablando con los jugadores que estén moviéndose y/o atacando.";
+ 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;
@@ -125,15 +127,38 @@ L_Polish:
goto L_End;
L_Italian:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "I giocatori che infrangeranno le seguenti regole saranno bannati (anche permanentemente) o saranno resettati, a discrezione dei Game Masters:";
- mes "1. Vietato abusare degli altri giocatori (insulti, imprecazioni e simili, diretti verso una particolare persona o gruppi di persone)";
- mes "2. Vietato usare bot (ossia effettuare QUALSIASI attività quando non si è presenti alla tastiera)";
- mes "3. Vietato spammare / postare ripetutamente messaggi inutili (incluso spam di richieste di scambio)";
- mes "4. Vietato implorare";
- mes "5. Parlare solo inglese nella chat pubblica";
- mes "6. Tratta gli altri giocatori come vuoi che gli altri trattino te.";
- mes "I bot saranno determinati in base alle risposte e ai movimenti dei giocatori esaminati.";
+ 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:
diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt
index cf331060..92194086 100644
--- a/world/map/npc/functions/global_event_handler.txt
+++ b/world/map/npc/functions/global_event_handler.txt
@@ -1,43 +1,34 @@
-017-9,0,0,0|script|#GlobalHandler|-1
+// This is the global event dispatcher
+// Do not add code to this file. Please only add callfuncs
+//
+// Author: meko
+
+-|script|#GlobalHandler|32767
{
end;
-OnPCLoginEvent: // this does not work yet but as soon as it is implemented it will start working
- callfunc "ClearVariables";
+OnPCLoginEvent:
+ set @login_event, 1;
+ callfunc "getHeadStyles"; // converts class, color and hair
+ callfunc "ClearVariables"; // removes / converts old variables
+ // add more here
+ set @login_event, 2;
end;
OnPCKillEvent:
- set Death_Kill, Death_Kill + 1; // this counts the number of players you have killed
+ callfunc "elanore_decrease_exp"; // decrease heal exp for doing bad things
end;
OnPCKilledEvent:
- goto L_Fightclub_Killed; // this is used by the 1v1 arena
+ callfunc "fightclub_event_killed"; // this is used by the 1v1 arena
+ end;
OnPCDieEvent:
callfunc "fightclub_GoBack"; // this used by the battle master
- goto L_Fightclub_Die; // this is used by the 1v1 arena
-
-// custom handlers below
-
-L_Fightclub_Killed:
- set @duel_killer, 0;
- if(@Duel_Fighter != 1) goto L_End;
- if(getmap() != "009-7") goto L_End;
- set $@duel_loser, getcharid(3); // grab the rid of the victim
- set $@duel_winner, @killerrid; // grab the rid of the killer
- set @killerrid, 0; // reset killerid
- callfunc "fightclub_death";
- goto L_End;
-
-L_Fightclub_Die:
- set @duel_killer, 0;
- if(@Duel_Fighter != 1) goto L_End;
- if(getmap() != "009-7") goto L_End;
- set @killerrid, 0; // since the player was not murdered, the killerrid is 0
- set $@duel_loser, getcharid(3); // grab the rid of the victim
- callfunc "fightclub_death";
- goto L_End;
+ callfunc "fightclub_event_die"; // this is used by the 1v1 arena
+ end;
-L_End:
+OnInit: //fixme: change to OnInterIfInit
+ callfunc "ClearGlobalVars";
end;
}
diff --git a/world/map/npc/functions/gm_island.txt b/world/map/npc/functions/gm_island.txt
index 5efe105e..94c745a7 100644
--- a/world/map/npc/functions/gm_island.txt
+++ b/world/map/npc/functions/gm_island.txt
@@ -1,5 +1,5 @@
// Add Localized Warp in town centers and Message to GM Island
--|script|#GmConfig|-1
+-|script|#GmConfig|32767
{
end;
diff --git a/world/map/npc/functions/inn.txt b/world/map/npc/functions/inn.txt
index ffa75582..e45c398c 100644
--- a/world/map/npc/functions/inn.txt
+++ b/world/map/npc/functions/inn.txt
@@ -2,12 +2,13 @@
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_No;
+ "No", L_Close;
L_Next:
if (Zeny < @cost)
@@ -17,15 +18,18 @@ L_Next:
mes "[" + @npcname$ + "]";
mes "\"Sleep well!\"";
- close;
+ next;
+ goto L_Close;
-L_No:
+L_Close:
mes "[" + @npcname$ + "]";
mes "\"See you.\"";
+ set @npcname$, "";
close;
L_NoMoney:
mes "[" + @npcname$ + "]";
mes "\"You don't have enough money to stay here.\"";
- close;
+ next;
+ goto L_Close;
}
diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt
index 7f1cb1db..ba2910b1 100644
--- a/world/map/npc/functions/mob_points.txt
+++ b/world/map/npc/functions/mob_points.txt
@@ -138,8 +138,8 @@ function|script|MobPoints
if (MPQUEST == 1)
set Mobpt, Mobpt + @points[@mobID - 1002];
- callfunc "ValonState";
- if (((@valon_state >= 2) && (@valon_state < 6)) && (@mobID == $@ValonMob[@valon_mob]))
+ callfunc "ValonCount";
+ if (((QL_VALON >= 2) && (QL_VALON < 6)) && (@mobID == $@ValonMob[@valon_mob]))
goto L_ValonMobKill;
goto L_NatureKarma;
diff --git a/world/map/npc/functions/stat_reset.txt b/world/map/npc/functions/stat_reset.txt
index d8f484ff..fdb833f7 100644
--- a/world/map/npc/functions/stat_reset.txt
+++ b/world/map/npc/functions/stat_reset.txt
@@ -8,7 +8,7 @@ function|script|StatReset
set @cost, BaseLevel * 100;
- mes "[" + @NpcName$ + "]";
+ mes "[" + @npcname$ + "]";
mes "\"I have come across a spell that will";
mes "reset your status points.";
mes "Normally this spell is expensive, but";
@@ -31,19 +31,19 @@ L_Reset:
set Zeny, Zeny-@cost;
resetstatus;
- mes "[" + @NpcName$ + "]";
+ mes "[" + @npcname$ + "]";
mes "\"There you are.";
mes "";
mes "Good as new!\"";
goto L_Return;
L_Pass:
- mes "[" + @NpcName$ + "]";
+ mes "[" + @npcname$ + "]";
mes "\"Very well then, see you.\"";
goto L_Return;
L_NoMoney:
- mes "[" + @NpcName$ + "]";
+ mes "[" + @npcname$ + "]";
mes "\"Oh dear, the price cannot be bargained.";
mes "";
mes "Perhaps you can borrow from a friend?\"";
diff --git a/world/map/npc/functions/time.txt b/world/map/npc/functions/time.txt
index 695c4cec..bd80a1b1 100644
--- a/world/map/npc/functions/time.txt
+++ b/world/map/npc/functions/time.txt
@@ -61,13 +61,21 @@ function|script|time_stamp
// HumanTime - returns a human-readable time
// author: meko
-// Variables:
+// 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 < 0) goto L_TooShort;
if(@ms < 1000) goto L_Millis; // under 1 second we have nothing to count
set @seconds, @ms / 1000;
set @ms, @ms % 1000;
@@ -77,8 +85,15 @@ function|script|HumanTime
if(@minutes < 60) goto L_Minutes;
set @hours, @minutes / 60;
set @minutes, @minutes % 60;
- if(@hours < 60) goto L_Hours;
- return;
+ if(@hours < 24) goto L_Hours;
+ set @days, @hours / 24;
+ set @hours, @hours % 24;
+ if(@days) goto L_Days;
+ goto L_Clean;
+
+L_TooShort:
+ debugmes "HumanTime: negative value: "+@ms;
+ mapexit;
L_Millis:
set @time$, @ms + "ms";
@@ -91,7 +106,7 @@ L_Seconds:
if(@ms > 1) set @unit2$, "milliseconds";
set @time$, @seconds + " " + @unit$;
if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit2$;
- return;
+ goto L_Clean;
L_Minutes:
set @unit$, "minute";
@@ -105,7 +120,7 @@ L_Minutes:
if(@ms) set @separator$, ", ";
if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit2$;
if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit3$;
- return;
+ goto L_Clean;
L_Hours:
set @unit$, "hour";
@@ -124,5 +139,42 @@ L_Hours:
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
index a1db712e..aec700d0 100644
--- a/world/map/npc/functions/travelers.txt
+++ b/world/map/npc/functions/travelers.txt
@@ -6,7 +6,7 @@
// Costs Zeny
// Contains all warp points to find
-017-9,27,28,0|script|#TravelConfig|-1
+017-9,27,28,0|script|#TravelConfig|32767
{
end;
@@ -43,28 +43,11 @@ OnInit:
end;
}
-function|script|TravelerTut
-{
- //Explain Travelers
- mes "["+@NpcName$+"]";
- mes "\"We travelers are found all over the world. Once you have found another traveler, we can create a link and send you between us.\"";
- next;
- if (TravelFound & $@tut_bit)
- goto L_Return;
- goto L_SetBit;
-
-L_SetBit:
- set TravelFound, TravelFound | $@tut_bit;
- goto L_Return;
-
-L_Return:
- return;
-}
-
function|script|Traveler
{
- mes "["+@NpcName$+"]";
- mes "\"Greetings. I am "+@NpcName$+" the Traveler.\"";
+ if(@npcname$ == "") set @npcname$, strnpcinfo(1);
+ mes "["+@npcname$+"]";
+ mes "\"Greetings. I am "+@npcname$+" the Traveler.\"";
next;
if (TravelFound & $@tut_bit)
@@ -83,12 +66,20 @@ L_BitTravelSet:
goto L_Start;
L_TravelTut:
- callfunc "TravelerTut";
+ 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.\"";
+ mes "["+@npcname$+"]";
+ mes "\"Uplink set. You can now return to this spot for a fee.\"";
next;
set TravelFound, TravelFound | @NpcTravelBit;
goto L_BitTravelSet;
@@ -120,7 +111,7 @@ L_TravelChecks:
goto L_TravelPlayer;
L_TravelPlayer:
- mes "["+@NpcName$+"]";
+ mes "["+@npcname$+"]";
mes "\"Be fearless!\"";
close2;
set Zeny, Zeny - @NextLocationCost;
@@ -189,6 +180,13 @@ L_TravelPachua:
set @NextLocationMap$, "006-1";
set @NextLocationX, 28;
set @NextLocationY, 97;
+ if(QUEST_MIRIAM_start != 0) goto L_Cheat;
+ goto L_TravelChecks;
+
+L_Cheat:
+ set QUEST_MIRIAM_cheat, 1;
+ set QUEST_MIRIAM_run, gettimetick(2) - QUEST_MIRIAM_start;
+ set QUEST_MIRIAM_start, 0;
goto L_TravelChecks;
L_TravelBarbarians:
@@ -216,30 +214,31 @@ L_TravelCandor:
goto L_TravelChecks;
L_TravelNo:
- mes "["+@NpcName$+"]";
- mes "\"Perhaps some day you will have the courage to help us.\"";
+ mes "["+@npcname$+"]";
+ mes "\"Perhaps you will have the courage to help us some day.\"";
close2;
goto L_Clearvars;
L_NoMoney:
- mes "["+@NpcName$+"]";
- mes "\"Sorry, but you don't have enough money. Maybe next time.\"";
+ 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 talk to a traveler there so you can quickly travel there in the future.\"";
+ 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 "\"Umm, you are already here. Are you sure you know where you are going?\"";
+ 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;
diff --git a/world/map/npc/items/check_wand.txt b/world/map/npc/items/check_wand.txt
index 43190a85..5a339049 100644
--- a/world/map/npc/items/check_wand.txt
+++ b/world/map/npc/items/check_wand.txt
@@ -48,8 +48,7 @@ L_Loop:
L_SetWand:
set @Wand, $@WandsPwr[@wand_loop];
set @WandID, $@WandsAnim[@wand_loop];
- callfunc "MorganState";
- if (@morgan == 2)
+ if (QL_MORGAN == 2)
goto L_SetCastOnce;
goto L_Return;
@@ -60,8 +59,7 @@ L_LoopAgain:
goto L_Loop;
L_SetCastOnce:
- set @morgan_tmp, 3;
- callfunc "SetMorganMask";
+ set QL_MORGAN, 3;
goto L_Return;
L_Return:
diff --git a/world/map/npc/items/magic_gm_top_hat.txt b/world/map/npc/items/magic_gm_top_hat.txt
index f4f6b078..129aa5c0 100644
--- a/world/map/npc/items/magic_gm_top_hat.txt
+++ b/world/map/npc/items/magic_gm_top_hat.txt
@@ -9,7 +9,7 @@ function|script|ActivateMagicGMTophat
// Display an effect
misceffect FX_CHANNELLING_CAST, strcharinfo(0);
// Log the usage of this spell
- gmcommand "@l "+strcharinfo(0)+" used the Magic GM Top Hat.";
+ gmlog strcharinfo(0)+" used the Magic GM Top Hat.";
return;
L_Inventory:
diff --git a/world/map/npc/items/require_stat.txt b/world/map/npc/items/require_stat.txt
index 40200ea9..87ecf22a 100644
--- a/world/map/npc/items/require_stat.txt
+++ b/world/map/npc/items/require_stat.txt
@@ -4,23 +4,20 @@
// 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 readparam().
+// but can be anything that works with .
// @minbStatVal The minimum stat value to accept this item.
// ------------------------------------------------------------
function|script|RequireStat
{
- set @bStatVal, readparam(@bStat);
+ set @bStatVal, @bStat;
// If the requirement isn't met, we set an unequip trigger.
// The item is now removed.
- if (@bStatVal < @minbStatVal)
+ if (@bStat < @minbStatVal)
goto L_Unequip;
- goto L_Return;
+ return;
L_Unequip:
callfunc "UnequipLater";
- goto L_Return;
-
-L_Return:
return;
}
diff --git a/world/map/npc/items/restricted_item.txt b/world/map/npc/items/restricted_item.txt
index c0084408..9bd1c3d5 100644
--- a/world/map/npc/items/restricted_item.txt
+++ b/world/map/npc/items/restricted_item.txt
@@ -13,8 +13,8 @@ function|script|RestrictedItem
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;
- gmcommand "@wgm Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
- gmcommand "@l Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
+ wgm "Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
+ gmlog "Restricted item '" + @itemId + "' used by character '" + strcharinfo(0) + "'.";
goto L_Return;
L_Return:
diff --git a/world/map/npc/items/scissors.txt b/world/map/npc/items/scissors.txt
index 7e58ae98..44dbbac8 100644
--- a/world/map/npc/items/scissors.txt
+++ b/world/map/npc/items/scissors.txt
@@ -3,7 +3,7 @@ function|script|useScissors
if (rand(3))
goto L_Change;
message strcharinfo(0), "Whoops!";
- itemheal -20 - rand(Hp >> 1), 0;
+ heal -20 - rand(Hp >> 1), 0;
getitem "Scissors", 1;
end;
diff --git a/world/map/npc/items/shock_sweet.txt b/world/map/npc/items/shock_sweet.txt
index e8ff6003..1ae787e3 100644
--- a/world/map/npc/items/shock_sweet.txt
+++ b/world/map/npc/items/shock_sweet.txt
@@ -3,7 +3,7 @@ function|script|useShockSweet
if (rand(5))
goto L_Change;
message strcharinfo(0), "Yuck, this tastes like earwax!";
- itemheal -20 - (Hp >> 2), 0;
+ heal -20 - (Hp >> 2), 0;
end;
L_Change:
diff --git a/world/map/npc/items/unequipcb.txt b/world/map/npc/items/unequipcb.txt
index 1d269d3a..70480acb 100644
--- a/world/map/npc/items/unequipcb.txt
+++ b/world/map/npc/items/unequipcb.txt
@@ -2,7 +2,7 @@
// on any map because of the -1 at the end.
// Note: the client (I think) has a display bug if this is called
// during the intial connection's equip hook
-017-9,0,0,0|script|UnequipCB|-1
+017-9,0,0,0|script|UnequipCB|32767
{
end;
diff --git a/world/map/npc/items/warpTowels.txt b/world/map/npc/items/warpTowels.txt
index 32a52aff..f586ed99 100644
--- a/world/map/npc/items/warpTowels.txt
+++ b/world/map/npc/items/warpTowels.txt
@@ -1,7 +1,8 @@
// See #TravelConfig
function|script|WarpTowel
{
- if (TowelLastUsed > (gettimetick(2) - 1800))
+ set @seconds, TowelLastUsed - (gettimetick(2) - 1800);
+ if (@seconds > 0)
goto L_DontPanic;
if (isin("botcheck",25,27,51,47))
goto L_Prison;
@@ -102,6 +103,13 @@ L_Lime:
set @NextLocationMap$, "006-1";
set @NextLocationX, 28;
set @NextLocationY, 97;
+ if(QUEST_MIRIAM_start != 0) goto L_Cheat;
+ goto L_WarpPlayer;
+
+L_Cheat:
+ set QUEST_MIRIAM_cheat, 1;
+ set QUEST_MIRIAM_run, gettimetick(2) - QUEST_MIRIAM_start;
+ set QUEST_MIRIAM_start, 0;
goto L_WarpPlayer;
L_Save:
@@ -123,15 +131,16 @@ L_BreakChance:
goto L_End;
L_Forbid:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the power of the Towel.";
+ message strcharinfo(0), "##1Towel : This area is protected by a force that doesn't tolerate the power of the Towel.";
goto L_Keep;
L_Prison:
- message strcharinfo(0), "You must be warped by a GM to leave the botcheck area.";
+ message strcharinfo(0), "##1Towel : You must be warped by a GM to leave the botcheck area.";
goto L_Keep;
L_DontPanic:
- message strcharinfo(0), "Your towel is still too low on power to jump again.";
+ callfunc "HumanTime";
+ message strcharinfo(0), "##3Towel : Your towel is still too low on power to jump again. Try again in ##B"+ @time$ + "##b.";
goto L_Keep;
L_Keep:
@@ -168,4 +177,3 @@ L_Return:
cleararray $@warpTowels$, "", getarraysize($@warpTowels$);
return;
}
-
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index d9fbd64d..1414f681 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -27,6 +27,7 @@ npc: npc/functions/global_event_handler.txt
npc: npc/functions/stat_reset.txt
npc: npc/functions/quiz.txt
npc: npc/functions/dynamic_menu.txt
+npc: npc/functions/DyeConfig.txt
// Item Functions
npc: npc/items/magic_gm_top_hat.txt