summaryrefslogtreecommitdiff
path: root/world/map/npc
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc')
-rw-r--r--world/map/npc/001-1/_import.txt2
-rw-r--r--world/map/npc/001-1/banker.txt2
-rw-r--r--world/map/npc/001-1/barber.txt2
-rw-r--r--world/map/npc/001-1/bernard.txt2
-rw-r--r--world/map/npc/001-1/bleacher.txt2
-rw-r--r--world/map/npc/001-1/children.txt67
-rw-r--r--world/map/npc/001-1/dock.txt8
-rw-r--r--world/map/npc/001-1/elanore.txt2
-rw-r--r--world/map/npc/001-1/entertainer.txt2
-rw-r--r--world/map/npc/001-1/luca.txt16
-rw-r--r--world/map/npc/001-1/mapflags.txt1
-rw-r--r--world/map/npc/001-1/merchant.txt2
-rw-r--r--world/map/npc/001-1/mikhail.txt2
-rw-r--r--world/map/npc/001-1/monster_guide.txt5
-rw-r--r--world/map/npc/001-1/rewards_master.txt2
-rw-r--r--world/map/npc/001-1/trader.txt2
-rw-r--r--world/map/npc/001-1/traveler.txt11
-rw-r--r--world/map/npc/001-2/casino.txt10
-rw-r--r--world/map/npc/001-2/mapflags.txt1
-rw-r--r--world/map/npc/001-2/phaet.txt2
-rw-r--r--world/map/npc/001-2/shops.txt14
-rw-r--r--world/map/npc/001-2/troupe_leader.txt2
-rw-r--r--world/map/npc/001-3/_import.txt1
-rw-r--r--world/map/npc/001-3/mapflags.txt2
-rw-r--r--world/map/npc/002-1/_import.txt1
-rw-r--r--world/map/npc/002-1/_warps.txt4
-rw-r--r--world/map/npc/002-1/mapflags.txt1
-rw-r--r--world/map/npc/002-1/nomads.txt6
-rw-r--r--world/map/npc/002-2/_import.txt3
-rw-r--r--world/map/npc/002-2/mapflags.txt1
-rw-r--r--world/map/npc/002-2/traveler.txt11
-rw-r--r--world/map/npc/002-3/_import.txt1
-rw-r--r--world/map/npc/002-3/mapflags.txt1
-rw-r--r--world/map/npc/002-4/_import.txt1
-rw-r--r--world/map/npc/002-4/_warps.txt2
-rw-r--r--world/map/npc/002-4/mapflags.txt1
-rw-r--r--world/map/npc/002-4/naem.txt8
-rw-r--r--world/map/npc/002-5/_import.txt1
-rw-r--r--world/map/npc/002-5/mapflags.txt1
-rw-r--r--world/map/npc/003-1/_import.txt1
-rw-r--r--world/map/npc/003-1/_warps.txt2
-rw-r--r--world/map/npc/003-1/mapflags.txt1
-rw-r--r--world/map/npc/003-1/stranger.txt316
-rw-r--r--world/map/npc/003-2/_import.txt1
-rw-r--r--world/map/npc/003-2/mapflags.txt1
-rw-r--r--world/map/npc/004-1/_import.txt1
-rw-r--r--world/map/npc/004-1/_warps.txt3
-rw-r--r--world/map/npc/004-1/mapflags.txt1
-rw-r--r--world/map/npc/004-2/_import.txt4
-rw-r--r--world/map/npc/004-2/_mobs.txt2
-rw-r--r--world/map/npc/004-2/_warps.txt4
-rw-r--r--world/map/npc/004-2/mapflags.txt1
-rw-r--r--world/map/npc/004-2/pirate_cave_exit.txt18
-rw-r--r--world/map/npc/004-3/_import.txt5
-rw-r--r--world/map/npc/004-3/_mobs.txt31
-rw-r--r--world/map/npc/004-3/_warps.txt10
-rw-r--r--world/map/npc/004-4/_import.txt5
-rw-r--r--world/map/npc/004-4/_mobs.txt33
-rw-r--r--world/map/npc/004-4/_warps.txt9
-rw-r--r--world/map/npc/004-5/_import.txt5
-rw-r--r--world/map/npc/004-5/_mobs.txt36
-rw-r--r--world/map/npc/004-5/_warps.txt4
-rw-r--r--world/map/npc/005-1/_import.txt2
-rw-r--r--world/map/npc/005-1/_mobs.txt8
-rw-r--r--world/map/npc/005-1/_warps.txt2
-rw-r--r--world/map/npc/005-1/mapflags.txt1
-rw-r--r--world/map/npc/005-1/npcs.txt15
-rw-r--r--world/map/npc/005-1/traveler.txt11
-rw-r--r--world/map/npc/005-3/_import.txt1
-rw-r--r--world/map/npc/005-3/mapflags.txt1
-rw-r--r--world/map/npc/006-1/_import.txt2
-rw-r--r--world/map/npc/006-1/_warps.txt6
-rw-r--r--world/map/npc/006-1/mapflags.txt1
-rw-r--r--world/map/npc/006-1/mika.txt2
-rw-r--r--world/map/npc/006-1/pachua.txt15
-rw-r--r--world/map/npc/006-1/traveler.txt11
-rw-r--r--world/map/npc/006-2/_import.txt8
-rw-r--r--world/map/npc/006-2/_mobs.txt9
-rw-r--r--world/map/npc/006-2/_warps.txt7
-rw-r--r--world/map/npc/006-2/mapflags.txt1
-rw-r--r--world/map/npc/006-2/npcs.txt87
-rw-r--r--world/map/npc/006-2/shops.txt5
-rw-r--r--world/map/npc/006-3/_import.txt1
-rw-r--r--world/map/npc/006-3/mapflags.txt1
-rw-r--r--world/map/npc/007-1/_import.txt1
-rw-r--r--world/map/npc/007-1/mapflags.txt1
-rw-r--r--world/map/npc/008-1/_import.txt1
-rw-r--r--world/map/npc/008-1/_warps.txt8
-rw-r--r--world/map/npc/008-1/diryn.txt125
-rw-r--r--world/map/npc/008-1/dock.txt23
-rw-r--r--world/map/npc/008-1/mapflags.txt1
-rw-r--r--world/map/npc/009-1/_import.txt1
-rw-r--r--world/map/npc/009-1/_warps.txt8
-rw-r--r--world/map/npc/009-1/dock.txt8
-rw-r--r--world/map/npc/009-1/mapflags.txt1
-rw-r--r--world/map/npc/009-1/old_woman.txt11
-rw-r--r--world/map/npc/009-1/water_pump.txt2
-rw-r--r--world/map/npc/009-2/airlia.txt11
-rw-r--r--world/map/npc/009-2/alan.txt11
-rw-r--r--world/map/npc/009-2/mapflags.txt1
-rw-r--r--world/map/npc/009-2/nurse.txt24
-rw-r--r--world/map/npc/009-2/wyara.txt12
-rw-r--r--world/map/npc/009-3/_import.txt1
-rw-r--r--world/map/npc/009-3/mapflags.txt1
-rw-r--r--world/map/npc/009-3/sword.txt4
-rw-r--r--world/map/npc/009-3/warp.txt4
-rw-r--r--world/map/npc/009-4/_import.txt1
-rw-r--r--world/map/npc/009-4/mapflags.txt1
-rw-r--r--world/map/npc/009-4/torches.txt18
-rw-r--r--world/map/npc/009-5/mapflags.txt1
-rw-r--r--world/map/npc/009-6/_import.txt1
-rw-r--r--world/map/npc/009-6/_warps.txt2
-rw-r--r--world/map/npc/009-6/mapflags.txt2
-rw-r--r--world/map/npc/010-1/_import.txt1
-rw-r--r--world/map/npc/010-1/mapflags.txt1
-rw-r--r--world/map/npc/010-2/_import.txt1
-rw-r--r--world/map/npc/010-2/chef.txt12
-rw-r--r--world/map/npc/010-2/loratay.txt105
-rw-r--r--world/map/npc/010-2/mapflags.txt1
-rw-r--r--world/map/npc/011-1/_import.txt1
-rw-r--r--world/map/npc/011-1/mapflags.txt1
-rw-r--r--world/map/npc/011-1/shops.txt4
-rw-r--r--world/map/npc/011-3/_import.txt1
-rw-r--r--world/map/npc/011-3/mapflags.txt1
-rw-r--r--world/map/npc/011-4/_import.txt1
-rw-r--r--world/map/npc/011-4/mapflags.txt1
-rw-r--r--world/map/npc/011-6/_import.txt1
-rw-r--r--world/map/npc/011-6/mapflags.txt1
-rw-r--r--world/map/npc/012-1/_import.txt1
-rw-r--r--world/map/npc/012-1/mapflags.txt1
-rw-r--r--world/map/npc/012-1/shops.txt1
-rw-r--r--world/map/npc/012-3/_import.txt2
-rw-r--r--world/map/npc/012-3/mana-seed.txt2
-rw-r--r--world/map/npc/012-3/mapflags.txt1
-rw-r--r--world/map/npc/012-3/traveler.txt11
-rw-r--r--world/map/npc/012-4/_import.txt1
-rw-r--r--world/map/npc/012-4/mapflags.txt1
-rw-r--r--world/map/npc/013-1/_import.txt2
-rw-r--r--world/map/npc/013-1/mapflags.txt1
-rw-r--r--world/map/npc/013-1/traveler.txt7
-rw-r--r--world/map/npc/013-2/_import.txt1
-rw-r--r--world/map/npc/013-2/mapflags.txt1
-rw-r--r--world/map/npc/013-2/notes.txt95
-rw-r--r--world/map/npc/013-3/_import.txt1
-rw-r--r--world/map/npc/013-3/barrier.txt6
-rw-r--r--world/map/npc/013-3/mapflags.txt1
-rw-r--r--world/map/npc/014-1/_import.txt1
-rw-r--r--world/map/npc/014-1/mapflags.txt1
-rw-r--r--world/map/npc/014-3/_import.txt1
-rw-r--r--world/map/npc/014-3/mapflags.txt1
-rw-r--r--world/map/npc/015-1/_import.txt1
-rw-r--r--world/map/npc/015-1/mapflags.txt1
-rw-r--r--world/map/npc/015-3/mapflags.txt1
-rw-r--r--world/map/npc/016-1/_import.txt1
-rw-r--r--world/map/npc/016-1/mapflags.txt1
-rw-r--r--world/map/npc/017-1/_import.txt1
-rw-r--r--world/map/npc/017-1/mapflags.txt1
-rw-r--r--world/map/npc/017-2/_import.txt1
-rw-r--r--world/map/npc/017-2/mapflags.txt1
-rw-r--r--world/map/npc/017-3/_import.txt1
-rw-r--r--world/map/npc/017-3/mapflags.txt1
-rw-r--r--world/map/npc/017-4/_import.txt1
-rw-r--r--world/map/npc/017-4/mapflags.txt1
-rw-r--r--world/map/npc/017-9/_import.txt1
-rw-r--r--world/map/npc/017-9/mapflags.txt1
-rw-r--r--world/map/npc/018-1/_import.txt1
-rw-r--r--world/map/npc/018-1/mapflags.txt1
-rw-r--r--world/map/npc/018-2/_import.txt1
-rw-r--r--world/map/npc/018-2/mapflags.txt1
-rw-r--r--world/map/npc/018-3/_import.txt1
-rw-r--r--world/map/npc/018-3/mapflags.txt1
-rw-r--r--world/map/npc/019-1/_import.txt3
-rw-r--r--world/map/npc/019-1/_mobs.txt2
-rw-r--r--world/map/npc/019-1/_warps.txt2
-rw-r--r--world/map/npc/019-1/mapflags.txt1
-rw-r--r--world/map/npc/019-3/_import.txt1
-rw-r--r--world/map/npc/019-3/mapflags.txt1
-rw-r--r--world/map/npc/019-4/_import.txt1
-rw-r--r--world/map/npc/019-4/mapflags.txt1
-rw-r--r--world/map/npc/020-1/_import.txt2
-rw-r--r--world/map/npc/020-1/dock.txt6
-rw-r--r--world/map/npc/020-1/mapflags.txt1
-rw-r--r--world/map/npc/020-1/traveler.txt7
-rw-r--r--world/map/npc/020-2/baktar.txt135
-rw-r--r--world/map/npc/020-2/mapflags.txt1
-rw-r--r--world/map/npc/020-3/_import.txt1
-rw-r--r--world/map/npc/020-3/mapflags.txt1
-rw-r--r--world/map/npc/021-1/_import.txt2
-rw-r--r--world/map/npc/021-1/_warps.txt9
-rw-r--r--world/map/npc/021-1/bakery.txt2
-rw-r--r--world/map/npc/021-1/gate_guards.txt2
-rw-r--r--world/map/npc/021-1/hideandseek.txt20
-rw-r--r--world/map/npc/021-1/imec.txt2
-rw-r--r--world/map/npc/021-1/mapflags.txt1
-rw-r--r--world/map/npc/021-1/north_shops.txt25
-rw-r--r--world/map/npc/021-1/weellos.txt2
-rw-r--r--world/map/npc/021-1/workers.txt22
-rw-r--r--world/map/npc/021-2/_import.txt6
-rw-r--r--world/map/npc/021-2/_warps.txt12
-rw-r--r--world/map/npc/021-2/bakery.txt21
-rw-r--r--world/map/npc/021-2/forge_shops.txt4
-rw-r--r--world/map/npc/021-2/government_building.txt11
-rw-r--r--world/map/npc/021-2/hotel_receptionist.txt12
-rw-r--r--world/map/npc/021-2/kylian.txt2
-rw-r--r--world/map/npc/021-2/manakins.txt47
-rw-r--r--world/map/npc/021-2/mapflags.txt1
-rw-r--r--world/map/npc/021-2/rebecca.txt11
-rw-r--r--world/map/npc/021-3/_import.txt1
-rw-r--r--world/map/npc/021-3/_mobs.txt15
-rw-r--r--world/map/npc/021-3/mapflags.txt1
-rw-r--r--world/map/npc/022-1/_warps.txt2
-rw-r--r--world/map/npc/022-1/dock.txt49
-rw-r--r--world/map/npc/022-1/ferry_master.txt19
-rw-r--r--world/map/npc/022-1/mapflags.txt1
-rw-r--r--world/map/npc/022-1/tutorial.txt41
-rw-r--r--world/map/npc/023-1/_import.txt5
-rw-r--r--world/map/npc/023-1/_mobs.txt42
-rw-r--r--world/map/npc/023-1/_warps.txt17
-rw-r--r--world/map/npc/023-2/_import.txt5
-rw-r--r--world/map/npc/023-2/_mobs.txt9
-rw-r--r--world/map/npc/023-2/_warps.txt5
-rw-r--r--world/map/npc/023-3/_import.txt5
-rw-r--r--world/map/npc/023-3/_mobs.txt25
-rw-r--r--world/map/npc/023-3/_warps.txt11
-rw-r--r--world/map/npc/024-1/_import.txt1
-rw-r--r--world/map/npc/024-1/mapflags.txt2
-rw-r--r--world/map/npc/024-2/_import.txt1
-rw-r--r--world/map/npc/024-2/mapflags.txt2
-rw-r--r--world/map/npc/025-1/_import.txt1
-rw-r--r--world/map/npc/025-1/mapflags.txt1
-rw-r--r--world/map/npc/025-3/_import.txt1
-rw-r--r--world/map/npc/025-3/mapflags.txt1
-rw-r--r--world/map/npc/025-4/mapflags.txt3
-rw-r--r--world/map/npc/026-1/_import.txt1
-rw-r--r--world/map/npc/026-1/_mobs.txt22
-rw-r--r--world/map/npc/026-1/mapflags.txt1
-rw-r--r--world/map/npc/027-1/_import.txt4
-rw-r--r--world/map/npc/027-1/_mobs.txt40
-rw-r--r--world/map/npc/027-1/crypt.txt11
-rw-r--r--world/map/npc/027-1/golbenez.txt17
-rw-r--r--world/map/npc/027-1/mapflags.txt1
-rw-r--r--world/map/npc/027-1/traveler.txt11
-rw-r--r--world/map/npc/027-2/_import.txt3
-rw-r--r--world/map/npc/027-2/_mobs.txt11
-rw-r--r--world/map/npc/027-2/_warps.txt2
-rw-r--r--world/map/npc/027-2/alacrius.txt56
-rw-r--r--world/map/npc/027-2/alacrius2.txt115
-rw-r--r--world/map/npc/027-2/caretaker.txt19
-rw-r--r--world/map/npc/027-2/golbenez.txt8
-rw-r--r--world/map/npc/027-2/mapflags.txt1
-rw-r--r--world/map/npc/027-2/thurston.txt23
-rw-r--r--world/map/npc/027-3/_import.txt7
-rw-r--r--world/map/npc/027-3/_mobs.txt35
-rw-r--r--world/map/npc/027-3/_warps.txt5
-rw-r--r--world/map/npc/027-3/casket_traps.txt80
-rw-r--r--world/map/npc/027-3/general_krukan_door.txt19
-rw-r--r--world/map/npc/027-3/locked_doors.txt128
-rw-r--r--world/map/npc/027-3/mapflags.txt1
-rw-r--r--world/map/npc/027-3/monsters.txt (renamed from world/map/npc/027-1/monsters.txt)20
-rw-r--r--world/map/npc/027-4/_import.txt6
-rw-r--r--world/map/npc/027-4/_mobs.txt17
-rw-r--r--world/map/npc/027-4/_warps.txt5
-rw-r--r--world/map/npc/027-4/casket_traps.txt80
-rw-r--r--world/map/npc/027-4/general_razha_door.txt19
-rw-r--r--world/map/npc/027-4/mapflags.txt1
-rw-r--r--world/map/npc/027-4/monsters.txt72
-rw-r--r--world/map/npc/027-5/_import.txt8
-rw-r--r--world/map/npc/027-5/_mobs.txt41
-rw-r--r--world/map/npc/027-5/_warps.txt4
-rw-r--r--world/map/npc/027-5/casket_traps.txt80
-rw-r--r--world/map/npc/027-5/general_terogan_door.txt19
-rw-r--r--world/map/npc/027-5/mapflags.txt1
-rw-r--r--world/map/npc/027-6/_import.txt9
-rw-r--r--world/map/npc/027-6/_mobs.txt9
-rw-r--r--world/map/npc/027-6/_warps.txt3
-rw-r--r--world/map/npc/027-6/casket_traps.txt70
-rw-r--r--world/map/npc/027-6/general_krukan.txt231
-rw-r--r--world/map/npc/027-6/general_krukan_exitdoor.txt14
-rw-r--r--world/map/npc/027-6/mapflags.txt2
-rw-r--r--world/map/npc/027-7/_import.txt8
-rw-r--r--world/map/npc/027-7/_mobs.txt9
-rw-r--r--world/map/npc/027-7/_warps.txt3
-rw-r--r--world/map/npc/027-7/general_razha.txt231
-rw-r--r--world/map/npc/027-7/general_razha_exitdoor.txt14
-rw-r--r--world/map/npc/027-7/mapflags.txt2
-rw-r--r--world/map/npc/027-8/_import.txt8
-rw-r--r--world/map/npc/027-8/_mobs.txt9
-rw-r--r--world/map/npc/027-8/_warps.txt3
-rw-r--r--world/map/npc/027-8/general_terogan.txt304
-rw-r--r--world/map/npc/027-8/general_terogan_exitdoor.txt14
-rw-r--r--world/map/npc/027-8/mapflags.txt2
-rw-r--r--world/map/npc/029-1/_import.txt2
-rw-r--r--world/map/npc/029-1/dock.txt24
-rw-r--r--world/map/npc/029-1/mapflags.txt1
-rw-r--r--world/map/npc/029-1/traveler.txt11
-rw-r--r--world/map/npc/029-3/mapflags.txt3
-rw-r--r--world/map/npc/030-1/_import.txt1
-rw-r--r--world/map/npc/030-1/mapflags.txt1
-rw-r--r--world/map/npc/030-2/_import.txt1
-rw-r--r--world/map/npc/030-2/mapflags.txt1
-rw-r--r--world/map/npc/030-3/_import.txt1
-rw-r--r--world/map/npc/030-3/mapflags.txt1
-rw-r--r--world/map/npc/030-3/orum_homunculus.txt3
-rw-r--r--world/map/npc/030-4/mapflags.txt1
-rw-r--r--world/map/npc/031-1/_import.txt1
-rw-r--r--world/map/npc/031-1/dock.txt25
-rw-r--r--world/map/npc/031-1/frozenbeard.txt27
-rw-r--r--world/map/npc/031-1/mapflags.txt1
-rw-r--r--world/map/npc/031-2/_import.txt1
-rw-r--r--world/map/npc/031-2/mapflags.txt1
-rw-r--r--world/map/npc/031-3/_import.txt1
-rw-r--r--world/map/npc/031-3/mapflags.txt1
-rw-r--r--world/map/npc/031-4/mapflags.txt1
-rw-r--r--world/map/npc/032-1/_import.txt1
-rw-r--r--world/map/npc/032-1/mapflags.txt1
-rw-r--r--world/map/npc/032-3/_import.txt1
-rw-r--r--world/map/npc/032-3/mapflags.txt1
-rw-r--r--world/map/npc/033-1/_import.txt4
-rw-r--r--world/map/npc/033-1/_mobs.txt2
-rw-r--r--world/map/npc/033-1/_warps.txt2
-rw-r--r--world/map/npc/033-1/mapflags.txt1
-rw-r--r--world/map/npc/033-1/traveler.txt11
-rw-r--r--world/map/npc/034-1/_import.txt1
-rw-r--r--world/map/npc/034-1/_warps.txt2
-rw-r--r--world/map/npc/034-1/mapflags.txt1
-rw-r--r--world/map/npc/034-2/_import.txt1
-rw-r--r--world/map/npc/034-2/mapflags.txt1
-rw-r--r--world/map/npc/035-2/_import.txt9
-rw-r--r--world/map/npc/035-2/_mobs.txt9
-rw-r--r--world/map/npc/035-2/_warps.txt3
-rw-r--r--world/map/npc/035-2/casino.txt12
-rw-r--r--world/map/npc/035-2/koga.txt33
-rw-r--r--world/map/npc/035-2/mapflags.txt2
-rw-r--r--world/map/npc/035-2/shops.txt13
-rw-r--r--world/map/npc/036-2/_import.txt9
-rw-r--r--world/map/npc/036-2/_mobs.txt9
-rw-r--r--world/map/npc/036-2/_warps.txt3
-rw-r--r--world/map/npc/036-2/casino.txt12
-rw-r--r--world/map/npc/036-2/koga-candor.txt27
-rw-r--r--world/map/npc/036-2/mapflags.txt2
-rw-r--r--world/map/npc/036-2/shops.txt14
-rw-r--r--world/map/npc/041-1/_import.txt1
-rw-r--r--world/map/npc/041-1/mapflags.txt1
-rw-r--r--world/map/npc/041-1/tutorial.txt3
-rw-r--r--world/map/npc/042-1/_import.txt1
-rw-r--r--world/map/npc/042-1/_mobs.txt15
-rw-r--r--world/map/npc/042-1/_warps.txt10
-rw-r--r--world/map/npc/042-1/hasan.txt174
-rw-r--r--world/map/npc/042-1/kaan.txt70
-rw-r--r--world/map/npc/042-1/mapflags.txt1
-rw-r--r--world/map/npc/042-1/valon.txt4
-rw-r--r--world/map/npc/042-2/_warps.txt6
-rw-r--r--world/map/npc/042-2/mapflags.txt1
-rw-r--r--world/map/npc/042-2/sorfina.txt93
-rw-r--r--world/map/npc/042-2/tanisha.txt73
-rw-r--r--world/map/npc/043-1/_import.txt2
-rw-r--r--world/map/npc/043-1/_warps.txt2
-rw-r--r--world/map/npc/043-1/mapflags.txt1
-rw-r--r--world/map/npc/043-1/ryger.txt11
-rw-r--r--world/map/npc/043-3/_import.txt1
-rw-r--r--world/map/npc/043-3/mapflags.txt1
-rw-r--r--world/map/npc/043-4/_import.txt1
-rw-r--r--world/map/npc/043-4/mapflags.txt1
-rw-r--r--world/map/npc/044-1/_import.txt4
-rw-r--r--world/map/npc/044-1/_mobs.txt2
-rw-r--r--world/map/npc/044-1/_warps.txt4
-rw-r--r--world/map/npc/044-1/mapflags.txt1
-rw-r--r--world/map/npc/044-1/traveler.txt11
-rw-r--r--world/map/npc/044-3/_import.txt1
-rw-r--r--world/map/npc/044-3/mapflags.txt1
-rw-r--r--world/map/npc/045-1/_import.txt1
-rw-r--r--world/map/npc/045-1/mapflags.txt1
-rw-r--r--world/map/npc/046-1/_import.txt1
-rw-r--r--world/map/npc/046-1/_warps.txt18
-rw-r--r--world/map/npc/046-1/mapflags.txt1
-rw-r--r--world/map/npc/046-3/_import.txt1
-rw-r--r--world/map/npc/046-3/_warps.txt12
-rw-r--r--world/map/npc/046-3/mapflags.txt1
-rw-r--r--world/map/npc/047-1/_import.txt1
-rw-r--r--world/map/npc/047-1/_warps.txt8
-rw-r--r--world/map/npc/047-1/mapflags.txt1
-rw-r--r--world/map/npc/048-1/_import.txt1
-rw-r--r--world/map/npc/048-1/_warps.txt6
-rw-r--r--world/map/npc/048-1/mapflags.txt1
-rw-r--r--world/map/npc/048-2/_import.txt2
-rw-r--r--world/map/npc/048-2/mapflags.txt1
-rw-r--r--world/map/npc/048-2/traveler.txt11
-rw-r--r--world/map/npc/051-1/mapflags.txt1
-rw-r--r--world/map/npc/051-3/mapflags.txt1
-rw-r--r--world/map/npc/052-1/mapflags.txt1
-rw-r--r--world/map/npc/052-2/mapflags.txt1
-rw-r--r--world/map/npc/055-1/_import.txt2
-rw-r--r--world/map/npc/055-1/mapflags.txt1
-rw-r--r--world/map/npc/055-1/traveler.txt11
-rw-r--r--world/map/npc/055-3/_import.txt1
-rw-r--r--world/map/npc/055-3/mapflags.txt1
-rw-r--r--world/map/npc/056-1/_import.txt1
-rw-r--r--world/map/npc/056-1/mapflags.txt1
-rw-r--r--world/map/npc/057-1/_import.txt1
-rw-r--r--world/map/npc/057-1/mapflags.txt1
-rw-r--r--world/map/npc/068-1/_import.txt8
-rw-r--r--world/map/npc/068-1/_mobs.txt24
-rw-r--r--world/map/npc/068-1/_warps.txt15
-rw-r--r--world/map/npc/068-1/stat_reset.txt (renamed from world/map/npc/002-2/rogue.txt)2
-rw-r--r--world/map/npc/068-1/tombstones.txt36
-rw-r--r--world/map/npc/068-1/vendors.txt0
-rw-r--r--world/map/npc/068-2/_import.txt9
-rw-r--r--world/map/npc/068-2/_mobs.txt15
-rw-r--r--world/map/npc/068-2/_warps.txt13
-rw-r--r--world/map/npc/068-2/bank.txt (renamed from world/map/npc/021-2/bank.txt)2
-rw-r--r--world/map/npc/068-2/hetchel.txt (renamed from world/map/npc/021-1/hetchel.txt)2
-rw-r--r--world/map/npc/068-2/inya.txt (renamed from world/map/npc/021-2/inya.txt)2
-rw-r--r--world/map/npc/068-2/latoy.txt34
-rw-r--r--world/map/npc/068-3/_import.txt5
-rw-r--r--world/map/npc/068-3/_mobs.txt61
-rw-r--r--world/map/npc/068-3/_warps.txt4
-rw-r--r--world/map/npc/069-1/_import.txt5
-rw-r--r--world/map/npc/069-1/_mobs.txt9
-rw-r--r--world/map/npc/069-1/_warps.txt20
-rw-r--r--world/map/npc/069-2/_import.txt6
-rw-r--r--world/map/npc/069-2/_mobs.txt9
-rw-r--r--world/map/npc/069-2/_warps.txt17
-rw-r--r--world/map/npc/069-2/wizards.txt60
-rw-r--r--world/map/npc/069-3/_import.txt5
-rw-r--r--world/map/npc/069-3/_mobs.txt61
-rw-r--r--world/map/npc/069-3/_warps.txt4
-rw-r--r--world/map/npc/_import.txt17
-rw-r--r--world/map/npc/functions/clear_vars.txt22
-rwxr-xr-xworld/map/npc/functions/debug.txt10
-rw-r--r--world/map/npc/functions/default_npc_checks.txt125
-rw-r--r--world/map/npc/functions/ferry.txt175
-rw-r--r--world/map/npc/functions/soul_menhir.txt8
-rw-r--r--world/map/npc/functions/travelers.txt279
-rw-r--r--world/map/npc/functions/undead_debug.txt106
-rw-r--r--world/map/npc/items/warpTowels.txt490
-rw-r--r--world/map/npc/scripts.conf3
436 files changed, 4838 insertions, 1772 deletions
diff --git a/world/map/npc/001-1/_import.txt b/world/map/npc/001-1/_import.txt
index d9ac43d6..de0b02ab 100644
--- a/world/map/npc/001-1/_import.txt
+++ b/world/map/npc/001-1/_import.txt
@@ -10,6 +10,7 @@ npc: npc/001-1/bernard.txt
npc: npc/001-1/bleacher.txt
npc: npc/001-1/children.txt
npc: npc/001-1/constable.txt
+npc: npc/001-1/dock.txt
npc: npc/001-1/elanore.txt
npc: npc/001-1/entertainer.txt
npc: npc/001-1/gossip.txt
@@ -26,4 +27,5 @@ npc: npc/001-1/sandra.txt
npc: npc/001-1/sarah.txt
npc: npc/001-1/soul-menhir.txt
npc: npc/001-1/trader.txt
+npc: npc/001-1/traveler.txt
npc: npc/001-1/vincent.txt
diff --git a/world/map/npc/001-1/banker.txt b/world/map/npc/001-1/banker.txt
index aee3e4ba..ddd1d4e3 100644
--- a/world/map/npc/001-1/banker.txt
+++ b/world/map/npc/001-1/banker.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,57,52,0|script|Tybalt|107,
+001-1.gat,58,50,0|script|Tybalt|107,
{
callfunc "ClearVariables";
set @npcname$, "Tybalt";
diff --git a/world/map/npc/001-1/barber.txt b/world/map/npc/001-1/barber.txt
index 94525bd5..53d60778 100644
--- a/world/map/npc/001-1/barber.txt
+++ b/world/map/npc/001-1/barber.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,53,38,0|script|Nicolas|100,
+001-1.gat,52,36,0|script|Nicolas|100,
{
mes "[Nicolas the Barber]";
mes "\"Do you need a barber?\"";
diff --git a/world/map/npc/001-1/bernard.txt b/world/map/npc/001-1/bernard.txt
index c152f673..67217bfa 100644
--- a/world/map/npc/001-1/bernard.txt
+++ b/world/map/npc/001-1/bernard.txt
@@ -1,6 +1,6 @@
// Variables used: nibble 0 of QUEST_SouthTulimshar
-001-1.gat,37,44,0|script|Bernard|117,
+001-1.gat,35,43,0|script|Bernard|117,
{
// This NPC previously used the variable TMW_Quest
callfunc "ClearVarTMW_Quest";
diff --git a/world/map/npc/001-1/bleacher.txt b/world/map/npc/001-1/bleacher.txt
index b43f0505..e6fada9c 100644
--- a/world/map/npc/001-1/bleacher.txt
+++ b/world/map/npc/001-1/bleacher.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,27,53,0|script|Candide|156,
+001-1.gat,29,50,0|script|Candide|156,
{
mes "[Candide]";
mes "\"I've figured out how that volcanic ash bleaches cloth.";
diff --git a/world/map/npc/001-1/children.txt b/world/map/npc/001-1/children.txt
index 60477015..913f766b 100644
--- a/world/map/npc/001-1/children.txt
+++ b/world/map/npc/001-1/children.txt
@@ -1,8 +1,8 @@
-// Aisha and Nina
+// Aisha
001-1.gat,95,29,0|script|Aisha|108,
{
- set @TEMP,rand(9);
+ set @TEMP,rand(10);
if(@TEMP == 1) goto L_1;
if(@TEMP == 2) goto L_2;
if(@TEMP == 3) goto L_3;
@@ -11,6 +11,7 @@
if(@TEMP == 6) goto L_6;
if(@TEMP == 7) goto L_7;
if(@TEMP == 8) goto L_8;
+ if(@TEMP == 9) goto L_9;
goto L_1;
L_1:
@@ -53,58 +54,6 @@ L_8:
mes "\"That volcano was sooo scary! The earth was shaking and everything was breaking down... but now they have rebuilt everything.\"";
goto L_Close;
-L_Close:
- set @TEMP, 0;
- close;
-}
-
-001-1.gat,39,67,0|script|Nina|103,
-{
- mes "[Nina]";
- set @TEMP,rand(10);
- if(@TEMP == 0) goto L_1;
- if(@TEMP == 1) goto L_1;
- if(@TEMP == 2) goto L_2;
- if(@TEMP == 3) goto L_3;
- if(@TEMP == 4) goto L_4;
- if(@TEMP == 5) goto L_5;
- if(@TEMP == 6) goto L_6;
- if(@TEMP == 7) goto L_7;
- if(@TEMP == 8) goto L_8;
- goto L_9;
-
-L_1:
- mes "\"If I learned anything from school, Grenxen founded Tulimshar.\"";
- goto L_Close;
-
-L_2:
- mes "\"When I was picking rocks from the field, I saw a red scorpion.\"";
- goto L_Close;
-
-L_3:
- mes "\"Its polite to state your name before talking to anyone.\"";
- goto L_Close;
-
-L_4:
- mes "\"I have a Scorpion Doll!\"";
- goto L_Close;
-
-L_5:
- mes "\"I always take some spare Cactus Juice with me on the field. They are heavy, though.\"";
- goto L_Close;
-
-L_6:
- mes "\"When you are feeling bad, eating something can usually help you heal faster.\"";
- goto L_Close;
-
-L_7:
- mes "\"Grenxen is the Demon that founded Tulimshar.\"";
- goto L_Close;
-
-L_8:
- mes "\"That volcano eruption was scary; much of Tulimshar was destroyed. But the mayor had everything rebuilt quickly.\"";
- 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!\"";
next;
@@ -113,7 +62,7 @@ L_9:
"Oh, you better keep it for yourself then.", L_Close;
L_tell:
- mes "[Nina]";
+ mes "[Aisha]";
mes "\"Yes, I heard my mother say it once. And she made me promise her to never say it. Never.\"";
next;
menu
@@ -122,17 +71,17 @@ L_tell:
"Goodbye!", L_Close;
L_keepword:
- mes "[Nina]";
+ mes "[Aisha]";
mes "\"No.\"";
goto L_Close;
L_giveword:
- mes "[Nina]";
- mes "Nina looks around as she hushes you to silence. After a few seconds, she whispers to you.";
+ 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") + "'.\"";
next;
- mes "[Nina]";
+ mes "[Aisha]";
mes "Terrified, she looks around once more.";
mes "\"But you mustn't tell anyone!\"";
goto L_Close;
diff --git a/world/map/npc/001-1/dock.txt b/world/map/npc/001-1/dock.txt
new file mode 100644
index 00000000..f0cb0a77
--- /dev/null
+++ b/world/map/npc/001-1/dock.txt
@@ -0,0 +1,8 @@
+// Ferry Sign
+// Author: Wushin
+001-1.gat,48,71,0|script|Ferry Schedule#1|396,
+{
+ callfunc "FerryManifest";
+ end;
+}
+
diff --git a/world/map/npc/001-1/elanore.txt b/world/map/npc/001-1/elanore.txt
index 87ef060d..262f8aca 100644
--- a/world/map/npc/001-1/elanore.txt
+++ b/world/map/npc/001-1/elanore.txt
@@ -82,7 +82,7 @@ L_Heal4:
goto L_Heal_L;
L_Heal_L:
- set @TEMP,rand(4);
+ set @TEMP,rand(3);
if(@TEMP == 1) goto L_Heal_2;
if(@TEMP == 2) goto L_Heal_3;
if(@TEMP == 3) goto L_Heal_4;
diff --git a/world/map/npc/001-1/entertainer.txt b/world/map/npc/001-1/entertainer.txt
index f98b7d31..fea4f532 100644
--- a/world/map/npc/001-1/entertainer.txt
+++ b/world/map/npc/001-1/entertainer.txt
@@ -1,6 +1,6 @@
// Emote NPC allows for players to learn the emote skill
-001-1.gat,30,45,0|script|Entertainer|165,
+001-1.gat,30,43,0|script|Entertainer|165,
{
if (getskilllv(SKILL_EMOTE) > 0) goto L_Has;
diff --git a/world/map/npc/001-1/luca.txt b/world/map/npc/001-1/luca.txt
index 61d27cd4..84d9491b 100644
--- a/world/map/npc/001-1/luca.txt
+++ b/world/map/npc/001-1/luca.txt
@@ -60,12 +60,9 @@ L_Next:
menu
"Yeah!", L_teach0_follow,
"Certainly!", L_teach0_follow,
- "Wait... what do you mean?", L_CallExplain,
- "Please explain some more.", L_CallExplain,
+ "Wait... what do you mean?", L_Explain,
+ "Please explain some more.", L_Explain,
"No.", L_Nev;
-L_CallExplain:
- callsub S_explain;
- goto L_teach0_follow;
L_teach0_follow:
mes "[Luca the Hunter]";
@@ -138,7 +135,7 @@ L_wronganswer:
mes "\"No, that was wrong. I suppose you're not as experienced as I thought you'd be.\"";
goto L_Close;
-S_explain:
+L_Explain:
mes "[Luca the Hunter]";
mes "\"Alright, what do you want to know?\"";
next;
@@ -149,9 +146,7 @@ L_Explain_loop:
"What's skill focus?", L_explain_focus,
"What skills are there?", L_explain_skills,
"How do skills work?", L_explain_work,
- "Thanks, I think I got it!", L_Return;
-L_Return:
- return;
+ "Thanks, I think I got it!", L_Next;
L_explain_focus:
mes "[Luca the Hunter]";
@@ -292,8 +287,7 @@ L_MenuItems:
goto L_Close;
L_teachmore_explain:
- callsub S_explain;
- goto L_teachmore2;
+ goto L_Explain;
L_focus:
getunactivatedpoolskilllist;
diff --git a/world/map/npc/001-1/mapflags.txt b/world/map/npc/001-1/mapflags.txt
index 9ddca41d..08b77ab5 100644
--- a/world/map/npc/001-1/mapflags.txt
+++ b/world/map/npc/001-1/mapflags.txt
@@ -1 +1,2 @@
001-1.gat|mapflag|town
+001-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/001-1/merchant.txt b/world/map/npc/001-1/merchant.txt
index 43a5da55..ea51d12e 100644
--- a/world/map/npc/001-1/merchant.txt
+++ b/world/map/npc/001-1/merchant.txt
@@ -1,3 +1,3 @@
//
-001-1.gat,39,52,0|shop|Neko|101,CactusDrink :-1,CactusPotion :-1,Knife :-1,SharpKnife :-1,Dagger :-1,SerfHat :-1,CottonShirt :-1,LeatherShirt :-1,CottonShorts :-1,LeatherShield :-1,CottonHeadband :-1,CottonBoots :-1
+001-1.gat,38,50,0|shop|Neko|101,CactusDrink :-1,CactusPotion :-1,Beer :-1,ChickenLeg :-2
diff --git a/world/map/npc/001-1/mikhail.txt b/world/map/npc/001-1/mikhail.txt
index b2b6d64d..63f29353 100644
--- a/world/map/npc/001-1/mikhail.txt
+++ b/world/map/npc/001-1/mikhail.txt
@@ -1,6 +1,6 @@
// Variables used: nibble 0 of QUEST_SouthTulimshar
-001-1.gat,50,46,0|script|Mikhail|120,
+001-1.gat,54,43,0|script|Mikhail|120,
{
// This NPC previously used the variable TMW_Quest
callfunc "ClearVarTMW_Quest";
diff --git a/world/map/npc/001-1/monster_guide.txt b/world/map/npc/001-1/monster_guide.txt
index d0313645..a46dfc28 100644
--- a/world/map/npc/001-1/monster_guide.txt
+++ b/world/map/npc/001-1/monster_guide.txt
@@ -1,8 +1,9 @@
//
-001-1.gat,48,52,0|script|Aidan|102,
+001-1.gat,49,51,0|script|Aidan|102,
{
- if(MPQUEST == 0) goto L_Register;
+ if (MPQUEST == 0)
+ goto L_Register;
mes "[Aidan the Monster Guide]";
mes "You currently have " +Mobpt+ " Monster Points. These points are acquired while killing monsters";
close;
diff --git a/world/map/npc/001-1/rewards_master.txt b/world/map/npc/001-1/rewards_master.txt
index 0e8fbe1f..1ae6b168 100644
--- a/world/map/npc/001-1/rewards_master.txt
+++ b/world/map/npc/001-1/rewards_master.txt
@@ -1,6 +1,6 @@
//
-001-1.gat,50,53,0|script|Ishi|106,
+001-1.gat,50,51,0|script|Ishi|106,
{
if (MPQUEST == 0) goto L_Register;
if (tvis == 0) set tvis, 1;
diff --git a/world/map/npc/001-1/trader.txt b/world/map/npc/001-1/trader.txt
index eaf95ffd..63108d51 100644
--- a/world/map/npc/001-1/trader.txt
+++ b/world/map/npc/001-1/trader.txt
@@ -3,7 +3,7 @@
// Updated by: TheKandiman
// Reviewed by: Wombat
-001-1.gat,57,33,0|script|Trader|115,
+001-1.gat,57,31,0|script|Trader|115,
{
set @Ironprice, 1000;
set @Sulphurprice, 1200;
diff --git a/world/map/npc/001-1/traveler.txt b/world/map/npc/001-1/traveler.txt
new file mode 100644
index 00000000..20cc0916
--- /dev/null
+++ b/world/map/npc/001-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+001-1.gat,39,67,0|script|Nina the Traveler|103,
+{
+ set @NpcName$, "Nina";
+ set @NpcTravelBit, $@tulimshar_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/001-2/casino.txt b/world/map/npc/001-2/casino.txt
index e14decd6..1c9c61cf 100644
--- a/world/map/npc/001-2/casino.txt
+++ b/world/map/npc/001-2/casino.txt
@@ -15,32 +15,32 @@ L_End:
end;
}
-001-2.gat,134,23,0|script|Valdo|117,
+001-2.gat,39,32,0|script|Valdo|117,
{
mes "[Valdo the Worker]";
mes "\"Please let me work. I'm really in a hurry!\"";
close;
}
-001-2.gat,37,65,0|script|Slot1|400,
+001-2.gat,37,65,0|script|Slots#1|400,
{
callfunc "SlotMachine";
close;
}
-001-2.gat,39,65,0|script|Slot2|400,
+001-2.gat,39,65,0|script|Slots#2|400,
{
callfunc "SlotMachine";
close;
}
-001-2.gat,41,65,0|script|Slot3|400,
+001-2.gat,41,65,0|script|Slots#3|400,
{
callfunc "SlotMachine";
close;
}
-001-2.gat,32,67,0|shop|MoneyChanger|124,CasinoCoins :-1
+001-2.gat,102,27,0|shop|MoneyChanger|124,CasinoCoins :-1
001-2.gat,28,63,0|script|BlackJack|107,
{
diff --git a/world/map/npc/001-2/mapflags.txt b/world/map/npc/001-2/mapflags.txt
index 6a7c6a90..41bab423 100644
--- a/world/map/npc/001-2/mapflags.txt
+++ b/world/map/npc/001-2/mapflags.txt
@@ -1 +1,2 @@
001-2.gat|mapflag|town
+001-2.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/001-2/phaet.txt b/world/map/npc/001-2/phaet.txt
index ebeaa4a0..5711047e 100644
--- a/world/map/npc/001-2/phaet.txt
+++ b/world/map/npc/001-2/phaet.txt
@@ -1,6 +1,6 @@
//
-001-2.gat,24,23,0|script|Phaet|125,
+001-2.gat,132,25,0|script|Phaet|125,0,0,
{
mes "[Phaet the Royal Guard]";
mes "\"Hey, you seem tough enough! Would you like to prove your skills? I'll let you in the arena if you give me 50 gp. You can fight against other players there.\"";
diff --git a/world/map/npc/001-2/shops.txt b/world/map/npc/001-2/shops.txt
index 1857a5df..00db7c93 100644
--- a/world/map/npc/001-2/shops.txt
+++ b/world/map/npc/001-2/shops.txt
@@ -1,13 +1,3 @@
-//
+// Bartender
-001-2.gat,26,26,0|shop|InnKeeper|112,Beer :-1,Cake :-1,CherryCake :-1
-
-001-2.gat,103,26,0|script|Rebecca|118,
-{
- set @npcname$, "Rebecca the Inn Keeper";
- set @cost, 100;
- callfunc "Inn";
- set @npcname$, "";
- set @cost, 0;
- close;
-}
+001-2.gat,21,27,0|shop|Bartender#Casino|112,Beer :-1,Cake :-1,CherryCake :-1
diff --git a/world/map/npc/001-2/troupe_leader.txt b/world/map/npc/001-2/troupe_leader.txt
index f48cd51a..996e14e7 100644
--- a/world/map/npc/001-2/troupe_leader.txt
+++ b/world/map/npc/001-2/troupe_leader.txt
@@ -1,6 +1,6 @@
//
-001-2.gat,34,25,0|script|Troupe Leader|165,
+001-2.gat,34,23,0|script|Troupe Leader|165,
{
callfunc "ClearVariables";
diff --git a/world/map/npc/001-3/_import.txt b/world/map/npc/001-3/_import.txt
index f28f0dbb..cb5f8125 100644
--- a/world/map/npc/001-3/_import.txt
+++ b/world/map/npc/001-3/_import.txt
@@ -4,4 +4,5 @@ map: 001-3.gat
npc: npc/001-3/_mobs.txt
npc: npc/001-3/_warps.txt
npc: npc/001-3/guards.txt
+npc: npc/001-3/mapflags.txt
npc: npc/001-3/pvpflag.txt
diff --git a/world/map/npc/001-3/mapflags.txt b/world/map/npc/001-3/mapflags.txt
new file mode 100644
index 00000000..9d9d2fe2
--- /dev/null
+++ b/world/map/npc/001-3/mapflags.txt
@@ -0,0 +1,2 @@
+001-3.gat|mapflag|nosave|001-1,57,71
+001-3.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/002-1/_import.txt b/world/map/npc/002-1/_import.txt
index 2738eb37..bb56994f 100644
--- a/world/map/npc/002-1/_import.txt
+++ b/world/map/npc/002-1/_import.txt
@@ -4,6 +4,7 @@ map: 002-1.gat
npc: npc/002-1/_mobs.txt
npc: npc/002-1/_warps.txt
npc: npc/002-1/lieutenant_dausen.txt
+npc: npc/002-1/mapflags.txt
npc: npc/002-1/nickos.txt
npc: npc/002-1/nomads.txt
npc: npc/002-1/stewen.txt
diff --git a/world/map/npc/002-1/_warps.txt b/world/map/npc/002-1/_warps.txt
index b86304b9..f201c926 100644
--- a/world/map/npc/002-1/_warps.txt
+++ b/world/map/npc/002-1/_warps.txt
@@ -2,9 +2,9 @@
// Sandstorm Desert warps
002-1.gat,58,13|warp|To South Tulimshar|3,-1,001-1.gat,44,86
-002-1.gat,12,67|warp|To Beach|-1,3,003-1.gat,171,76
-002-1.gat,28,13|warp|To Beach|1,-1,004-1.gat,84,114
002-1.gat,79,99|warp|To Desert Mine Camp|-1,-1,002-3.gat,85,49
002-1.gat,20,94|warp|To Desert Mine Camp|-1,-1,002-3.gat,51,33
002-1.gat,104,92|warp|To Mystics House|-1,-1,002-2.gat,28,29
002-1.gat,108,79|warp|To Snake Desert|-1,1,005-1.gat,20,40
+002-1.gat,12,67|warp|To Beach|-1,3,003-1.gat,171,76
+002-1.gat,28,13|warp|To Beach|1,-1,004-1.gat,84,114
diff --git a/world/map/npc/002-1/mapflags.txt b/world/map/npc/002-1/mapflags.txt
new file mode 100644
index 00000000..2fabcfb8
--- /dev/null
+++ b/world/map/npc/002-1/mapflags.txt
@@ -0,0 +1 @@
+002-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/002-1/nomads.txt b/world/map/npc/002-1/nomads.txt
index 2d93ffe4..c701efbe 100644
--- a/world/map/npc/002-1/nomads.txt
+++ b/world/map/npc/002-1/nomads.txt
@@ -1,6 +1,6 @@
//
-002-1.gat,15,67,0|script|Samuel|132,
+002-1.gat,92,100,0|script|Samuel|132,
{
mes "[Samuel the Nomad]";
mes "\"This is really a nice place.\"";
@@ -8,9 +8,9 @@
close;
}
-002-1.gat,18,68,0|script|Elijah|128,
+002-1.gat,102,100,0|script|Elijah|128,
{
mes "[Elijah the Nomad]";
- mes "\"If I only had a tent...\"";
+ mes "\"It's nice to find a respite like this...\"";
close;
}
diff --git a/world/map/npc/002-2/_import.txt b/world/map/npc/002-2/_import.txt
index 6108ea70..0cccabbf 100644
--- a/world/map/npc/002-2/_import.txt
+++ b/world/map/npc/002-2/_import.txt
@@ -3,4 +3,5 @@
map: 002-2.gat
npc: npc/002-2/_mobs.txt
npc: npc/002-2/_warps.txt
-npc: npc/002-2/rogue.txt
+npc: npc/002-2/mapflags.txt
+npc: npc/002-2/traveler.txt
diff --git a/world/map/npc/002-2/mapflags.txt b/world/map/npc/002-2/mapflags.txt
new file mode 100644
index 00000000..c23a7f11
--- /dev/null
+++ b/world/map/npc/002-2/mapflags.txt
@@ -0,0 +1 @@
+002-2.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/002-2/traveler.txt b/world/map/npc/002-2/traveler.txt
new file mode 100644
index 00000000..609d8cee
--- /dev/null
+++ b/world/map/npc/002-2/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+002-2.gat,25,28,0|script|Jena the Traveler|103,
+{
+ set @NpcName$, "Jena";
+ set @NpcTravelBit, $@tul_mine_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/002-3/_import.txt b/world/map/npc/002-3/_import.txt
index 83f6f548..47aab35a 100644
--- a/world/map/npc/002-3/_import.txt
+++ b/world/map/npc/002-3/_import.txt
@@ -3,6 +3,7 @@
map: 002-3.gat
npc: npc/002-3/_mobs.txt
npc: npc/002-3/_warps.txt
+npc: npc/002-3/mapflags.txt
npc: npc/002-3/merchant.txt
npc: npc/002-3/mining_camp_barrier.txt
npc: npc/002-3/nathan.txt
diff --git a/world/map/npc/002-3/mapflags.txt b/world/map/npc/002-3/mapflags.txt
new file mode 100644
index 00000000..6c79bfef
--- /dev/null
+++ b/world/map/npc/002-3/mapflags.txt
@@ -0,0 +1 @@
+002-3.gat|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/002-4/_import.txt b/world/map/npc/002-4/_import.txt
index 09530371..1e4dad6c 100644
--- a/world/map/npc/002-4/_import.txt
+++ b/world/map/npc/002-4/_import.txt
@@ -3,6 +3,7 @@
map: 002-4.gat
npc: npc/002-4/_mobs.txt
npc: npc/002-4/_warps.txt
+npc: npc/002-4/mapflags.txt
npc: npc/002-4/mine_triggerone.txt
npc: npc/002-4/mine_triggerthree.txt
npc: npc/002-4/mine_triggertwo.txt
diff --git a/world/map/npc/002-4/_warps.txt b/world/map/npc/002-4/_warps.txt
index 072d2ba2..900b8d5e 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 changes will be removed when running the Converter.
// Desert Mines warps
-002-4.gat,37,29|warp|To Mining camp|-1,-1,002-3.gat,82,30
+002-4.gat,37,29|warp|To Mining Camp|-1,-1,002-3.gat,82,30
diff --git a/world/map/npc/002-4/mapflags.txt b/world/map/npc/002-4/mapflags.txt
new file mode 100644
index 00000000..7fdafe55
--- /dev/null
+++ b/world/map/npc/002-4/mapflags.txt
@@ -0,0 +1 @@
+002-4.gat|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/002-4/naem.txt b/world/map/npc/002-4/naem.txt
index 398ef514..1d3b1d2c 100644
--- a/world/map/npc/002-4/naem.txt
+++ b/world/map/npc/002-4/naem.txt
@@ -132,14 +132,14 @@ L_Naem_Gloves:
mes "\"Hey, good job on getting that together! Take these gloves, they might prove useful in the underground palace.\"";
goto L_Close;
-L_Naem_TooMany:
+L_Naem_Complete:
mes "[Naem]";
- mes "\"You have too many items for me to give you a reward.\"";
+ mes "\"Yo-ho-ho, a miner's life for me!\"";
goto L_Close;
-L_Naem_Complete:
+L_Naem_TooMany:
mes "[Naem]";
- mes "\"Yo-ho-ho, a miner's life for me!\"";
+ mes "\"You have too many items for me to give you a reward.\"";
goto L_Close;
L_Close:
diff --git a/world/map/npc/002-5/_import.txt b/world/map/npc/002-5/_import.txt
index e12c5372..ee1ca825 100644
--- a/world/map/npc/002-5/_import.txt
+++ b/world/map/npc/002-5/_import.txt
@@ -4,4 +4,5 @@ map: 002-5.gat
npc: npc/002-5/_mobs.txt
npc: npc/002-5/_warps.txt
npc: npc/002-5/chest.txt
+npc: npc/002-5/mapflags.txt
npc: npc/002-5/sema.txt
diff --git a/world/map/npc/002-5/mapflags.txt b/world/map/npc/002-5/mapflags.txt
new file mode 100644
index 00000000..38e2b3bd
--- /dev/null
+++ b/world/map/npc/002-5/mapflags.txt
@@ -0,0 +1 @@
+002-5.gat|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/003-1/_import.txt b/world/map/npc/003-1/_import.txt
index 02340ca2..4ab3384f 100644
--- a/world/map/npc/003-1/_import.txt
+++ b/world/map/npc/003-1/_import.txt
@@ -3,4 +3,5 @@
map: 003-1.gat
npc: npc/003-1/_mobs.txt
npc: npc/003-1/_warps.txt
+npc: npc/003-1/mapflags.txt
npc: npc/003-1/stranger.txt
diff --git a/world/map/npc/003-1/_warps.txt b/world/map/npc/003-1/_warps.txt
index 0adea8a4..0d99d333 100644
--- a/world/map/npc/003-1/_warps.txt
+++ b/world/map/npc/003-1/_warps.txt
@@ -5,4 +5,4 @@
003-1.gat,141,19|warp|To Beach|1,-1,004-1.gat,37,110
003-1.gat,48,36|warp|To Beach House|-1,-1,003-2.gat,22,28
003-1.gat,59,29|warp|To Beach Storage|-1,-1,003-2.gat,56,28
-003-1.gat,114,117|warp|To Beach|1,-1,043-1.gat,44,20
+003-1.gat,114,117|warp|To Beach|2,-1,043-1.gat,44,20
diff --git a/world/map/npc/003-1/mapflags.txt b/world/map/npc/003-1/mapflags.txt
new file mode 100644
index 00000000..682c6a82
--- /dev/null
+++ b/world/map/npc/003-1/mapflags.txt
@@ -0,0 +1 @@
+003-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/003-1/stranger.txt b/world/map/npc/003-1/stranger.txt
index e264743b..cc1114ff 100644
--- a/world/map/npc/003-1/stranger.txt
+++ b/world/map/npc/003-1/stranger.txt
@@ -1,17 +1,12 @@
003-1.gat,35,25,0|script|Stranger|192,
{
- set @month, 5;
- set @start_day, 18;
- set @end_day, 25;
set @IRONINGOT, 5;
set @PINKANTENNA, 21;
- set @EXP, 20000;
+ set @Exp, 20000;
+ setarray @towelReq$, "WhiteHitchhikersTowel","RedHitchhikersTowel","GreenHitchhikersTowel","BlueHitchhikersTowel","YellowHitchhikersTowel","PurpleHitchhikersTowel","OrangeHitchhikersTowel","PinkHitchhikersTowel","TealHitchhikersTowel","LimeHitchhikersTowel","HitchhikersTowel";
if (FLAGS & FLAG_TOWEL_COMPLETED) goto L_Event_Done;
- if (gettime(6) != @month) goto L_No_Event;
- if (gettime(5) < @start_day) goto L_No_Event;
- if (gettime(5) > @end_day) goto L_No_Event;
- if ((gettimetick(2)-TUT_var < 6*7*86400) || (BaseLevel < 42 )) //player must be created at least 6 weeks ago and at least level 42
+ if ((gettimetick(2)-TUT_var < 6*7*86400) || (BaseLevel < 42)) //player must be created at least 6 weeks ago and at least level 42
goto L_No_Event;
if (FLAGS & FLAG_TOWEL_HELPED) goto L_Towel;
@@ -32,7 +27,7 @@ L_Items:
if (countitem("PinkAntenna") < @PINKANTENNA) goto L_No_Item;
delitem "IronIngot", @IRONINGOT;
delitem "PinkAntenna", @PINKANTENNA;
- getexp @EXP, 0;
+ getexp @Exp, 0;
set FLAGS, FLAGS | FLAG_TOWEL_HELPED;
mes "[Stranger]";
@@ -231,7 +226,6 @@ L_Right_Answer_Hard:
mes "\"There you are! A towel is really the most important item for a hitchhiker to have.\"";
next;
mes "\"Please take this.\""; // no full inventory check, this is done before the game
- getitem "HitchhikersTowel", 1;
set FLAGS, FLAGS | FLAG_TOWEL_COMPLETED;
next;
goto L_Explain;
@@ -254,7 +248,7 @@ L_No_Event:
mes "\"And it really comes in handy that I have my towel with me. A towel is about the most massively useful thing an inte- ahm, a person can have.\"";
next;
mes "\"You can read more about that in my favourite book, 'The Hitchhiker's Guide to the Galaxy'.\"";
- if (countitem("HitchhikersTowel") > 0)
+ if (FLAGS & FLAG_TOWEL_COMPLETED)
menu
"Thanks for the advice.",L_Close,
"I have my towel with me too.",L_Dye;
@@ -270,7 +264,7 @@ L_Dye:
next;
menu
"Oh? Can you explain about it?",L_Explain,
- "I know. Could you dye it for me?",L_Dye_Towel,
+ "I know. Could you dye it for me?",L_StartDyeTowel,
"It's great, isn't it? I have to go now.",L_Close;
L_No_Item:
@@ -289,10 +283,10 @@ L_Event_Done:
next;
mes "\"Shall I dye your towel?\"";
menu
- "That would be great!",L_Dye_Towel,
+ "That would be great!", L_StartDyeTowel,
"No, thanks.", L_Close;
-L_Dye_Towel:
+L_StartDyeTowel:
mes "[Stranger]";
mes "\"Alright, which color do you want?\"";
// the other colors should be added when more places are released
@@ -300,207 +294,135 @@ L_Dye_Towel:
"Red",L_Red,
"Yellow",L_Yellow,
"White",L_White,
-// "Blue",L_Blue,
-// "Green",L_Green,
-// "Purple",L_Purple,
+ "Blue",L_Blue,
+ "Green",L_Green,
+ "Purple",L_Purple,
"Orange",L_Orange,
"Pink",L_Pink,
-// "Lime",L_Lime,
-// "Teal",L_Teal,
+ "Lime",L_Lime,
+ "Teal",L_Teal,
"I changed my mind.", L_Close;
-L_Red:
- mes "[Stranger]";
- mes "\"Ok, I'll need two bags of Ruby Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("RubyPowder") < 2) goto L_No_Powder;
- delitem "RubyPowder", 2;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "RedHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+L_White:
+ // Koga
+ set @warpTowelName$, "WhiteHitchhikersTowel";
+ setarray @towelPowder$, "DiamondPowder";
+ setarray @towelPowderCnt, 2;
+ goto L_DyeChecks;
-L_Yellow:
- mes "[Stranger]";
- mes "\"Ok, I'll need two bags of Topaz Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("TopazPowder") < 2) goto L_No_Powder;
- delitem "TopazPowder", 2;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "YellowHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+L_Red:
+ // Barbarians
+ set @warpTowelName$, "RedHitchhikersTowel";
+ setarray @towelPowder$, "RubyPowder";
+ setarray @towelPowderCnt, 2;
+ goto L_DyeChecks;
-L_White:
- mes "[Stranger]";
- mes "\"Ok, I'll need two bags of Diamond Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("DiamondPowder") < 2) goto L_No_Powder;
- delitem "DiamondPowder", 2;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "WhiteHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+L_Green:
+ // Candor
+ set @warpTowelName$, "GreenHitchhikersTowel";
+ setarray @towelPowder$, "EmeraldPowder";
+ setarray @towelPowderCnt, 2;
+ goto L_DyeChecks;
L_Blue:
- mes "[Stranger]";
- mes "\"Ok, I'll need two bags of Sapphire Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("SapphirePowder") < 2) goto L_No_Powder;
- delitem "SapphirePowder", 2;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "BlueHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+ // Blue Sages
+ set @warpTowelName$, "BlueHitchhikersTowel";
+ setarray @towelPowder$, "SapphirePowder";
+ setarray @towelPowderCnt, 2;
+ goto L_DyeChecks;
-L_Green:
- mes "[Stranger]";
- mes "\"Ok, I'll need two bags of Emerald Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("EmeraldPowder") < 2) goto L_No_Powder;
- delitem "EmeraldPowder", 2;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "GreenHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+L_Yellow:
+ // Tulimshar Mines
+ set @warpTowelName$, "YellowHitchhikersTowel";
+ setarray @towelPowder$, "TopazPowder";
+ setarray @towelPowderCnt, 2;
+ goto L_DyeChecks;
L_Purple:
- mes "[Stranger]";
- mes "\"Ok, I'll need two bags of Amethyst Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("AmethystPowder") < 2) goto L_No_Powder;
- delitem "AmethystPowder", 2;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "PurpleHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+ // Dimonds Inn
+ set @warpTowelName$, "PurpleHitchhikersTowel";
+ setarray @towelPowder$, "AmethystPowder";
+ setarray @towelPowderCnt, 2;
+ goto L_DyeChecks;
L_Orange:
- mes "[Stranger]";
- mes "\"Ok, I'll need one bag of Ruby Powder, one bag of Topaz Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("RubyPowder") < 1) goto L_No_Powder;
- if (countitem("TopazPowder") < 1) goto L_No_Powder;
- delitem "RubyPowder", 1;
- delitem "TopazPowder", 1;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "OrangeHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+ // Graveyard
+ set @warpTowelName$, "OrangeHitchhikersTowel";
+ setarray @towelPowder$, "RubyPowder", "TopazPowder";
+ setarray @towelPowderCnt, 1, 1;
+ goto L_DyeChecks;
L_Pink:
- mes "[Stranger]";
- mes "\"Ok, I'll need one bag of Ruby Powder, one bag of Diamond Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("RubyPowder") < 1) goto L_No_Powder;
- if (countitem("DiamondPowder") < 1) goto L_No_Powder;
- delitem "RubyPowder", 1;
- delitem "DiamondPowder", 1;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "PinkHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+ // Terranite Cave
+ set @warpTowelName$, "PinkHitchhikersTowel";
+ setarray @towelPowder$, "RubyPowder", "DiamondPowder";
+ setarray @towelPowderCnt, 1, 1;
+ goto L_DyeChecks;
+
+L_Teal:
+ // Mana Seed
+ set @warpTowelName$, "TealHitchhikersTowel";
+ setarray @towelPowder$, "EmeraldPowder", "SapphirePowder";
+ setarray @towelPowderCnt, 1, 1;
+ goto L_DyeChecks;
L_Lime:
- mes "[Stranger]";
- mes "\"Ok, I'll need one bag of Emerald Powder, one bag of Topaz Powder and a bottle of water for that.\"";
- next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
- getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
- if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("EmeraldPowder") < 1) goto L_No_Powder;
- if (countitem("TopazPowder") < 1) goto L_No_Powder;
- delitem "EmeraldPowder", 1;
- delitem "TopazPowder", 1;
- delitem "HitchhikersTowel", 1;
- delitem "BottleOfWater", 1;
- getitem "LimeHitchhikersTowel", 1;
- mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
- next;
- mes "[Stranger]";
- mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\"";
- goto L_Close;
+ // Panchua
+ set @warpTowelName$, "LimeHitchhikersTowel";
+ setarray @towelPowder$, "EmeraldPowder", "TopazPowder";
+ setarray @towelPowderCnt, 1, 1;
+ goto L_DyeChecks;
-L_Teal:
+L_DyeChecks:
mes "[Stranger]";
- mes "\"Ok, I'll need one bag of Emerald Powder, one bag of Sapphire Powder and a bottle of water for that.\"";
+ mes "\"Ok, I'll need a bottle of water first.\"";
next;
- if (countitem("HitchhikersTowel") < 1) goto L_No_Towel;
getinventorylist;
- if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
if (countitem("BottleOfWater") < 1) goto L_No_Water;
- if (countitem("EmeraldPowder") < 1) goto L_No_Powder;
- if (countitem("SapphirePowder") < 1) goto L_No_Powder;
- delitem "EmeraldPowder", 1;
- delitem "SapphirePowder", 1;
- delitem "HitchhikersTowel", 1;
+ set @powderCheckCount, 0;
+ goto L_PowderChecks;
+
+L_PowderCheckAgain:
+ mes "[Stranger]";
+ mes "\"Now I need " + @towelPowderCnt[@powderCheckCount] + " " + @towelPowder$[@powderCheckCount] + ".\"";
+ next;
+ if((@powderCheckCount + 1) == getarraysize(@towelPowder$))
+ goto L_TowelChecks;
+ set @powderCheckCount, (@powderCheckCount + 1);
+ goto L_PowderChecks;
+
+L_PowderChecks:
+ if (countitem(@towelPowder$[@powderCheckCount]) < @towelPowderCnt[@powderCheckCount])
+ goto L_No_Powder;
+ goto L_PowderCheckAgain;
+
+L_TowelCheckAgain:
+ set @towelCheckCount, (@towelCheckCount + 1);
+ if(@towelCheckCount >= getarraysize(@towelReq$))
+ goto L_No_Towel;
+ goto L_TowelChecks;
+
+L_TowelChecks:
+ if (countitem(@towelReq$[@towelCheckCount]) > 0)
+ goto L_DeletePowder;
+ goto L_TowelCheckAgain;
+
+L_DeleteAgain:
+ set @powderCheckCount, (@powderCheckCount - 1);
+ goto L_DeletePowder;
+
+L_DeletePowder:
+ delitem @towelPowder$[@powderCheckCount], @towelPowderCnt[@powderCheckCount];
+ if (@powderCheckCount)
+ goto L_DeleteAgain;
+ goto L_DyeTowel;
+
+L_DyeTowel:
+ callfunc "MultiWarpTowel";
+ delitem @towelReq$[@towelCheckCount], 1;
delitem "BottleOfWater", 1;
- getitem "TealHitchhikersTowel", 1;
+ getitem @warpTowelName$, 1;
mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again.";
next;
mes "[Stranger]";
@@ -528,13 +450,15 @@ L_Full_Inv:
goto L_Close;
L_Close:
- set @month, 0;
- set @start_day, 0;
- set @end_day, 0;
set @IRONINGOT, 0;
set @PINKANTENNA, 0;
- set @EXP, 0;
+ set @Exp, 0;
set @random, 0;
set @quizparam$, "";
+ set @warpTowelName$, "";
+ set @powderCheckCount, 0;
+ set @towelCheckCount, 0;
+ cleararray @towelPowder$, "", getarraysize(@towelPowder$);
+ cleararray @towelPowderCnt, "", getarraysize(@towelPowderCnt);
close;
}
diff --git a/world/map/npc/003-2/_import.txt b/world/map/npc/003-2/_import.txt
index 1e6e34cc..8f9dba48 100644
--- a/world/map/npc/003-2/_import.txt
+++ b/world/map/npc/003-2/_import.txt
@@ -3,3 +3,4 @@
map: 003-2.gat
npc: npc/003-2/_mobs.txt
npc: npc/003-2/_warps.txt
+npc: npc/003-2/mapflags.txt
diff --git a/world/map/npc/003-2/mapflags.txt b/world/map/npc/003-2/mapflags.txt
new file mode 100644
index 00000000..be495b87
--- /dev/null
+++ b/world/map/npc/003-2/mapflags.txt
@@ -0,0 +1 @@
+003-2.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/004-1/_import.txt b/world/map/npc/004-1/_import.txt
index 441b28ba..eccf8063 100644
--- a/world/map/npc/004-1/_import.txt
+++ b/world/map/npc/004-1/_import.txt
@@ -3,3 +3,4 @@
map: 004-1.gat
npc: npc/004-1/_mobs.txt
npc: npc/004-1/_warps.txt
+npc: npc/004-1/mapflags.txt
diff --git a/world/map/npc/004-1/_warps.txt b/world/map/npc/004-1/_warps.txt
index 8ef9ffee..e3c1776b 100644
--- a/world/map/npc/004-1/_warps.txt
+++ b/world/map/npc/004-1/_warps.txt
@@ -1,8 +1,9 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Beach warps
+004-1.gat,63,96|warp|To Pirate Caves|-1,-1,004-3.gat,24,94
004-1.gat,84,115|warp|To Sandstorm Desert|1,-1,002-1.gat,28,14
-004-1.gat,37,111|warp|To Beach|1,-1,003-1.gat,141,20
004-1.gat,80,31|warp|To Beach House|-1,-1,004-2.gat,21,28
004-1.gat,86,27|warp|To Second Floor|-1,-1,004-2.gat,57,65
004-1.gat,68,19|warp|To Beach|1,-1,041-1.gat,101,94
+004-1.gat,37,111|warp|To Beach|1,-1,003-1.gat,141,20
diff --git a/world/map/npc/004-1/mapflags.txt b/world/map/npc/004-1/mapflags.txt
new file mode 100644
index 00000000..194405b8
--- /dev/null
+++ b/world/map/npc/004-1/mapflags.txt
@@ -0,0 +1 @@
+004-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/004-2/_import.txt b/world/map/npc/004-2/_import.txt
index 3efc4d70..f4d7ac2b 100644
--- a/world/map/npc/004-2/_import.txt
+++ b/world/map/npc/004-2/_import.txt
@@ -1,5 +1,7 @@
-// Map 004-2: Beach House
+// Map 004-2: Buccaneer's Den
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 004-2.gat
npc: npc/004-2/_mobs.txt
npc: npc/004-2/_warps.txt
+npc: npc/004-2/mapflags.txt
+npc: npc/004-2/pirate_cave_exit.txt
diff --git a/world/map/npc/004-2/_mobs.txt b/world/map/npc/004-2/_mobs.txt
index 46b9e891..36144a55 100644
--- a/world/map/npc/004-2/_mobs.txt
+++ b/world/map/npc/004-2/_mobs.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Beach House mobs
+// Buccaneer's Den mobs
diff --git a/world/map/npc/004-2/_warps.txt b/world/map/npc/004-2/_warps.txt
index 76eccea3..99d99a88 100644
--- a/world/map/npc/004-2/_warps.txt
+++ b/world/map/npc/004-2/_warps.txt
@@ -1,8 +1,8 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Beach House warps
+// Buccaneer's Den warps
-004-2.gat,39,20|warp|To Room|0,-1,004-2.gat,74,29
004-2.gat,75,30|warp|To Entrance|0,-1,004-2.gat,38,21
+004-2.gat,39,20|warp|To Room|0,-1,004-2.gat,74,29
004-2.gat,21,29|warp|To Outside|-1,-1,004-1.gat,80,32
004-2.gat,62,28|warp|To Basement|-1,-1,004-2.gat,21,61
004-2.gat,20,62|warp|To First Floor|-1,-1,004-2.gat,63,27
diff --git a/world/map/npc/004-2/mapflags.txt b/world/map/npc/004-2/mapflags.txt
new file mode 100644
index 00000000..8424c17f
--- /dev/null
+++ b/world/map/npc/004-2/mapflags.txt
@@ -0,0 +1 @@
+004-2.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/004-2/pirate_cave_exit.txt b/world/map/npc/004-2/pirate_cave_exit.txt
new file mode 100644
index 00000000..42b2a6b5
--- /dev/null
+++ b/world/map/npc/004-2/pirate_cave_exit.txt
@@ -0,0 +1,18 @@
+// The Secret Pirate Cave Entrance
+
+004-2.gat,33,62,0|script|#piratecave1|45,1,1,
+{
+ mes "[Trapdoor]";
+ mes "\"Descend into the caves?\"";
+ next;
+ menu
+ "Yes.", L_PirateCave,
+ "Nevermind", L_Close;
+
+L_PirateCave:
+ warp "004-3",80,23;
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/004-3/_import.txt b/world/map/npc/004-3/_import.txt
new file mode 100644
index 00000000..aaefac68
--- /dev/null
+++ b/world/map/npc/004-3/_import.txt
@@ -0,0 +1,5 @@
+// Map 004-3: Pirate Caves First Floor
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 004-3.gat
+npc: npc/004-3/_mobs.txt
+npc: npc/004-3/_warps.txt
diff --git a/world/map/npc/004-3/_mobs.txt b/world/map/npc/004-3/_mobs.txt
new file mode 100644
index 00000000..d3c48667
--- /dev/null
+++ b/world/map/npc/004-3/_mobs.txt
@@ -0,0 +1,31 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pirate Caves First Floor mobs
+
+004-3.gat,43,72,7,8|monster|Thug|1119,2,100000,30000,Mob004-3::On1119
+004-3.gat,43,72,7,8|monster|Swashbuckler|1120,1,100000,30000,Mob004-3::On1120
+004-3.gat,43,72,7,8|monster|Grenadier|1121,1,100000,30000,Mob004-3::On1121
+004-3.gat,28,69,8,2|monster|Thug|1119,2,100000,30000,Mob004-3::On1119
+004-3.gat,71,63,7,8|monster|Thug|1119,2,100000,30000,Mob004-3::On1119
+004-3.gat,39,39,7,3|monster|Swashbuckler|1120,2,100000,30000,Mob004-3::On1120
+004-3.gat,71,63,7,8|monster|Grenadier|1121,1,100000,30000,Mob004-3::On1121
+
+
+004-3.gat,0,0,0|script|Mob004-3|-1,
+{
+ end;
+
+On1119:
+ set @mobID, 1119;
+ callfunc "MobPoints";
+ end;
+
+On1120:
+ set @mobID, 1120;
+ callfunc "MobPoints";
+ end;
+
+On1121:
+ set @mobID, 1121;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/004-3/_warps.txt b/world/map/npc/004-3/_warps.txt
new file mode 100644
index 00000000..507b3d9d
--- /dev/null
+++ b/world/map/npc/004-3/_warps.txt
@@ -0,0 +1,10 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pirate Caves First Floor warps
+
+004-3.gat,24,95|warp|To West Beach|-1,-1,004-1.gat,63,98
+004-3.gat,49,80|warp|To Pirate Caves|-1,-1,004-4.gat,49,83
+004-3.gat,31,73|warp|To Pirate Caves|-1,-1,004-4.gat,31,70
+004-3.gat,49,56|warp|To Pirate Caves|-1,-1,004-4.gat,49,51
+004-3.gat,90,64|warp|To Pirate Caves|-1,-1,004-4.gat,90,68
+004-3.gat,80,22|warp|To West Beach House|-1,-1,004-2.gat,30,61
+004-3.gat,77,40|warp|To Pirate Caves|-1,-1,004-4.gat,78,34
diff --git a/world/map/npc/004-4/_import.txt b/world/map/npc/004-4/_import.txt
new file mode 100644
index 00000000..987810c9
--- /dev/null
+++ b/world/map/npc/004-4/_import.txt
@@ -0,0 +1,5 @@
+// Map 004-4: Pirate Caves Second Floor
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 004-4.gat
+npc: npc/004-4/_mobs.txt
+npc: npc/004-4/_warps.txt
diff --git a/world/map/npc/004-4/_mobs.txt b/world/map/npc/004-4/_mobs.txt
new file mode 100644
index 00000000..75610f11
--- /dev/null
+++ b/world/map/npc/004-4/_mobs.txt
@@ -0,0 +1,33 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pirate Caves Second Floor mobs
+
+004-4.gat,36,62,5,20|monster|Grenadier|1121,1,100000,30000,Mob004-4::On1121
+004-4.gat,37,61,5,21|monster|Swashbuckler|1120,2,100000,30000,Mob004-4::On1120
+004-4.gat,62,52,12,7|monster|Thug|1119,2,100000,30000,Mob004-4::On1119
+004-4.gat,34,87,12,7|monster|Thug|1119,2,100000,30000,Mob004-4::On1119
+004-4.gat,37,62,6,22|monster|Thug|1119,2,100000,30000,Mob004-4::On1119
+004-4.gat,34,88,10,6|monster|Swashbuckler|1120,2,100000,30000,Mob004-4::On1120
+004-4.gat,63,52,10,6|monster|Swashbuckler|1120,2,100000,30000,Mob004-4::On1120
+004-4.gat,62,52,11,4|monster|Grenadier|1121,1,100000,30000,Mob004-4::On1121
+004-4.gat,34,88,10,4|monster|Grenadier|1121,1,100000,30000,Mob004-4::On1121
+
+
+004-4.gat,0,0,0|script|Mob004-4|-1,
+{
+ end;
+
+On1119:
+ set @mobID, 1119;
+ callfunc "MobPoints";
+ end;
+
+On1120:
+ set @mobID, 1120;
+ callfunc "MobPoints";
+ end;
+
+On1121:
+ set @mobID, 1121;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/004-4/_warps.txt b/world/map/npc/004-4/_warps.txt
new file mode 100644
index 00000000..991664ef
--- /dev/null
+++ b/world/map/npc/004-4/_warps.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pirate Caves Second Floor warps
+
+004-4.gat,49,81|warp|To Pirate Caves|-1,-1,004-3.gat,49,76
+004-4.gat,31,72|warp|To Pirate Caves|-1,-1,004-3.gat,31,74
+004-4.gat,49,53|warp|To Pirate Caves|-1,-1,004-3.gat,49,57
+004-4.gat,90,70|warp|To Pirate Caves|-1,-1,004-3.gat,90,66
+004-4.gat,24,64|warp|To Pirates Den|-1,-1,004-5.gat,24,67
+004-4.gat,78,32|warp|To Pirate Caves|-1,-1,004-3.gat,77,38
diff --git a/world/map/npc/004-5/_import.txt b/world/map/npc/004-5/_import.txt
new file mode 100644
index 00000000..6e7b0691
--- /dev/null
+++ b/world/map/npc/004-5/_import.txt
@@ -0,0 +1,5 @@
+// Map 004-5: Pirate Den
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 004-5.gat
+npc: npc/004-5/_mobs.txt
+npc: npc/004-5/_warps.txt
diff --git a/world/map/npc/004-5/_mobs.txt b/world/map/npc/004-5/_mobs.txt
new file mode 100644
index 00000000..3c636b8e
--- /dev/null
+++ b/world/map/npc/004-5/_mobs.txt
@@ -0,0 +1,36 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pirate Den mobs
+
+004-5.gat,41,70,6,5|monster|Grenadier|1121,1,100000,30000,Mob004-5::On1121
+004-5.gat,41,70,7,3|monster|Swashbuckler|1120,2,100000,30000,Mob004-5::On1120
+004-5.gat,40,70,8,2|monster|Thug|1119,2,100000,30000,Mob004-5::On1119
+004-5.gat,35,86,6,5|monster|Grenadier|1121,1,100000,30000,Mob004-5::On1121
+004-5.gat,34,86,8,2|monster|Thug|1119,2,100000,30000,Mob004-5::On1119
+004-5.gat,35,86,7,3|monster|Swashbuckler|1120,2,100000,30000,Mob004-5::On1120
+004-5.gat,54,38,6,5|monster|Grenadier|1121,1,100000,30000,Mob004-5::On1121
+004-5.gat,53,38,8,2|monster|Thug|1119,2,100000,30000,Mob004-5::On1119
+004-5.gat,54,38,7,3|monster|Swashbuckler|1120,2,100000,30000,Mob004-5::On1120
+004-5.gat,81,38,6,5|monster|Grenadier|1121,1,100000,30000,Mob004-5::On1121
+004-5.gat,80,38,8,2|monster|Thug|1119,2,100000,30000,Mob004-5::On1119
+004-5.gat,81,38,7,3|monster|Swashbuckler|1120,2,100000,30000,Mob004-5::On1120
+
+
+004-5.gat,0,0,0|script|Mob004-5|-1,
+{
+ end;
+
+On1119:
+ set @mobID, 1119;
+ callfunc "MobPoints";
+ end;
+
+On1120:
+ set @mobID, 1120;
+ callfunc "MobPoints";
+ end;
+
+On1121:
+ set @mobID, 1121;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/004-5/_warps.txt b/world/map/npc/004-5/_warps.txt
new file mode 100644
index 00000000..8c10079e
--- /dev/null
+++ b/world/map/npc/004-5/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pirate Den warps
+
+004-5.gat,24,65|warp|To Pirates Den|-1,-1,004-4.gat,24,62
diff --git a/world/map/npc/005-1/_import.txt b/world/map/npc/005-1/_import.txt
index 74d23708..1b386a11 100644
--- a/world/map/npc/005-1/_import.txt
+++ b/world/map/npc/005-1/_import.txt
@@ -3,6 +3,8 @@
map: 005-1.gat
npc: npc/005-1/_mobs.txt
npc: npc/005-1/_warps.txt
+npc: npc/005-1/mapflags.txt
npc: npc/005-1/npcs.txt
npc: npc/005-1/spirit.txt
+npc: npc/005-1/traveler.txt
npc: npc/005-1/tree.txt
diff --git a/world/map/npc/005-1/_mobs.txt b/world/map/npc/005-1/_mobs.txt
index 5e77612c..d20f1eec 100644
--- a/world/map/npc/005-1/_mobs.txt
+++ b/world/map/npc/005-1/_mobs.txt
@@ -5,13 +5,13 @@
005-1.gat,0,0,0,0|monster|Snake|1010,1,100000,30000,Mob005-1::On1010
005-1.gat,71,77,9,6|monster|Snake|1010,2,40000,50000,Mob005-1::On1010
005-1.gat,92,25,8,5|monster|Snake|1010,3,40000,50000,Mob005-1::On1010
-005-1.gat,98,54,95,52|monster|GiantMaggot|1006,20,100000,30000,Mob005-1::On1006
-005-1.gat,91,18,66,23|monster|BlackScorpion|1009,7,100000,30000,Mob005-1::On1009
+005-1.gat,99,68,95,52|monster|GiantMaggot|1006,20,100000,30000,Mob005-1::On1006
+005-1.gat,91,15,66,23|monster|BlackScorpion|1009,7,100000,30000,Mob005-1::On1009
005-1.gat,99,87,85,32|monster|BlackScorpion|1009,8,100000,30000,Mob005-1::On1009
-005-1.gat,30,42,20,23|monster|GreenSlime|1005,3,100000,30000,Mob005-1::On1005
+005-1.gat,30,43,21,25|monster|GreenSlime|1005,3,100000,30000,Mob005-1::On1005
005-1.gat,118,70,3,2|monster|GreenSlime|1005,2,100000,30000,Mob005-1::On1005
005-1.gat,163,71,32,65|monster|Snake|1010,8,100000,30000,Mob005-1::On1010
-005-1.gat,96,49,103,48|monster|Maggot|1002,20,100000,30000,Mob005-1::On1002
+005-1.gat,122,52,77,84|monster|Maggot|1002,20,100000,30000,Mob005-1::On1002
005-1.gat,0,0,0|script|Mob005-1|-1,
diff --git a/world/map/npc/005-1/_warps.txt b/world/map/npc/005-1/_warps.txt
index 774178c7..a4622df6 100644
--- a/world/map/npc/005-1/_warps.txt
+++ b/world/map/npc/005-1/_warps.txt
@@ -17,3 +17,5 @@
005-1.gat,177,98|warp|To Desert Mountains|-1,-1,006-1.gat,25,26
005-1.gat,178,97|warp|To Desert Mountains|-1,-1,006-1.gat,25,26
005-1.gat,179,96|warp|To Desert Mountains|-1,-1,006-1.gat,25,26
+005-1.gat,74,48|warp|To Druid Tree|-1,-1,005-1.gat,74,39
+005-1.gat,74,40|warp|To Druid Tree|-1,-1,005-1.gat,74,49
diff --git a/world/map/npc/005-1/mapflags.txt b/world/map/npc/005-1/mapflags.txt
new file mode 100644
index 00000000..3ede3802
--- /dev/null
+++ b/world/map/npc/005-1/mapflags.txt
@@ -0,0 +1 @@
+005-1.gat|mapflag|resave|005-1,80,30
diff --git a/world/map/npc/005-1/npcs.txt b/world/map/npc/005-1/npcs.txt
index fda22da2..8189a4a4 100644
--- a/world/map/npc/005-1/npcs.txt
+++ b/world/map/npc/005-1/npcs.txt
@@ -1,14 +1,13 @@
//
-005-1.gat,69,76,0|shop|George#sandstorm|115,ShortBow :-1,Arrow :1,IronArrow :-1,Beer :-1,ChickenLeg :-2
-005-1.gat,66,75,0|script|Kieron|132,
-{
- mes "[Kieron]";
- mes "\"Be careful if you're going in that cave,";
- mes "it's packed full of monsters.\"";
- close;
-}
+//005-1.gat,66,75,0|script|Kieron|132,
+//{
+// mes "[Kieron]";
+// mes "\"Be careful if you're going in that cave,";
+// mes "it's packed full of monsters.\"";
+// close;
+//}
005-1.gat,91,23,0|script|William|131,
{
diff --git a/world/map/npc/005-1/traveler.txt b/world/map/npc/005-1/traveler.txt
new file mode 100644
index 00000000..f4c38bb4
--- /dev/null
+++ b/world/map/npc/005-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+005-1.gat,73,36,0|script|Kieron the Traveler|103,
+{
+ set @NpcName$, "Kieron";
+ set @NpcTravelBit, $@druid_tree_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/005-3/_import.txt b/world/map/npc/005-3/_import.txt
index d3f95576..8afc3f88 100644
--- a/world/map/npc/005-3/_import.txt
+++ b/world/map/npc/005-3/_import.txt
@@ -3,3 +3,4 @@
map: 005-3.gat
npc: npc/005-3/_mobs.txt
npc: npc/005-3/_warps.txt
+npc: npc/005-3/mapflags.txt
diff --git a/world/map/npc/005-3/mapflags.txt b/world/map/npc/005-3/mapflags.txt
new file mode 100644
index 00000000..65920d4d
--- /dev/null
+++ b/world/map/npc/005-3/mapflags.txt
@@ -0,0 +1 @@
+005-3.gat|mapflag|resave|005-1,80,30
diff --git a/world/map/npc/006-1/_import.txt b/world/map/npc/006-1/_import.txt
index d9e43067..492ddf7d 100644
--- a/world/map/npc/006-1/_import.txt
+++ b/world/map/npc/006-1/_import.txt
@@ -3,5 +3,7 @@
map: 006-1.gat
npc: npc/006-1/_mobs.txt
npc: npc/006-1/_warps.txt
+npc: npc/006-1/mapflags.txt
npc: npc/006-1/mika.txt
npc: npc/006-1/pachua.txt
+npc: npc/006-1/traveler.txt
diff --git a/world/map/npc/006-1/_warps.txt b/world/map/npc/006-1/_warps.txt
index add0e4b2..2be20ab5 100644
--- a/world/map/npc/006-1/_warps.txt
+++ b/world/map/npc/006-1/_warps.txt
@@ -34,3 +34,9 @@
006-1.gat,28,21|warp|To Snake Desert|-1,-1,005-1.gat,172,101
006-1.gat,29,20|warp|To Snake Desert|-1,-1,005-1.gat,172,101
006-1.gat,30,19|warp|To Snake Desert|-1,-1,005-1.gat,172,101
+006-1.gat,33,85|warp|To Pachua's Village|-1,-1,006-2.gat,58,43
+006-1.gat,23,85|warp|To Pachua's Village|-1,-1,006-2.gat,48,43
+006-1.gat,23,100|warp|To Pachua's Village|-1,-1,006-2.gat,67,64
+006-1.gat,21,108|warp|To Pachua's Village|-1,-1,006-2.gat,65,72
+006-1.gat,37,26|warp|To Desert Mountains|-1,-1,006-1.gat,37,23
+006-1.gat,37,24|warp|To Desert Mountains|-1,-1,006-1.gat,37,27
diff --git a/world/map/npc/006-1/mapflags.txt b/world/map/npc/006-1/mapflags.txt
new file mode 100644
index 00000000..85c94b9f
--- /dev/null
+++ b/world/map/npc/006-1/mapflags.txt
@@ -0,0 +1 @@
+006-1.gat|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/006-1/mika.txt b/world/map/npc/006-1/mika.txt
index 2b5c7401..d7ba11bc 100644
--- a/world/map/npc/006-1/mika.txt
+++ b/world/map/npc/006-1/mika.txt
@@ -1,4 +1,4 @@
-006-1.gat,39,27,0|script|Mika|114,
+006-1.gat,39,22,0|script|Mika|114,
{
mes "[Mika]";
mes "\"My father told me about a man living in this desert who makes clothes out of snake skin.\"";
diff --git a/world/map/npc/006-1/pachua.txt b/world/map/npc/006-1/pachua.txt
index 9ed34c06..43681d84 100644
--- a/world/map/npc/006-1/pachua.txt
+++ b/world/map/npc/006-1/pachua.txt
@@ -1,14 +1,11 @@
-006-1.gat,23,100,0|script|Pachua|143,
+006-1.gat,24,113,0|script|Pachua|143,
{
- set @LEATHER_PATCH_PRICE, 300;
-// @wants_leather_patch is used as boolean
- set @wants_leather_patch, QUEST_Forestbow_state & NIBBLE_4_MASK;
-
- if ((gettime(5) >= $@xmas2011_start_day) && (gettime(5) < $@xmas2011_reward_start_day) && (gettime(6) == 12) && (gettime(7) == $@xmas2011_year))
- set @wants_leather_patch, @wants_leather_patch | (xmas11 & $@xmas11_talkedToChief);
+ setarray $@npc_loc, 24, 113, 4;
+ callfunc "PCtoNPCRange";
+ if (@npc_check)
+ goto L_Close;
- set $@xmas2011_start_day, 10;
- set $@xmas2011_reward_start_day, 25;
+ set @LEATHER_PATCH_PRICE, 300;
if (QUEST_MIRIAM_cheat != 0) goto L_warp_cheat;
if (QUEST_MIRIAM_start != 0) goto L_smoke;
diff --git a/world/map/npc/006-1/traveler.txt b/world/map/npc/006-1/traveler.txt
new file mode 100644
index 00000000..f19885c3
--- /dev/null
+++ b/world/map/npc/006-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+006-1.gat,25,95,0|script|Rhutan the Traveler|103,
+{
+ set @NpcName$, "Rhutan";
+ set @NpcTravelBit, $@pachua_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/006-2/_import.txt b/world/map/npc/006-2/_import.txt
new file mode 100644
index 00000000..8c5c1e34
--- /dev/null
+++ b/world/map/npc/006-2/_import.txt
@@ -0,0 +1,8 @@
+// Map 006-2: Pachua's Village
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 006-2.gat
+npc: npc/006-2/_mobs.txt
+npc: npc/006-2/_warps.txt
+npc: npc/006-2/mapflags.txt
+npc: npc/006-2/npcs.txt
+npc: npc/006-2/shops.txt
diff --git a/world/map/npc/006-2/_mobs.txt b/world/map/npc/006-2/_mobs.txt
new file mode 100644
index 00000000..a9eb390d
--- /dev/null
+++ b/world/map/npc/006-2/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pachua's Village mobs
+
+
+
+006-2.gat,0,0,0|script|Mob006-2|-1,
+{
+ end;
+}
diff --git a/world/map/npc/006-2/_warps.txt b/world/map/npc/006-2/_warps.txt
new file mode 100644
index 00000000..ceffbadd
--- /dev/null
+++ b/world/map/npc/006-2/_warps.txt
@@ -0,0 +1,7 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Pachua's Village warps
+
+006-2.gat,67,65|warp|To Desert Mountains|-1,-1,006-1.gat,23,101
+006-2.gat,65,73|warp|To Desert Mountains|-1,-1,006-1.gat,21,109
+006-2.gat,48,44|warp|To Desert Mountains|-1,-1,006-1.gat,23,86
+006-2.gat,58,44|warp|To Desert Mountains|-1,-1,006-1.gat,33,86
diff --git a/world/map/npc/006-2/mapflags.txt b/world/map/npc/006-2/mapflags.txt
new file mode 100644
index 00000000..b904e327
--- /dev/null
+++ b/world/map/npc/006-2/mapflags.txt
@@ -0,0 +1 @@
+006-2.gat|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/006-2/npcs.txt b/world/map/npc/006-2/npcs.txt
new file mode 100644
index 00000000..90d5b176
--- /dev/null
+++ b/world/map/npc/006-2/npcs.txt
@@ -0,0 +1,87 @@
+// Pachua's Tribe
+
+006-2.gat,49,25,0|script|Falkurn|178,
+{
+ mes "[Falkurn]";
+ mes "\"Greetings traveler, what wind brings you to our door?\"";
+ menu
+ "I'm looking for exotic goods.", L_Shops,
+ "I need some leatherwork done.", L_Pachua,
+ "Just Looking Around.", L_Close;
+
+L_Shops:
+ mes "\"My Wife, Ardra, tends the Kitchen see her for food and drink.\"";
+ mes "\"She can be found in the West Cave.\"";
+ next;
+ mes "\"Reathe trades many of our leather goods to exotic lands.\"";
+ mes "\"She always has the most interesting finds.\"";
+ mes "\"She can be found in the East Cave.\"";
+ goto L_Close;
+
+L_Pachua:
+ mes "\"Our Chief can be found by going through the southern most cave.\"";
+ mes "\"He can help you with any leatherwork you may need done.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+006-2.gat,80,25,0|script|Darug|178,
+{
+ mes "[Darug]";
+ mes "\"We are the all thats left of the natives that used to wander the plains.\"";
+ mes "\"Years of war between the various 'Civilized' nations drained the natural resources.\"";
+ next;
+ mes "\"The waters have begun to run dry.\"";
+ mes "\"All manner of beasts are getting more agressive.\"";
+ mes "\"The Mana has been poison by Dark Magic.\"";
+ next;
+ mes "\"Even now, I sense a evil presense nearby.\"";
+ mes "\"I can feel it lying deep underground.\"";
+ mes "\"Gnawing at the underbelly of Tonori.\"";
+ next;
+ mes "\"We believe it's one of the evils Nu'rem let loose to destroy The Mana\"";
+ mes "\"We have been searching, but have not been able to locate the source.\"";
+ mes "\"Maybe our scouts will return soon with the answers.\"";
+ close;
+}
+
+006-2.gat,34,64,0|script|Meluna|179,
+{
+ mes "[Meluna]";
+ mes "\"Greetings traveler, how blows the wind?\"";
+ goto L_Main;
+
+L_Main:
+ menu
+ "Um... What?", L_Explain,
+ "Gentle.", L_Heal,
+ "Strong.", L_Close;
+
+L_Explain:
+ mes "\"Ahh sorry, you are not familiar with our customs.\"";
+ mes "\"The Mana was made into the 4 main elements by The Gods; Jande made Fire, Nu'rem made Earth, Tal made Air, and, Di'tal made Water.\"";
+ mes "\"It was Tal that gives us our first and last breathe.\"";
+ next;
+ mes "\"When we ask you how 'blows the wind?'\"";
+ mes "\"We mean how are your feeling?\"";
+ next;
+ mes "\"We typically respond with a strength of wind; normally Gentle or Strong\"";
+ goto L_Main;
+
+L_Heal:
+ if (BaseLevel > 70)
+ goto L_NoHeal;
+ heal 1000,100;
+ goto L_Close;
+
+L_NoHeal:
+ mes "\"I already sense the power of the Gods carrying you.\"";
+ mes "\"Any wounds you have are beyond my power to fix.\"";
+ goto L_Close;
+
+L_Close:
+ mes "\"May Tal carry you on their back.\"";
+ close;
+}
diff --git a/world/map/npc/006-2/shops.txt b/world/map/npc/006-2/shops.txt
new file mode 100644
index 00000000..b7e8d85a
--- /dev/null
+++ b/world/map/npc/006-2/shops.txt
@@ -0,0 +1,5 @@
+// Exotic Trader
+// Toy Sabre - 10mil, Cap - 20mil, High Priest Crown - 30mil, Monster Skull Helmet - 30mil
+006-2.gat,81,36,0|shop|Reathe|179,ToySabre :10000000,Cap :20000000,HighPriestCrown :30000000,MonsterSkullHelmet :30000000
+
+006-2.gat,30,35,0|shop|Ardra|179,CactusDrink :-1,CactusPotion :-1,BottleOfWater :-1,RoastedMaggot :-1
diff --git a/world/map/npc/006-3/_import.txt b/world/map/npc/006-3/_import.txt
index 1b556b58..aaf72050 100644
--- a/world/map/npc/006-3/_import.txt
+++ b/world/map/npc/006-3/_import.txt
@@ -3,3 +3,4 @@
map: 006-3.gat
npc: npc/006-3/_mobs.txt
npc: npc/006-3/_warps.txt
+npc: npc/006-3/mapflags.txt
diff --git a/world/map/npc/006-3/mapflags.txt b/world/map/npc/006-3/mapflags.txt
new file mode 100644
index 00000000..efadf501
--- /dev/null
+++ b/world/map/npc/006-3/mapflags.txt
@@ -0,0 +1 @@
+006-3.gat|mapflag|resave|006-1,36,18
diff --git a/world/map/npc/007-1/_import.txt b/world/map/npc/007-1/_import.txt
index 887690ae..2ab51679 100644
--- a/world/map/npc/007-1/_import.txt
+++ b/world/map/npc/007-1/_import.txt
@@ -3,5 +3,6 @@
map: 007-1.gat
npc: npc/007-1/_mobs.txt
npc: npc/007-1/_warps.txt
+npc: npc/007-1/mapflags.txt
npc: npc/007-1/voltain.txt
npc: npc/007-1/witch.txt
diff --git a/world/map/npc/007-1/mapflags.txt b/world/map/npc/007-1/mapflags.txt
new file mode 100644
index 00000000..d1d702ec
--- /dev/null
+++ b/world/map/npc/007-1/mapflags.txt
@@ -0,0 +1 @@
+007-1.gat|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/008-1/_import.txt b/world/map/npc/008-1/_import.txt
index 19468e6b..8808364d 100644
--- a/world/map/npc/008-1/_import.txt
+++ b/world/map/npc/008-1/_import.txt
@@ -9,3 +9,4 @@ npc: npc/008-1/diryn.txt
npc: npc/008-1/dock.txt
npc: npc/008-1/george.txt
npc: npc/008-1/hinnak.txt
+npc: npc/008-1/mapflags.txt
diff --git a/world/map/npc/008-1/_warps.txt b/world/map/npc/008-1/_warps.txt
index 9ce6481b..60785011 100644
--- a/world/map/npc/008-1/_warps.txt
+++ b/world/map/npc/008-1/_warps.txt
@@ -1,10 +1,10 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Hurnscald Outskirts warps
-008-1.gat,54,61|warp|Hurnscald West Entrance|-1,1,009-1.gat,25,36
-008-1.gat,79,80|warp|Hurnscald South Entrance|2,-1,009-1.gat,48,54
-008-1.gat,127,61|warp|Hurnscald East Entrance|-1,0,009-1.gat,96,36
-008-1.gat,79,49|warp|Hurnscald North Entrance|2,-1,009-1.gat,48,25
+008-1.gat,54,61|warp|To Hurnscald West Entrance|-1,1,009-1.gat,25,36
+008-1.gat,79,80|warp|To Hurnscald South Entrance|2,-1,009-1.gat,48,54
+008-1.gat,127,61|warp|To Hurnscald East Entrance|-1,0,009-1.gat,96,36
+008-1.gat,79,49|warp|To Hurnscald North Entrance|2,-1,009-1.gat,48,25
008-1.gat,24,62|warp|To Woodland|-1,2,011-1.gat,123,61
008-1.gat,79,17|warp|To Woodland Mining Camp|2,-1,018-1.gat,78,97
008-1.gat,79,102|warp|To Woodland|2,-1,007-1.gat,68,22
diff --git a/world/map/npc/008-1/diryn.txt b/world/map/npc/008-1/diryn.txt
index 5ed6ca02..22985393 100644
--- a/world/map/npc/008-1/diryn.txt
+++ b/world/map/npc/008-1/diryn.txt
@@ -1,128 +1,11 @@
// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
-// Author: Wombat
+// Author: Wombat, wushin
// cost depending on level and adapted to new scripting guidelines: Jenalya
008-1.gat,81,82,0|script|Diryn the Traveler|103,
{
- if (BaseLevel < 45)
- goto L_LowerCost;
-
- set @cost_druidtree, 1500;
- set @cost_graveyard, 1500;
- set @cost_magichouse, 1000;
- set @cost_terranitecave, 1500;
- set @cost_tulimshar, 1000;
- set @cost_nivalis, 1500;
- goto L_Start;
-
-L_Start:
- mes "[Diryn]";
- mes "\"Greetings. I am Diryn the Traveler, Assistant Councilor of Tulimshar and teleporter extraordinaire. Tulimshar is expanding our influence throughout the world, so I was sent here to aid all who are willing and able to take on the threats to our interests.\"";
- next;
- mes "\"The monsters of the world have grown out of control, harming people, trade and travel. Needless to say, Tulimshar is not happy with this problem. Our solution: Rally those powerful enough to combat the monster threat and send them to hot spots to challenge the monster threat head on. However, teleportation to these areas is not only extremely dangerous, but also highly expensive. Do you think you got what it takes?\"";
- menu
- "I sure do!", L_Diryn_Yes,
- "No, thank you.", L_Diryn_No;
-
-L_Diryn_Yes:
- mes "[Diryn]";
- mes "\"Excellent. I can send you to many places, but again, the fees are large. Where shall I send you?\"";
- menu
- "Druid Tree (" + @cost_druidtree + " GP)", L_Diryn_Druid_Tree,
- "Graveyard (" + @cost_graveyard + " GP)", L_Diryn_Graveyard,
- "Magic House (" + @cost_magichouse + " GP)", L_Diryn_Magic_House,
- "Terranite Cave (" + @cost_terranitecave + " GP)", L_Diryn_Terranite,
- "Tulimshar Town Square (" + @cost_tulimshar + " GP)", L_Diryn_Tulimshar,
- "Sage Nikolai's Mansion (" + @cost_nivalis + " GP)", L_Diryn_Nivalis,
- "I'm not interested.", L_Diryn_No;
-
-L_Diryn_Druid_Tree:
- if (Zeny < @cost_druidtree)
- goto L_NoMoney;
- mes "[Diryn]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @cost_druidtree;
- warp "005-1.gat",73,36;
- goto L_Clearvars;
-
-L_Diryn_Graveyard:
- if (Zeny < @cost_graveyard)
- goto L_NoMoney;
- mes "[Diryn]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @cost_graveyard;
- warp "027-1.gat",70,85;
- goto L_Clearvars;
-
-L_Diryn_Magic_House:
- if (Zeny < @cost_magichouse)
- goto L_NoMoney;
- mes "[Diryn]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @cost_magichouse;
- warp "013-1.gat",45,92;
- goto L_Clearvars;
-
-L_Diryn_Terranite:
- if (Zeny < @cost_terranitecave)
- goto L_NoMoney;
- mes "[Diryn]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @cost_terranitecave;
- warp "012-3.gat",445,65;
- goto L_Clearvars;
-
-L_Diryn_Tulimshar:
- if (Zeny < @cost_tulimshar)
- goto L_NoMoney;
- mes "[Diryn]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @cost_tulimshar;
- warp "001-1.gat",44,70;
- goto L_Clearvars;
-
-L_Diryn_Nivalis:
- if (Zeny < @cost_nivalis)
- goto L_NoMoney;
- mes "[Diryn]";
- mes "\"Be fearless!\"";
- close2;
- set Zeny, Zeny - @cost_nivalis;
- warp "048-1.gat",65,45;
- goto L_Clearvars;
-
-L_Diryn_No:
- mes "[Diryn]";
- mes "\"Perhaps some day you will have the courage to help us. Enjoy your stay here in Hurnscald.\"";
- close2;
- goto L_Clearvars;
-
-L_NoMoney:
- mes "[Diryn]";
- mes "\"Sorry, you don't have enough money. Maybe next time.\"";
- close2;
- goto L_Clearvars;
-
-L_LowerCost:
- set @cost_druidtree, 750;
- set @cost_graveyard, 750;
- set @cost_magichouse, 500;
- set @cost_terranitecave, 750;
- set @cost_tulimshar, 500;
- set @cost_nivalis, 500;
- goto L_Start;
-
-L_Clearvars:
- set @cost_druidtree, 0;
- set @cost_graveyard, 0;
- set @cost_magichouse, 0;
- set @cost_terranitecave, 0;
- set @cost_tulimshar, 0;
- set @cost_nivalis, 0;
+ 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 fc6bbfeb..a5f736b6 100644
--- a/world/map/npc/008-1/dock.txt
+++ b/world/map/npc/008-1/dock.txt
@@ -1,8 +1,25 @@
// The ferry dock
-008-1.gat,140,64,0|script|#hurnscalddock|45,2,1,
+008-1.gat,134,63,0|script|Ferry Schedule#5|397,
{
- set @loc, DOCK_hurnscald;
- callfunc "Ferry";
+ callfunc "FerryManifest";
+ end;
+}
+
+008-1.gat,147,64,0|script|Hurnscald Koga|395,8,3,
+{
+ callfunc "BoardFerry";
+ close;
+}
+
+008-1.gat,120,44,0|script|#HurnscaldDock|45,
+{
+ end;
+OnCommandArrive:
+ enablenpc "Hurnscald Koga";
+ end;
+
+OnCommandWarp:
+ disablenpc "Hurnscald Koga";
end;
}
diff --git a/world/map/npc/008-1/mapflags.txt b/world/map/npc/008-1/mapflags.txt
new file mode 100644
index 00000000..67199894
--- /dev/null
+++ b/world/map/npc/008-1/mapflags.txt
@@ -0,0 +1 @@
+008-1.gat|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-1/_import.txt b/world/map/npc/009-1/_import.txt
index cfd187fb..1901a872 100644
--- a/world/map/npc/009-1/_import.txt
+++ b/world/map/npc/009-1/_import.txt
@@ -3,6 +3,7 @@
map: 009-1.gat
npc: npc/009-1/_mobs.txt
npc: npc/009-1/_warps.txt
+npc: npc/009-1/dock.txt
npc: npc/009-1/jack.txt
npc: npc/009-1/mapflags.txt
npc: npc/009-1/milly.txt
diff --git a/world/map/npc/009-1/_warps.txt b/world/map/npc/009-1/_warps.txt
index d800fda7..7808445d 100644
--- a/world/map/npc/009-1/_warps.txt
+++ b/world/map/npc/009-1/_warps.txt
@@ -1,8 +1,8 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Hurnscald warps
-009-1.gat,49,55|warp|Hurnscald South Exit|2,-1,008-1.gat,78,81
-009-1.gat,97,36|warp|Hurnscald East Exit|-1,0,008-1.gat,128,61
+009-1.gat,49,55|warp|To Hurnscald South Exit|2,-1,008-1.gat,78,81
+009-1.gat,97,36|warp|To Hurnscald East Exit|-1,0,008-1.gat,128,61
009-1.gat,35,30|warp|To Hurnscald Inn|-1,-1,009-2.gat,50,54
009-1.gat,58,46|warp|To Storage Room|-1,-1,009-2.gat,27,106
009-1.gat,59,33|warp|To Archer Shop|-1,-1,009-2.gat,95,29
@@ -10,5 +10,5 @@
009-1.gat,80,31|warp|To Hurnscald Hospital|-1,-1,009-2.gat,149,66
009-1.gat,72,44|warp|To Hurnscald House|-1,-1,009-2.gat,114,77
009-1.gat,91,46|warp|To Hurnscald Forge|0,-1,009-2.gat,182,66
-009-1.gat,24,36|warp|Hurnscald West Exit|-1,1,008-1.gat,53,61
-009-1.gat,49,24|warp|Hurnscald North Exit|2,-1,008-1.gat,78,48
+009-1.gat,24,36|warp|To Hurnscald West Exit|-1,1,008-1.gat,53,61
+009-1.gat,49,24|warp|To Hurnscald North Exit|2,-1,008-1.gat,78,48
diff --git a/world/map/npc/009-1/dock.txt b/world/map/npc/009-1/dock.txt
new file mode 100644
index 00000000..a6fa2553
--- /dev/null
+++ b/world/map/npc/009-1/dock.txt
@@ -0,0 +1,8 @@
+// Ferry Sign
+
+009-1.gat,46,34,0|script|FerrySchedule#4|397,
+{
+ callfunc "FerryManifest";
+ end;
+}
+
diff --git a/world/map/npc/009-1/mapflags.txt b/world/map/npc/009-1/mapflags.txt
index 044229ea..f22e4be4 100644
--- a/world/map/npc/009-1/mapflags.txt
+++ b/world/map/npc/009-1/mapflags.txt
@@ -1 +1,2 @@
009-1.gat|mapflag|town
+009-1.gat|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-1/old_woman.txt b/world/map/npc/009-1/old_woman.txt
index 2d70cc6d..d8c063dc 100644
--- a/world/map/npc/009-1/old_woman.txt
+++ b/world/map/npc/009-1/old_woman.txt
@@ -86,15 +86,4 @@ L_Close:
S_Update_Mask:
set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT);
return;
-
-OnPCDieEvent:
- if (countitem(E10_TOKEN_ID) < 1) end;
- delitem E10_TOKEN_ID, 1;
- getitem "DarkPetal", 1;
- message strcharinfo(0), "As you fall, the dark rose crumbles...";
- if ((Easter_2010_QuestState >> E10_STATE_ROSE_SHIFT) & E10_STATE_ROSE_MASK >= E10_STATE_ROSE_ROSE_USED) end;
- message strcharinfo(0), "There is a strange feeling pulling at you. A place... unfamiliar, yet unavoidable.";
- message strcharinfo(0), "But you do not move... the force is too distant, too weak, a shadow of the power that it might have once been.";
- set Easter_2010_QuestState, (Easter_2010_QuestState & ~(E10_STATE_ROSE_MASK << E10_STATE_ROSE_SHIFT)) | (E10_STATE_ROSE_ROSE_USED << E10_STATE_ROSE_SHIFT);
- end;
}
diff --git a/world/map/npc/009-1/water_pump.txt b/world/map/npc/009-1/water_pump.txt
index 8d7d5c8d..9f15355f 100644
--- a/world/map/npc/009-1/water_pump.txt
+++ b/world/map/npc/009-1/water_pump.txt
@@ -1,6 +1,6 @@
// Water pump. You can fill empty bottles here
-009-1.gat,76,33,0|script|Water Pump|203,
+009-1.gat,76,33,0|script|Water Pump|400,
{
callfunc "WaterBottle";
end;
diff --git a/world/map/npc/009-2/airlia.txt b/world/map/npc/009-2/airlia.txt
index b02627c8..3748269d 100644
--- a/world/map/npc/009-2/airlia.txt
+++ b/world/map/npc/009-2/airlia.txt
@@ -53,11 +53,12 @@ L_Caretaker:
menu
"Sorry, no.", L_Next,
"My what?", L_Caretaker_mount;
- //else ==
- menu
- "Sorry, no.", L_Next,
- "I have a letter from your father.", L_Caretaker_first_reward,
- "My what?", L_Caretaker_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;
+ goto L_Next;
L_Next:
mes "[Airlia]";
diff --git a/world/map/npc/009-2/alan.txt b/world/map/npc/009-2/alan.txt
index 6d39e3e2..cf425d6a 100644
--- a/world/map/npc/009-2/alan.txt
+++ b/world/map/npc/009-2/alan.txt
@@ -98,11 +98,14 @@ L_State_2:
next;
if (@inspector == 1)
menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Foo,
+ "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next,
"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
- menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Foo;
-L_Foo:
+ if (@inspector != 1)
+ menu
+ "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next1;
+ goto L_Next1;
+
+L_Next1:
mes "[Alan]";
mes "\"Oh, that's really bad news. Maybe you can do his job?";
mes "When you kill some of these tree monsters and bring me their wood I can take a look at them.";
diff --git a/world/map/npc/009-2/mapflags.txt b/world/map/npc/009-2/mapflags.txt
index e0bc5aef..66f03254 100644
--- a/world/map/npc/009-2/mapflags.txt
+++ b/world/map/npc/009-2/mapflags.txt
@@ -1 +1,2 @@
009-2.gat|mapflag|town
+009-2.gat|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-2/nurse.txt b/world/map/npc/009-2/nurse.txt
index 4a432db4..63ae6a67 100644
--- a/world/map/npc/009-2/nurse.txt
+++ b/world/map/npc/009-2/nurse.txt
@@ -335,9 +335,9 @@ L_choosePut:
if ( (@hlPut > @hlNeed) && (@vnPut <= @vnNeed) )
goto L_m_hl_l_vn;
if ( (@hlPut <= @hlNeed) && (@vnPut > @vnNeed) )
- goto L_l_hl_m_vn;
+ goto L_hl_m_vn;
if ( (@hlPut < @hlNeed) && (@vnPut < @vnNeed) )
- goto L_l_hl_l_vn;
+ goto L_hl_l_vn;
mes "You feel quite normal.";
mes "[Nurse]";
@@ -377,7 +377,7 @@ L_m_hl_l_vn:
next;
goto L_check_st;
-L_l_hl_m_vn:
+L_hl_m_vn:
// first poison for 10 minutes, player will die anyway
sc_start sc_poison, 1, 20;
mes "You feel a sting in your stomach and your heart starts pounding loudly.";
@@ -393,7 +393,7 @@ L_l_hl_m_vn:
goto L_Close;
// goto L_check_st;
-L_l_hl_l_vn:
+L_hl_l_vn:
//poison for 1 minute
sc_start sc_poison, 1, 20;
mes "The antidote seems to have no effect.";
@@ -401,30 +401,30 @@ L_l_hl_l_vn:
L_check_st:
if ( (@stPut < @stNeed) )
- goto L_l_st;
+ goto L_st;
if ( (@stPut > @stNeed) )
goto L_m_st;
if (@hl_vn_ok == 1)
- goto L_allcorrect;
+ goto L_AllCorrect;
mes "[Nurse]";
mes "\"The amount of the stabilizer seems alright, but we have to think again about the other ingredients.\"";
next;
- goto L_notallcorrect;
+ goto L_NotAllCorrect;
-L_l_st:
+L_st:
mes "[Nurse]";
mes "\"It looks like we used not enough of the stabilizer. The antidote will lose its effect after some time.\"";
next;
- goto L_notallcorrect;
+ goto L_NotAllCorrect;
L_m_st:
mes "[Nurse]";
mes "\"It looks like we used too much of the stabilizer. The antidote will turn into venom again after some time.\"";
next;
- goto L_notallcorrect;
+ goto L_NotAllCorrect;
-L_allcorrect:
+L_AllCorrect:
mes "You feel totally normal again.";
next;
mes "[Nurse]";
@@ -440,7 +440,7 @@ L_allcorrect:
callsub S_Update_Var;
goto L_Close;
-L_notallcorrect:
+L_NotAllCorrect:
mes "[Nurse]";
mes "\"It didn't work. You are a really brave person. Now you should rest and recover. I hope you won't give up now. Please come back later, so we can try it again.\"";
next;
diff --git a/world/map/npc/009-2/wyara.txt b/world/map/npc/009-2/wyara.txt
index da2b8dc5..cf1912fc 100644
--- a/world/map/npc/009-2/wyara.txt
+++ b/world/map/npc/009-2/wyara.txt
@@ -47,11 +47,13 @@ L_Main:
"Can you help me learn magic?", L_Magic,
"I would like to buy potions.", L_Shop,
"Bye!", L_Close;
- menu
- "What do you know about...", L_Question,
- "Can you help me learn magic?", L_Magic,
- "I would like to buy potions.", L_Shop,
- "Bye!", L_Close;
+ if (!(!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)))
+ menu
+ "What do you know about...", L_Question,
+ "Can you help me learn magic?", L_Magic,
+ "I would like to buy potions.", L_Shop,
+ "Bye!", L_Close;
+ goto L_Shop;
L_Shop:
mes "[Wyara the Witch]";
diff --git a/world/map/npc/009-3/_import.txt b/world/map/npc/009-3/_import.txt
index fff7bf28..31813ad9 100644
--- a/world/map/npc/009-3/_import.txt
+++ b/world/map/npc/009-3/_import.txt
@@ -3,5 +3,6 @@
map: 009-3.gat
npc: npc/009-3/_mobs.txt
npc: npc/009-3/_warps.txt
+npc: npc/009-3/mapflags.txt
npc: npc/009-3/sword.txt
npc: npc/009-3/warp.txt
diff --git a/world/map/npc/009-3/mapflags.txt b/world/map/npc/009-3/mapflags.txt
new file mode 100644
index 00000000..c012a6fa
--- /dev/null
+++ b/world/map/npc/009-3/mapflags.txt
@@ -0,0 +1 @@
+009-3.gat|mapflag|resave|009-2,149,43
diff --git a/world/map/npc/009-3/sword.txt b/world/map/npc/009-3/sword.txt
index df4adeb4..f0517e96 100644
--- a/world/map/npc/009-3/sword.txt
+++ b/world/map/npc/009-3/sword.txt
@@ -126,7 +126,7 @@ L_L2_W11:
mes "\"Thou hast returned. That must mean that thy wish to learn the magic of war is still alive?\"";
next;
menu
- "No, I just wanted to say `hi'.", L_sayhi,
+ "No, I just wanted to say `hi'.", L_farewell,
"Yes, teach me more!", L_Next2;
L_Next2:
@@ -165,7 +165,7 @@ L_lacking_mobpoints:
mes "\"Thou lackest the monster points needed to prove thy worthiness. I shall not reveal more to thee until thou hast slain more monsters.\"";
close;
-L_sayhi:
+L_farewell:
mes "[Magic Sword]";
mes "\"Please leave me in peace.\"";
close;
diff --git a/world/map/npc/009-3/warp.txt b/world/map/npc/009-3/warp.txt
index db1146e8..bc828df4 100644
--- a/world/map/npc/009-3/warp.txt
+++ b/world/map/npc/009-3/warp.txt
@@ -8,7 +8,9 @@
L_Next:
if (Zeny < 150)
goto L_NotEnoughMoney;
- goto L_Pay;
+ if (Zeny >= 150)
+ goto L_Pay;
+ goto L_Exit;
L_Exit:
close;
diff --git a/world/map/npc/009-4/_import.txt b/world/map/npc/009-4/_import.txt
index 36baf60b..7b30fd2e 100644
--- a/world/map/npc/009-4/_import.txt
+++ b/world/map/npc/009-4/_import.txt
@@ -4,6 +4,7 @@ map: 009-4.gat
npc: npc/009-4/_mobs.txt
npc: npc/009-4/_warps.txt
npc: npc/009-4/barriers.txt
+npc: npc/009-4/mapflags.txt
npc: npc/009-4/orum.txt
npc: npc/009-4/orum_warps.txt
npc: npc/009-4/torches.txt
diff --git a/world/map/npc/009-4/mapflags.txt b/world/map/npc/009-4/mapflags.txt
new file mode 100644
index 00000000..05aa9324
--- /dev/null
+++ b/world/map/npc/009-4/mapflags.txt
@@ -0,0 +1 @@
+009-4.gat|mapflag|resave|009-4,37,118
diff --git a/world/map/npc/009-4/torches.txt b/world/map/npc/009-4/torches.txt
index 22d718af..f093bc10 100644
--- a/world/map/npc/009-4/torches.txt
+++ b/world/map/npc/009-4/torches.txt
@@ -156,13 +156,13 @@ L_Use_Red:
// T R o Y g B p
// ^ < < < < , X . > > > >
if (@TorchColor == 1)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (2 <= @TorchColor && @TorchColor <= 5)
goto L_Color_Dec;
if (@TorchColor == 6)
goto L_Color_Dec_Wrong;
if (@TorchColor == 7)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (@TorchColor == 8)
goto L_Color_Inc_Wrong;
if (9 <= @TorchColor && @TorchColor <= 12)
@@ -184,13 +184,13 @@ L_Use_Yellow:
if (1 <= @TorchColor && @TorchColor <= 4)
goto L_Color_Inc;
if (@TorchColor == 5)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (6 <= @TorchColor && @TorchColor <= 9)
goto L_Color_Dec;
if (@TorchColor == 10)
goto L_Color_Dec_Wrong;
if (@TorchColor == 11)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (@TorchColor == 12)
goto L_Color_Inc_Wrong;
@@ -212,13 +212,13 @@ L_Use_Blue:
if (@TorchColor == 2)
goto L_Color_Dec_Wrong;
if (@TorchColor == 3)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (@TorchColor == 4)
goto L_Color_Inc_Wrong;
if (5 <= @TorchColor && @TorchColor <= 8)
goto L_Color_Inc;
if (@TorchColor == 9)
- goto L_Wrong_Color;
+ goto L_WrongColor;
if (10 <= @TorchColor && @TorchColor <= 12)
goto L_Color_Dec;
@@ -241,13 +241,13 @@ L_Color_Dec_Wrong:
set @TorchColor, @TorchColor - 1;
if (@TorchColor == 0)
set @TorchColor, 12;
- goto L_Wrong_Color;
+ goto L_WrongColor;
L_Color_Inc_Wrong:
set @TorchColor, @TorchColor + 1;
if (@TorchColor == 13)
set @TorchColor, 1;
- goto L_Wrong_Color;
+ goto L_WrongColor;
L_Color_Inc:
set @TorchColor, @TorchColor + 1;
@@ -261,7 +261,7 @@ L_Show_Color:
mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
goto L_Color_Loop;
-L_Wrong_Color:
+L_WrongColor:
callfunc "SetTorchColor";
set @TorchIntensity, @TorchIntensity + 1;
if (@TorchIntensity > 2)
diff --git a/world/map/npc/009-5/mapflags.txt b/world/map/npc/009-5/mapflags.txt
index 5a3b920a..3b2efa9a 100644
--- a/world/map/npc/009-5/mapflags.txt
+++ b/world/map/npc/009-5/mapflags.txt
@@ -1 +1,2 @@
009-5.gat|mapflag|nosave|009-3,162,82
+009-5.gat|mapflag|resave|009-3,162,82
diff --git a/world/map/npc/009-6/_import.txt b/world/map/npc/009-6/_import.txt
index 47ed4ffa..34740855 100644
--- a/world/map/npc/009-6/_import.txt
+++ b/world/map/npc/009-6/_import.txt
@@ -4,3 +4,4 @@ map: 009-6.gat
npc: npc/009-6/_mobs.txt
npc: npc/009-6/_warps.txt
npc: npc/009-6/brodomir.txt
+npc: npc/009-6/mapflags.txt
diff --git a/world/map/npc/009-6/_warps.txt b/world/map/npc/009-6/_warps.txt
index a1f47265..d889f4e7 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 changes will be removed when running the Converter.
// Cave warps
-009-6.gat,36,48|warp|To Hurnscaldcave|-1,-1,009-3.gat,162,82
+009-6.gat,36,48|warp|To Hurnscald Cave|-1,-1,009-3.gat,162,82
diff --git a/world/map/npc/009-6/mapflags.txt b/world/map/npc/009-6/mapflags.txt
new file mode 100644
index 00000000..6e3cffc7
--- /dev/null
+++ b/world/map/npc/009-6/mapflags.txt
@@ -0,0 +1,2 @@
+009-6.gat|mapflag|nosave|009-3,162,82
+009-6.gat|mapflag|resave|009-3,162,82
diff --git a/world/map/npc/010-1/_import.txt b/world/map/npc/010-1/_import.txt
index c784dbe5..40c94738 100644
--- a/world/map/npc/010-1/_import.txt
+++ b/world/map/npc/010-1/_import.txt
@@ -3,3 +3,4 @@
map: 010-1.gat
npc: npc/010-1/_mobs.txt
npc: npc/010-1/_warps.txt
+npc: npc/010-1/mapflags.txt
diff --git a/world/map/npc/010-1/mapflags.txt b/world/map/npc/010-1/mapflags.txt
new file mode 100644
index 00000000..f6936e04
--- /dev/null
+++ b/world/map/npc/010-1/mapflags.txt
@@ -0,0 +1 @@
+010-1.gat|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/010-2/_import.txt b/world/map/npc/010-2/_import.txt
index 567b7a12..1aeba756 100644
--- a/world/map/npc/010-2/_import.txt
+++ b/world/map/npc/010-2/_import.txt
@@ -7,4 +7,5 @@ npc: npc/010-2/chef.txt
npc: npc/010-2/dimonds.txt
npc: npc/010-2/doug.txt
npc: npc/010-2/loratay.txt
+npc: npc/010-2/mapflags.txt
npc: npc/010-2/workers.txt
diff --git a/world/map/npc/010-2/chef.txt b/world/map/npc/010-2/chef.txt
index 1ea64fef..0f1785d7 100644
--- a/world/map/npc/010-2/chef.txt
+++ b/world/map/npc/010-2/chef.txt
@@ -14,7 +14,7 @@
L_lace_chococake:
next;
menu
- "Sorry.", L_end,
+ "Sorry.", L_End,
"I need your help with a sick young girl!", L_Next;
L_Next:
@@ -27,7 +27,7 @@ L_Next:
L_lace_cupcake:
next;
menu
- "Sorry.", L_end,
+ "Sorry.", L_End,
"I need your help with a sick young girl!", L_Next1;
L_Next1:
@@ -54,9 +54,9 @@ L_Next2:
mes "\"Ah yes. We need to bind the smell in gingerbread. Bring me three pieces of gingerbread, one orange, and 500 GP for the other ingredients, and I will make you your cupcake.\"";
next;
menu
- "I'll go and get it.", L_end,
+ "I'll go and get it.", L_End,
"Here you are!", L_Next3,
- "Not now.", L_end;
+ "Not now.", L_End;
L_Next3:
if (countitem ("GingerBreadMan") < 3)
@@ -120,8 +120,8 @@ L_bringit:
mes "";
mes "\"Bring it here when you do.\"";
next;
- goto L_end;
+ goto L_End;
-L_end:
+L_End:
close;
}
diff --git a/world/map/npc/010-2/loratay.txt b/world/map/npc/010-2/loratay.txt
index f9467e40..3e4bde85 100644
--- a/world/map/npc/010-2/loratay.txt
+++ b/world/map/npc/010-2/loratay.txt
@@ -157,14 +157,18 @@ L_agostine_2:
if (countitem("BottleOfWater"))
menu
"(sneak out of the room)", L_end,
- "Are you alright?", L_Next,
+ "Are you alright?", L_NextMenu,
"Here, have a bottle of water...", L_give_water,
- "Can I help you?", L_Next;
+ "Can I help you?", L_NextMenu;
+ goto L_NextMenu;
- menu
- "(sneak out of the room)", L_end,
- "Are you alright?", L_Next,
- "Can I help you?", L_Next;
+L_NextMenu:
+ if (countitem("BottleOfWater") == 0)
+ menu
+ "(sneak out of the room)", L_end,
+ "Are you alright?", L_Next,
+ "Can I help you?", L_Next;
+ goto L_Next;
L_Next:
mes "[Lora Tay the Seamstress]";
@@ -368,7 +372,7 @@ L_proposal_retrieve_design:
mes "\"May you go retrieve the design from Agostine?\"";
next;
menu
- "Certainly I'll be back soon!", L_end,
+ "Certainly I'll be back soon!", L_Close,
"Actually I want something else...", L_main_menu;
L_proposal_bringing_design:
@@ -428,7 +432,7 @@ L_proposal_deliver_dress:
mes "[Lora Tay the Seamstress]";
mes "\"Please take the unfinished dress to him so he may finish the edges with the cloth.\"";
menu
- "I'm on my way.", L_end,
+ "I'm on my way.", L_Close,
"I have a request...", L_main_menu;
L_desert_hat:
@@ -865,62 +869,72 @@ S_pick_one_of_many_items:
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "";
- goto L_SUB_pick_choice_loop;
+ goto S_SUB_pick_choice_loop;
-L_SUB_pick_choice_loop:
+S_SUB_pick_choice_loop:
if (@i >= @items_nr)
- goto L_SUB_choice_init_done;
+ goto S_SUB_choice_init_done;
set @current, @items[@i];
set @current_name$, @item_names$[@i];
set @i, @i + 1;
if (countitem(@current) == 0)
- goto L_SUB_pick_choice_loop;
+ goto S_SUB_pick_choice_loop;
set @choice_v[@c], @current;
set @choice_n$[@c], @current_name$;
set @c, @c + 1;
- goto L_SUB_pick_choice_loop;
+ goto S_SUB_pick_choice_loop;
-L_SUB_choice_init_done:
+S_SUB_choice_init_done:
set @choice_v[@c], 0;
set @choice_n$[@c], @default_choice$;
set @c, @c + 1;
if (@c < 10)
menu
- @choice_n$[0], L_SUB_choice_join,
- @choice_n$[1], L_SUB_choice_join,
- @choice_n$[2], L_SUB_choice_join,
- @choice_n$[3], L_SUB_choice_join,
- @choice_n$[4], L_SUB_choice_join,
- @choice_n$[5], L_SUB_choice_join,
- @choice_n$[6], L_SUB_choice_join,
- @choice_n$[7], L_SUB_choice_join,
- @choice_n$[8], L_SUB_choice_join,
- @choice_n$[9], L_SUB_choice_join;
+ @choice_n$[0], L_MenuItems,
+ @choice_n$[1], L_MenuItems,
+ @choice_n$[2], L_MenuItems,
+ @choice_n$[3], L_MenuItems,
+ @choice_n$[4], L_MenuItems,
+ @choice_n$[5], L_MenuItems,
+ @choice_n$[6], L_MenuItems,
+ @choice_n$[7], L_MenuItems,
+ @choice_n$[8], L_MenuItems,
+ @choice_n$[9], L_MenuItems;
+ goto L_MenuItems;
+
+L_MenuItems:
+ if (@c < 10)
+ goto L_SUB_choice_join;
if (@c < 20)
menu
- @choice_n$[0], L_SUB_choice_join,
- @choice_n$[1], L_SUB_choice_join,
- @choice_n$[2], L_SUB_choice_join,
- @choice_n$[3], L_SUB_choice_join,
- @choice_n$[4], L_SUB_choice_join,
- @choice_n$[5], L_SUB_choice_join,
- @choice_n$[6], L_SUB_choice_join,
- @choice_n$[7], L_SUB_choice_join,
- @choice_n$[8], L_SUB_choice_join,
- @choice_n$[9], L_SUB_choice_join,
- @choice_n$[10], L_SUB_choice_join,
- @choice_n$[11], L_SUB_choice_join,
- @choice_n$[12], L_SUB_choice_join,
- @choice_n$[13], L_SUB_choice_join,
- @choice_n$[14], L_SUB_choice_join,
- @choice_n$[15], L_SUB_choice_join,
- @choice_n$[16], L_SUB_choice_join,
- @choice_n$[17], L_SUB_choice_join,
- @choice_n$[18], L_SUB_choice_join,
- @choice_n$[19], L_SUB_choice_join;
+ @choice_n$[0], L_MenuItems1,
+ @choice_n$[1], L_MenuItems1,
+ @choice_n$[2], L_MenuItems1,
+ @choice_n$[3], L_MenuItems1,
+ @choice_n$[4], L_MenuItems1,
+ @choice_n$[5], L_MenuItems1,
+ @choice_n$[6], L_MenuItems1,
+ @choice_n$[7], L_MenuItems1,
+ @choice_n$[8], L_MenuItems1,
+ @choice_n$[9], L_MenuItems1,
+ @choice_n$[10], L_MenuItems1,
+ @choice_n$[11], L_MenuItems1,
+ @choice_n$[12], L_MenuItems1,
+ @choice_n$[13], L_MenuItems1,
+ @choice_n$[14], L_MenuItems1,
+ @choice_n$[15], L_MenuItems1,
+ @choice_n$[16], L_MenuItems1,
+ @choice_n$[17], L_MenuItems1,
+ @choice_n$[18], L_MenuItems1,
+ @choice_n$[19], L_MenuItems1;
+ goto L_MenuItems1;
+
+L_MenuItems1:
+ if (@c < 20)
+ goto L_SUB_choice_join;
menu
@choice_n$[0], L_SUB_choice_join,
@@ -1115,4 +1129,7 @@ L_CleanSorcererRobe:
set @chosen_color, 0;
set @cotton_cloth_id, 0;
close;
+
+L_Close:
+ close;
}
diff --git a/world/map/npc/010-2/mapflags.txt b/world/map/npc/010-2/mapflags.txt
new file mode 100644
index 00000000..143c5f2a
--- /dev/null
+++ b/world/map/npc/010-2/mapflags.txt
@@ -0,0 +1 @@
+010-2.gat|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/011-1/_import.txt b/world/map/npc/011-1/_import.txt
index 53f564ce..3038a924 100644
--- a/world/map/npc/011-1/_import.txt
+++ b/world/map/npc/011-1/_import.txt
@@ -5,5 +5,6 @@ npc: npc/011-1/_mobs.txt
npc: npc/011-1/_warps.txt
npc: npc/011-1/alchemist.txt
npc: npc/011-1/auldsbel.txt
+npc: npc/011-1/mapflags.txt
npc: npc/011-1/oscar.txt
npc: npc/011-1/shops.txt
diff --git a/world/map/npc/011-1/mapflags.txt b/world/map/npc/011-1/mapflags.txt
new file mode 100644
index 00000000..75d34ade
--- /dev/null
+++ b/world/map/npc/011-1/mapflags.txt
@@ -0,0 +1 @@
+011-1.gat|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/011-1/shops.txt b/world/map/npc/011-1/shops.txt
index 0c3032d2..2fd115b8 100644
--- a/world/map/npc/011-1/shops.txt
+++ b/world/map/npc/011-1/shops.txt
@@ -4,9 +4,5 @@
//# #
//#################################################################################
-// Exotic Trader
-// Toy Sabre - 10mil, Cap - 20mil, High Priest Crown - 30mil, Monster Skull Helmet - 30mil
-011-1.gat,109,38,0|shop|Exotic Trader|179,ToySabre :10000000,Cap :20000000,HighPriestCrown :30000000,MonsterSkullHelmet :30000000
-
// Shop
011-1.gat,80,33,0|shop|Fruit Store|400,GreenApple :-1,RedApple :-1,Orange :-1
diff --git a/world/map/npc/011-3/_import.txt b/world/map/npc/011-3/_import.txt
index ba9fdeff..5b2b6f34 100644
--- a/world/map/npc/011-3/_import.txt
+++ b/world/map/npc/011-3/_import.txt
@@ -4,3 +4,4 @@ map: 011-3.gat
npc: npc/011-3/_mobs.txt
npc: npc/011-3/_warps.txt
npc: npc/011-3/hermit.txt
+npc: npc/011-3/mapflags.txt
diff --git a/world/map/npc/011-3/mapflags.txt b/world/map/npc/011-3/mapflags.txt
new file mode 100644
index 00000000..8b9a503f
--- /dev/null
+++ b/world/map/npc/011-3/mapflags.txt
@@ -0,0 +1 @@
+011-3.gat|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/011-4/_import.txt b/world/map/npc/011-4/_import.txt
index c3a0019a..5eb34f30 100644
--- a/world/map/npc/011-4/_import.txt
+++ b/world/map/npc/011-4/_import.txt
@@ -4,3 +4,4 @@ map: 011-4.gat
npc: npc/011-4/_mobs.txt
npc: npc/011-4/_warps.txt
npc: npc/011-4/bl_barrier.txt
+npc: npc/011-4/mapflags.txt
diff --git a/world/map/npc/011-4/mapflags.txt b/world/map/npc/011-4/mapflags.txt
new file mode 100644
index 00000000..8b9a503f
--- /dev/null
+++ b/world/map/npc/011-4/mapflags.txt
@@ -0,0 +1 @@
+011-3.gat|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/011-6/_import.txt b/world/map/npc/011-6/_import.txt
index 27d8ef9a..731325cd 100644
--- a/world/map/npc/011-6/_import.txt
+++ b/world/map/npc/011-6/_import.txt
@@ -4,3 +4,4 @@ map: 011-6.gat
npc: npc/011-6/_mobs.txt
npc: npc/011-6/_warps.txt
npc: npc/011-6/bryant.txt
+npc: npc/011-6/mapflags.txt
diff --git a/world/map/npc/011-6/mapflags.txt b/world/map/npc/011-6/mapflags.txt
new file mode 100644
index 00000000..0ff444d7
--- /dev/null
+++ b/world/map/npc/011-6/mapflags.txt
@@ -0,0 +1 @@
+011-6.gat|mapflag|resave|011-1,103,34
diff --git a/world/map/npc/012-1/_import.txt b/world/map/npc/012-1/_import.txt
index 0829616e..2cdc7196 100644
--- a/world/map/npc/012-1/_import.txt
+++ b/world/map/npc/012-1/_import.txt
@@ -6,4 +6,5 @@ npc: npc/012-1/_warps.txt
npc: npc/012-1/amrak.txt
npc: npc/012-1/flowerpentagram2.txt
npc: npc/012-1/injured-mouboo.txt
+npc: npc/012-1/mapflags.txt
npc: npc/012-1/shops.txt
diff --git a/world/map/npc/012-1/mapflags.txt b/world/map/npc/012-1/mapflags.txt
new file mode 100644
index 00000000..19586c27
--- /dev/null
+++ b/world/map/npc/012-1/mapflags.txt
@@ -0,0 +1 @@
+012-1.gat|mapflag|resave|012-1,88,141
diff --git a/world/map/npc/012-1/shops.txt b/world/map/npc/012-1/shops.txt
index 4a144212..a47e3274 100644
--- a/world/map/npc/012-1/shops.txt
+++ b/world/map/npc/012-1/shops.txt
@@ -12,6 +12,7 @@
"Can I trade this Rose Hat for a differently colored one?", L_RoseHat;
L_Shop:
+ close2;
shop "#FlowerShop";
L_RoseHat:
diff --git a/world/map/npc/012-3/_import.txt b/world/map/npc/012-3/_import.txt
index c92c8000..8a4ae218 100644
--- a/world/map/npc/012-3/_import.txt
+++ b/world/map/npc/012-3/_import.txt
@@ -4,4 +4,6 @@ map: 012-3.gat
npc: npc/012-3/_mobs.txt
npc: npc/012-3/_warps.txt
npc: npc/012-3/mana-seed.txt
+npc: npc/012-3/mapflags.txt
+npc: npc/012-3/traveler.txt
npc: npc/012-3/warningsigns.txt
diff --git a/world/map/npc/012-3/mana-seed.txt b/world/map/npc/012-3/mana-seed.txt
index 2c2773ba..dcd2ead3 100644
--- a/world/map/npc/012-3/mana-seed.txt
+++ b/world/map/npc/012-3/mana-seed.txt
@@ -1,4 +1,4 @@
-012-3.gat,62,130,0|script|Mana Seed#MAGIC|166,
+012-3.gat,62,130,0|script|Forest Mana Seed#_M|166,
{
setarray @magic_exp_needed,
0, // level 0
diff --git a/world/map/npc/012-3/mapflags.txt b/world/map/npc/012-3/mapflags.txt
new file mode 100644
index 00000000..28007390
--- /dev/null
+++ b/world/map/npc/012-3/mapflags.txt
@@ -0,0 +1 @@
+012-3.gat|mapflag|resave|012-1,88,141
diff --git a/world/map/npc/012-3/traveler.txt b/world/map/npc/012-3/traveler.txt
new file mode 100644
index 00000000..c2c4d51e
--- /dev/null
+++ b/world/map/npc/012-3/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+012-3.gat,439,62,0|script|Meridith the Traveler|103,
+{
+ set @NpcName$, "Meridith";
+ set @NpcTravelBit, $@terranite_cave_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/012-4/_import.txt b/world/map/npc/012-4/_import.txt
index 8b3bcac3..26510b13 100644
--- a/world/map/npc/012-4/_import.txt
+++ b/world/map/npc/012-4/_import.txt
@@ -3,4 +3,5 @@
map: 012-4.gat
npc: npc/012-4/_mobs.txt
npc: npc/012-4/_warps.txt
+npc: npc/012-4/mapflags.txt
npc: npc/012-4/pvpflag.txt
diff --git a/world/map/npc/012-4/mapflags.txt b/world/map/npc/012-4/mapflags.txt
new file mode 100644
index 00000000..9e9dcfaa
--- /dev/null
+++ b/world/map/npc/012-4/mapflags.txt
@@ -0,0 +1 @@
+012-4.gat|mapflag|resave|012-1,143,70
diff --git a/world/map/npc/013-1/_import.txt b/world/map/npc/013-1/_import.txt
index 2c096edd..fa8c682b 100644
--- a/world/map/npc/013-1/_import.txt
+++ b/world/map/npc/013-1/_import.txt
@@ -4,4 +4,6 @@ map: 013-1.gat
npc: npc/013-1/_mobs.txt
npc: npc/013-1/_warps.txt
npc: npc/013-1/flowerpentagram.txt
+npc: npc/013-1/mapflags.txt
npc: npc/013-1/sagatha.txt
+npc: npc/013-1/traveler.txt
diff --git a/world/map/npc/013-1/mapflags.txt b/world/map/npc/013-1/mapflags.txt
new file mode 100644
index 00000000..4c296e01
--- /dev/null
+++ b/world/map/npc/013-1/mapflags.txt
@@ -0,0 +1 @@
+013-1.gat|mapflag|resave|013-1,126,99
diff --git a/world/map/npc/013-1/traveler.txt b/world/map/npc/013-1/traveler.txt
new file mode 100644
index 00000000..405c82b1
--- /dev/null
+++ b/world/map/npc/013-1/traveler.txt
@@ -0,0 +1,7 @@
+013-1.gat,120,90,0|script|Faris the Traveler|103,
+{
+ set @NpcName$, "Faris";
+ set @NpcTravelBit, $@magic_house_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/013-2/_import.txt b/world/map/npc/013-2/_import.txt
index 3e3d0325..c6460e0e 100644
--- a/world/map/npc/013-2/_import.txt
+++ b/world/map/npc/013-2/_import.txt
@@ -4,5 +4,6 @@ map: 013-2.gat
npc: npc/013-2/_mobs.txt
npc: npc/013-2/_warps.txt
npc: npc/013-2/apprentice.txt
+npc: npc/013-2/mapflags.txt
npc: npc/013-2/notes.txt
npc: npc/013-2/wizard.txt
diff --git a/world/map/npc/013-2/mapflags.txt b/world/map/npc/013-2/mapflags.txt
new file mode 100644
index 00000000..e032acab
--- /dev/null
+++ b/world/map/npc/013-2/mapflags.txt
@@ -0,0 +1 @@
+013-2.gat|mapflag|resave|013-1,126,99
diff --git a/world/map/npc/013-2/notes.txt b/world/map/npc/013-2/notes.txt
index f0aee204..2f569334 100644
--- a/world/map/npc/013-2/notes.txt
+++ b/world/map/npc/013-2/notes.txt
@@ -34,7 +34,7 @@
close;
}
-// Warp to north-eastern woods
+// Warp to wood clearings
013-2.gat,25,23,0|script|Spell#wiz1|400,
{
mes "You read: \"I see trees of green, red roses too. I see them bloom for me and you. And I think to myself: \'What a wonderful world\'\"";
@@ -43,28 +43,67 @@
next;
mes "The spell fulfills its inevitable purpose...";
next;
+ set @dest, rand(BaseLevel);
+ if (@dest < 10)
+ goto L_PlaceOne;
+ if ((@dest >= 10) && (@dest <= 50))
+ goto L_PlaceTwo;
+ goto L_PlaceThree;
+
+L_PlaceOne:
warp "013-1.gat",128,28;
+ goto L_Close;
+
+L_PlaceTwo:
+ warp "016-1.gat",62,89;
+ goto L_Close;
+
+L_PlaceThree:
+ warp "014-1.gat",33,35;
+ goto L_Close;
+
+L_Close:
+ set @dest, 0;
close;
}
-// Warp to Indian in south-eastern desert
+// Warp to desert
013-2.gat,27,24,0|script|Spell#wiz2|400,
{
- mes "You read: \"A red-coloured fellow smoking his pipe - down in the desert - that's what I like!\"";
+ mes "You read: \"You must not fear, for it is the mind-killer. That and sharp pointy things.\"";
next;
mes "You feel the floor disappear below your feet...";
next;
+ set @dest, rand(BaseLevel);
+ if (@dest < 10)
+ goto L_PlaceOne;
+ if ((@dest >= 10) && (@dest <= 50))
+ goto L_PlaceTwo;
+ goto L_PlaceThree;
+
+L_PlaceOne:
+ warp "006-1.gat",125,111;
+ goto L_Close;
+
+L_PlaceTwo:
+ warp "032-1.gat",77,22;
+ goto L_Close;
+
+L_PlaceThree:
warp "006-1.gat",33,93;
if (QUEST_MIRIAM_start != 0) goto L_cheat;
- close;
+ goto L_Close;
// If you try to use the notes to warp to pachua the quest will fail.
-
L_cheat:
set QUEST_MIRIAM_cheat, 1;
set QUEST_MIRIAM_run, gettimetick(2) - QUEST_MIRIAM_start;
set QUEST_MIRIAM_start, 0;
message strcharinfo(0), "You were supposed to actually run to this place. You are not sure if this is going to work for Miriam...";
+ goto L_Close;
+
+L_Close:
+ set @dest, 0;
close;
}
@@ -99,25 +138,65 @@ L_Close:
close;
}
-// Warp to Dimond
+// Warp to Inns
013-2.gat,27,27,0|script|Spell#wiz4|400,
{
mes "You read: \"People and cosiness, lively and fun - that's where I've gone!\"";
next;
mes "The world around you slowly dissolves...";
next;
+ set @dest, rand(BaseLevel);
+ if (@dest < 10)
+ goto L_PlaceOne;
+ if ((@dest >= 10) && (@dest <= 50))
+ goto L_PlaceTwo;
+ goto L_PlaceThree;
+
+L_PlaceOne:
+ warp "030-2.gat",88,24;
+ goto L_Close;
+
+L_PlaceTwo:
+ warp "001-2.gat",30,29;
+ goto L_Close;
+
+L_PlaceThree:
warp "010-2.gat",34,42;
+ goto L_Close;
+
+L_Close:
+ set @dest, 0;
close;
}
-// Warp to mines level 2
+// Warp to mines
013-2.gat,26,28,0|script|Spell#wiz5|400,
{
mes "You read: \"Darkness and legs, eight of them each - I'd rather not go there, but now it's too late...\"";
next;
mes "For a moment everything turns black...";
next;
- warp "013-3.gat",127,70;
+ set @dest, rand(BaseLevel);
+ if (@dest < 10)
+ goto L_PlaceOne;
+ if ((@dest >= 10) && (@dest <= 50))
+ goto L_PlaceTwo;
+ goto L_PlaceThree;
+
+L_PlaceOne:
+ warp "012-4.gat",431,36;
+ goto L_Close;
+
+L_PlaceTwo:
+ warp "013-3.gat",134,54;
+ goto L_Close;
+
+L_PlaceThree:
+ warp "013-3.gat",178,67;
+ goto L_Close;
+
+L_Close:
+ set @dest, 0;
close;
}
diff --git a/world/map/npc/013-3/_import.txt b/world/map/npc/013-3/_import.txt
index 79ed5aed..61dbf64f 100644
--- a/world/map/npc/013-3/_import.txt
+++ b/world/map/npc/013-3/_import.txt
@@ -4,6 +4,7 @@ map: 013-3.gat
npc: npc/013-3/_mobs.txt
npc: npc/013-3/_warps.txt
npc: npc/013-3/barrier.txt
+npc: npc/013-3/mapflags.txt
npc: npc/013-3/mask_chest.txt
npc: npc/013-3/misc.txt
npc: npc/013-3/sword_chest.txt
diff --git a/world/map/npc/013-3/barrier.txt b/world/map/npc/013-3/barrier.txt
index 3b979f5d..40c2600c 100644
--- a/world/map/npc/013-3/barrier.txt
+++ b/world/map/npc/013-3/barrier.txt
@@ -7,18 +7,18 @@
set @state, ((QUEST_Hurnscald & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
if (@state >= 2) goto L_End;
- if (@state == 1 && countitem("JackOSoul") >= 1) goto L_Has_Jack_O_Soul;
+ if (@state == 1 && countitem("Soul") >= 1) goto L_Has_Soul;
message strcharinfo(0), "A barrier around the opening pushes you back as you approach.";
warp "013-3.gat", 71, 25;
goto L_End;
-L_Has_Jack_O_Soul:
+L_Has_Soul:
message strcharinfo(0), "The barrier around the opening allows you passage.";
set @state, 2;
callsub S_Update_Mask;
- delitem "JackOSoul", 1;
+ delitem "Soul", 1;
goto L_End;
L_End:
diff --git a/world/map/npc/013-3/mapflags.txt b/world/map/npc/013-3/mapflags.txt
new file mode 100644
index 00000000..b9d4496b
--- /dev/null
+++ b/world/map/npc/013-3/mapflags.txt
@@ -0,0 +1 @@
+013-3.gat|mapflag|resave|013-1,126,99
diff --git a/world/map/npc/014-1/_import.txt b/world/map/npc/014-1/_import.txt
index 0483171c..d589093b 100644
--- a/world/map/npc/014-1/_import.txt
+++ b/world/map/npc/014-1/_import.txt
@@ -3,4 +3,5 @@
map: 014-1.gat
npc: npc/014-1/_mobs.txt
npc: npc/014-1/_warps.txt
+npc: npc/014-1/mapflags.txt
npc: npc/014-1/wedding-officiator.txt
diff --git a/world/map/npc/014-1/mapflags.txt b/world/map/npc/014-1/mapflags.txt
new file mode 100644
index 00000000..222a1738
--- /dev/null
+++ b/world/map/npc/014-1/mapflags.txt
@@ -0,0 +1 @@
+014-1.gat|mapflag|resave|014-1,89,102
diff --git a/world/map/npc/014-3/_import.txt b/world/map/npc/014-3/_import.txt
index 612fdc1d..e04b6a34 100644
--- a/world/map/npc/014-3/_import.txt
+++ b/world/map/npc/014-3/_import.txt
@@ -3,3 +3,4 @@
map: 014-3.gat
npc: npc/014-3/_mobs.txt
npc: npc/014-3/_warps.txt
+npc: npc/014-3/mapflags.txt
diff --git a/world/map/npc/014-3/mapflags.txt b/world/map/npc/014-3/mapflags.txt
new file mode 100644
index 00000000..d7565279
--- /dev/null
+++ b/world/map/npc/014-3/mapflags.txt
@@ -0,0 +1 @@
+014-3.gat|mapflag|resave|014-1,89,102
diff --git a/world/map/npc/015-1/_import.txt b/world/map/npc/015-1/_import.txt
index 7e038c51..28390d4b 100644
--- a/world/map/npc/015-1/_import.txt
+++ b/world/map/npc/015-1/_import.txt
@@ -5,4 +5,5 @@ npc: npc/015-1/_mobs.txt
npc: npc/015-1/_warps.txt
npc: npc/015-1/alice.txt
npc: npc/015-1/barrier.txt
+npc: npc/015-1/mapflags.txt
npc: npc/015-1/sword.txt
diff --git a/world/map/npc/015-1/mapflags.txt b/world/map/npc/015-1/mapflags.txt
new file mode 100644
index 00000000..a626da24
--- /dev/null
+++ b/world/map/npc/015-1/mapflags.txt
@@ -0,0 +1 @@
+015-1.gat|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/015-3/mapflags.txt b/world/map/npc/015-3/mapflags.txt
index 53cca2bc..0123e3b9 100644
--- a/world/map/npc/015-3/mapflags.txt
+++ b/world/map/npc/015-3/mapflags.txt
@@ -1 +1,2 @@
015-3.gat|mapflag|nosave|015-1,59,32
+015-3.gat|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/016-1/_import.txt b/world/map/npc/016-1/_import.txt
index 333dc950..16e79693 100644
--- a/world/map/npc/016-1/_import.txt
+++ b/world/map/npc/016-1/_import.txt
@@ -4,3 +4,4 @@ map: 016-1.gat
npc: npc/016-1/_mobs.txt
npc: npc/016-1/_warps.txt
npc: npc/016-1/gwendolyn.txt
+npc: npc/016-1/mapflags.txt
diff --git a/world/map/npc/016-1/mapflags.txt b/world/map/npc/016-1/mapflags.txt
new file mode 100644
index 00000000..407d15b5
--- /dev/null
+++ b/world/map/npc/016-1/mapflags.txt
@@ -0,0 +1 @@
+016-1.gat|mapflag|resave|010-1,27,97
diff --git a/world/map/npc/017-1/_import.txt b/world/map/npc/017-1/_import.txt
index 9ab66da3..10408f11 100644
--- a/world/map/npc/017-1/_import.txt
+++ b/world/map/npc/017-1/_import.txt
@@ -4,3 +4,4 @@ map: 017-1.gat
npc: npc/017-1/_mobs.txt
npc: npc/017-1/_warps.txt
npc: npc/017-1/flowerpentagram1.txt
+npc: npc/017-1/mapflags.txt
diff --git a/world/map/npc/017-1/mapflags.txt b/world/map/npc/017-1/mapflags.txt
new file mode 100644
index 00000000..98c67d63
--- /dev/null
+++ b/world/map/npc/017-1/mapflags.txt
@@ -0,0 +1 @@
+017-1.gat|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-2/_import.txt b/world/map/npc/017-2/_import.txt
index 843da4e7..9d2a1c09 100644
--- a/world/map/npc/017-2/_import.txt
+++ b/world/map/npc/017-2/_import.txt
@@ -3,3 +3,4 @@
map: 017-2.gat
npc: npc/017-2/_mobs.txt
npc: npc/017-2/_warps.txt
+npc: npc/017-2/mapflags.txt
diff --git a/world/map/npc/017-2/mapflags.txt b/world/map/npc/017-2/mapflags.txt
new file mode 100644
index 00000000..c9e26119
--- /dev/null
+++ b/world/map/npc/017-2/mapflags.txt
@@ -0,0 +1 @@
+017-2.gat|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-3/_import.txt b/world/map/npc/017-3/_import.txt
index 22956099..6b93879f 100644
--- a/world/map/npc/017-3/_import.txt
+++ b/world/map/npc/017-3/_import.txt
@@ -3,3 +3,4 @@
map: 017-3.gat
npc: npc/017-3/_mobs.txt
npc: npc/017-3/_warps.txt
+npc: npc/017-3/mapflags.txt
diff --git a/world/map/npc/017-3/mapflags.txt b/world/map/npc/017-3/mapflags.txt
new file mode 100644
index 00000000..b04c452e
--- /dev/null
+++ b/world/map/npc/017-3/mapflags.txt
@@ -0,0 +1 @@
+017-3.gat|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-4/_import.txt b/world/map/npc/017-4/_import.txt
index d09e325f..6a31069e 100644
--- a/world/map/npc/017-4/_import.txt
+++ b/world/map/npc/017-4/_import.txt
@@ -4,5 +4,6 @@ map: 017-4.gat
npc: npc/017-4/_mobs.txt
npc: npc/017-4/_warps.txt
npc: npc/017-4/guardingspirit.txt
+npc: npc/017-4/mapflags.txt
npc: npc/017-4/orum.txt
npc: npc/017-4/waric.txt
diff --git a/world/map/npc/017-4/mapflags.txt b/world/map/npc/017-4/mapflags.txt
new file mode 100644
index 00000000..bd0ecdff
--- /dev/null
+++ b/world/map/npc/017-4/mapflags.txt
@@ -0,0 +1 @@
+017-4.gat|mapflag|resave|017-1,107,70
diff --git a/world/map/npc/017-9/_import.txt b/world/map/npc/017-9/_import.txt
index 819fd8b3..69c67d6f 100644
--- a/world/map/npc/017-9/_import.txt
+++ b/world/map/npc/017-9/_import.txt
@@ -3,3 +3,4 @@
map: 017-9.gat
npc: npc/017-9/_mobs.txt
npc: npc/017-9/_warps.txt
+npc: npc/017-9/mapflags.txt
diff --git a/world/map/npc/017-9/mapflags.txt b/world/map/npc/017-9/mapflags.txt
new file mode 100644
index 00000000..75269c1a
--- /dev/null
+++ b/world/map/npc/017-9/mapflags.txt
@@ -0,0 +1 @@
+017-9.gat|mapflag|resave|017-9,26,25
diff --git a/world/map/npc/018-1/_import.txt b/world/map/npc/018-1/_import.txt
index 0089f9c3..e38c50b3 100644
--- a/world/map/npc/018-1/_import.txt
+++ b/world/map/npc/018-1/_import.txt
@@ -4,6 +4,7 @@ map: 018-1.gat
npc: npc/018-1/_mobs.txt
npc: npc/018-1/_warps.txt
npc: npc/018-1/flowerpentagram3.txt
+npc: npc/018-1/mapflags.txt
npc: npc/018-1/mike.txt
npc: npc/018-1/miners.txt
npc: npc/018-1/sword.txt
diff --git a/world/map/npc/018-1/mapflags.txt b/world/map/npc/018-1/mapflags.txt
new file mode 100644
index 00000000..b694150b
--- /dev/null
+++ b/world/map/npc/018-1/mapflags.txt
@@ -0,0 +1 @@
+018-1.gat|mapflag|resave|018-2,88,32
diff --git a/world/map/npc/018-2/_import.txt b/world/map/npc/018-2/_import.txt
index 724dedf3..76173655 100644
--- a/world/map/npc/018-2/_import.txt
+++ b/world/map/npc/018-2/_import.txt
@@ -6,5 +6,6 @@ npc: npc/018-2/_warps.txt
npc: npc/018-2/angus.txt
npc: npc/018-2/books.txt
npc: npc/018-2/caul.txt
+npc: npc/018-2/mapflags.txt
npc: npc/018-2/miners.txt
npc: npc/018-2/receptionist.txt
diff --git a/world/map/npc/018-2/mapflags.txt b/world/map/npc/018-2/mapflags.txt
new file mode 100644
index 00000000..2f4d4354
--- /dev/null
+++ b/world/map/npc/018-2/mapflags.txt
@@ -0,0 +1 @@
+018-2.gat|mapflag|resave|018-2,88,32
diff --git a/world/map/npc/018-3/_import.txt b/world/map/npc/018-3/_import.txt
index 6957b9be..4e8b2200 100644
--- a/world/map/npc/018-3/_import.txt
+++ b/world/map/npc/018-3/_import.txt
@@ -5,4 +5,5 @@ npc: npc/018-3/_mobs.txt
npc: npc/018-3/_warps.txt
npc: npc/018-3/bookcase.txt
npc: npc/018-3/evil-obelisk.txt
+npc: npc/018-3/mapflags.txt
npc: npc/018-3/sword.txt
diff --git a/world/map/npc/018-3/mapflags.txt b/world/map/npc/018-3/mapflags.txt
new file mode 100644
index 00000000..5979cf5b
--- /dev/null
+++ b/world/map/npc/018-3/mapflags.txt
@@ -0,0 +1 @@
+018-3.gat|mapflag|resave|018-2,88,32
diff --git a/world/map/npc/019-1/_import.txt b/world/map/npc/019-1/_import.txt
index c86b158e..8744fcfc 100644
--- a/world/map/npc/019-1/_import.txt
+++ b/world/map/npc/019-1/_import.txt
@@ -1,7 +1,8 @@
-// Map 019-1: Snow Field
+// Map 019-1: snow Field
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 019-1.gat
npc: npc/019-1/_mobs.txt
npc: npc/019-1/_warps.txt
+npc: npc/019-1/mapflags.txt
npc: npc/019-1/santa_helper.txt
npc: npc/019-1/snowman.txt
diff --git a/world/map/npc/019-1/_mobs.txt b/world/map/npc/019-1/_mobs.txt
index fd452e26..03c3aa2e 100644
--- a/world/map/npc/019-1/_mobs.txt
+++ b/world/map/npc/019-1/_mobs.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Snow Field mobs
+// snow Field mobs
019-1.gat,0,0,0,0|monster|Fluffy|1020,50,100000,30000,Mob019-1::On1020
019-1.gat,0,0,0,0|monster|Reinboo|1094,4,100000,30000,Mob019-1::On1094
diff --git a/world/map/npc/019-1/_warps.txt b/world/map/npc/019-1/_warps.txt
index 280f43c1..8f745b21 100644
--- a/world/map/npc/019-1/_warps.txt
+++ b/world/map/npc/019-1/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Snow Field warps
+// snow Field warps
019-1.gat,70,21|warp|To Nivalis|2,-1,020-1.gat,70,127
019-1.gat,61,102|warp|To Snow Field|2,-1,030-1.gat,61,28
diff --git a/world/map/npc/019-1/mapflags.txt b/world/map/npc/019-1/mapflags.txt
new file mode 100644
index 00000000..24bd8599
--- /dev/null
+++ b/world/map/npc/019-1/mapflags.txt
@@ -0,0 +1 @@
+019-1.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/019-3/_import.txt b/world/map/npc/019-3/_import.txt
index 4ccd622b..139dbbc5 100644
--- a/world/map/npc/019-3/_import.txt
+++ b/world/map/npc/019-3/_import.txt
@@ -3,3 +3,4 @@
map: 019-3.gat
npc: npc/019-3/_mobs.txt
npc: npc/019-3/_warps.txt
+npc: npc/019-3/mapflags.txt
diff --git a/world/map/npc/019-3/mapflags.txt b/world/map/npc/019-3/mapflags.txt
new file mode 100644
index 00000000..0a2dd566
--- /dev/null
+++ b/world/map/npc/019-3/mapflags.txt
@@ -0,0 +1 @@
+019-3.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/019-4/_import.txt b/world/map/npc/019-4/_import.txt
index 7566eb15..e37f8154 100644
--- a/world/map/npc/019-4/_import.txt
+++ b/world/map/npc/019-4/_import.txt
@@ -3,3 +3,4 @@
map: 019-4.gat
npc: npc/019-4/_mobs.txt
npc: npc/019-4/_warps.txt
+npc: npc/019-4/mapflags.txt
diff --git a/world/map/npc/019-4/mapflags.txt b/world/map/npc/019-4/mapflags.txt
new file mode 100644
index 00000000..da582f7f
--- /dev/null
+++ b/world/map/npc/019-4/mapflags.txt
@@ -0,0 +1 @@
+019-4.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/020-1/_import.txt b/world/map/npc/020-1/_import.txt
index 704d916d..e7372302 100644
--- a/world/map/npc/020-1/_import.txt
+++ b/world/map/npc/020-1/_import.txt
@@ -4,7 +4,9 @@ map: 020-1.gat
npc: npc/020-1/KrickKrackKrock.txt
npc: npc/020-1/_mobs.txt
npc: npc/020-1/_warps.txt
+npc: npc/020-1/dock.txt
npc: npc/020-1/mapflags.txt
npc: npc/020-1/rockscissor.txt
npc: npc/020-1/soul-menhir.txt
+npc: npc/020-1/traveler.txt
npc: npc/020-1/well.txt
diff --git a/world/map/npc/020-1/dock.txt b/world/map/npc/020-1/dock.txt
new file mode 100644
index 00000000..e0528e23
--- /dev/null
+++ b/world/map/npc/020-1/dock.txt
@@ -0,0 +1,6 @@
+// Ferry Sign
+020-1.gat,81,76,0|script|Ferry Schedule#7|398,
+{
+ callfunc "FerryManifest";
+ end;
+}
diff --git a/world/map/npc/020-1/mapflags.txt b/world/map/npc/020-1/mapflags.txt
index 54594227..4044d492 100644
--- a/world/map/npc/020-1/mapflags.txt
+++ b/world/map/npc/020-1/mapflags.txt
@@ -1 +1,2 @@
020-1.gat|mapflag|town
+020-1.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/020-1/traveler.txt b/world/map/npc/020-1/traveler.txt
new file mode 100644
index 00000000..95efd4cf
--- /dev/null
+++ b/world/map/npc/020-1/traveler.txt
@@ -0,0 +1,7 @@
+020-1.gat,57,123,0|script|Knox the Traveler|103,
+{
+ set @NpcName$, "Knox";
+ set @NpcTravelBit, $@nivalis_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/020-2/baktar.txt b/world/map/npc/020-2/baktar.txt
index d47a6fe5..9a54694b 100644
--- a/world/map/npc/020-2/baktar.txt
+++ b/world/map/npc/020-2/baktar.txt
@@ -47,10 +47,6 @@
set @Q_SHIFT2_BITS, NIBBLE_3_SHIFT;
set @Q_status2_bits, ((QUEST_Nivalis_state) & @Q_MASK2_BITS) >> @Q_SHIFT2_BITS;
- // if all bits are set, you brought him everything! Now we continue in Phase 2 of this npc.
- // this is not ready yet, so do not enable that stage
- // if(@Q_status == @Q_MASK) goto L_2_init;
-
set @BIT_KNOWHIM, 0;
set @BIT_DESERTHAT,1;
@@ -268,137 +264,12 @@ L_havealready:
mes "\"I already collected what you can offer me.\"";
close;
-S_Update_Var:
- set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK)
- | (@Q_status << @Q_SHIFT));
- return;
-
-//# The following stage is completely cutoff the first.
-//# So there is no linking between the upper and lower part, except for one goto at the very beginning
-//
-
-L_2_init:
-
-//# NIBBLE3 a bitmasking nibble for stage 2 again
-//# bit 0 knows the name of the opponent
-//# bit 1 killed the ugly opponent
- set @BIT_KNOWS_NAME, 0;
- set @BIT_KILLED_HIM, 1;
-
- if (@Q_status2 == 1) goto L_2_talk1;
- if (@Q_status2 == 2) goto L_2_talk2;
- if (@Q_status2 == 3) goto L_2_talk3;
- // fall through @Q_status2==0:
- // need to thank for bringing all stuff.
- mes @npcname$;
- mes "\"Thanks a lot for bringing me all this nice stuff!\"";
- next;
- mes "\"That helps me a lot. You see over there is already another set I collected: There are some pieces of the Hurnscald town. That sign there has been stolen from the inn.\"";
- next;
- mes "\"But do not tell anyone, please! I really like collecting things. And that sign is one of the first things I organized.\"";
- next;
- mes "\"So thank you for bringing me that stuff for my desert collection\"";
- next;
- mes "\"Do you have an idea how to arrange that to make it cool looking for my admirers?\"";
- next;
- set @Q_status2, 1;
- callsub S_Update_Var2;
- close;
-
-L_2_talk1:
- mes @npcname$;
- mes "\"In my childhood I was called a packrat, because I collected old cans.\"";
- next;
- mes "\"But everybody does collect things right?\"";
- next;
- mes "\"So after I had collected way over 1000 cans, I started collecting snail-shells. Nice? Do you like that?\"";
- next;
- mes "\"Not many people like me. And I don't know why. It is nice to talk about such nice things. What did you collect in your childhood?\"";
- next;
- mes "He picks his nose";
- next;
- mes @npcname$;
- mes "\"Ok erm, talk to you later.\"";
- next;
- mes "\"Ok.\"";
- set @Q_status2, 2;
- callsub S_Update_Var2;
- close;
-
-L_2_talk2:
- mes @npcname$;
- mes "\"Could you do me a favor? This ugly guy, who always attacked me....\"";
- next;
- mes "\"*sob*\"";
- next;
- mes "\"I was always bullied by him. You know in early childhood we were very nice friends. We played some roleplaying. He was the captain, and I was the soldier.";
- next;
- mes "\"Or another day he was the chieftain and I was the redskin.\"";
- next;
- mes "\"But to tell you the truth, HE was ALWAYS the one who directed me.\"";
- next;
- mes "\"I DO NOT LIKE THAT!\"";
- next;
- mes "\"I WANT TO BE THE LEADER!\"";
- next;
- mes "\"STOP HIM DOING NASTY THINGS\"";
- next;
- mes "\"I WANT YOU TO KILL THAT BASTARD!!\"";
- set @Q_status2, 3;
- callsub S_Update_Var2;
- close;
-
-L_2_talk3:
- menu
- "Ok, I am a professional in doing such things", L_2_professional,
- "Hey do you really mean it? ", L_2_professional,
- "You calmed down again?", L_Close,
- "Oh a packrat! By the way, is that trash over there yours?", L_2_name,
- "Nevermind", L_Close;
-
L_Close:
- mes @npcname$;
- mes "\"Get out of my way, prank!\"";
close;
-L_2_professional:
- mes @npcname$;
- mes "\"What are you talking about?\"";
- goto L_2_talk3;
-
-L_2_name:
- mes @npcname$;
- mes "\"ONE DAY I WILL GET A HUGE REVENGE!\"";
- next;
- mes "\"AND I MEAN IT!\"";
- next;
- mes "\"You see I am a dangerous killer. Last week I killed five slimes and a pinkie!\"";
- next;
- mes "He takes out a piece of paper... mumbling";
- mes "\"Ok Scroticular first, and then ...\"";
- set @Q_status2, 4;
- set @Q_status2_bits, @Q_status2_bits | (1<<@BIT_KNOWS_NAME);
- callsub S_Update_Var2;
-
- mes @npcname$;
- mes "\"What is your name again?\"";
-
- menu
- "I am sorry for the joke... Please forgive me", L_Next,
- "They call me Mistakes. I am a professional killer as well. You heard about that business in the terranite cave?", L_Next;
-
-L_Next:
- mes @npcname$;
- mes "\"Alright, I see. Ok maybe I really need to calm down. Please leave me alone... I will try to calm down, ok?\"";
- close;
-
-S_Update_Var2:
- set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK2)
- | (@Q_status2 << @Q_SHIFT2));
+S_Update_Var:
set QUEST_Nivalis_state,
- (QUEST_Nivalis_state & ~(@Q_MASK2_BITS)
- | (@Q_status2_bits << @Q_SHIFT2_BITS));
+ (QUEST_Nivalis_state & ~(@Q_MASK)
+ | (@Q_status << @Q_SHIFT));
return;
}
diff --git a/world/map/npc/020-2/mapflags.txt b/world/map/npc/020-2/mapflags.txt
index b12ba678..e39bcf84 100644
--- a/world/map/npc/020-2/mapflags.txt
+++ b/world/map/npc/020-2/mapflags.txt
@@ -1 +1,2 @@
020-2.gat|mapflag|town
+020-2.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/020-3/_import.txt b/world/map/npc/020-3/_import.txt
index d82428bf..a654038e 100644
--- a/world/map/npc/020-3/_import.txt
+++ b/world/map/npc/020-3/_import.txt
@@ -3,3 +3,4 @@
map: 020-3.gat
npc: npc/020-3/_mobs.txt
npc: npc/020-3/_warps.txt
+npc: npc/020-3/mapflags.txt
diff --git a/world/map/npc/020-3/mapflags.txt b/world/map/npc/020-3/mapflags.txt
new file mode 100644
index 00000000..eadbab23
--- /dev/null
+++ b/world/map/npc/020-3/mapflags.txt
@@ -0,0 +1 @@
+020-3.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/021-1/_import.txt b/world/map/npc/021-1/_import.txt
index 0a5c51a9..9a1b1507 100644
--- a/world/map/npc/021-1/_import.txt
+++ b/world/map/npc/021-1/_import.txt
@@ -7,7 +7,6 @@ npc: npc/021-1/bakery.txt
npc: npc/021-1/banu.txt
npc: npc/021-1/eurni.txt
npc: npc/021-1/gate_guards.txt
-npc: npc/021-1/hetchel.txt
npc: npc/021-1/hideandseek.txt
npc: npc/021-1/imec.txt
npc: npc/021-1/inac.txt
@@ -19,4 +18,3 @@ npc: npc/021-1/sewer_east.txt
npc: npc/021-1/sewer_north.txt
npc: npc/021-1/sewer_west.txt
npc: npc/021-1/weellos.txt
-npc: npc/021-1/workers.txt
diff --git a/world/map/npc/021-1/_warps.txt b/world/map/npc/021-1/_warps.txt
index 618c057a..429a522f 100644
--- a/world/map/npc/021-1/_warps.txt
+++ b/world/map/npc/021-1/_warps.txt
@@ -1,6 +1,11 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// North Tulimshar warps
+021-1.gat,128,119|warp|To Tulimshar Musuem|0,-1,021-2.gat,71,177
+021-1.gat,144,22|warp|To Tulimshar Noble|3,-1,068-1.gat,34,105
+021-1.gat,157,44|warp|To Tulimshar Castle|-1,0,069-1.gat,21,44
+021-1.gat,157,97|warp|To Tulimshar Castle|-1,0,069-1.gat,21,97
+021-1.gat,135,119|warp|To Tulimshar Musuem|-1,-1,021-2.gat,90,177
021-1.gat,55,146|warp|To South Tulimshar|3,-1,001-1.gat,44,21
021-1.gat,136,147|warp|To South Tulimshar|0,-1,001-1.gat,125,22
021-1.gat,53,134|warp|To Government Building|-1,-1,021-2.gat,27,29
@@ -10,11 +15,11 @@
021-1.gat,103,96|warp|To Bakery|-1,-1,021-2.gat,122,23
021-1.gat,49,64|warp|To Tulimshar Canyon|3,-1,024-1.gat,86,73
021-1.gat,53,99|warp|To Wizard's Rest|-1,-1,021-2.gat,25,66
-021-1.gat,52,95|warp|To Wizard's Rest|-1,-1,021-2.gat,23,98
+021-1.gat,52,95|warp|To Wizard's Rest|-1,-1,021-2.gat,70,63
021-1.gat,73,22|warp|To Tulimshar Port|3,-1,022-1.gat,73,109
021-1.gat,113,22|warp|To Tulimshar Port|3,-1,022-1.gat,113,109
-021-1.gat,43,110|warp|To Store|-1,-1,021-2.gat,28,129
021-1.gat,132,31|warp|To Tulimshar Forge|-1,-1,021-2.gat,79,138
021-1.gat,133,24|warp|To Tulimshar Forge|-1,-1,021-2.gat,75,92
021-1.gat,125,27|warp|To Tulimshar Forge|-1,-1,021-2.gat,124,68
021-1.gat,125,31|warp|To Tulimshar Forge|-1,-1,021-2.gat,72,138
+021-1.gat,43,110|warp|To Store|-1,-1,021-2.gat,28,129
diff --git a/world/map/npc/021-1/bakery.txt b/world/map/npc/021-1/bakery.txt
index 2a4fb127..46337613 100644
--- a/world/map/npc/021-1/bakery.txt
+++ b/world/map/npc/021-1/bakery.txt
@@ -1,6 +1,6 @@
// Outside the bakery
-021-1.gat,105,104,0|shop|Ara|163,WhiteCake :-1,ChocolateCake :-1,OrangeCake :-1,AppleCake :-1,CherryCake :-1
+021-1.gat,103,103,0|shop|Ara|163,WhiteCake :-1,ChocolateCake :-1,OrangeCake :-1,AppleCake :-1,CherryCake :-1
021-1.gat,108,102,0|script|Itka|114,
{
diff --git a/world/map/npc/021-1/gate_guards.txt b/world/map/npc/021-1/gate_guards.txt
index 2cb97658..b26b5ec3 100644
--- a/world/map/npc/021-1/gate_guards.txt
+++ b/world/map/npc/021-1/gate_guards.txt
@@ -11,7 +11,7 @@
021-1.gat,110,23,0|script|Guard#port2|104,
{
mes "[Guard]";
- mes "\"I'm not quite sure why I'm here, since that bridge is out.\"";
+ mes "\"You wouldn't believe the refuse that comes in from the docks.\"";
close;
}
diff --git a/world/map/npc/021-1/hideandseek.txt b/world/map/npc/021-1/hideandseek.txt
index 9ca48bc2..44c628a1 100644
--- a/world/map/npc/021-1/hideandseek.txt
+++ b/world/map/npc/021-1/hideandseek.txt
@@ -56,7 +56,7 @@ L_Next:
L_Next1:
mes "[Ayasha]";
mes "\"Great! You can take my turn with searching. You need to find all five of my friends.";
- mes "They're hiding somewhere in this part of the city, you don't have to pass an archway to find them. But they're allowed to hide on the rooftops.\"";
+ mes "They're hiding somewhere in the city, you will have to explore to find them. They could be hiding anywhere.\"";
set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@hideandseekNT_started;
goto L_Close;
@@ -64,7 +64,7 @@ L_Next1:
L_Doing:
mes "[Ayasha]";
mes "\"You still need to find some of my friends. There are five of them.";
- mes "Remember, they're hiding somewhere in this part of the city, you don't have to pass an archway to find them. But it is allowed to hide on the buildings roof.\"";
+ mes "Remember, they're hiding somewhere in the city, you will have to explore to find them. They could be hiding anywhere.\"";
goto L_Close;
L_Reward:
@@ -93,7 +93,7 @@ L_Close:
close;
}
-021-1.gat,63,107,0|script|Latif|262,
+022-1.gat,112,23,0|script|Latif|262,
{
set @child_number, 1;
callfunc "XmasList";
@@ -146,7 +146,7 @@ L_Doing:
L_Done:
mes "[Latif]";
- mes "\"Inside that building over there is a workshop. My father works there and wants me to do that too when I'm grown up. But I don't want do that! I want to go on an adventure! Just like you.\"";
+ mes "\"Inside the building in the Northeastern market, there is a workshop. My father works there and wants me to do that too when I'm grown up. But I don't want do that! I want to go on an adventure! Just like you.\"";
goto L_Close;
L_Close:
@@ -155,7 +155,7 @@ L_Close:
close;
}
-021-1.gat,123,116,0|script|Charda|260,
+001-1.gat,39,33,0|script|Charda|260,
{
set @child_number, 2;
callfunc "XmasList";
@@ -170,7 +170,7 @@ L_Close:
mes "[Charda]";
mes "\"Hello. Psht, be careful. I'm playing hide and seek with Ayasha. You'll draw attention to my hiding place.\"";
next;
- mes "\"Do you want to go to the bazaar? It's west and then south from here. Ian is there, he helps all those adventurers that come here.\"";
+ mes "\"They will never find me in the bazaar. Ian is here, he helps all those adventurers that come here.\"";
goto L_Close;
L_Find:
@@ -261,7 +261,7 @@ L_Close:
close;
}
-021-1.gat,98,25,0|script|Rasin|263,
+023-1.gat,32,31,0|script|Rasin|263,
{
set @child_number, 4;
callfunc "XmasList";
@@ -274,7 +274,7 @@ L_Close:
if (@state > 0) goto L_Doing;
mes "[Rasin]";
- mes "\"The harbor is up north from here. There you can take a ferry to other places.";
+ mes "\"The harbor is to the East from here. There you can take a ferry to other places.";
mes "And now go away, I'm playing hide and seek and Ayasha shouldn't see me here. You'll draw her attention when you talk to me.\"";
goto L_Close;
@@ -302,7 +302,7 @@ L_Close:
close;
}
-021-1.gat,155,25,0|script|Ghada|265,
+068-1.gat,94,84,0|script|Ghada|265,
{
set @child_number, 5;
callfunc "XmasList";
@@ -314,7 +314,7 @@ L_Close:
if ((@state > 0) && !(QUEST_NorthTulimshar & $@hideandseekNT_found5)) goto L_Find;
if (@state > 0) goto L_Doing;
- mes "You see a girl standing behind the building. She has a look of intense concentration on her face.";
+ mes "You see a girl standing behind the a tree. She has a look of intense concentration on her face.";
menu
"Hi, what are you doing there?",L_Next,
"(Leave)",L_Close;
diff --git a/world/map/npc/021-1/imec.txt b/world/map/npc/021-1/imec.txt
index 7a5eb975..61e1fca7 100644
--- a/world/map/npc/021-1/imec.txt
+++ b/world/map/npc/021-1/imec.txt
@@ -13,7 +13,7 @@ OnInit:
end;
}
-021-1.gat,120,33,0|script|Imec|162,
+021-1.gat,120,31,0|script|Imec|162,
{
set @state, ((QUEST_NorthTulimshar & $@ImecShopNT_MASK) >> $@ImecShopNT_SHIFT);
set @money, 500;
diff --git a/world/map/npc/021-1/mapflags.txt b/world/map/npc/021-1/mapflags.txt
index 2661c9ff..ffa56dfe 100644
--- a/world/map/npc/021-1/mapflags.txt
+++ b/world/map/npc/021-1/mapflags.txt
@@ -1 +1,2 @@
021-1.gat|mapflag|town
+021-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/021-1/north_shops.txt b/world/map/npc/021-1/north_shops.txt
index 80e34433..81a05a20 100644
--- a/world/map/npc/021-1/north_shops.txt
+++ b/world/map/npc/021-1/north_shops.txt
@@ -3,7 +3,7 @@
// More high-end stuff to satisfy the richer people in Royal Tulimshar
// Some clothing
-021-1.gat,135,38,0|shop|Inar|108,SlingShot :-1,SlingBullet :-1,CottonShirt :-1,CottonShorts :-1,CottonBoots :-1,DesertShirt :-1,SilkRobe :-5,DesertHat :-4
+021-1.gat,135,36,0|shop|Inar|108,CottonShirt :-1,CottonShorts :-1,CottonBoots :-1,CottonHeadband :-1
021-1.gat,129,40,0|script|Well|400,
{
@@ -12,30 +12,9 @@
}
// An officer (for security)
-021-1.gat,128,36,0|script|Officer|150,
+021-1.gat,128,37,0|script|Officer|150,
{
mes "[Officer]";
mes "I'm here for extra security for this market.";
close;
}
-
-// A snobby store that won't sell to the player
-// takes part in quest given by 021-2/kylian.txt
-021-1.gat,138,29,0|script|Latoy|106,
-{
- set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT;
- set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
-
- mes "[Latoy]";
- mes "\"There's nothing here you could want or afford.\"";
- if (@kylian != 7)
- goto L_Close;
- next;
- mes "Maybe this is the kind of shop Kylian is looking for?";
- goto L_Close;
-
-L_Close:
- set @kylian, 0;
- close;
-}
-
diff --git a/world/map/npc/021-1/weellos.txt b/world/map/npc/021-1/weellos.txt
index 98565f9e..cb75bde1 100644
--- a/world/map/npc/021-1/weellos.txt
+++ b/world/map/npc/021-1/weellos.txt
@@ -9,7 +9,7 @@
if isin("021-1.gat", 130, 120, 140, 125) 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. One of the oldest in the area. It's been turned into a museum.\"";
goto L_BeforeClose;
// If the player is inside the fence with Weellos
diff --git a/world/map/npc/021-1/workers.txt b/world/map/npc/021-1/workers.txt
deleted file mode 100644
index cdba39b3..00000000
--- a/world/map/npc/021-1/workers.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-
-021-1.gat,144,22,0|script|Construction Worker#1|155,
-{
- mes "[Construction worker]";
- mes "\"I can't let you beyond this gate. The area is closed for renovation.\"";
- close;
-}
-
-021-1.gat,156,97,0|script|Construction Worker#2|155,
-{
- mes "[Construction worker]";
- mes "\"East Tulimshar is closed for repairs.\"";
- close;
-}
-
-021-1.gat,156,44,0|script|Construction Worker#3|155,
-{
- mes "[Construction worker]";
- mes "\"East Tulimshar is closed for repairs.\"";
- close;
-}
diff --git a/world/map/npc/021-2/_import.txt b/world/map/npc/021-2/_import.txt
index 7b955fb5..96da140d 100644
--- a/world/map/npc/021-2/_import.txt
+++ b/world/map/npc/021-2/_import.txt
@@ -4,13 +4,13 @@ map: 021-2.gat
npc: npc/021-2/_mobs.txt
npc: npc/021-2/_warps.txt
npc: npc/021-2/bakery.txt
-npc: npc/021-2/bank.txt
npc: npc/021-2/barber.txt
+npc: npc/021-2/forge_shops.txt
npc: npc/021-2/government_building.txt
npc: npc/021-2/heathin.txt
-npc: npc/021-2/hotel_receptionist.txt
-npc: npc/021-2/inya.txt
npc: npc/021-2/jhedia.txt
npc: npc/021-2/kylian.txt
+npc: npc/021-2/manakins.txt
npc: npc/021-2/mapflags.txt
+npc: npc/021-2/rebecca.txt
npc: npc/021-2/yanis.txt
diff --git a/world/map/npc/021-2/_warps.txt b/world/map/npc/021-2/_warps.txt
index 4614f970..9eb18a2a 100644
--- a/world/map/npc/021-2/_warps.txt
+++ b/world/map/npc/021-2/_warps.txt
@@ -1,17 +1,23 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// North Tulimshar Indoor warps
+021-2.gat,46,97|warp|To Lobby|0,-1,021-2.gat,44,55
+021-2.gat,46,155|warp|To Second Floor|0,-1,021-2.gat,92,62
+021-2.gat,92,64|warp|To Suites|0,-1,021-2.gat,46,158
+021-2.gat,44,53|warp|To Common Beds|0,-1,021-2.gat,46,96
+021-2.gat,46,179|warp|To Common Beds|0,-1,021-2.gat,46,91
+021-2.gat,46,90|warp|To Suites|0,-1,021-2.gat,46,178
+021-2.gat,71,179|warp|To Outside|0,-1,021-1.gat,128,121
+021-2.gat,90,179|warp|To Outside|-1,-1,021-1.gat,135,121
021-2.gat,27,30|warp|To Outside|-1,-1,021-1.gat,53,135
021-2.gat,39,30|warp|To Outside|-1,-1,021-1.gat,57,135
021-2.gat,91,28|warp|To Outside|-1,-1,021-1.gat,103,101
021-2.gat,122,24|warp|To Roof|-1,-1,021-1.gat,103,97
021-2.gat,118,24|warp|To First Floor|0,-1,021-2.gat,79,23
021-2.gat,80,22|warp|To Second Floor|0,-1,021-2.gat,117,23
-021-2.gat,23,99|warp|To Roof|-1,-1,021-1.gat,52,96
+021-2.gat,70,64|warp|To Roof|-1,-1,021-1.gat,52,96
021-2.gat,25,67|warp|To Outside|-1,-1,021-1.gat,53,100
021-2.gat,46,97|warp|To First Floor|0,-1,021-2.gat,46,58
-021-2.gat,46,57|warp|To Second Floor|0,-1,021-2.gat,46,96
-021-2.gat,70,58|warp|To Main Room|-1,-1,021-2.gat,42,54
021-2.gat,28,130|warp|To Outside|-1,-1,021-1.gat,43,111
021-2.gat,28,130|warp|To Outside|-1,-1,021-1.gat,43,111
021-2.gat,84,93|warp|To First Floor|-1,0,021-2.gat,80,125
diff --git a/world/map/npc/021-2/bakery.txt b/world/map/npc/021-2/bakery.txt
index 6415b498..a063811e 100644
--- a/world/map/npc/021-2/bakery.txt
+++ b/world/map/npc/021-2/bakery.txt
@@ -3,9 +3,6 @@
// The chef
021-2.gat,95,21,0|script|Riskim|148,
{
- goto L_Begin;
-
-L_Begin:
mes "[Riskim]";
mes "";
mes "\"Welcome to our bakery!\"";
@@ -42,9 +39,9 @@ L_Begin:
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;
+ "Goodbye!", L_End;
L_Next:
mes "[Riskim]";
@@ -60,9 +57,9 @@ L_Next:
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.\"";
next;
menu
- "I will get them for you.", L_end,
+ "I will get them for you.", L_End,
"Here you are!", L_Continue,
- "Maybe later.", L_end;
+ "Maybe later.", L_End;
L_Continue:
if (countitem("ChocolateBar") < 10)
@@ -103,9 +100,9 @@ L_lacking_ingredients:
L_lace_cupcake:
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 an Orange Cupcake?", L_More,
- "Goodbye!", L_end;
+ "Goodbye!", L_End;
L_More:
mes "[Riskim]";
@@ -116,13 +113,13 @@ L_More:
mes "";
mes "\"Perhaps the Chef at Dimond's Cove can help you? We get all our cupcakes from him.\"";
next;
- goto L_end;
+ goto L_End;
-L_end:
+L_End:
close;
}
-// Server?
+// Server
021-2.gat,82,23,0|script|Sara|108,
{
mes "[Sara]";
diff --git a/world/map/npc/021-2/forge_shops.txt b/world/map/npc/021-2/forge_shops.txt
new file mode 100644
index 00000000..2ffa556b
--- /dev/null
+++ b/world/map/npc/021-2/forge_shops.txt
@@ -0,0 +1,4 @@
+// Forge Shops
+
+021-2.gat,77,134,0|shop|Gungnir|311,SlingShot :-1,SlingBullet :-1,ShortBow :-1,Arrow :1,IronArrow :3
+021-2.gat,71,133,0|shop|Mjolnir|377,Knife :-1,SharpKnife :-1,Dagger :-1,LeatherShirt :-2,LeatherShield :-2
diff --git a/world/map/npc/021-2/government_building.txt b/world/map/npc/021-2/government_building.txt
index e0a8796b..abf01ccb 100644
--- a/world/map/npc/021-2/government_building.txt
+++ b/world/map/npc/021-2/government_building.txt
@@ -6,9 +6,6 @@
mes "[Estard]";
mes "\"Hello what can I do for you?\"";
next;
- goto L_main;
-
-L_main:
if (getpartnerid2())
goto L_main_married;
@@ -61,9 +58,11 @@ L_get_rings:
if (Zeny < WEDDING_FEE)
menu
"Thanks anyways. I don't have enough with me.", L_Close;
- menu
- "I'll buy a pair.", L_get_rings_pay,
- "Thanks anyways.", L_Close;
+ if (Zeny >= WEDDING_FEE)
+ menu
+ "I'll buy a pair.", L_get_rings_pay,
+ "Thanks anyways.", L_Close;
+ goto L_get_rings_pay;
L_get_rings_pay:
callsub S_give_rings;
diff --git a/world/map/npc/021-2/hotel_receptionist.txt b/world/map/npc/021-2/hotel_receptionist.txt
deleted file mode 100644
index dac560c6..00000000
--- a/world/map/npc/021-2/hotel_receptionist.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-// Tulimshar's main workshop
-
-// The receptionist
-021-2.gat,22,63,0|script|Sonir|118,
-{
- mes "[Sonir]";
- mes "\"Welcome to The Wizards's Rest!\"";
- next;
- mes "[Sonir]";
- mes "\"We have limited housing on the second floor.\"";
- close;
-}
diff --git a/world/map/npc/021-2/kylian.txt b/world/map/npc/021-2/kylian.txt
index 15f0d36b..71dcb896 100644
--- a/world/map/npc/021-2/kylian.txt
+++ b/world/map/npc/021-2/kylian.txt
@@ -56,7 +56,7 @@ OnInit:
end;
}
-021-2.gat,32,92,0|script|Kylian|193,
+021-2.gat,89,55,0|script|Kylian|193,
{
set @state, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
diff --git a/world/map/npc/021-2/manakins.txt b/world/map/npc/021-2/manakins.txt
new file mode 100644
index 00000000..a17603b7
--- /dev/null
+++ b/world/map/npc/021-2/manakins.txt
@@ -0,0 +1,47 @@
+// Display Manakins.
+
+// Forge
+021-2.gat,76,131,0|script|Terranite Armor#Female|401,
+{
+ mes "Terranite Armor Complete Set, made to order, inquire with Heathin";
+ close;
+}
+
+021-2.gat,81,131,0|script|Terranite Armor#Male|402,
+{
+ mes "Terranite Armor Complete Set, made to order, inquire with Heathin";
+ close;
+}
+
+021-2.gat,81,136,0|script|Terranite|403,
+{
+ mes "Ahhh! A Terranite! Wait it appears to just be a display model.";
+ close;
+}
+
+// Muesuem
+
+021-2.gat,71,161,0|script|Taplapian#Female|404,
+{
+ mes "A Female Talapian.";
+ close;
+}
+
+021-2.gat,77,161,0|script|Taplapian#Male|405,
+{
+ mes "A Male Talapian.";
+ close;
+}
+
+021-2.gat,83,161,0|script|Gispian#Female|406,
+{
+ mes "A Female Gispian.";
+ close;
+}
+
+021-2.gat,89,161,0|script|Gispian#Male|407,
+{
+ mes "A Male Gispian.";
+ close;
+}
+
diff --git a/world/map/npc/021-2/mapflags.txt b/world/map/npc/021-2/mapflags.txt
index b51d6bad..d3dd0e16 100644
--- a/world/map/npc/021-2/mapflags.txt
+++ b/world/map/npc/021-2/mapflags.txt
@@ -1 +1,2 @@
021-2.gat|mapflag|town
+021-2.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/021-2/rebecca.txt b/world/map/npc/021-2/rebecca.txt
new file mode 100644
index 00000000..90ad16e9
--- /dev/null
+++ b/world/map/npc/021-2/rebecca.txt
@@ -0,0 +1,11 @@
+//
+
+021-2.gat,26,54,0|script|Rebecca|118,
+{
+ set @npcname$, "Rebecca the Inn Keeper";
+ set @cost, 100;
+ callfunc "Inn";
+ set @npcname$, "";
+ set @cost, 0;
+ close;
+}
diff --git a/world/map/npc/021-3/_import.txt b/world/map/npc/021-3/_import.txt
index 544afc3a..b434ac69 100644
--- a/world/map/npc/021-3/_import.txt
+++ b/world/map/npc/021-3/_import.txt
@@ -3,3 +3,4 @@
map: 021-3.gat
npc: npc/021-3/_mobs.txt
npc: npc/021-3/_warps.txt
+npc: npc/021-3/mapflags.txt
diff --git a/world/map/npc/021-3/_mobs.txt b/world/map/npc/021-3/_mobs.txt
index ac951460..860dfe45 100644
--- a/world/map/npc/021-3/_mobs.txt
+++ b/world/map/npc/021-3/_mobs.txt
@@ -1,9 +1,6 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Central Tulimshar Sewers mobs
-021-3.gat,120,130,20,21|monster|AngrySeaSlime|1109,6,150000,100000,Mob021-3::On1109
-021-3.gat,53,130,20,21|monster|AngrySeaSlime|1109,6,150000,100000,Mob021-3::On1109
-021-3.gat,128,69,27,7|monster|AngrySeaSlime|1109,6,150000,100000,Mob021-3::On1109
021-3.gat,120,38,11,8|monster|CaveMaggot|1056,5,100000,30000,Mob021-3::On1056
021-3.gat,103,58,8,3|monster|CaveMaggot|1056,5,100000,30000,Mob021-3::On1056
021-3.gat,80,98,34,31|monster|CaveMaggot|1056,5,100000,30000,Mob021-3::On1056
@@ -12,8 +9,6 @@
021-3.gat,79,98,33,31|monster|BlackScorpion|1009,4,100000,1800000,Mob021-3::On1009
021-3.gat,52,53,2,17|monster|Snake|1010,2,40000,50000,Mob021-3::On1010
021-3.gat,93,31,28,22|monster|SeaSlime|1033,6,100000,30000,Mob021-3::On1033
-021-3.gat,149,129,2,15|monster|Troll|1054,2,600000,100000,Mob021-3::On1054
-021-3.gat,28,52,3,20|monster|Troll|1054,2,600000,100000,Mob021-3::On1054
021-3.gat,0,0,0|script|Mob021-3|-1,
@@ -35,11 +30,6 @@ On1033:
callfunc "MobPoints";
end;
-On1054:
- set @mobID, 1054;
- callfunc "MobPoints";
- end;
-
On1056:
set @mobID, 1056;
callfunc "MobPoints";
@@ -49,9 +39,4 @@ On1108:
set @mobID, 1108;
callfunc "MobPoints";
end;
-
-On1109:
- set @mobID, 1109;
- callfunc "MobPoints";
- end;
}
diff --git a/world/map/npc/021-3/mapflags.txt b/world/map/npc/021-3/mapflags.txt
new file mode 100644
index 00000000..d02af5d8
--- /dev/null
+++ b/world/map/npc/021-3/mapflags.txt
@@ -0,0 +1 @@
+021-3.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/022-1/_warps.txt b/world/map/npc/022-1/_warps.txt
index 2b39a96d..e9d31b8e 100644
--- a/world/map/npc/022-1/_warps.txt
+++ b/world/map/npc/022-1/_warps.txt
@@ -1,5 +1,7 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Port warps
+022-1.gat,19,38|warp|To Tulismhar Subrubs|-1,2,042-1.gat,96,40
+022-1.gat,30,20|warp|To Lighthouse Beach|0,-1,023-1.gat,107,146
022-1.gat,73,110|warp|To North Tulimshar|3,-1,021-1.gat,73,23
022-1.gat,113,110|warp|To North Tulimshar|3,-1,021-1.gat,113,23
diff --git a/world/map/npc/022-1/dock.txt b/world/map/npc/022-1/dock.txt
index 2dfc9764..2f90c4a9 100644
--- a/world/map/npc/022-1/dock.txt
+++ b/world/map/npc/022-1/dock.txt
@@ -1,8 +1,51 @@
// The ferry dock
+// Author: Wushin
-022-1.gat,84,72,0|script|#tulimshardock|45,6,1,
+// Ferry Sign
+022-1.gat,62,36,0|script|Ferry Schedule#2|396,
{
- set @loc, DOCK_tulimshar;
- callfunc "Ferry";
+ callfunc "FerryManifest";
+ end;
+}
+
+022-1.gat,65,71,0|script|Ferry Schedule#3|396,
+{
+ callfunc "FerryManifest";
+ end;
+}
+
+022-1.gat,85,71,0|script|Tulimshar South Koga|395,6,2,
+{
+ callfunc "BoardFerry";
+ close;
+}
+
+022-1.gat,80,62,0|script|#Tulimshar SouthDock|45,
+{
+ end;
+OnCommandArrive:
+ enablenpc "Tulimshar South Koga";
+ end;
+
+OnCommandWarp:
+ disablenpc "Tulimshar South Koga";
+ end;
+}
+
+022-1.gat,60,24,0|script|Tulimshar North Koga|395,4,4,
+{
+ callfunc "BoardCandorFerry";
+ close;
+}
+
+022-1.gat,65,25,0|script|#Tulimshar NorthDock|45,
+{
+ end;
+OnCommandArrive:
+ enablenpc "Tulimshar North Koga";
+ end;
+
+OnCommandWarp:
+ disablenpc "Tulimshar North Koga";
end;
}
diff --git a/world/map/npc/022-1/ferry_master.txt b/world/map/npc/022-1/ferry_master.txt
index 099c75cc..5c78dc77 100644
--- a/world/map/npc/022-1/ferry_master.txt
+++ b/world/map/npc/022-1/ferry_master.txt
@@ -1,18 +1,29 @@
//
-022-1.gat,73,71,0|script|Ferry Master|138,
+022-1.gat,71,71,0|script|Ferry Master|138,
{
mes "[Ferry Master]";
mes "\"Hello! Do you need something?\"";
- next;
+ goto L_Main;
+
+L_Main:
menu
"How do I use the ferry?", L_Explain,
"Nothing I guess", L_Close;
L_Explain:
mes "[Ferry Master]";
- mes "\"You'll step up on the dock and select your destination. Each destination has an associated price that you need to pay. You don't have to go anywhere. Choosing the current port will result in nothing.\"";
- goto L_Close;
+ mes "\"You wait on the dock for the ship to come in. You'll be given a chance to board the boat when it comes into port.\"";
+ mes "\"It lingers in port to allow you some time to board in case you are running behind.\"";
+ mes "\"Once on the ship, it will sail to different ports and annouce where it is docking.\"";
+ next;
+ mes "\"There are 2 Ferrys, both ferrys are free to ride.\"";
+ mes "\"The Main ferry travels from Argeas, Kaizei and Tonori. It docks in the major ports Hurnscald, Nivalis and the Tulimshar South Dock.\"";
+ mes "\"The Candor Ferry only travels betwen Candor and the Tulimshar North Dock.\"";
+ next;
+ mes "\"Refreshments and supplies are offered aboard both ships during the voyage.\"";
+ mes "\"We also have some slot machines in case you get bored.\"";
+ goto L_Main;
L_Close:
close;
diff --git a/world/map/npc/022-1/mapflags.txt b/world/map/npc/022-1/mapflags.txt
index 930d1fdf..1977e88c 100644
--- a/world/map/npc/022-1/mapflags.txt
+++ b/world/map/npc/022-1/mapflags.txt
@@ -1 +1,2 @@
022-1.gat|mapflag|town
+022-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/022-1/tutorial.txt b/world/map/npc/022-1/tutorial.txt
index b8fcf2c6..93f1700a 100644
--- a/world/map/npc/022-1/tutorial.txt
+++ b/world/map/npc/022-1/tutorial.txt
@@ -1,20 +1,49 @@
// This file is part of the Tutorial
// Author: Jenalya
// if you enter the tutorial area from outside, it is set to be already done
+// Tutorial
+// Nibble 0
+// 1-4: Sorfina
-022-1.gat,19,37,0|script|#tutorial-outside1|45,0,2
+022-1.gat,46,82,0|script|#tutorial-outside1|45,2,1
{
callfunc "TutorialCompleted";
- warp "042-1.gat", 95, 69;
+ warp "042-1.gat", 115, 85;
end;
}
+-|script|#TutorialConfig|-1,
+{
+ end;
+
+OnInit:
+ set $@ScorpionFighter, 0;
+ set $@ScorpionTimer, 0;
+ set $@ScorpDeath, 0;
+ set $@SorfinaHasanBit, (1 << 4);
+ set $@TanishaHasanBit, (1 << 5);
+ end;
+}
+
+function|script|TutorialState|,
+{
+ callfunc "ClearVariables";
+ set @tutorial, ((TUTORIAL & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
+ set @sorfina_hasan, (TUTORIAL & $@SorfinaHasanBit);
+ set @tanisha_hasan, (TUTORIAL & $@TanishaHasanBit);
+ return;
+}
+
+function|script|SetTutorialMask|,
+{
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
+ set @tutorial_tmp, 0;
+ return;
+}
+
function|script|TutorialCompleted|,
{
- set hasan, 0;
- set kaan, 0;
- set sorfina, 0;
- set tanisha, 0;
set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
+ callfunc "ClearVariables";
return;
}
diff --git a/world/map/npc/023-1/_import.txt b/world/map/npc/023-1/_import.txt
new file mode 100644
index 00000000..79efdd7c
--- /dev/null
+++ b/world/map/npc/023-1/_import.txt
@@ -0,0 +1,5 @@
+// Map 023-1: Tulimshar Lighthouse Beach
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 023-1.gat
+npc: npc/023-1/_mobs.txt
+npc: npc/023-1/_warps.txt
diff --git a/world/map/npc/023-1/_mobs.txt b/world/map/npc/023-1/_mobs.txt
new file mode 100644
index 00000000..33a97f12
--- /dev/null
+++ b/world/map/npc/023-1/_mobs.txt
@@ -0,0 +1,42 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Lighthouse Beach mobs
+
+023-1.gat,70,41,7,7|monster|Thug|1119,1,100000,30000,Mob023-1::On1119
+023-1.gat,84,33,11,7|monster|Swashbuckler|1120,1,100000,30000,Mob023-1::On1120
+023-1.gat,58,28,6,6|monster|Grenadier|1121,1,100000,30000,Mob023-1::On1121
+023-1.gat,80,99,11,7|monster|Swashbuckler|1120,1,100000,30000,Mob023-1::On1120
+023-1.gat,86,117,19,2|monster|Grenadier|1121,1,100000,30000,Mob023-1::On1121
+023-1.gat,55,126,7,7|monster|Thug|1119,1,100000,30000,Mob023-1::On1119
+023-1.gat,47,86,7,7|monster|Thug|1119,1,100000,30000,Mob023-1::On1119
+023-1.gat,102,67,11,7|monster|Swashbuckler|1120,1,100000,30000,Mob023-1::On1120
+023-1.gat,105,90,7,7|monster|Thug|1119,1,100000,30000,Mob023-1::On1119
+023-1.gat,62,60,7,7|monster|Thug|1119,1,100000,30000,Mob023-1::On1119
+023-1.gat,93,49,13,11|monster|Grenadier|1121,1,100000,30000,Mob023-1::On1121
+023-1.gat,64,95,1,46|monster|AngrySeaSlime|1109,3,150000,100000,Mob023-1::On1109
+023-1.gat,45,54,5,38|monster|AngrySeaSlime|1109,3,150000,100000,Mob023-1::On1109
+
+
+023-1.gat,0,0,0|script|Mob023-1|-1,
+{
+ end;
+
+On1109:
+ set @mobID, 1109;
+ callfunc "MobPoints";
+ end;
+
+On1119:
+ set @mobID, 1119;
+ callfunc "MobPoints";
+ end;
+
+On1120:
+ set @mobID, 1120;
+ callfunc "MobPoints";
+ end;
+
+On1121:
+ set @mobID, 1121;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/023-1/_warps.txt b/world/map/npc/023-1/_warps.txt
new file mode 100644
index 00000000..6d04f18e
--- /dev/null
+++ b/world/map/npc/023-1/_warps.txt
@@ -0,0 +1,17 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Lighthouse Beach warps
+
+023-1.gat,108,148|warp|To Tulismhar Docks|0,-1,022-1.gat,30,22
+023-1.gat,65,146|warp|To Tulismhar Suburbs|0,-1,042-1.gat,65,24
+023-1.gat,75,134|warp|To Lighthouse Caves|-1,-1,023-3.gat,75,132
+023-1.gat,71,117|warp|To Lighthouse Caves|-1,-1,023-3.gat,71,114
+023-1.gat,83,114|warp|To Lighthouse Caves|-1,-1,023-3.gat,83,112
+023-1.gat,107,120|warp|To Lighthouse Caves|-1,-1,023-3.gat,106,118
+023-1.gat,105,114|warp|To Lighthouse Caves|-1,-1,023-3.gat,106,115
+023-1.gat,70,95|warp|To Lighthouse Caves|-1,-1,023-3.gat,70,93
+023-1.gat,48,80|warp|To Lighthouse Caves|-1,-1,023-3.gat,48,78
+023-1.gat,61,36|warp|To Lighthouse Caves|-1,-1,023-3.gat,61,39
+023-1.gat,36,34|warp|To Lighthouse |-1,-1,023-2.gat,31,38
+023-1.gat,37,23|warp|To Lighthouse |-1,-1,023-2.gat,31,33
+023-1.gat,66,101|warp|To Other Side Of Bridge|-1,2,023-1.gat,61,100
+023-1.gat,62,101|warp|To Other Side Of Bridge|-1,2,023-1.gat,67,100
diff --git a/world/map/npc/023-2/_import.txt b/world/map/npc/023-2/_import.txt
new file mode 100644
index 00000000..c9571ad9
--- /dev/null
+++ b/world/map/npc/023-2/_import.txt
@@ -0,0 +1,5 @@
+// Map 023-2: Lighthouse
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 023-2.gat
+npc: npc/023-2/_mobs.txt
+npc: npc/023-2/_warps.txt
diff --git a/world/map/npc/023-2/_mobs.txt b/world/map/npc/023-2/_mobs.txt
new file mode 100644
index 00000000..2f4ee765
--- /dev/null
+++ b/world/map/npc/023-2/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Lighthouse mobs
+
+
+
+023-2.gat,0,0,0|script|Mob023-2|-1,
+{
+ end;
+}
diff --git a/world/map/npc/023-2/_warps.txt b/world/map/npc/023-2/_warps.txt
new file mode 100644
index 00000000..1c25c857
--- /dev/null
+++ b/world/map/npc/023-2/_warps.txt
@@ -0,0 +1,5 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Lighthouse warps
+
+023-2.gat,31,40|warp|To Lighthouse Beach|-1,-1,023-1.gat,36,35
+023-2.gat,31,31|warp|To Lighthouse Beach|-1,-1,023-1.gat,36,23
diff --git a/world/map/npc/023-3/_import.txt b/world/map/npc/023-3/_import.txt
new file mode 100644
index 00000000..9e295b77
--- /dev/null
+++ b/world/map/npc/023-3/_import.txt
@@ -0,0 +1,5 @@
+// Map 023-3: Tulimshar Beach Caves
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 023-3.gat
+npc: npc/023-3/_mobs.txt
+npc: npc/023-3/_warps.txt
diff --git a/world/map/npc/023-3/_mobs.txt b/world/map/npc/023-3/_mobs.txt
new file mode 100644
index 00000000..f5965e1d
--- /dev/null
+++ b/world/map/npc/023-3/_mobs.txt
@@ -0,0 +1,25 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Beach Caves mobs
+
+023-3.gat,91,77,7,7|monster|Thug|1119,1,100000,30000,Mob023-3::On1119
+023-3.gat,127,85,7,7|monster|Swashbuckler|1120,1,100000,30000,Mob023-3::On1120
+023-3.gat,98,28,7,7|monster|Swashbuckler|1120,1,100000,30000,Mob023-3::On1120
+023-3.gat,120,45,7,7|monster|Thug|1119,1,100000,30000,Mob023-3::On1119
+023-3.gat,51,107,12,5|monster|Swashbuckler|1120,1,100000,30000,Mob023-3::On1120
+023-3.gat,69,52,66,8|monster|Thug|1119,1,100000,30000,Mob023-3::On1119
+
+
+023-3.gat,0,0,0|script|Mob023-3|-1,
+{
+ end;
+
+On1119:
+ set @mobID, 1119;
+ callfunc "MobPoints";
+ end;
+
+On1120:
+ set @mobID, 1120;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/023-3/_warps.txt b/world/map/npc/023-3/_warps.txt
new file mode 100644
index 00000000..3c95fb55
--- /dev/null
+++ b/world/map/npc/023-3/_warps.txt
@@ -0,0 +1,11 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Beach Caves warps
+
+023-3.gat,75,134|warp|To Lighthouse Beach|-1,-1,023-1.gat,75,136
+023-3.gat,71,117|warp|To Lighthouse Beach|-1,-1,023-1.gat,71,119
+023-3.gat,83,114|warp|To Lighthouse Beach|-1,-1,023-1.gat,83,116
+023-3.gat,106,120|warp|To Lighthouse Beach|-1,-1,023-1.gat,107,122
+023-3.gat,106,112|warp|To Lighthouse Beach|-1,-1,023-1.gat,105,112
+023-3.gat,70,95|warp|To Lighthouse Beach|-1,-1,023-1.gat,70,97
+023-3.gat,48,80|warp|To Lighthouse Beach|-1,-1,023-1.gat,48,82
+023-3.gat,61,36|warp|To Lighthouse Beach|-1,-1,023-1.gat,61,34
diff --git a/world/map/npc/024-1/_import.txt b/world/map/npc/024-1/_import.txt
index debf3dda..fac35b9a 100644
--- a/world/map/npc/024-1/_import.txt
+++ b/world/map/npc/024-1/_import.txt
@@ -6,5 +6,6 @@ npc: npc/024-1/_warps.txt
npc: npc/024-1/ched.txt
npc: npc/024-1/david.txt
npc: npc/024-1/eomie.txt
+npc: npc/024-1/mapflags.txt
npc: npc/024-1/tinris.txt
npc: npc/024-1/tondar.txt
diff --git a/world/map/npc/024-1/mapflags.txt b/world/map/npc/024-1/mapflags.txt
new file mode 100644
index 00000000..7cfb1c4d
--- /dev/null
+++ b/world/map/npc/024-1/mapflags.txt
@@ -0,0 +1,2 @@
+024-1.gat|mapflag|town
+024-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/024-2/_import.txt b/world/map/npc/024-2/_import.txt
index 2a03af32..685cb331 100644
--- a/world/map/npc/024-2/_import.txt
+++ b/world/map/npc/024-2/_import.txt
@@ -4,5 +4,6 @@ map: 024-2.gat
npc: npc/024-2/_mobs.txt
npc: npc/024-2/_warps.txt
npc: npc/024-2/barrier.txt
+npc: npc/024-2/mapflags.txt
npc: npc/024-2/tyer.txt
npc: npc/024-2/tyer_trigger.txt
diff --git a/world/map/npc/024-2/mapflags.txt b/world/map/npc/024-2/mapflags.txt
new file mode 100644
index 00000000..03190692
--- /dev/null
+++ b/world/map/npc/024-2/mapflags.txt
@@ -0,0 +1,2 @@
+024-2.gat|mapflag|town
+024-2.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/025-1/_import.txt b/world/map/npc/025-1/_import.txt
index a29be248..a8778d2f 100644
--- a/world/map/npc/025-1/_import.txt
+++ b/world/map/npc/025-1/_import.txt
@@ -4,5 +4,6 @@ map: 025-1.gat
npc: npc/025-1/_mobs.txt
npc: npc/025-1/_warps.txt
npc: npc/025-1/barrier.txt
+npc: npc/025-1/mapflags.txt
npc: npc/025-1/reset.txt
npc: npc/025-1/rossy.txt
diff --git a/world/map/npc/025-1/mapflags.txt b/world/map/npc/025-1/mapflags.txt
new file mode 100644
index 00000000..779331b6
--- /dev/null
+++ b/world/map/npc/025-1/mapflags.txt
@@ -0,0 +1 @@
+025-1.gat|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/025-3/_import.txt b/world/map/npc/025-3/_import.txt
index 6644999e..084298e6 100644
--- a/world/map/npc/025-3/_import.txt
+++ b/world/map/npc/025-3/_import.txt
@@ -4,3 +4,4 @@ map: 025-3.gat
npc: npc/025-3/_mobs.txt
npc: npc/025-3/_warps.txt
npc: npc/025-3/barriers.txt
+npc: npc/025-3/mapflags.txt
diff --git a/world/map/npc/025-3/mapflags.txt b/world/map/npc/025-3/mapflags.txt
new file mode 100644
index 00000000..aba49653
--- /dev/null
+++ b/world/map/npc/025-3/mapflags.txt
@@ -0,0 +1 @@
+025-3.gat|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/025-4/mapflags.txt b/world/map/npc/025-4/mapflags.txt
index 276503c9..bc862ed8 100644
--- a/world/map/npc/025-4/mapflags.txt
+++ b/world/map/npc/025-4/mapflags.txt
@@ -1 +1,2 @@
-025-4.gat|mapflag|nosave|025-3,112,96
+025-4.gat|mapflag|nosave|025-1,33,50
+025-4.gat|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/026-1/_import.txt b/world/map/npc/026-1/_import.txt
index 38d5f638..f618ee0a 100644
--- a/world/map/npc/026-1/_import.txt
+++ b/world/map/npc/026-1/_import.txt
@@ -3,5 +3,6 @@
map: 026-1.gat
npc: npc/026-1/_mobs.txt
npc: npc/026-1/_warps.txt
+npc: npc/026-1/mapflags.txt
npc: npc/026-1/munro.txt
npc: npc/026-1/sign.txt
diff --git a/world/map/npc/026-1/_mobs.txt b/world/map/npc/026-1/_mobs.txt
index 04a51082..08171da8 100644
--- a/world/map/npc/026-1/_mobs.txt
+++ b/world/map/npc/026-1/_mobs.txt
@@ -6,9 +6,12 @@
026-1.gat,0,0,0,0|monster|Poltergeist|1047,34,120000,40000,Mob026-1::On1047
026-1.gat,0,0,0,0|monster|Silkworm|1035,10,300000,60000,Mob026-1::On1035
026-1.gat,0,0,0,0|monster|Scorpion|1003,15,300000,30000,Mob026-1::On1003
-026-1.gat,0,0,0,0|monster|Skeleton|1043,5,900000,10000,Mob026-1::On1043
-026-1.gat,0,0,0,0|monster|LadySkeleton|1044,5,900000,20000,Mob026-1::On1044
026-1.gat,0,0,0,0|monster|LogHead|1025,8,300000,40000,Mob026-1::On1025
+026-1.gat,46,74,35,26|monster|GrassSnake|1034,2,100000,50000,Mob026-1::On1034
+026-1.gat,88,36,35,26|monster|GrassSnake|1034,2,100000,50000,Mob026-1::On1034
+026-1.gat,35,36,18,16|monster|GrassSnake|1034,2,100000,50000,Mob026-1::On1034
+026-1.gat,66,33,73,17|monster|GrassSnake|1034,4,100000,50000,Mob026-1::On1034
+026-1.gat,60,76,61,31|monster|GrassSnake|1034,4,100000,50000,Mob026-1::On1034
026-1.gat,0,0,0|script|Mob026-1|-1,
@@ -25,6 +28,11 @@ On1025:
callfunc "MobPoints";
end;
+On1034:
+ set @mobID, 1034;
+ callfunc "MobPoints";
+ end;
+
On1035:
set @mobID, 1035;
callfunc "MobPoints";
@@ -40,16 +48,6 @@ On1042:
callfunc "MobPoints";
end;
-On1043:
- set @mobID, 1043;
- callfunc "MobPoints";
- end;
-
-On1044:
- set @mobID, 1044;
- callfunc "MobPoints";
- end;
-
On1047:
set @mobID, 1047;
callfunc "MobPoints";
diff --git a/world/map/npc/026-1/mapflags.txt b/world/map/npc/026-1/mapflags.txt
new file mode 100644
index 00000000..695e576c
--- /dev/null
+++ b/world/map/npc/026-1/mapflags.txt
@@ -0,0 +1 @@
+027-1.gat|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/027-1/_import.txt b/world/map/npc/027-1/_import.txt
index 14fc594e..9c0eef23 100644
--- a/world/map/npc/027-1/_import.txt
+++ b/world/map/npc/027-1/_import.txt
@@ -3,6 +3,8 @@
map: 027-1.gat
npc: npc/027-1/_mobs.txt
npc: npc/027-1/_warps.txt
+npc: npc/027-1/crypt.txt
npc: npc/027-1/golbenez.txt
npc: npc/027-1/graves.txt
-npc: npc/027-1/monsters.txt
+npc: npc/027-1/mapflags.txt
+npc: npc/027-1/traveler.txt
diff --git a/world/map/npc/027-1/_mobs.txt b/world/map/npc/027-1/_mobs.txt
index 28865313..9982b965 100644
--- a/world/map/npc/027-1/_mobs.txt
+++ b/world/map/npc/027-1/_mobs.txt
@@ -4,39 +4,28 @@
027-1.gat,81,91,95,27|monster|Poltergeist|1047,4,900000,60000,Mob027-1::On1047
027-1.gat,81,91,97,25|monster|Spectre|1042,4,900000,60000,Mob027-1::On1042
027-1.gat,81,91,99,23|monster|Wisp|1040,4,900000,60000,Mob027-1::On1040
-027-1.gat,54,53,66,46|monster|FireSkull|1023,2,60000,20000,Mob027-1::On1023
-027-1.gat,54,53,66,46|monster|PoisonSkull|1024,1,60000,20000,Mob027-1::On1024
-027-1.gat,54,53,66,46|monster|Skeleton|1043,2,60000,8000,Mob027-1::On1043
-027-1.gat,54,53,66,46|monster|LadySkeleton|1044,2,60000,8000,Mob027-1::On1044
-027-1.gat,71,41,31,22|monster|Skeleton|1043,2,175000,20000,Mob027-1::On1043
-027-1.gat,71,41,31,22|monster|LadySkeleton|1044,2,175000,20000,Mob027-1::On1044
-027-1.gat,37,41,33,22|monster|FireSkull|1023,2,200000,10000,Mob027-1::On1023
-027-1.gat,37,41,33,22|monster|PoisonSkull|1024,2,200000,10000,Mob027-1::On1024
+027-1.gat,37,64,32,20|monster|Skeleton|1043,2,60000,8000,Mob027-1::On1043
+027-1.gat,37,64,32,20|monster|LadySkeleton|1044,2,60000,8000,Mob027-1::On1044
+027-1.gat,71,41,31,22|monster|Skeleton|1043,1,175000,20000,Mob027-1::On1043
+027-1.gat,71,41,31,22|monster|LadySkeleton|1044,1,175000,20000,Mob027-1::On1044
027-1.gat,37,41,33,22|monster|Skeleton|1043,4,180000,20000,Mob027-1::On1043
027-1.gat,37,41,33,22|monster|LadySkeleton|1044,4,180000,20000,Mob027-1::On1044
-027-1.gat,105,40,32,21|monster|FireSkull|1023,1,28000,25000,Mob027-1::On1023
-027-1.gat,105,40,32,21|monster|PoisonSkull|1024,1,30000,20000,Mob027-1::On1024
027-1.gat,105,40,32,21|monster|Skeleton|1043,2,35000,20000,Mob027-1::On1043
027-1.gat,105,40,32,21|monster|LadySkeleton|1044,3,33000,25000,Mob027-1::On1044
-027-1.gat,28,67,2,1|monster|JackO|1022,1,265000,200000,Mob027-1::On1022
+027-1.gat,70,64,31,20|monster|Skeleton|1043,1,60000,8000,Mob027-1::On1043
+027-1.gat,70,64,31,21|monster|LadySkeleton|1044,1,60000,8000,Mob027-1::On1044
+027-1.gat,104,64,31,20|monster|Skeleton|1043,2,60000,8000,Mob027-1::On1043
+027-1.gat,104,64,31,21|monster|LadySkeleton|1044,2,60000,8000,Mob027-1::On1044
+027-1.gat,70,40,100,20|monster|VampireBat|1066,15,100000,30000,Mob027-1::On1066
+027-1.gat,99,90,34,16|monster|GrassSnake|1034,3,100000,50000,Mob027-1::On1034
027-1.gat,0,0,0|script|Mob027-1|-1,
{
end;
-On1022:
- set @mobID, 1022;
- callfunc "MobPoints";
- end;
-
-On1023:
- set @mobID, 1023;
- callfunc "MobPoints";
- end;
-
-On1024:
- set @mobID, 1024;
+On1034:
+ set @mobID, 1034;
callfunc "MobPoints";
end;
@@ -64,4 +53,9 @@ On1047:
set @mobID, 1047;
callfunc "MobPoints";
end;
+
+On1066:
+ set @mobID, 1066;
+ callfunc "MobPoints";
+ end;
}
diff --git a/world/map/npc/027-1/crypt.txt b/world/map/npc/027-1/crypt.txt
new file mode 100644
index 00000000..37b1cecf
--- /dev/null
+++ b/world/map/npc/027-1/crypt.txt
@@ -0,0 +1,11 @@
+027-1.gat,28,67,0|script|#CryptEntrance|45,0,0
+{
+ if (BaseLevel < 60)
+ goto L_Weak;
+ warp "027-2.gat", 112, 110;
+ end;
+
+L_Weak:
+ message strcharinfo(0), "Come back when you're a bit more experienced.";
+ end;
+}
diff --git a/world/map/npc/027-1/golbenez.txt b/world/map/npc/027-1/golbenez.txt
index 35980b2f..b32b862c 100644
--- a/world/map/npc/027-1/golbenez.txt
+++ b/world/map/npc/027-1/golbenez.txt
@@ -36,21 +36,4 @@ L_Weak:
next;
mes "\"Come back when you're a bit more experienced.\"";
close;
-
-// Golbenez resets the graveyard monsters when no players are present
-// He's such an evil guy!
-OnInit:
- if (debug >= 2) end;
- initnpctimer;
- end;
-
-OnTimer10000:
- if (getareausers("027-1.gat", 0, 0, 149, 119, 1) == 0)
- killmonsterall "027-1.gat";
-
- setnpctimer 0;
- end;
}
-
-
-
diff --git a/world/map/npc/027-1/mapflags.txt b/world/map/npc/027-1/mapflags.txt
new file mode 100644
index 00000000..695e576c
--- /dev/null
+++ b/world/map/npc/027-1/mapflags.txt
@@ -0,0 +1 @@
+027-1.gat|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/027-1/traveler.txt b/world/map/npc/027-1/traveler.txt
new file mode 100644
index 00000000..142b39dd
--- /dev/null
+++ b/world/map/npc/027-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+027-1.gat,83,84,0|script|Styx the Traveler|103,
+{
+ set @NpcName$, "Styx";
+ set @NpcTravelBit, $@graveyard_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/027-2/_import.txt b/world/map/npc/027-2/_import.txt
index b21edf9e..f98b8570 100644
--- a/world/map/npc/027-2/_import.txt
+++ b/world/map/npc/027-2/_import.txt
@@ -4,7 +4,6 @@ map: 027-2.gat
npc: npc/027-2/_mobs.txt
npc: npc/027-2/_warps.txt
npc: npc/027-2/alacrius.txt
-npc: npc/027-2/alacrius2.txt
npc: npc/027-2/barman.txt
npc: npc/027-2/caretaker.txt
npc: npc/027-2/cerhan.txt
@@ -18,5 +17,7 @@ npc: npc/027-2/headless_man.txt
npc: npc/027-2/husband.txt
npc: npc/027-2/innkeeper.txt
npc: npc/027-2/lover.txt
+npc: npc/027-2/mapflags.txt
npc: npc/027-2/testnpcs.txt
+npc: npc/027-2/thurston.txt
npc: npc/027-2/werewolf.txt
diff --git a/world/map/npc/027-2/_mobs.txt b/world/map/npc/027-2/_mobs.txt
index a37e0586..345e7bc6 100644
--- a/world/map/npc/027-2/_mobs.txt
+++ b/world/map/npc/027-2/_mobs.txt
@@ -2,17 +2,26 @@
// Graveyard Indoor mobs
027-2.gat,81,41,11,9|monster|DrunkenSkeleton|1077,1,100000,30000,Mob027-2::On1077
-027-2.gat,91,38,11,9|monster|TipsySkeleton|1078,1,100000,30000,Mob027-2::On1078
+027-2.gat,102,99,9,19|monster|TipsySkeleton|1078,1,100000,30000,Mob027-2::On1078
027-2.gat,110,26,11,11|monster|TipsySkeleton|1078,1,100000,30000,Mob027-2::On1078
027-2.gat,104,28,11,9|monster|DrunkenSkeleton|1077,1,100000,30000,Mob027-2::On1077
027-2.gat,89,34,11,9|monster|DrunkenLadySkeleton|1079,1,100000,30000,Mob027-2::On1079
027-2.gat,116,26,11,9|monster|DrunkenLadySkeleton|1079,1,100000,30000,Mob027-2::On1079
+027-2.gat,112,88,28,39|monster|VampireBat|1066,15,100000,30000,Mob027-2::On1066
+027-2.gat,102,99,9,19|monster|DrunkenSkeleton|1077,1,100000,30000,Mob027-2::On1077
+027-2.gat,102,99,9,19|monster|TipsySkeleton|1078,1,100000,30000,Mob027-2::On1078
+027-2.gat,89,34,11,9|monster|DrunkenLadySkeleton|1079,1,100000,30000,Mob027-2::On1079
027-2.gat,0,0,0|script|Mob027-2|-1,
{
end;
+On1066:
+ set @mobID, 1066;
+ callfunc "MobPoints";
+ end;
+
On1077:
set @mobID, 1077;
callfunc "MobPoints";
diff --git a/world/map/npc/027-2/_warps.txt b/world/map/npc/027-2/_warps.txt
index 43840de9..bfed5d08 100644
--- a/world/map/npc/027-2/_warps.txt
+++ b/world/map/npc/027-2/_warps.txt
@@ -5,3 +5,5 @@
027-2.gat,128,35|warp|To Second Floor|0,-1,027-2.gat,75,93
027-2.gat,76,95|warp|To First Floor|0,-1,027-2.gat,128,36
027-2.gat,106,46|warp|To Outside|0,-1,027-1.gat,68,89
+027-2.gat,113,111|warp|To Graveyard|4,-1,027-1.gat,28,68
+027-2.gat,113,78|warp|To Crypts Basement|4,-1,027-3.gat,25,68
diff --git a/world/map/npc/027-2/alacrius.txt b/world/map/npc/027-2/alacrius.txt
index d8b2b513..8c4b3802 100644
--- a/world/map/npc/027-2/alacrius.txt
+++ b/world/map/npc/027-2/alacrius.txt
@@ -1,43 +1,13 @@
-//Starts the reaper quest
-//(incomplete, use alacrius2.txt instead)
-//To enable: sed 's_^// __' -i npc/027-2/alacrius.txt
-
-//027-2.gat,107,29,0|script|Alacrius|313,
-//{
-// // if started, go to started
-// // if fail go to failed
-// // if complete go to complete
-// // if cooldown go to cooldown
-
-// // start quest section
-// mes "Hi, want to fight the reaper?";
-// menu
-// "Let's go!",L_START,
-// "No, thank you.",-;
-// close;
-
-// L_START:
-// monster "027-4.gat",40,55,"Reaper Quest",1067,1,"Reaper::OnDead";
-// enablenpc "#gatecontrol";
-// enablenpc "#closedgate";
-// disablenpc "#opengate";
-// // Open doors to reaper level
-// warp "027-3.gat",41,70;
-// initnpctimer;
-// close;
-
-// // 5 min mark for testing purposes, up it when finished.
-// OnTimer300000:
-// mapwarp "027-3.gat", "027-2.gat",104,41;
-// mapwarp "027-4.gat", "027-2.gat",104,41;
-// killmonsterall "027-4.gat";
-// end;
-// OnTimer301000:
-// npctalk "You have failed the mission.";
-// end;
-
-// // cooldown before the quest can be restarted
-// OnTimer360000:
-// // set quest var
-// end;
-// }
+// Author: wushin
+//Starts Crypt Quest
+
+027-2.gat,122,105,0|script|Alacrius|313,
+{
+ mes "[Alacrius]";
+ mes "\"Hello, I'm Alacrius. \"";
+ next;
+ mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \"";
+ next;
+ mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \"";
+ close;
+}
diff --git a/world/map/npc/027-2/alacrius2.txt b/world/map/npc/027-2/alacrius2.txt
deleted file mode 100644
index 94607b2d..00000000
--- a/world/map/npc/027-2/alacrius2.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-//Starts the reaper quest
-//To enable: sed 's_^// __' -i npc/027-2/alacrius2.txt
-
-// 027-2.gat,107,29,0|script|Alacrius|313,
-// {
-// if ($@FIGHT_ALACRIUS_STATUS != 0) goto L_Enjoy;
-
-
-// mes "[Alacrius]";
-// mes "\"Hello, I'm Alacrius. \"";
-// next;
-// mes "[Alacrius]";
-// mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \"";
-// next;
-// mes "[Alacrius]";
-// mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \"";
-// next;
-// mes "[Alacrius]";
-// mes "\"Being away from time and space doesn't allow me to try to save my beloved wife... I need your help. Do you think you have what it takes to handle the most powerful monsters over the world of Mana? \"";
-// next;
-// menu
-// "Let's go!",L_PLAY_OK,
-// "No, thank you.",-;
-// close;
-
-// L_PLAY_OK:
-
-// if ($@FIGHT_ALACRIUS_STATUS != 0)
-// goto L_AlreadyStarted;
-// set $@FIGHT_ALACRIUS_STATUS, 1;
-// set $@MO_REAPER, 0;
-// startnpctimer;
-// set @PRIZE, 1;
-
-// goto L_Exit;
-
-// L_Enjoy:
-// if ($@MO_REAPER == 1) goto L_AllDead;
-// mes "[Alacrius]";
-// mes "\"...Please hurry up, the time is running...\"";
-// goto L_Exit;
-
-// L_AlreadyStarted:
-// mes "[Alacrius]";
-// mes "\"The Reaper is alive.\"";
-// goto L_Exit;
-
-// L_Exit:
-// close;
-// end;
-
-
-// // Time to fight
-// OnTimer10000:
-
-// monster "027-2.gat",0,0,"Reaper Quest",1111,1,"Alacrius::OnDeadReaper";
-// end;
-
-// OnDeadReaper:
-// set $@MO_REAPER, $@MO_REAPER + 1;
-// killmonster "027-2.gat","All";
-// end;
-
-// OnDeadLost:
-// set $@MO_LOST, $@MO_LOST + 1;
-// end;
-
-
-// OnTimer120000:
-
-// set $@MO_REAPER,0;
-// set $@FIGHT_ALACRIUS_STATUS, 0;
-// killmonster "027-2.gat","All";
-// stopnpctimer;
-// setnpctimer 0;
-// set @PRIZE, 0;
-// npctalk "Oh my beloved wife, you could not be rescued! I will have to purge my mistakes again...";
-// npctalk "Please, help my beloved wife!!";
-
-// end;
-
-// OnDead:
-// end;
-
-
-// L_AllDead:
-// if(@PRIZE == 0)
-// goto L_NOHERO;
-
-// getinventorylist;
-// if (@inventorylist_count == 100)
-// goto L_TooMany;
-// getitem "CasinoCoins", 1;
-
-// mes "[Alacrius]";
-// mes "Thank you very much, you saved my love!! Here you are, a prize according to the dangers you've been exposed to.";
-// set @PRIZE , 0;
-// set $@MO_REAPER,0;
-// close;
-// end;
-
-// L_TooMany:
-// mes "[Alacrius]";
-// mes "You have no room for the reward.";
-// close;
-
-// L_NOHERO:
-// mes "[Alacrius]";
-// mes "Sorry, but you didn't save my love... Try it again when you're ready...";
-// close;
-// end;
-// OnInit:
-// initnpctimer;
-// stopnpctimer;
-// }
diff --git a/world/map/npc/027-2/caretaker.txt b/world/map/npc/027-2/caretaker.txt
index bd28a0a5..05c887cd 100644
--- a/world/map/npc/027-2/caretaker.txt
+++ b/world/map/npc/027-2/caretaker.txt
@@ -55,15 +55,12 @@ L_Favor:
L_Receive:
set QUEST_Graveyard_Caretaker, 2;
mes "You receive the letter and put it in a special place so it doesn't get lost in your inventory.";
- if (@menu == 2)
- goto L_Location;
- close;
-
-L_Location:
next;
- goto L_Location_Real;
+ if (@menu != 2)
+ close;
+ goto L_Location;
-L_Location_Real:
+L_Location:
mes "[Caretaker]";
mes "\"Her name is Airlia. She works at the town hall in Hurnscald. Thank you for your help.\"";
close;
@@ -75,7 +72,7 @@ L_Has_Letter:
menu
"Not yet.", L_Close,
"I'll get there when I get there.", L_Close,
- "Where did you say I could find her?", L_Location_Real;
+ "Where did you say I could find her?", L_Location;
L_Delivered_Letter:
mes "[Caretaker]";
@@ -106,6 +103,9 @@ L_Give_New_Letter_Real:
mes "\"Thank you.\"";
close;
+L_Close:
+ close;
+
OnTimer3000:
monster "027-2.gat", 29, 21, "Caretaker's Wife", 1044, 1, "Caretaker::OnWifeDeath";
stopnpctimer;
@@ -122,7 +122,4 @@ OnWifeDeath:
gmcommand "@ban +5mn " + strcharinfo(0);
initnpctimer;
end;
-
-L_Close:
- close;
}
diff --git a/world/map/npc/027-2/golbenez.txt b/world/map/npc/027-2/golbenez.txt
index 082b7a7d..9d7bdb3a 100644
--- a/world/map/npc/027-2/golbenez.txt
+++ b/world/map/npc/027-2/golbenez.txt
@@ -296,17 +296,17 @@ L_Soul:
goto L_Soul_Try;
L_Soul_Try:
- if (countitem("JackOSoul") < 1)
+ if (countitem("Soul") < 1)
menu
"I'll go and get one.",L_Close;
menu
- "What about this Jack O Soul?",L_TryThisSoul,
+ "What about this Soul?",L_TryThisSoul,
"I'll go and try to find a soul.",L_Close;
L_TryThisSoul:
- if (countitem("JackOSoul") < 1)
+ if (countitem("Soul") < 1)
goto L_Betray;
- delitem "JackOSoul", 1;
+ delitem "Soul", 1;
set @soul, rand(50);
if (@soul == 0)
goto L_Soul_Success;
diff --git a/world/map/npc/027-2/mapflags.txt b/world/map/npc/027-2/mapflags.txt
new file mode 100644
index 00000000..5e0579c5
--- /dev/null
+++ b/world/map/npc/027-2/mapflags.txt
@@ -0,0 +1 @@
+027-2.gat|mapflag|resave|025-1,33,50
diff --git a/world/map/npc/027-2/thurston.txt b/world/map/npc/027-2/thurston.txt
new file mode 100644
index 00000000..0778c7ec
--- /dev/null
+++ b/world/map/npc/027-2/thurston.txt
@@ -0,0 +1,23 @@
+// Vampire Bat Wings Daily
+
+027-2.gat,100,105,0|script|Thurston|302,
+{
+ set @dq_level, 60;
+ set @dq_cost, 45;
+ set @dq_count, 20;
+ set @dq_name$, "VampireBatWing";
+ set @dq_friendly_name$, "Vampire Bat Wing";
+ set @dq_money, 4000;
+ set @dq_exp, 1000;
+
+ callfunc "DailyQuest";
+
+ set @dq_level, 0;
+ set @dq_cost, 0;
+ set @dq_count, 0;
+ set @dq_name$, "";
+ set @dq_friendly_name$, "";
+ set @dq_money, 0;
+ set @dq_exp, 0;
+ close;
+}
diff --git a/world/map/npc/027-3/_import.txt b/world/map/npc/027-3/_import.txt
index 7b7505f9..d8f11879 100644
--- a/world/map/npc/027-3/_import.txt
+++ b/world/map/npc/027-3/_import.txt
@@ -1,5 +1,10 @@
-// Map 027-3: Crypt
+// Map 027-3: Crypt Basement
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 027-3.gat
npc: npc/027-3/_mobs.txt
npc: npc/027-3/_warps.txt
+npc: npc/027-3/casket_traps.txt
+npc: npc/027-3/general_krukan_door.txt
+npc: npc/027-3/locked_doors.txt
+npc: npc/027-3/mapflags.txt
+npc: npc/027-3/monsters.txt
diff --git a/world/map/npc/027-3/_mobs.txt b/world/map/npc/027-3/_mobs.txt
index 35f136e0..6256db5e 100644
--- a/world/map/npc/027-3/_mobs.txt
+++ b/world/map/npc/027-3/_mobs.txt
@@ -1,9 +1,42 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Crypt mobs
+// Crypt Basement mobs
+027-3.gat,34,63,29,69|monster|Skeleton|1043,6,60000,8000,Mob027-3::On1043
+027-3.gat,97,43,59,30|monster|Skeleton|1043,6,60000,8000,Mob027-3::On1043
+027-3.gat,34,63,29,69|monster|LadySkeleton|1044,4,60000,8000,Mob027-3::On1044
+027-3.gat,113,78,28,26|monster|LadySkeleton|1044,4,60000,8000,Mob027-3::On1044
+027-3.gat,113,78,27,27|monster|Skeleton|1043,4,60000,8000,Mob027-3::On1043
+027-3.gat,81,87,29,22|monster|VampireBat|1066,15,100000,30000,Mob027-3::On1066
+027-3.gat,74,45,106,33|monster|PoisonSkull|1024,1,60000,20000,Mob027-3::On1024
+027-3.gat,98,84,60,14|monster|FireSkull|1023,2,60000,20000,Mob027-3::On1023
027-3.gat,0,0,0|script|Mob027-3|-1,
{
end;
+
+On1023:
+ set @mobID, 1023;
+ callfunc "MobPoints";
+ end;
+
+On1024:
+ set @mobID, 1024;
+ callfunc "MobPoints";
+ end;
+
+On1043:
+ set @mobID, 1043;
+ callfunc "MobPoints";
+ end;
+
+On1044:
+ set @mobID, 1044;
+ callfunc "MobPoints";
+ end;
+
+On1066:
+ set @mobID, 1066;
+ callfunc "MobPoints";
+ end;
}
diff --git a/world/map/npc/027-3/_warps.txt b/world/map/npc/027-3/_warps.txt
index 51e3727d..9bf5d437 100644
--- a/world/map/npc/027-3/_warps.txt
+++ b/world/map/npc/027-3/_warps.txt
@@ -1,4 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Crypt warps
+// Crypt Basement warps
-027-3.gat,127,44|warp|To Crypt Level 2|1,-1,027-4.gat,37,20
+027-3.gat,26,67|warp|To Crypts Entrance|2,-1,027-2.gat,112,77
+027-3.gat,126,98|warp|To Crypts Sub-Basement One|1,-1,027-4.gat,125,18
diff --git a/world/map/npc/027-3/casket_traps.txt b/world/map/npc/027-3/casket_traps.txt
new file mode 100644
index 00000000..7b8a1e70
--- /dev/null
+++ b/world/map/npc/027-3/casket_traps.txt
@@ -0,0 +1,80 @@
+027-3.gat,32,96,0|script|#casket1|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,38,86,0|script|#casket2|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,46,76,0|script|#casket3|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,38,57,0|script|#casket4|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,22,44,0|script|#casket5|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,48,43,0|script|#casket6|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,86,30,0|script|#casket7|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-3.gat,108,45,0|script|#casket8|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -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
new file mode 100644
index 00000000..86a6342f
--- /dev/null
+++ b/world/map/npc/027-3/general_krukan_door.txt
@@ -0,0 +1,19 @@
+// Mini-Boss
+// General Krukun
+
+027-3.gat,82,88,0|script|#GeneralDoor1|35,1,0
+{
+ if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT1 != 0) )
+ goto L_NoKeys;
+
+ delitem "CryptKey", 10;
+ warp "027-6.gat",39,60;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/027-3/locked_doors.txt b/world/map/npc/027-3/locked_doors.txt
new file mode 100644
index 00000000..b2ec8779
--- /dev/null
+++ b/world/map/npc/027-3/locked_doors.txt
@@ -0,0 +1,128 @@
+// Locked Doors
+
+027-3.gat,22,29,0|script|#CLockDoor1|35,0,0
+{
+ if (countitem("CryptKey") < 5)
+ goto L_NoKeys;
+ mes "Open the Locked Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ delitem "CryptKey", 5;
+ warp "027-3.gat",22,26;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
+
+027-3.gat,22,27,0|script|#CInsideDoor1|35,0,0
+{
+ mes "Open the Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ warp "027-3.gat",22,30;
+ message strcharinfo(0), "This door slams shut and locks itself behind you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+027-3.gat,37,29,0|script|#CLockDoor2|35,0,0
+{
+ if (countitem("CryptKey") < 5)
+ goto L_NoKeys;
+ mes "Open the Locked Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ delitem "CryptKey", 5;
+ warp "027-3.gat",37,26;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
+
+027-3.gat,37,27,0|script|#CInsideDoor2|35,0,0
+{
+ mes "Open the Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ warp "027-3.gat",37,30;
+ message strcharinfo(0), "This door slams shut and locks itself behind you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+027-3.gat,128,29,0|script|#CLockDoor3|35,0,0
+{
+ if (countitem("CryptKey") < 5)
+ goto L_NoKeys;
+ mes "Open the Locked Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ delitem "CryptKey", 5;
+ warp "027-3.gat",128,26;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
+
+027-3.gat,128,27,0|script|#CInsideDoor3|35,0,0
+{
+ mes "Open the Door?";
+ menu
+ "Yes.", L_Open,
+ "No.", L_Close;
+
+L_Open:
+ warp "027-3.gat",128,30;
+ message strcharinfo(0), "This door slams shut and locks itself behind you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+027-3.gat,22,22,0|script|Crypt#1|35,0,0
+{
+ // Coords X: 117,104,110,118;
+ // Coords Y: 53, 87, 53,87;
+ end;
+}
+027-3.gat,35,22,0|script|Crypt#2|35,0,0
+{
+ // Coords X: 105,118,118,122;
+ // Coords Y: 58, 77, 72, 58
+ end;
+}
diff --git a/world/map/npc/027-3/mapflags.txt b/world/map/npc/027-3/mapflags.txt
new file mode 100644
index 00000000..f035c3e7
--- /dev/null
+++ b/world/map/npc/027-3/mapflags.txt
@@ -0,0 +1 @@
+027-3.gat|mapflag|resave|027-2,105,94
diff --git a/world/map/npc/027-1/monsters.txt b/world/map/npc/027-3/monsters.txt
index b4dedad4..7aaa7fd5 100644
--- a/world/map/npc/027-1/monsters.txt
+++ b/world/map/npc/027-3/monsters.txt
@@ -1,28 +1,28 @@
-// 027-1 Graveyard zombies and fallens
+// 027-3 Graveyard zombies and fallens
// they need to be in an extra file because of the crying child quest
-027-1.gat,71,41,31,22|monster|Zombie|1036,2,300000,120000,specialMob027-1::On1036
-027-1.gat,37,41,33,22|monster|Zombie|1036,2,200000,10000,specialMob027-1::On1036
-027-1.gat,37,65,33,22|monster|Zombie|1036,3,140000,30000,specialMob027-1::On1036
-027-1.gat,37,65,33,22|monster|Fallen|1045,3,120000,30000,specialMob027-1::On1045
+027-3.gat,21,76,51,100|monster|Zombie|1036,2,300000,120000,specialMob027-3::On1036
+027-3.gat,21,30,51,63|monster|Zombie|1036,2,200000,10000,specialMob027-3::On1036
+027-3.gat,67,29,129,64|monster|Zombie|1036,3,140000,30000,specialMob027-3::On1036
+027-3.gat,101,65,128,93|monster|Fallen|1045,3,120000,30000,specialMob027-3::On1045
-027-1.gat,0,0,0|script|specialMob027-1|-1,
+027-3.gat,0,0,0|script|specialMob027-3|-1,
{
end;
On1036:
set @mobID, 1036;
- callsub L_MOBCOUNT_ZOMBIES;
+ callsub S_MOBCOUNT_ZOMBIES;
callfunc "MobPoints";
end;
On1045:
set @mobID, 1045;
- callsub L_MOBCOUNT_FALLENS;
+ callsub S_MOBCOUNT_FALLENS;
callfunc "MobPoints";
end;
-L_MOBCOUNT_ZOMBIES:
+S_MOBCOUNT_ZOMBIES:
set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
@@ -41,7 +41,7 @@ L_MOBCOUNT_ZOMBIES:
callsub S_Update_Mask;
return;
-L_MOBCOUNT_FALLENS:
+S_MOBCOUNT_FALLENS:
set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
diff --git a/world/map/npc/027-4/_import.txt b/world/map/npc/027-4/_import.txt
index 7c55eb4b..eea82393 100644
--- a/world/map/npc/027-4/_import.txt
+++ b/world/map/npc/027-4/_import.txt
@@ -1,5 +1,9 @@
-// Map 027-4: Inner Chamber
+// Map 027-4: Crypt Sub-Basement One
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 027-4.gat
npc: npc/027-4/_mobs.txt
npc: npc/027-4/_warps.txt
+npc: npc/027-4/casket_traps.txt
+npc: npc/027-4/general_razha_door.txt
+npc: npc/027-4/mapflags.txt
+npc: npc/027-4/monsters.txt
diff --git a/world/map/npc/027-4/_mobs.txt b/world/map/npc/027-4/_mobs.txt
index ae73e143..8feb1baa 100644
--- a/world/map/npc/027-4/_mobs.txt
+++ b/world/map/npc/027-4/_mobs.txt
@@ -1,9 +1,24 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Inner Chamber mobs
+// Crypt Sub-Basement One mobs
+027-4.gat,39,84,38,22|monster|Skeleton|1043,2,60000,8000,Mob027-4::On1043
+027-4.gat,27,57,15,22|monster|LadySkeleton|1044,2,60000,8000,Mob027-4::On1044
+027-4.gat,108,77,39,14|monster|Skeleton|1043,2,60000,8000,Mob027-4::On1043
+027-4.gat,61,37,38,30|monster|LadySkeleton|1044,2,60000,8000,Mob027-4::On1044
+027-4.gat,101,36,38,30|monster|LadySkeleton|1044,2,60000,8000,Mob027-4::On1044
027-4.gat,0,0,0|script|Mob027-4|-1,
{
end;
+
+On1043:
+ set @mobID, 1043;
+ callfunc "MobPoints";
+ end;
+
+On1044:
+ set @mobID, 1044;
+ callfunc "MobPoints";
+ end;
}
diff --git a/world/map/npc/027-4/_warps.txt b/world/map/npc/027-4/_warps.txt
index 8615d220..1532a964 100644
--- a/world/map/npc/027-4/_warps.txt
+++ b/world/map/npc/027-4/_warps.txt
@@ -1,4 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Inner Chamber warps
+// Crypt Sub-Basement One warps
-027-4.gat,37,19|warp|To Crypt Level 1|1,-1,027-3.gat,127,43
+027-4.gat,125,17|warp|To Crypts Basement|3,-1,027-3.gat,125,98
+027-4.gat,22,98|warp|To Crypts Sub-Basement Two|2,-1,027-5.gat,124,18
diff --git a/world/map/npc/027-4/casket_traps.txt b/world/map/npc/027-4/casket_traps.txt
new file mode 100644
index 00000000..350fe347
--- /dev/null
+++ b/world/map/npc/027-4/casket_traps.txt
@@ -0,0 +1,80 @@
+027-4.gat,60,23,0|script|#casket9|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,42,23,0|script|#casket10|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,42,47,0|script|#casket11|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,90,47,0|script|#casket12|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,101,48,0|script|#casket13|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,115,17,0|script|#casket14|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,99,76,0|script|#casket15|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-4.gat,22,23,0|script|#casket16|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -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
new file mode 100644
index 00000000..f1729837
--- /dev/null
+++ b/world/map/npc/027-4/general_razha_door.txt
@@ -0,0 +1,19 @@
+// Mini-Boss
+// General Razha
+
+027-4.gat,73,76,0|script|#GeneralDoor2|35,1,0
+{
+ if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT2 != 0) )
+ goto L_NoKeys;
+
+ delitem "CryptKey", 10;
+ warp "027-7.gat",39,60;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/027-4/mapflags.txt b/world/map/npc/027-4/mapflags.txt
new file mode 100644
index 00000000..51154f40
--- /dev/null
+++ b/world/map/npc/027-4/mapflags.txt
@@ -0,0 +1 @@
+027-4.gat|mapflag|resave|027-2,105,94
diff --git a/world/map/npc/027-4/monsters.txt b/world/map/npc/027-4/monsters.txt
new file mode 100644
index 00000000..adc89a88
--- /dev/null
+++ b/world/map/npc/027-4/monsters.txt
@@ -0,0 +1,72 @@
+// 027-4 Graveyard zombies and fallens
+// they need to be in an extra file because of the crying child quest
+
+027-4.gat,39,84,38,22|monster|Fallen|1045,3,60000,8000,Mob027-4::On1045
+027-4.gat,27,57,15,22|monster|Zombie|1036,2,60000,8000,Mob027-4::On1036
+027-4.gat,108,77,39,14|monster|Fallen|1045,3,60000,8000,Mob027-4::On1045
+027-4.gat,61,37,38,30|monster|Zombie|1036,2,60000,8000,Mob027-4::On1036
+027-4.gat,101,36,38,30|monster|Zombie|1036,2,60000,8000,Mob027-4::On1036
+
+027-4.gat,0,0,0|script|specialMob027-4|-1,
+{
+ end;
+
+On1036:
+ set @mobID, 1036;
+ callsub S_MOBCOUNT_ZOMBIES;
+ callfunc "MobPoints";
+ end;
+
+On1045:
+ set @mobID, 1045;
+ callsub S_MOBCOUNT_FALLENS;
+ callfunc "MobPoints";
+ end;
+
+S_MOBCOUNT_ZOMBIES:
+
+ set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (@state != 1)
+ goto L_Return;
+ set @ring, @ring + 1;
+ if (@ring < 10)
+ goto L_Return;
+ if (rand(8) != 0)
+ goto L_Return;
+ message strcharinfo(0), "You found a ring hidden in the zombie's rotten rags. Maybe this is what Aldred was looking for...";
+ set @state, 2;
+ callsub S_Update_Mask;
+ return;
+
+S_MOBCOUNT_FALLENS:
+
+ set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (@state != 1)
+ goto L_Return;
+ set @ring, @ring + 1;
+ if (@ring < 10)
+ goto L_Return;
+ if (rand(8) != 0)
+ goto L_Return;
+ message strcharinfo(0), "You found a ring inside the fallen's broken helmet. Maybe this is what Aldred was looking for...";
+ set @state, 2;
+ callsub S_Update_Mask;
+ return;
+
+L_Return:
+ return;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-5/_import.txt b/world/map/npc/027-5/_import.txt
new file mode 100644
index 00000000..f1f1a3bd
--- /dev/null
+++ b/world/map/npc/027-5/_import.txt
@@ -0,0 +1,8 @@
+// Map 027-5: Crypt Sub-Basement Two
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 027-5.gat
+npc: npc/027-5/_mobs.txt
+npc: npc/027-5/_warps.txt
+npc: npc/027-5/casket_traps.txt
+npc: npc/027-5/general_terogan_door.txt
+npc: npc/027-5/mapflags.txt
diff --git a/world/map/npc/027-5/_mobs.txt b/world/map/npc/027-5/_mobs.txt
new file mode 100644
index 00000000..a1cd354a
--- /dev/null
+++ b/world/map/npc/027-5/_mobs.txt
@@ -0,0 +1,41 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two mobs
+
+027-5.gat,69,42,97,41|monster|Wight|1124,6,60000,8000,Mob027-5::On1124
+027-5.gat,69,56,97,69|monster|VampireBat|1066,30,100000,30000,Mob027-5::On1066
+027-5.gat,69,42,98,40|monster|Skeleton|1043,8,60000,8000,Mob027-5::On1043
+027-5.gat,69,41,98,39|monster|LadySkeleton|1044,8,60000,8000,Mob027-5::On1044
+027-5.gat,68,42,97,40|monster|RedBone|1074,6,60000,8000,Mob027-5::On1074
+027-5.gat,70,80,98,34|monster|Skeleton|1043,8,60000,8000,Mob027-5::On1043
+027-5.gat,69,80,99,36|monster|LadySkeleton|1044,8,60000,8000,Mob027-5::On1044
+
+
+027-5.gat,0,0,0|script|Mob027-5|-1,
+{
+ end;
+
+On1043:
+ set @mobID, 1043;
+ callfunc "MobPoints";
+ end;
+
+On1044:
+ set @mobID, 1044;
+ callfunc "MobPoints";
+ end;
+
+On1066:
+ set @mobID, 1066;
+ callfunc "MobPoints";
+ end;
+
+On1074:
+ set @mobID, 1074;
+ callfunc "MobPoints";
+ end;
+
+On1124:
+ set @mobID, 1124;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/027-5/_warps.txt b/world/map/npc/027-5/_warps.txt
new file mode 100644
index 00000000..00e48703
--- /dev/null
+++ b/world/map/npc/027-5/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two warps
+
+027-5.gat,125,17|warp|To Crypts Sub-Basement Two|3,-1,027-4.gat,21,97
diff --git a/world/map/npc/027-5/casket_traps.txt b/world/map/npc/027-5/casket_traps.txt
new file mode 100644
index 00000000..33d3ae56
--- /dev/null
+++ b/world/map/npc/027-5/casket_traps.txt
@@ -0,0 +1,80 @@
+027-5.gat,60,34,0|script|#casket17|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,34,50,0|script|#casket18|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,49,76,0|script|#casket19|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,60,89,0|script|#casket20|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,90,90,0|script|#casket21|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,92,76,0|script|#casket22|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,117,61,0|script|#casket23|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-5.gat,94,48,0|script|#casket24|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -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
new file mode 100644
index 00000000..306ace35
--- /dev/null
+++ b/world/map/npc/027-5/general_terogan_door.txt
@@ -0,0 +1,19 @@
+// Mini-Boss
+// General Terogan
+
+027-5.gat,70,25,0|script|#GeneralDoor3|35,1,0
+{
+ if ( (countitem("CryptKey") < 10) && ($@CRYPT_FIGHT3 != 0) )
+ goto L_NoKeys;
+
+ delitem "CryptKey", 10;
+ warp "027-8.gat",39,60;
+ goto L_Close;
+
+L_NoKeys:
+ message strcharinfo(0), "This door is locked.";
+ end;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/027-5/mapflags.txt b/world/map/npc/027-5/mapflags.txt
new file mode 100644
index 00000000..49e0bd57
--- /dev/null
+++ b/world/map/npc/027-5/mapflags.txt
@@ -0,0 +1 @@
+027-5.gat|mapflag|resave|027-2,105,94
diff --git a/world/map/npc/027-6/_import.txt b/world/map/npc/027-6/_import.txt
new file mode 100644
index 00000000..16208d89
--- /dev/null
+++ b/world/map/npc/027-6/_import.txt
@@ -0,0 +1,9 @@
+// Map 027-6: Crypt Sub-Basement Two
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 027-6.gat
+npc: npc/027-6/_mobs.txt
+npc: npc/027-6/_warps.txt
+npc: npc/027-6/casket_traps.txt
+npc: npc/027-6/general_krukan.txt
+npc: npc/027-6/general_krukan_exitdoor.txt
+npc: npc/027-6/mapflags.txt
diff --git a/world/map/npc/027-6/_mobs.txt b/world/map/npc/027-6/_mobs.txt
new file mode 100644
index 00000000..aee5ddd9
--- /dev/null
+++ b/world/map/npc/027-6/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two mobs
+
+
+
+027-6.gat,0,0,0|script|Mob027-6|-1,
+{
+ end;
+}
diff --git a/world/map/npc/027-6/_warps.txt b/world/map/npc/027-6/_warps.txt
new file mode 100644
index 00000000..5b56046c
--- /dev/null
+++ b/world/map/npc/027-6/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two warps
+
diff --git a/world/map/npc/027-6/casket_traps.txt b/world/map/npc/027-6/casket_traps.txt
new file mode 100644
index 00000000..004fb9a7
--- /dev/null
+++ b/world/map/npc/027-6/casket_traps.txt
@@ -0,0 +1,70 @@
+027-6.gat,32,39,0|script|#casket25|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,27,48,0|script|#casket26|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,52,50,0|script|#casket27|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,45,48,0|script|#casket28|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,47,30,0|script|#casket29|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,33,31,0|script|#casket30|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -10, 0;
+ specialeffect 301;
+ specialeffect 302;
+ end;
+}
+027-6.gat,52,40,0|script|#casket31|35,1,1
+{
+ end;
+
+OnTouch:
+ percentheal -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
new file mode 100644
index 00000000..67213b49
--- /dev/null
+++ b/world/map/npc/027-6/general_krukan.txt
@@ -0,0 +1,231 @@
+// author: Jenalya, wushin
+// Based off Cindy Fight
+// General Krukan Fight
+
+027-6.gat,39,25,0|script|General Krukan|400,
+{
+ if ($@CRYPT_FIGHT1 != 0)
+ end;
+
+ set @KRUKAN_SOUL_REQ, 1;
+ set @KRUKAN_SKULL_REQ, 5;
+ set @KRUKAN_DARK_CRYSTAL_REQ, 5;
+ set @KRUKAN_BONE_REQ, 5;
+ set @minlevel, 60;
+
+ mes "[Tome]";
+ mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
+ next;
+ goto L_TomeMain;
+
+L_TomeMain:
+ mes "What do you want to do?";
+ menu
+ "Read reagent List.", L_SummonReagents,
+ "Perform Ritual.", L_Ritual,
+ "Nothing.", L_Close;
+
+L_SummonReagents:
+ mes "Says we need " + @KRUKAN_SOUL_REQ + " Souls, " + @KRUKAN_SKULL_REQ + " Diseased Hearts, " + @KRUKAN_DARK_CRYSTAL_REQ + " Undead Eyes, and " + @KRUKAN_BONE_REQ + " Undead Ears to perform the ritual.";
+ next;
+ goto L_TomeMain;
+
+L_MissingReagents:
+ mes "It appears we are missing something, lets check the reagent list again.";
+ next;
+ goto L_SummonReagents;
+
+L_Ritual:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @KRUKAN_SOUL_REQ)
+ || (countitem("Skull") < @KRUKAN_SKULL_REQ)
+ || (countitem("DarkCrystal") < @KRUKAN_DARK_CRYSTAL_REQ)
+ || (countitem("Bone") < @KRUKAN_BONE_REQ) )
+ goto L_MissingReagents;
+ delitem "Soul", @KRUKAN_SOUL_REQ;
+ delitem "Skull", @KRUKAN_SKULL_REQ;
+ delitem "DarkCrystal", @KRUKAN_DARK_CRYSTAL_REQ;
+ delitem "Bone", @KRUKAN_BONE_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ if ($@CRYPT_FIGHT1 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT1, 1;
+ set $@CRYPT_FIGHT1_WAVE, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, getmapusers("027-6.gat");
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1043, 1, "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1044, 1, "General Krukan::OnPetDeath";
+
+ initnpctimer;
+ goto L_Announce;
+
+L_ToWeak:
+ mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
+ goto L_Close;
+
+L_Close:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @KRUKAN_SOUL_REQ, 0;
+ set @KRUKAN_SKULL_REQ, 0;
+ set @KRUKAN_DARK_CRYSTAL_REQ, 0;
+ set @KRUKAN_BONE_REQ, 0;
+ close;
+
+// Fight logic attached to npc
+OnTimer5000:
+ setnpctimer 0;
+ if ($@CRYPT_FIGHT1 != 0)
+ goto L_CryptLogic;
+ goto L_Return_1;
+
+L_Return_1:
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
+ areatimer "027-6.gat", 0, 0, 79, 84, 10, "General Krukan::OnTick";
+ end;
+
+L_CryptLogic:
+ set $@CRYPT_FIGHT1_ROUND_PEN, $@CRYPT_FIGHT1_PLAYER_COUNT;
+ if ($@CRYPT_FIGHT1_ROUND_PEN > 60)
+ set $@CRYPT_FIGHT1_ROUND_PEN, 60;
+ if ($@CRYPT_FIGHT1_PLAYER_COUNT <= 0)
+ goto L_CleanUpLosers;
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
+ if (mobcount("027-6.gat", "General Krukan::OnPetDeath") < 0)
+ goto L_NextWave;
+ if ($@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT1_ROUND_PEN >= 120)
+ goto L_NextWave;
+ goto L_Return_1;
+
+L_NextWave:
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT1_WAVE, $@CRYPT_FIGHT1_WAVE + 1;
+ if ( ($@CRYPT_FIGHT1_WAVE > 10) && ($@CRYPT_FIGHT1_SUMMONS_COUNT == 0) )
+ goto L_CleanUp;
+ if ( ($@CRYPT_FIGHT1_WAVE > 10) && ($@CRYPT_FIGHT1_WAVE < 22) )
+ goto L_Return_1;
+ if ($@CRYPT_FIGHT1_WAVE > 22)
+ goto L_SummonNuke;
+ if ($@CRYPT_FIGHT1_WAVE < 5)
+ goto L_WeakSummons;
+ if ( ($@CRYPT_FIGHT1_WAVE < 10) && ($@CRYPT_FIGHT1_WAVE >= 5) )
+ goto L_StrongSummons;
+ if ($@CRYPT_FIGHT1_WAVE == 10)
+ goto L_BossSummons;
+ goto L_SummonNuke;
+
+L_SummonNuke:
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + $@CRYPT_FIGHT1_WAVE*2 + $@CRYPT_FIGHT1_PLAYER_COUNT*4;
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1043, $@CRYPT_FIGHT1_WAVE*2 + $@CRYPT_FIGHT1_PLAYER_COUNT*4, "General Krukan::OnPetDeath";
+ goto L_Announce;
+
+L_WeakSummons:
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
+
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1043, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1044, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ goto L_Announce;
+
+L_StrongSummons:
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
+
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ goto L_Announce;
+
+L_BossSummons:
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT1_WAVE) + (2 * $@CRYPT_FIGHT1_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2);
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT1_SUMMONS_NUMBER/2), "General Krukan::OnPetDeath";
+ areamonster "027-6.gat", 0, 0, 79, 84, "", 1127, 1, "General Krukan::OnPetDeath";
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT + 1;
+ goto L_Announce;
+
+L_Announce:
+ set $@msg$, $@CRYPT_FIGHT1_MESSAGES$[$@CRYPT_FIGHT1_WAVE];
+ if ($@msg$ == "")
+ goto L_Return_1;
+ mapannounce "027-6.gat", $@msg$, 0;
+ mapannounce "027-3.gat", $@msg$, 0;
+ set $@msg$, "";
+ goto L_Return_1;
+
+// Called on each player once every 5 seconds
+OnTick:
+ if (isdead()) end;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, $@CRYPT_FIGHT1_PLAYER_COUNT + 1;
+ end;
+
+OnPetDeath:
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, $@CRYPT_FIGHT1_SUMMONS_COUNT - 1;
+ end;
+
+L_CleanUpLosers:
+ set $@CRYPT_FIGHT1, 0;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT1_WAVE, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT1_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, 0;
+ killmonster "027-6.gat", "General Krukan::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleanUp:
+ areatimer "027-6.gat", 0, 0, 79, 84, 10, "General Krukan::OnReward";
+ set $@CRYPT_FIGHT1, 0;
+ set $@CRYPT_FIGHT1_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT1_WAVE, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT1_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT1_SUMMONS_NUMBER, 0;
+ killmonster "027-6.gat", "General Krukan::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnReward:
+ if (isdead()) end;
+ set @bonus, (BaseLevel/4);
+ set DailyQuestBonus, DailyQuestBonus + @bonus;
+ message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ set BOSS_POINTS, BOSS_POINTS + 25;
+ message strcharinfo(0), "You gain 20 Boss Points giving you a total of " + BOSS_POINTS + ".";
+ goto L_End;
+
+L_End:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @KRUKAN_SOUL_REQ, 0;
+ set @KRUKAN_SKULL_REQ, 0;
+ set @KRUKAN_DARK_CRYSTAL_REQ, 0;
+ set @KRUKAN_BONE_REQ, 0;
+ end;
+
+OnInit:
+ setarray $@CRYPT_FIGHT1_MESSAGES$,
+ "General Krukan : Haha, Thank you mortal. You have released me from my prison. To show my 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
new file mode 100644
index 00000000..dee6e896
--- /dev/null
+++ b/world/map/npc/027-6/general_krukan_exitdoor.txt
@@ -0,0 +1,14 @@
+// Mini-Boss
+// General Krukan exit
+
+027-6.gat,38,61,0|script|#GeneralExit1|35,6,0
+{
+ if ($@CRYPT_FIGHT1 == 1)
+ goto L_Block;
+ warp "027-3.gat",82,89;
+ end;
+
+L_Block:
+ message strcharinfo(0), "A force field seems to be blocking you from exiting.";
+ end;
+}
diff --git a/world/map/npc/027-6/mapflags.txt b/world/map/npc/027-6/mapflags.txt
new file mode 100644
index 00000000..a1404da7
--- /dev/null
+++ b/world/map/npc/027-6/mapflags.txt
@@ -0,0 +1,2 @@
+027-6.gat|mapflag|nosave|027-3,82,90
+027-6.gat|mapflag|resave|027-3,82,90
diff --git a/world/map/npc/027-7/_import.txt b/world/map/npc/027-7/_import.txt
new file mode 100644
index 00000000..6e3d2cae
--- /dev/null
+++ b/world/map/npc/027-7/_import.txt
@@ -0,0 +1,8 @@
+// Map 027-7: Crypt Sub-Basement Two
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 027-7.gat
+npc: npc/027-7/_mobs.txt
+npc: npc/027-7/_warps.txt
+npc: npc/027-7/general_razha.txt
+npc: npc/027-7/general_razha_exitdoor.txt
+npc: npc/027-7/mapflags.txt
diff --git a/world/map/npc/027-7/_mobs.txt b/world/map/npc/027-7/_mobs.txt
new file mode 100644
index 00000000..4c40b389
--- /dev/null
+++ b/world/map/npc/027-7/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two mobs
+
+
+
+027-7.gat,0,0,0|script|Mob027-7|-1,
+{
+ end;
+}
diff --git a/world/map/npc/027-7/_warps.txt b/world/map/npc/027-7/_warps.txt
new file mode 100644
index 00000000..5b56046c
--- /dev/null
+++ b/world/map/npc/027-7/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two warps
+
diff --git a/world/map/npc/027-7/general_razha.txt b/world/map/npc/027-7/general_razha.txt
new file mode 100644
index 00000000..ddd66d84
--- /dev/null
+++ b/world/map/npc/027-7/general_razha.txt
@@ -0,0 +1,231 @@
+// author: Jenalya, wushin
+// Based off Cindy Fight
+// General Razha Fight
+
+027-7.gat,39,25,0|script|General Razha|400,
+{
+ if ($@CRYPT_FIGHT2 != 0)
+ end;
+
+ set @RAZHA_SOUL_REQ, 3;
+ set @RAZHA_ROTTEN_RAGS_REQ, 5;
+ set @RAZHA_UNDEAD_EYE_REQ, 5;
+ set @RAZHA_UNDEAD_EAR_REQ, 5;
+ set @minlevel, 70;
+
+ mes "[Tome]";
+ mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
+ next;
+ goto L_TomeMain;
+
+L_TomeMain:
+ mes "What do you want to do?";
+ menu
+ "Read reagent List.", L_SummonReagents,
+ "Perform Ritual.", L_Ritual,
+ "Nothing.", L_Close;
+
+L_SummonReagents:
+ mes "Says we need " + @RAZHA_SOUL_REQ + " Souls, " + @RAZHA_ROTTEN_RAGS_REQ + " Diseased Hearts, " + @RAZHA_UNDEAD_EYE_REQ + " Undead Eyes, and " + @RAZHA_UNDEAD_EAR_REQ + " Undead Ears to perform the ritual.";
+ next;
+ goto L_TomeMain;
+
+L_MissingReagents:
+ mes "It appears we are missing something, lets check the reagent list again.";
+ next;
+ goto L_SummonReagents;
+
+L_Ritual:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @RAZHA_SOUL_REQ)
+ || (countitem("RottenRags") < @RAZHA_ROTTEN_RAGS_REQ)
+ || (countitem("UndeadEye") < @RAZHA_UNDEAD_EYE_REQ)
+ || (countitem("UndeadEar") < @RAZHA_UNDEAD_EAR_REQ) )
+ goto L_MissingReagents;
+ delitem "Soul", @RAZHA_SOUL_REQ;
+ delitem "RottenRags", @RAZHA_ROTTEN_RAGS_REQ;
+ delitem "UndeadEye", @RAZHA_UNDEAD_EYE_REQ;
+ delitem "UndeadEar", @RAZHA_UNDEAD_EAR_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ if ($@CRYPT_FIGHT2 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT2, 1;
+ set $@CRYPT_FIGHT2_WAVE, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, getmapusers("027-7.gat");
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, 1, "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1124, 1, "General Razha::OnPetDeath";
+
+ initnpctimer;
+ goto L_Announce;
+
+L_ToWeak:
+ mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
+ goto L_Close;
+
+L_Close:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @RAZHA_SOUL_REQ, 0;
+ set @RAZHA_ROTTEN_RAGS_REQ, 0;
+ set @RAZHA_UNDEAD_EYE_REQ, 0;
+ set @RAZHA_UNDEAD_EAR_REQ, 0;
+ close;
+
+// Fight logic attached to npc
+OnTimer5000:
+ setnpctimer 0;
+ if ($@CRYPT_FIGHT2 != 0)
+ goto L_CryptLogic;
+ goto L_Return_1;
+
+L_Return_1:
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
+ areatimer "027-7.gat", 0, 0, 79, 84, 10, "General Razha::OnTick";
+ end;
+
+L_CryptLogic:
+ set $@CRYPT_FIGHT2_ROUND_PEN, $@CRYPT_FIGHT2_PLAYER_COUNT;
+ if ($@CRYPT_FIGHT2_ROUND_PEN > 60)
+ set $@CRYPT_FIGHT2_ROUND_PEN, 60;
+ if ($@CRYPT_FIGHT2_PLAYER_COUNT <= 0)
+ goto L_CleanUpLosers;
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
+ if (mobcount("027-7.gat", "General Razha::OnPetDeath") < 0)
+ goto L_NextWave;
+ if ($@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT2_ROUND_PEN >= 120)
+ goto L_NextWave;
+ goto L_Return_1;
+
+L_NextWave:
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT2_WAVE, $@CRYPT_FIGHT2_WAVE + 1;
+ if ( ($@CRYPT_FIGHT2_WAVE > 10) && ($@CRYPT_FIGHT2_SUMMONS_COUNT == 0) )
+ goto L_CleanUp;
+ if ( ($@CRYPT_FIGHT2_WAVE > 10) && ($@CRYPT_FIGHT2_WAVE < 22) )
+ goto L_Return_1;
+ if ($@CRYPT_FIGHT2_WAVE > 22)
+ goto L_SummonNuke;
+ if ($@CRYPT_FIGHT2_WAVE < 5)
+ goto L_WeakSummons;
+ if ( ($@CRYPT_FIGHT2_WAVE < 10) && ($@CRYPT_FIGHT2_WAVE >= 5) )
+ goto L_StrongSummons;
+ if ($@CRYPT_FIGHT2_WAVE == 10)
+ goto L_BossSummons;
+ goto L_SummonNuke;
+
+L_SummonNuke:
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + $@CRYPT_FIGHT2_WAVE*2 + $@CRYPT_FIGHT2_PLAYER_COUNT*4;
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, $@CRYPT_FIGHT2_WAVE*2 + $@CRYPT_FIGHT2_PLAYER_COUNT*4, "General Razha::OnPetDeath";
+ goto L_Announce;
+
+L_WeakSummons:
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
+
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1045, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ goto L_Announce;
+
+L_StrongSummons:
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
+
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1124, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ goto L_Announce;
+
+L_BossSummons:
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT2_WAVE) + (2 * $@CRYPT_FIGHT2_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2);
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1036, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1124, ($@CRYPT_FIGHT2_SUMMONS_NUMBER/2), "General Razha::OnPetDeath";
+ areamonster "027-7.gat", 0, 0, 79, 84, "", 1128, 1, "General Razha::OnPetDeath";
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT + 1;
+ goto L_Announce;
+
+L_Announce:
+ set $@msg$, $@CRYPT_FIGHT2_MESSAGES$[$@CRYPT_FIGHT2_WAVE];
+ if ($@msg$ == "")
+ goto L_Return_1;
+ mapannounce "027-7.gat", $@msg$, 0;
+ mapannounce "027-4.gat", $@msg$, 0;
+ set $@msg$, "";
+ goto L_Return_1;
+
+// Called on each player once every 5 seconds
+OnTick:
+ if (isdead()) end;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, $@CRYPT_FIGHT2_PLAYER_COUNT + 1;
+ end;
+
+OnPetDeath:
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, $@CRYPT_FIGHT2_SUMMONS_COUNT - 1;
+ end;
+
+L_CleanUpLosers:
+ set $@CRYPT_FIGHT2, 0;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT2_WAVE, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT2_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, 0;
+ killmonster "027-7.gat", "General Razha::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleanUp:
+ areatimer "027-7.gat", 0, 0, 79, 84, 10, "General Razha::OnReward";
+ set $@CRYPT_FIGHT2, 0;
+ set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT2_WAVE, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT2_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT2_SUMMONS_NUMBER, 0;
+ killmonster "027-7.gat", "General Razha::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnReward:
+ if (isdead()) end;
+ set @bonus, (BaseLevel/2);
+ set DailyQuestBonus, DailyQuestBonus + @bonus;
+ message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ set BOSS_POINTS, BOSS_POINTS + 50;
+ message strcharinfo(0), "You gain 50 Boss Points giving you a total of " + BOSS_POINTS + ".";
+ goto L_End;
+
+L_End:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @RAZHA_SOUL_REQ, 0;
+ set @RAZHA_ROTTEN_RAGS_REQ, 0;
+ set @RAZHA_UNDEAD_EYE_REQ, 0;
+ set @RAZHA_UNDEAD_EAR_REQ, 0;
+ end;
+
+OnInit:
+ setarray $@CRYPT_FIGHT2_MESSAGES$,
+ "General Razha : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Razha : Ha, Looks like your tougher then I thought.",
+ "General Razha : and here I thought I wasn't going to enjoy this.",
+ "General Razha : More of them are coming!",
+ "General Razha : Minions! Kill them already!",
+ "General Razha : *facepalm* I knew I should have hired better help.",
+ "General Razha : Well at least you will make a good addition to my army.",
+ "General Razha : To the Abyss with you already!",
+ "General Razha : How about you try a different approach and kill them already!",
+ "General Razha : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Razha : Looks like if you want something done right you have to do it yourself.",
+ "General Razha : Charge!.";
+ end;
+}
diff --git a/world/map/npc/027-7/general_razha_exitdoor.txt b/world/map/npc/027-7/general_razha_exitdoor.txt
new file mode 100644
index 00000000..97468895
--- /dev/null
+++ b/world/map/npc/027-7/general_razha_exitdoor.txt
@@ -0,0 +1,14 @@
+// Mini-Boss
+// General Razha
+
+027-7.gat,36,61,0|script|#GeneralExit2|35,6,0
+{
+ if ($@CRYPT_FIGHT2 != 0)
+ goto L_Block;
+ warp "027-4.gat",73,77;
+ end;
+
+L_Block:
+ message strcharinfo(0), "A force field seems to be blocking you from exiting.";
+ end;
+}
diff --git a/world/map/npc/027-7/mapflags.txt b/world/map/npc/027-7/mapflags.txt
new file mode 100644
index 00000000..012a5cf5
--- /dev/null
+++ b/world/map/npc/027-7/mapflags.txt
@@ -0,0 +1,2 @@
+027-7.gat|mapflag|nosave|027-4,73,78
+027-7.gat|mapflag|resave|027-4,73,78
diff --git a/world/map/npc/027-8/_import.txt b/world/map/npc/027-8/_import.txt
new file mode 100644
index 00000000..878d3bb3
--- /dev/null
+++ b/world/map/npc/027-8/_import.txt
@@ -0,0 +1,8 @@
+// Map 027-8: Crypt Sub-Basement Two
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 027-8.gat
+npc: npc/027-8/_mobs.txt
+npc: npc/027-8/_warps.txt
+npc: npc/027-8/general_terogan.txt
+npc: npc/027-8/general_terogan_exitdoor.txt
+npc: npc/027-8/mapflags.txt
diff --git a/world/map/npc/027-8/_mobs.txt b/world/map/npc/027-8/_mobs.txt
new file mode 100644
index 00000000..220fdf19
--- /dev/null
+++ b/world/map/npc/027-8/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two mobs
+
+
+
+027-8.gat,0,0,0|script|Mob027-8|-1,
+{
+ end;
+}
diff --git a/world/map/npc/027-8/_warps.txt b/world/map/npc/027-8/_warps.txt
new file mode 100644
index 00000000..5b56046c
--- /dev/null
+++ b/world/map/npc/027-8/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Crypt Sub-Basement Two warps
+
diff --git a/world/map/npc/027-8/general_terogan.txt b/world/map/npc/027-8/general_terogan.txt
new file mode 100644
index 00000000..3edc2db6
--- /dev/null
+++ b/world/map/npc/027-8/general_terogan.txt
@@ -0,0 +1,304 @@
+// author: Jenalya, wushin
+// Based off Cindy Fight
+// General Terogan Fight
+
+027-8.gat,39,24,0|script|General Terogan#Main|400,
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ end;
+
+ set @TEROGAN_SOUL_REQ, 5;
+ set @TEROGAN_DISEASED_HEART_REQ, 5;
+ set @TEROGAN_UNDEAD_EYE_REQ, 5;
+ set @TEROGAN_UNDEAD_EAR_REQ, 5;
+ set @minlevel, 80;
+
+ mes "[Tome]";
+ mes "The Tome is open to a page about a summon ritual that can be performed in this chamber.";
+ next;
+ goto L_TomeMain;
+
+L_TomeMain:
+ mes "What do you want to do?";
+ menu
+ "Read reagent List.", L_SummonReagents,
+ "Assign myself left.", L_SummonLeft,
+ "Assign myself right.", L_SummonRight,
+ "Perform Ritual.", L_RitualMenu,
+ "Nothing.", L_Close;
+
+L_SummonReagents:
+ mes "Says we need " + @TEROGAN_SOUL_REQ + " Souls, " + @TEROGAN_DISEASED_HEART_REQ + " Diseased Hearts, " + @TEROGAN_UNDEAD_EYE_REQ + " Undead Eyes, and " + @TEROGAN_UNDEAD_EAR_REQ + " Undead Ears to perform the ritual. You will also need help, as the summon states both rooms need at least 1 occupant during the ritual.";
+ next;
+ goto L_TomeMain;
+
+L_MissingReagents:
+ mes "It appears we are missing something, lets check the reagent list again.";
+ next;
+ goto L_SummonReagents;
+
+L_SummonLeft:
+ warp "027-8", 27, 43;
+ goto L_Close;
+
+L_SummonRight:
+ warp "027-8", 51, 43;
+ goto L_Close;
+
+L_RitualMenu:
+ mes "Which side do you want to be on?";
+ menu
+ "Left.", L_RitualLeft,
+ "Right.", L_RitualRight;
+
+L_RitualLeft:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @TEROGAN_SOUL_REQ)
+ || (countitem("DiseasedHeart") < @TEROGAN_DISEASED_HEART_REQ)
+ || (countitem("UndeadEye") < @TEROGAN_UNDEAD_EYE_REQ)
+ || (countitem("UndeadEar") < @TEROGAN_UNDEAD_EAR_REQ) )
+ goto L_MissingReagents;
+ if (getareausers("027-8", 43, 39, 58, 60) == 0)
+ goto L_NeedOther;
+ delitem "Soul", @TEROGAN_SOUL_REQ;
+ delitem "DiseasedHeart", @TEROGAN_DISEASED_HEART_REQ;
+ delitem "UndeadEye", @TEROGAN_UNDEAD_EYE_REQ;
+ delitem "UndeadEar", @TEROGAN_UNDEAD_EAR_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT3, 1;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, getmapusers("027-8.gat");
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, 1, "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, 1, "General Terogan#Main::OnPetDeath";
+
+ initnpctimer;
+ warp "027-8", 27, 43;
+ goto L_Announce;
+
+L_RitualRight:
+ if (BaseLevel < @minlevel)
+ goto L_ToWeak;
+ if ( (countitem("Soul") < @TEROGAN_SOUL_REQ)
+ || (countitem("RottenRags") < @TEROGAN_DISEASED_HEART_REQ)
+ || (countitem("UndeadEye") < @TEROGAN_UNDEAD_EYE_REQ)
+ || (countitem("UndeadEar") < @TEROGAN_UNDEAD_EAR_REQ) )
+ goto L_MissingReagents;
+ if (getareausers("027-8", 20, 39, 35, 60) == 0)
+ goto L_NeedOther;
+ delitem "Soul", @TEROGAN_SOUL_REQ;
+ delitem "RottenRags", @TEROGAN_DISEASED_HEART_REQ;
+ delitem "UndeadEye", @TEROGAN_UNDEAD_EYE_REQ;
+ delitem "UndeadEar", @TEROGAN_UNDEAD_EAR_REQ;
+ mes "As you perform the ritual you can feel the energy amass.";
+ next;
+ mes "A cold shiver runs down your spine as you feel something manifesting out of the void.";
+ warp "027-8", 51, 43;
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_Close;
+
+ // initialize fight
+ set $@CRYPT_FIGHT3, 1;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 2;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, getmapusers("027-8.gat");
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, 1, "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, 1, "General Terogan#Main::OnPetDeath";
+
+ initnpctimer;
+ goto L_Announce;
+
+L_NeedOther:
+ mes "You need at least one other person in the the other chamber to start.";
+ goto L_TomeMain;
+
+L_ToWeak:
+ mes "You try to perform the ritual but nothing happens. You don't seem experienced enough.";
+ goto L_Close;
+
+L_Close:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @TEROGAN_SOUL_REQ, 0;
+ set @TEROGAN_DISEASED_HEART_REQ, 0;
+ set @TEROGAN_UNDEAD_EYE_REQ, 0;
+ set @TEROGAN_UNDEAD_EAR_REQ, 0;
+ close;
+
+// Fight logic attached to npc
+OnTimer5000:
+ setnpctimer 0;
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_CryptLogic;
+ goto L_Return_1;
+
+L_Return_1:
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
+ areatimer "027-8.gat", 0, 0, 79, 84, 10, "General Terogan#Main::OnTick";
+ end;
+
+L_CryptLogic:
+ set $@CRYPT_FIGHT3_ROUND_PEN, $@CRYPT_FIGHT3_PLAYER_COUNT;
+ if ($@CRYPT_FIGHT3_ROUND_PEN > 60)
+ set $@CRYPT_FIGHT3_ROUND_PEN, 60;
+ if ($@CRYPT_FIGHT3_PLAYER_COUNT <= 0)
+ goto L_CleanUpLosers;
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER + 5; // Advance 5 seconds
+ if (mobcount("027-8.gat", "General Terogan#Main::OnPetDeath") < 0)
+ goto L_NextWave;
+ if ($@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER + $@CRYPT_FIGHT3_ROUND_PEN >= 120)
+ goto L_NextWave;
+ goto L_Return_1;
+
+L_NextWave:
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT3_WAVE, $@CRYPT_FIGHT3_WAVE + 1;
+ if ( ($@CRYPT_FIGHT3_WAVE > 10) && ($@CRYPT_FIGHT3_SUMMONS_COUNT == 0) )
+ goto L_CleanUp;
+ if ( ($@CRYPT_FIGHT3_WAVE > 10) && ($@CRYPT_FIGHT3_WAVE < 22) )
+ goto L_Return_1;
+ if ($@CRYPT_FIGHT3_WAVE > 22)
+ goto L_SummonNuke;
+ if ($@CRYPT_FIGHT3_WAVE < 5)
+ goto L_WeakSummons;
+ if ( ($@CRYPT_FIGHT3_WAVE < 10) && ($@CRYPT_FIGHT3_WAVE >= 5) )
+ goto L_StrongSummons;
+ if ($@CRYPT_FIGHT3_WAVE == 10)
+ goto L_BossSummons;
+ goto L_SummonNuke;
+
+L_SummonNuke:
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + $@CRYPT_FIGHT3_WAVE*2 + $@CRYPT_FIGHT3_PLAYER_COUNT*4;
+ areamonster "027-8.gat", 0, 0, 79, 84, "", 1124, $@CRYPT_FIGHT3_WAVE*2 + $@CRYPT_FIGHT3_PLAYER_COUNT*4, "General Terogan#Main::OnPetDeath";
+ goto L_Announce;
+
+L_WeakSummons:
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2);
+
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1074, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ goto L_Announce;
+
+L_StrongSummons:
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2) + ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2);
+
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ goto L_Announce;
+
+L_BossSummons:
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, (5 + (1 * $@CRYPT_FIGHT3_WAVE) + (2 * $@CRYPT_FIGHT3_PLAYER_COUNT))/2;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + $@CRYPT_FIGHT3_SUMMONS_NUMBER;
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1124, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1075, ($@CRYPT_FIGHT3_SUMMONS_NUMBER/2), "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 43, 39, 58, 60, "", 1129, 1, "General Terogan#Main::OnPetDeath";
+ areamonster "027-8.gat", 20, 39, 35, 60, "", 1129, 1, "General Terogan#Main::OnPetDeath";
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT + 2;
+ goto L_Announce;
+
+L_Announce:
+ set $@msg$, $@CRYPT_FIGHT3_MESSAGES$[$@CRYPT_FIGHT3_WAVE];
+ if ($@msg$ == "")
+ goto L_Return_1;
+ mapannounce "027-8.gat", $@msg$, 0;
+ mapannounce "027-5.gat", $@msg$, 0;
+ set $@msg$, "";
+ goto L_Return_1;
+
+// Called on each player once every 5 seconds
+OnTick:
+ if (isdead())
+ end;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, $@CRYPT_FIGHT3_PLAYER_COUNT + 1;
+ end;
+
+OnPetDeath:
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, $@CRYPT_FIGHT3_SUMMONS_COUNT - 1;
+ end;
+
+L_CleanUpLosers:
+ set $@CRYPT_FIGHT3, 0;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT3_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, 0;
+ killmonster "027-8.gat", "General Terogan#Main::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+L_CleanUp:
+ areatimer "027-8.gat", 0, 0, 79, 84, 10, "General Terogan#Main::OnReward";
+ set $@CRYPT_FIGHT3, 0;
+ set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
+ set $@CRYPT_FIGHT3_WAVE, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_ROUND_TIMER, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_COUNT, 0;
+ set $@CRYPT_FIGHT3_ROUND_PEN, 0;
+ set $@CRYPT_FIGHT3_SUMMONS_NUMBER, 0;
+ killmonster "027-8.gat", "General Terogan#Main::OnPetDeath";
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+OnReward:
+ if (isdead())
+ end;
+ set @bonus, (BaseLevel/2);
+ set DailyQuestBonus, DailyQuestBonus + @bonus;
+ message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ set BOSS_POINTS, BOSS_POINTS + 75;
+ message strcharinfo(0), "You gain 75 Boss Points giving you a total of " + BOSS_POINTS + ".";
+ goto L_End;
+
+L_End:
+ set @bonus, 0;
+ set @minlevel, 0;
+ set @TEROGAN_SOUL_REQ, 0;
+ set @TEROGAN_DISEASED_HEART_REQ, 0;
+ set @TEROGAN_UNDEAD_EYE_REQ, 0;
+ set @TEROGAN_UNDEAD_EAR_REQ, 0;
+ end;
+
+OnInit:
+ setarray $@CRYPT_FIGHT3_MESSAGES$,
+ "General Terogan : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Terogan : Ha, Looks like your tougher then I thought.",
+ "General Terogan : and here I thought I wasn't going to enjoy this.",
+ "General Terogan : More of them are coming!",
+ "General Terogan : Minions! Kill them already!",
+ "General Terogan : *facepalm* I knew I should have hired better help.",
+ "General Terogan : Well at least you will make a good addition to my army.",
+ "General Terogan : To the Abyss with you already!",
+ "General Terogan : How about you try a different approach and kill them already!",
+ "General Terogan : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Terogan : Looks like if you want something done right you have to do it yourself.",
+ "General Terogan : Charge!.";
+ end;
+}
+
+027-8.gat,27,41,0|script|General Terogan#Exit1|400,
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ end;
+ warp "027-8", 38, 29;
+ end;
+}
+027-8.gat,51,41,0|script|General Terogan#Exit2|400,
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ end;
+ warp "027-8", 38, 29;
+ end;
+}
diff --git a/world/map/npc/027-8/general_terogan_exitdoor.txt b/world/map/npc/027-8/general_terogan_exitdoor.txt
new file mode 100644
index 00000000..3be3bdb1
--- /dev/null
+++ b/world/map/npc/027-8/general_terogan_exitdoor.txt
@@ -0,0 +1,14 @@
+// Mini-Boss
+// General Krukun
+
+027-8.gat,38,61,0|script|#GeneralExit3|35,3,0
+{
+ if ($@CRYPT_FIGHT3 != 0)
+ goto L_Block;
+ warp "027-5.gat",70,26;
+ end;
+
+L_Block:
+ message strcharinfo(0), "A force field seems to be blocking you from exiting.";
+ end;
+}
diff --git a/world/map/npc/027-8/mapflags.txt b/world/map/npc/027-8/mapflags.txt
new file mode 100644
index 00000000..969ec6f4
--- /dev/null
+++ b/world/map/npc/027-8/mapflags.txt
@@ -0,0 +1,2 @@
+027-8.gat|mapflag|nosave|027-5,70,27
+027-8.gat|mapflag|resave|027-5,70,27
diff --git a/world/map/npc/029-1/_import.txt b/world/map/npc/029-1/_import.txt
index d424f357..80303795 100644
--- a/world/map/npc/029-1/_import.txt
+++ b/world/map/npc/029-1/_import.txt
@@ -5,3 +5,5 @@ npc: npc/029-1/_mobs.txt
npc: npc/029-1/_warps.txt
npc: npc/029-1/barrier.txt
npc: npc/029-1/dock.txt
+npc: npc/029-1/mapflags.txt
+npc: npc/029-1/traveler.txt
diff --git a/world/map/npc/029-1/dock.txt b/world/map/npc/029-1/dock.txt
index a049d68e..8df50b9d 100644
--- a/world/map/npc/029-1/dock.txt
+++ b/world/map/npc/029-1/dock.txt
@@ -1,8 +1,26 @@
// The ferry dock
-029-1.gat,22,37,0|script|#candordock|45,2,1,
+// Ferry Sign
+029-1.gat,27,36,0|script|Ferry Schedule#8|397,
{
- set @loc, DOCK_candor;
- callfunc "Ferry";
+ callfunc "FerryManifest";
+ end;
+}
+
+029-1.gat,16,36,0|script|Candor Koga|395,6,2,
+{
+ callfunc "BoardCandorFerry";
+ close;
+}
+
+029-1.gat,22,37,0|script|#CandorDock|45,
+{
+ end;
+OnCommandArrive:
+ enablenpc "Candor Koga";
+ end;
+
+OnCommandWarp:
+ disablenpc "Candor Koga";
end;
}
diff --git a/world/map/npc/029-1/mapflags.txt b/world/map/npc/029-1/mapflags.txt
new file mode 100644
index 00000000..03b117f8
--- /dev/null
+++ b/world/map/npc/029-1/mapflags.txt
@@ -0,0 +1 @@
+029-1.gat|mapflag|resave|029-1,69,69
diff --git a/world/map/npc/029-1/traveler.txt b/world/map/npc/029-1/traveler.txt
new file mode 100644
index 00000000..789a375a
--- /dev/null
+++ b/world/map/npc/029-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+029-1.gat,69,67,0|script|Knitra the Traveler|103,
+{
+ set @NpcName$, "Knitra";
+ set @NpcTravelBit, $@candor_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/029-3/mapflags.txt b/world/map/npc/029-3/mapflags.txt
index a681598e..549377f1 100644
--- a/world/map/npc/029-3/mapflags.txt
+++ b/world/map/npc/029-3/mapflags.txt
@@ -1 +1,2 @@
-029-3.gat|mapflag|nosave|029-1,55,38
+029-3.gat|mapflag|nosave|029-1,69,69
+029-3.gat|mapflag|resave|029-1,69,69
diff --git a/world/map/npc/030-1/_import.txt b/world/map/npc/030-1/_import.txt
index 81188a00..ee14f056 100644
--- a/world/map/npc/030-1/_import.txt
+++ b/world/map/npc/030-1/_import.txt
@@ -3,3 +3,4 @@
map: 030-1.gat
npc: npc/030-1/_mobs.txt
npc: npc/030-1/_warps.txt
+npc: npc/030-1/mapflags.txt
diff --git a/world/map/npc/030-1/mapflags.txt b/world/map/npc/030-1/mapflags.txt
new file mode 100644
index 00000000..313fcdb6
--- /dev/null
+++ b/world/map/npc/030-1/mapflags.txt
@@ -0,0 +1 @@
+030-1.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/030-2/_import.txt b/world/map/npc/030-2/_import.txt
index e2ca2bfa..c2c641aa 100644
--- a/world/map/npc/030-2/_import.txt
+++ b/world/map/npc/030-2/_import.txt
@@ -11,6 +11,7 @@ npc: npc/030-2/eljas.txt
npc: npc/030-2/empty_boxes_helper.txt
npc: npc/030-2/gaurds.txt
npc: npc/030-2/glitter_helper.txt
+npc: npc/030-2/mapflags.txt
npc: npc/030-2/present_helper.txt
npc: npc/030-2/roasted_acrons_helper.txt
npc: npc/030-2/shipping_helper.txt
diff --git a/world/map/npc/030-2/mapflags.txt b/world/map/npc/030-2/mapflags.txt
new file mode 100644
index 00000000..ea9d797f
--- /dev/null
+++ b/world/map/npc/030-2/mapflags.txt
@@ -0,0 +1 @@
+030-2.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/030-3/_import.txt b/world/map/npc/030-3/_import.txt
index 2903d1e5..d65f29c4 100644
--- a/world/map/npc/030-3/_import.txt
+++ b/world/map/npc/030-3/_import.txt
@@ -3,4 +3,5 @@
map: 030-3.gat
npc: npc/030-3/_mobs.txt
npc: npc/030-3/_warps.txt
+npc: npc/030-3/mapflags.txt
npc: npc/030-3/orum_homunculus.txt
diff --git a/world/map/npc/030-3/mapflags.txt b/world/map/npc/030-3/mapflags.txt
new file mode 100644
index 00000000..b0c77c3f
--- /dev/null
+++ b/world/map/npc/030-3/mapflags.txt
@@ -0,0 +1 @@
+030-3.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/030-3/orum_homunculus.txt b/world/map/npc/030-3/orum_homunculus.txt
index 0aaaebf0..85e825a9 100644
--- a/world/map/npc/030-3/orum_homunculus.txt
+++ b/world/map/npc/030-3/orum_homunculus.txt
@@ -260,7 +260,8 @@ L_SantasList:
goto L_NotComplete;
mes "\"Take the altered list to Elijas.\"";
menu
- "I don't know, this sounds kind of naughty.",L_Foo;
+ "I don't know, this sounds kind of naughty.", L_Foo;
+
L_Foo:
mes "\"Do my bidding or I'll have no more words with you.\"";
goto L_Close;
diff --git a/world/map/npc/030-4/mapflags.txt b/world/map/npc/030-4/mapflags.txt
index 65954bfc..1374efb0 100644
--- a/world/map/npc/030-4/mapflags.txt
+++ b/world/map/npc/030-4/mapflags.txt
@@ -1 +1,2 @@
030-4.gat|mapflag|nosave|030-2,151,25
+030-4.gat|mapflag|resave|030-2,151,25
diff --git a/world/map/npc/031-1/_import.txt b/world/map/npc/031-1/_import.txt
index 7a1fc1cb..ae77569b 100644
--- a/world/map/npc/031-1/_import.txt
+++ b/world/map/npc/031-1/_import.txt
@@ -7,3 +7,4 @@ npc: npc/031-1/angelaOutside.txt
npc: npc/031-1/dock.txt
npc: npc/031-1/frozenbeard.txt
npc: npc/031-1/house.txt
+npc: npc/031-1/mapflags.txt
diff --git a/world/map/npc/031-1/dock.txt b/world/map/npc/031-1/dock.txt
index 304d2068..ff7fa85a 100644
--- a/world/map/npc/031-1/dock.txt
+++ b/world/map/npc/031-1/dock.txt
@@ -1,8 +1,27 @@
// The ferry dock
-031-1.gat,105,109,0|script|#nivalisdock|45,6,1,
+// Ferry Sign
+031-1.gat,95,107,0|script|Ferry Schedule#6|398,
{
- set @loc, DOCK_nivalis;
- callfunc "Ferry";
+ callfunc "FerryManifest";
+ end;
+}
+
+031-1.gat,110,108,0|script|Nivalis Koga|395,6,2,
+{
+ callfunc "BoardFerry";
+ close;
+}
+
+031-1.gat,100,100,0|script|#NivalisDock|45,
+{
+ end;
+
+OnCommandArrive:
+ enablenpc "Nivalis Koga";
+ end;
+
+OnCommandWarp:
+ disablenpc "Nivalis Koga";
end;
}
diff --git a/world/map/npc/031-1/frozenbeard.txt b/world/map/npc/031-1/frozenbeard.txt
index ce97650c..6a62a104 100644
--- a/world/map/npc/031-1/frozenbeard.txt
+++ b/world/map/npc/031-1/frozenbeard.txt
@@ -2,7 +2,32 @@
031-1.gat,96,113,0|script|Frozenbeard|138,
{
+
mes "[Frozenbeard]";
- mes "\"Arrr mate! I'm glad there's a dock here, so I don't have to row boat from my ship anymore! I pioneered the trade routes between Nivalis and the rest of the World, so now merchants and adventurers can travel to and fro without any hassle other than the harsh weather up here, yarr.\"";
+ mes "\"Yar! Do you need something, matey?\"";
+ goto L_Main;
+
+L_Main:
+ menu
+ "Can you explain the Ferry?", L_Explain,
+ "Nothing I guess", L_Close;
+
+L_Explain:
+ mes "[Frozenbeard]";
+ mes "\"Arrr mate! I pioneered the trade routes between Nivalis and the rest of the World, so now merchants and adventurers can travel to and fro without any hassle other than the harsh weather up here, yarr.\"";
+ next;
+ mes "\"You wait on the dock for the ship to come in. You'll be given a chance to board the boat when it comes into port.\"";
+ mes "\"It lingers in port to allow you some time to board in case you are running behind.\"";
+ mes "\"Once on the ship, it will sail to different ports and annouce where it is docking.\"";
+ next;
+ mes "\"There are 2 Ferrys, both ferrys are free to ride.\"";
+ mes "\"The Main ferry travels from Argeas, Kaizei and Tonori. It docks in the major ports Hurnscald, Nivalis and the Tulimshar South Dock.\"";
+ mes "\"The Candor Ferry only travels betwen Candor and the Tulimshar North Dock.\"";
+ next;
+ mes "\"Refreshments and supplies are offered aboard both ships during the voyage.\"";
+ mes "\"We also have some slot machines in case you get bored.\"";
+ goto L_Main;
+
+L_Close:
close;
}
diff --git a/world/map/npc/031-1/mapflags.txt b/world/map/npc/031-1/mapflags.txt
new file mode 100644
index 00000000..5b7ea1ea
--- /dev/null
+++ b/world/map/npc/031-1/mapflags.txt
@@ -0,0 +1 @@
+031-1.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/031-2/_import.txt b/world/map/npc/031-2/_import.txt
index 39d9ffce..1f2f838a 100644
--- a/world/map/npc/031-2/_import.txt
+++ b/world/map/npc/031-2/_import.txt
@@ -5,3 +5,4 @@ npc: npc/031-2/_mobs.txt
npc: npc/031-2/_warps.txt
npc: npc/031-2/angelaHouse.txt
npc: npc/031-2/cindyHouse.txt
+npc: npc/031-2/mapflags.txt
diff --git a/world/map/npc/031-2/mapflags.txt b/world/map/npc/031-2/mapflags.txt
new file mode 100644
index 00000000..d625ee96
--- /dev/null
+++ b/world/map/npc/031-2/mapflags.txt
@@ -0,0 +1 @@
+031-2.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/031-3/_import.txt b/world/map/npc/031-3/_import.txt
index 1d0b99f8..9f342f0e 100644
--- a/world/map/npc/031-3/_import.txt
+++ b/world/map/npc/031-3/_import.txt
@@ -4,3 +4,4 @@ map: 031-3.gat
npc: npc/031-3/_mobs.txt
npc: npc/031-3/_warps.txt
npc: npc/031-3/labyrinth.txt
+npc: npc/031-3/mapflags.txt
diff --git a/world/map/npc/031-3/mapflags.txt b/world/map/npc/031-3/mapflags.txt
new file mode 100644
index 00000000..5b7ea1ea
--- /dev/null
+++ b/world/map/npc/031-3/mapflags.txt
@@ -0,0 +1 @@
+031-1.gat|mapflag|resave|020-1,52,118
diff --git a/world/map/npc/031-4/mapflags.txt b/world/map/npc/031-4/mapflags.txt
index cca67591..fa397650 100644
--- a/world/map/npc/031-4/mapflags.txt
+++ b/world/map/npc/031-4/mapflags.txt
@@ -1 +1,2 @@
031-4.gat|mapflag|nosave|031-3,46,26
+031-4.gat|mapflag|resave|031-3,46,26
diff --git a/world/map/npc/032-1/_import.txt b/world/map/npc/032-1/_import.txt
index 939f1d9c..00df1589 100644
--- a/world/map/npc/032-1/_import.txt
+++ b/world/map/npc/032-1/_import.txt
@@ -3,4 +3,5 @@
map: 032-1.gat
npc: npc/032-1/_mobs.txt
npc: npc/032-1/_warps.txt
+npc: npc/032-1/mapflags.txt
npc: npc/032-1/miriam.txt
diff --git a/world/map/npc/032-1/mapflags.txt b/world/map/npc/032-1/mapflags.txt
new file mode 100644
index 00000000..534224b6
--- /dev/null
+++ b/world/map/npc/032-1/mapflags.txt
@@ -0,0 +1 @@
+032-1.gat|mapflag|resave|032-1,77,23
diff --git a/world/map/npc/032-3/_import.txt b/world/map/npc/032-3/_import.txt
index 73ed3c4f..9e03add8 100644
--- a/world/map/npc/032-3/_import.txt
+++ b/world/map/npc/032-3/_import.txt
@@ -3,3 +3,4 @@
map: 032-3.gat
npc: npc/032-3/_mobs.txt
npc: npc/032-3/_warps.txt
+npc: npc/032-3/mapflags.txt
diff --git a/world/map/npc/032-3/mapflags.txt b/world/map/npc/032-3/mapflags.txt
new file mode 100644
index 00000000..3c28a3a0
--- /dev/null
+++ b/world/map/npc/032-3/mapflags.txt
@@ -0,0 +1 @@
+032-3.gat|mapflag|resave|032-1,77,23
diff --git a/world/map/npc/033-1/_import.txt b/world/map/npc/033-1/_import.txt
index f50ac18a..214e42eb 100644
--- a/world/map/npc/033-1/_import.txt
+++ b/world/map/npc/033-1/_import.txt
@@ -1,4 +1,4 @@
-// Map 033-1: Snow Path
+// Map 033-1: snow Path
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 033-1.gat
npc: npc/033-1/_mobs.txt
@@ -7,4 +7,6 @@ npc: npc/033-1/backDoor.txt
npc: npc/033-1/barbarianinit.txt
npc: npc/033-1/birrod.txt
npc: npc/033-1/kimarr.txt
+npc: npc/033-1/mapflags.txt
+npc: npc/033-1/traveler.txt
npc: npc/033-1/yerrnk.txt
diff --git a/world/map/npc/033-1/_mobs.txt b/world/map/npc/033-1/_mobs.txt
index 35c8404e..d60f0663 100644
--- a/world/map/npc/033-1/_mobs.txt
+++ b/world/map/npc/033-1/_mobs.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Snow Path mobs
+// snow Path mobs
033-1.gat,73,49,10,18|monster|Wolvern|1090,2,100000,30000,Mob033-1::On1090
033-1.gat,33,38,15,49|monster|Reinboo|1094,3,100000,30000,Mob033-1::On1094
diff --git a/world/map/npc/033-1/_warps.txt b/world/map/npc/033-1/_warps.txt
index 262973b4..af27cf7a 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 changes will be removed when running the Converter.
-// Snow Path warps
+// snow Path warps
033-1.gat,22,20|warp|To Snow Forest|-1,0,034-1.gat,159,19
033-1.gat,119,70|warp|To Snow Field|-1,0,019-1.gat,22,69
diff --git a/world/map/npc/033-1/mapflags.txt b/world/map/npc/033-1/mapflags.txt
new file mode 100644
index 00000000..5535662f
--- /dev/null
+++ b/world/map/npc/033-1/mapflags.txt
@@ -0,0 +1 @@
+033-1.gat|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/033-1/traveler.txt b/world/map/npc/033-1/traveler.txt
new file mode 100644
index 00000000..ebb10ccc
--- /dev/null
+++ b/world/map/npc/033-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+033-1.gat,63,30,0|script|Khoenan the Traveler|103,
+{
+ set @NpcName$, "Khoenan";
+ set @NpcTravelBit, $@barbarians_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/034-1/_import.txt b/world/map/npc/034-1/_import.txt
index 395e6af7..ec07c604 100644
--- a/world/map/npc/034-1/_import.txt
+++ b/world/map/npc/034-1/_import.txt
@@ -4,4 +4,5 @@ map: 034-1.gat
npc: npc/034-1/_mobs.txt
npc: npc/034-1/_warps.txt
npc: npc/034-1/ambushs.txt
+npc: npc/034-1/mapflags.txt
npc: npc/034-1/yetiSpawn.txt
diff --git a/world/map/npc/034-1/_warps.txt b/world/map/npc/034-1/_warps.txt
index be29b7b1..d9443552 100644
--- a/world/map/npc/034-1/_warps.txt
+++ b/world/map/npc/034-1/_warps.txt
@@ -4,6 +4,6 @@
034-1.gat,160,20|warp|To Snow Field|-1,0,033-1.gat,23,19
034-1.gat,16,103|warp|To Deep Snow Forest|-1,1,045-1.gat,176,133
034-1.gat,15,31|warp|To Deep Snow Forest|-1,0,045-1.gat,174,59
-034-1.gat,95,18|warp|ToHighlands1|0,-1,046-1.gat,95,116
+034-1.gat,95,18|warp|To Highlands|0,-1,046-1.gat,95,116
034-1.gat,31,68|warp|To Trapper|-1,-1,034-2.gat,28,31
034-1.gat,64,99|warp|To Cabin|-1,-1,034-2.gat,73,29
diff --git a/world/map/npc/034-1/mapflags.txt b/world/map/npc/034-1/mapflags.txt
new file mode 100644
index 00000000..c142d6d6
--- /dev/null
+++ b/world/map/npc/034-1/mapflags.txt
@@ -0,0 +1 @@
+034-1.gat|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/034-2/_import.txt b/world/map/npc/034-2/_import.txt
index 07dfa138..a55ce10d 100644
--- a/world/map/npc/034-2/_import.txt
+++ b/world/map/npc/034-2/_import.txt
@@ -3,3 +3,4 @@
map: 034-2.gat
npc: npc/034-2/_mobs.txt
npc: npc/034-2/_warps.txt
+npc: npc/034-2/mapflags.txt
diff --git a/world/map/npc/034-2/mapflags.txt b/world/map/npc/034-2/mapflags.txt
new file mode 100644
index 00000000..7721f6a7
--- /dev/null
+++ b/world/map/npc/034-2/mapflags.txt
@@ -0,0 +1 @@
+034-2.gat|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/035-2/_import.txt b/world/map/npc/035-2/_import.txt
new file mode 100644
index 00000000..5e207a35
--- /dev/null
+++ b/world/map/npc/035-2/_import.txt
@@ -0,0 +1,9 @@
+// Map 035-2: Koga - Main
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 035-2.gat
+npc: npc/035-2/_mobs.txt
+npc: npc/035-2/_warps.txt
+npc: npc/035-2/casino.txt
+npc: npc/035-2/koga.txt
+npc: npc/035-2/mapflags.txt
+npc: npc/035-2/shops.txt
diff --git a/world/map/npc/035-2/_mobs.txt b/world/map/npc/035-2/_mobs.txt
new file mode 100644
index 00000000..f1c490ea
--- /dev/null
+++ b/world/map/npc/035-2/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Koga - Main mobs
+
+
+
+035-2.gat,0,0,0|script|Mob035-2|-1,
+{
+ end;
+}
diff --git a/world/map/npc/035-2/_warps.txt b/world/map/npc/035-2/_warps.txt
new file mode 100644
index 00000000..ff86d330
--- /dev/null
+++ b/world/map/npc/035-2/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Koga - Main warps
+
diff --git a/world/map/npc/035-2/casino.txt b/world/map/npc/035-2/casino.txt
new file mode 100644
index 00000000..83759787
--- /dev/null
+++ b/world/map/npc/035-2/casino.txt
@@ -0,0 +1,12 @@
+// Casino
+035-2.gat,34,37,0|script|Slots#4|400,
+{
+ callfunc "SlotMachine";
+ close;
+}
+
+035-2.gat,36,37,0|script|Slots#5|400,
+{
+ callfunc "SlotMachine";
+ close;
+}
diff --git a/world/map/npc/035-2/koga.txt b/world/map/npc/035-2/koga.txt
new file mode 100644
index 00000000..b9e0969d
--- /dev/null
+++ b/world/map/npc/035-2/koga.txt
@@ -0,0 +1,33 @@
+// Dock
+
+035-2.gat,39,29,0|script|#KogaExit|45,0,1,
+{
+ mes "Disembark the ferry for "+$@MainDocks$[$@MainCurrentDock]+"?";
+ menu
+ "Yes.", L_Leave,
+ "Nevermind", L_Close;
+
+L_Leave:
+ if ($@MainCurrentDock == 0)
+ goto L_Hurnscald;
+ if ($@MainCurrentDock == 1)
+ goto L_Nivalis;
+ if ($@MainCurrentDock == 2)
+ goto L_Tulimshar;
+ goto L_Close;
+
+L_Tulimshar:
+ warp "022-1.gat", 76, 72;
+ goto L_Close;
+
+L_Hurnscald:
+ warp "008-1.gat", 137, 64;
+ goto L_Close;
+
+L_Nivalis:
+ warp "031-1.gat", 95, 109;
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/035-2/mapflags.txt b/world/map/npc/035-2/mapflags.txt
new file mode 100644
index 00000000..048307fd
--- /dev/null
+++ b/world/map/npc/035-2/mapflags.txt
@@ -0,0 +1,2 @@
+035-2.gat|mapflag|town
+035-2.gat|mapflag|resave|035-2,20,21
diff --git a/world/map/npc/035-2/shops.txt b/world/map/npc/035-2/shops.txt
new file mode 100644
index 00000000..ddf0f09c
--- /dev/null
+++ b/world/map/npc/035-2/shops.txt
@@ -0,0 +1,13 @@
+//
+
+035-2.gat,23,38,0|shop|Cooky|213,Beer :-1,Orange :-1,CasinoCoins :-1
+
+035-2.gat,23,35,0|script|Bunkmaster Phict|212,
+{
+ set @npcname$, "Bunkmaster Phict";
+ set @cost, 100;
+ callfunc "Inn";
+ set @npcname$, "";
+ set @cost, 0;
+ close;
+}
diff --git a/world/map/npc/036-2/_import.txt b/world/map/npc/036-2/_import.txt
new file mode 100644
index 00000000..b151f381
--- /dev/null
+++ b/world/map/npc/036-2/_import.txt
@@ -0,0 +1,9 @@
+// Map 036-2: Koga - Candor
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 036-2.gat
+npc: npc/036-2/_mobs.txt
+npc: npc/036-2/_warps.txt
+npc: npc/036-2/casino.txt
+npc: npc/036-2/koga-candor.txt
+npc: npc/036-2/mapflags.txt
+npc: npc/036-2/shops.txt
diff --git a/world/map/npc/036-2/_mobs.txt b/world/map/npc/036-2/_mobs.txt
new file mode 100644
index 00000000..38c33e56
--- /dev/null
+++ b/world/map/npc/036-2/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Koga - Candor mobs
+
+
+
+036-2.gat,0,0,0|script|Mob036-2|-1,
+{
+ end;
+}
diff --git a/world/map/npc/036-2/_warps.txt b/world/map/npc/036-2/_warps.txt
new file mode 100644
index 00000000..c1a79f9e
--- /dev/null
+++ b/world/map/npc/036-2/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Koga - Candor warps
+
diff --git a/world/map/npc/036-2/casino.txt b/world/map/npc/036-2/casino.txt
new file mode 100644
index 00000000..e7120f5d
--- /dev/null
+++ b/world/map/npc/036-2/casino.txt
@@ -0,0 +1,12 @@
+// Casino
+036-2.gat,34,37,0|script|Slots#6|400,
+{
+ callfunc "SlotMachine";
+ close;
+}
+
+036-2.gat,36,37,0|script|Slots#7|400,
+{
+ callfunc "SlotMachine";
+ close;
+}
diff --git a/world/map/npc/036-2/koga-candor.txt b/world/map/npc/036-2/koga-candor.txt
new file mode 100644
index 00000000..3aa24417
--- /dev/null
+++ b/world/map/npc/036-2/koga-candor.txt
@@ -0,0 +1,27 @@
+// Dock
+
+036-2.gat,39,29,0|script|#KogaCandorExit|45,0,1,
+{
+ mes "Disembark the ferry for "+$@CandorDocks$[$@CandorCurrentDock]+"?";
+ menu
+ "Yes.", L_Leave,
+ "Nevermind", L_Close;
+
+L_Leave:
+ if ($@CandorCurrentDock == 0)
+ goto L_Candor;
+ if ($@CandorCurrentDock == 1)
+ goto L_Tulimshar;
+ goto L_Close;
+
+L_Tulimshar:
+ warp "022-1.gat", 60, 33;
+ goto L_Close;
+
+L_Candor:
+ warp "029-1.gat", 25, 37;
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/036-2/mapflags.txt b/world/map/npc/036-2/mapflags.txt
new file mode 100644
index 00000000..da3ae23a
--- /dev/null
+++ b/world/map/npc/036-2/mapflags.txt
@@ -0,0 +1,2 @@
+036-2.gat|mapflag|town
+036-2.gat|mapflag|resave|036-2,20,21
diff --git a/world/map/npc/036-2/shops.txt b/world/map/npc/036-2/shops.txt
new file mode 100644
index 00000000..b25d0a46
--- /dev/null
+++ b/world/map/npc/036-2/shops.txt
@@ -0,0 +1,14 @@
+//
+
+036-2.gat,23,38,0|shop|Chef Armand|211,Beer :-1,Steak :-2,CasinoCoins :-1
+036-2.gat,35,22,0|shop|Gunney|138,Arrow :-2,IronArrow :-2
+
+036-2.gat,23,35,0|script|Bunkmaster Daban|212,
+{
+ set @npcname$, "Bunkmaster Daban";
+ set @cost, 100;
+ callfunc "Inn";
+ set @npcname$, "";
+ set @cost, 0;
+ close;
+}
diff --git a/world/map/npc/041-1/_import.txt b/world/map/npc/041-1/_import.txt
index b7c08da2..957b1b29 100644
--- a/world/map/npc/041-1/_import.txt
+++ b/world/map/npc/041-1/_import.txt
@@ -3,4 +3,5 @@
map: 041-1.gat
npc: npc/041-1/_mobs.txt
npc: npc/041-1/_warps.txt
+npc: npc/041-1/mapflags.txt
npc: npc/041-1/tutorial.txt
diff --git a/world/map/npc/041-1/mapflags.txt b/world/map/npc/041-1/mapflags.txt
new file mode 100644
index 00000000..59863e5d
--- /dev/null
+++ b/world/map/npc/041-1/mapflags.txt
@@ -0,0 +1 @@
+041-1.gat|mapflag|resave|001-1,57,71
diff --git a/world/map/npc/041-1/tutorial.txt b/world/map/npc/041-1/tutorial.txt
index 98793d23..5c024e1f 100644
--- a/world/map/npc/041-1/tutorial.txt
+++ b/world/map/npc/041-1/tutorial.txt
@@ -5,6 +5,7 @@
041-1.gat,58,5,0|script|#tutorial-outside2|45,1,0
{
set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
- warp "042-1.gat", 44, 143;
+ callfunc "ClearVariables";
+ warp "042-1.gat", 44, 113;
end;
}
diff --git a/world/map/npc/042-1/_import.txt b/world/map/npc/042-1/_import.txt
index d86cc00b..b3bfbae5 100644
--- a/world/map/npc/042-1/_import.txt
+++ b/world/map/npc/042-1/_import.txt
@@ -5,5 +5,6 @@ npc: npc/042-1/_mobs.txt
npc: npc/042-1/_warps.txt
npc: npc/042-1/hasan.txt
npc: npc/042-1/kaan.txt
+npc: npc/042-1/mapflags.txt
npc: npc/042-1/npcs.txt
npc: npc/042-1/valon.txt
diff --git a/world/map/npc/042-1/_mobs.txt b/world/map/npc/042-1/_mobs.txt
index 55684f46..75ea7407 100644
--- a/world/map/npc/042-1/_mobs.txt
+++ b/world/map/npc/042-1/_mobs.txt
@@ -1,11 +1,16 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Suburbs mobs
-042-1.gat,100,97,31,15|monster|Maggot|1002,5,100000,30000,Mob042-1::On1002
-042-1.gat,65,88,27,15|monster|Maggot|1002,7,100000,30000,Mob042-1::On1002
-042-1.gat,95,127,55,11|monster|BlackScorpion|1009,25,100000,30000,Mob042-1::On1009
-042-1.gat,95,128,53,8|monster|Scorpion|1003,10,100000,30000,Mob042-1::On1003
-042-1.gat,62,81,42,50|monster|FireGoblin|1011,2,100000,30000,Mob042-1::On1011
+042-1.gat,100,68,31,15|monster|Maggot|1002,5,100000,30000,Mob042-1::On1002
+042-1.gat,65,59,27,15|monster|Maggot|1002,7,100000,30000,Mob042-1::On1002
+042-1.gat,68,102,7,8|monster|BlackScorpion|1009,5,100000,30000,Mob042-1::On1009
+042-1.gat,98,88,5,8|monster|Scorpion|1003,4,100000,30000,Mob042-1::On1003
+042-1.gat,58,61,42,42|monster|FireGoblin|1011,2,100000,30000,Mob042-1::On1011
+042-1.gat,85,102,5,8|monster|Scorpion|1003,5,100000,30000,Mob042-1::On1003
+042-1.gat,98,99,5,5|monster|Scorpion|1003,3,100000,30000,Mob042-1::On1003
+042-1.gat,82,87,6,3|monster|Scorpion|1003,2,100000,30000,Mob042-1::On1003
+042-1.gat,70,88,5,8|monster|BlackScorpion|1009,5,100000,30000,Mob042-1::On1009
+042-1.gat,80,35,11,5|monster|BlackScorpion|1009,5,100000,30000,Mob042-1::On1009
042-1.gat,0,0,0|script|Mob042-1|-1,
diff --git a/world/map/npc/042-1/_warps.txt b/world/map/npc/042-1/_warps.txt
index 45283d39..565ed1ae 100644
--- a/world/map/npc/042-1/_warps.txt
+++ b/world/map/npc/042-1/_warps.txt
@@ -1,7 +1,9 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Suburbs warps
-042-1.gat,63,76|warp|To Sorfina's House|-1,-1,042-2.gat,44,30
-042-1.gat,91,102|warp|To Store House|-1,-1,042-2.gat,22,92
-042-1.gat,104,102|warp|To Store House|-1,-1,042-2.gat,44,92
-042-1.gat,65,104|warp|To Tulimshar Suburbs House|-1,-1,042-2.gat,29,61
+042-1.gat,97,41|warp|To Tulismhar Docks|-1,2,022-1.gat,21,37
+042-1.gat,65,20|warp|To Lighthouse Beach|0,-1,023-1.gat,64,143
+042-1.gat,63,47|warp|To Sorfina's House|-1,-1,042-2.gat,44,30
+042-1.gat,91,73|warp|To Store House|-1,-1,042-2.gat,22,92
+042-1.gat,104,73|warp|To Store House|-1,-1,042-2.gat,44,92
+042-1.gat,65,75|warp|To Tulimshar Suburbs House|-1,-1,042-2.gat,29,61
diff --git a/world/map/npc/042-1/hasan.txt b/world/map/npc/042-1/hasan.txt
index dc9ff3e4..25f7ff86 100644
--- a/world/map/npc/042-1/hasan.txt
+++ b/world/map/npc/042-1/hasan.txt
@@ -1,31 +1,28 @@
// This file is part of the Tutorial
// Authors: Jenalya, alastrim
-042-1.gat,90,61,0|script|Hasan|189,
+042-1.gat,116,84,0|script|Hasan|189,0,2,
{
- set @toll, 10000;
- set @x, getx();
- set @y, gety();
+ goto L_Main;
+L_Main:
if (FLAGS & FLAG_TUTORIAL_DONE)
goto L_Tut_Done;
- // Please consider rewriting this in terms of isin()
- // it's not that trivial to put this in a rectangle...
- if ( (@y < 58)&&(@x < 89) || (@x < 87) )
- goto L_Cliff_Up;
+
+ set @toll, 10000;
+ callfunc "TutorialState";
// implicitly, $@ScorpionFighter is nonzero
- if (getcharid(3) == $@ScorpionFighter)
- goto L_Fear;
- if (hasan == 4)
+ if (@tutorial == 13)
goto L_Thank;
- if (hasan == 3)
+ if ((getcharid(3) == $@ScorpionFighter) || ($@ScorpionFighter && $@ScorpionFighter != getcharid(3)))
+ goto L_Afraid;
+ if (@tutorial == 12)
goto L_Trick;
- if (hasan > 0)
+ if ((@tutorial == 10) || (@tutorial == 11))
goto L_Toll;
mes "[Unfriendly Guy]";
mes "\"Hey! You can't pass here.\"";
- next;
menu
"Why not?",L_Next,
"Who says that?",L_Next;
@@ -33,20 +30,25 @@
L_Next:
mes "[Unfriendly Guy]";
mes "\"I, Hasan the Mighty, have decided to put a toll on this path.\"";
+ set @tutorial_tmp, 10;
+ callfunc "SetTutorialMask";
next;
goto L_Toll;
L_Toll:
mes "[Hasan]";
mes "\"Give me " + @toll + "GP, and I may let you pass.\"";
- if (hasan == 0)
- set hasan, 1;
- next;
if (Zeny >= @toll)
- menu
- "Ok, here you go.",L_Pay,
- "What? I don't have that much money!",L_NoPay,
- "We'll see if you can stop me!",L_Fight;
+ goto L_HasToll;
+ goto L_NoToll;
+
+L_HasToll:
+ menu
+ "Ok, here you go.",L_Pay,
+ "What? I don't have that much money!",L_NoPay,
+ "We'll see if you can stop me!",L_Fight;
+
+L_NoToll:
menu
"What? I don't have that much money!",L_NoPay,
"We'll see if you can stop me!",L_Fight;
@@ -87,7 +89,6 @@ L_Cheat:
L_Trick:
mes "[Hasan]";
mes "\"Are you going to pay now? " + @toll + "GP, and I may let you pass.\"";
- next;
menu
"I don't have that much money!",L_NoPay,
"No. (Scratch your head.)",L_ScratchHead;
@@ -95,15 +96,12 @@ L_Trick:
L_ScratchHead:
if ($@ScorpionFighter)
goto L_Wait;
- mes "While you're scratching your head, you see Kaan coming nearer to the cliff above you.";
- // close2 blocks
- close2;
set $@ScorpionTimer, 0;
set $@ScorpionFighter, getcharid(3);
set $@ScorpDeath, PC_DIE_COUNTER;
- monster "042-1.gat",89,63,"Scorpion",1003,1, "Hasan::OnScorpionDeath";
- initnpctimer;
- end;
+ cmdothernpc "#ScorpionTrigger", "HasanSpawn";
+ mes "While you're scratching your head, you see Kaan approaching behind Hasan.";
+ close;
L_Thank:
mes "[Hasan]";
@@ -120,7 +118,6 @@ L_Thank:
callfunc "TutorialCompleted";
next;
mes "\"You want to go to the bazaar, right? Shall I tell you how to get there?\"";
- next;
menu
"Sure, thanks.",L_HasanThanks,
"I'll try to find the way myself.",L_Explore;
@@ -139,12 +136,6 @@ L_Explore:
mes "\"Alright. Take care!\"";
goto L_Close;
-L_Fear:
- mes "[Hasan]";
- mes "\"Sc-sc-sco-scorpion!\"";
- mes "He seems close to tears.";
- goto L_Close;
-
L_Tut_Done:
mes "[Hasan]";
if (BaseLevel >= 40)
@@ -153,44 +144,41 @@ L_Tut_Done:
mes "\"Bah, nothing interesting is happening here.\"";
goto L_Close;
-L_Cliff_Up:
- mes "You see a guy in shabby clothes when you look down the cliff.";
+L_Wait:
+ mes "There is a scorpion near Hasan already. I think Kaan is helping someone else... Maybe I should try the plan later.";
goto L_Close;
-L_SummonAgain:
- message strcharinfo(0), "Kaan is mad at you for your interference! He walks over to the edge of the cliff and throws a rock on top of your head, then lets another scorpion run just near Hasan!";
- percentheal -100, 0;
- message strcharinfo(0), "Kaan: \"Just go while he is distracted and no one is interfering!\"";
- monster "042-1.gat",89,63,"Scorpion",1003,1, "Hasan::OnScorpionDeath";
+L_Afraid:
+ message strcharinfo(0), "Hasan: \"" + strcharinfo(0) + "! Please help me!\"";
end;
-L_Clean:
- killmonster "042-1.gat", "Hasan::OnScorpionDeath";
- set $@ScorpionFighter, 0;
- set $@ScorpionTimer, 0;
- set $@ScorpDeath, 0;
- stopnpctimer;
- end;
+L_Close:
+ set @toll, 0;
+ close;
-L_TimeOut:
- message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strength! Seems like you took too long and the plan didn't work this time.";
- warp "042-1.gat", 91, 58;
- message strcharinfo(0), "Hasan: \"Hey you! I told you you cannot pass!\"";
- goto L_Clean;
+OnTouch:
+ if (FLAGS & FLAG_TUTORIAL_DONE)
+ goto L_Close;
+ goto L_Main;
+}
-L_MessageDeath:
- message strcharinfo(0), "Ouch... I should be more careful when fighting these monsters.";
- goto L_Clean;
+042-1.gat,0,0,0|script|#ScorpionTrigger|35,
+{
+ end;
-L_Wait:
- mes "There is a scorpion near Hasan already. I think Kaan is helping someone else... Maybe I should try the plan later.";
- goto L_Close;
+OnCommandHasanSpawn:
+ goto L_Summon;
-L_Close:
- set @toll, 0;
- set @x, 0;
- set @y, 0;
- close;
+L_Summon:
+ monster "042-1.gat",115,85,"Scorpion",1003,1, "#ScorpionTrigger::OnScorpionDeath";
+ initnpctimer;
+ end;
+
+L_SummonAgain:
+ message strcharinfo(0), "Kaan is mad at you for your interference! He walks over to the edge of the cliff and throws a rock on top of your head, then lets another scorpion run just near Hasan!";
+ percentheal -100, 0;
+ message strcharinfo(0), "Kaan: \"Just go while he is distracted and no one is interfering!\"";
+ goto L_Summon;
OnTimer5000:
if (attachrid($@ScorpionFighter) == 0)
@@ -206,50 +194,44 @@ OnTimer5000:
OnScorpionDeath:
if (getcharid(3) != $@ScorpionFighter)
goto L_SummonAgain;
- if (hasan != 3)
- end;
- set hasan, 4;
+ if (@tutorial != 12)
+ goto L_Clean;
+ set @tutorial_tmp, 13;
+ callfunc "SetTutorialMask";
message strcharinfo(0), "You saved Hasan.";
goto L_Clean;
-}
+L_TimeOut:
+ message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strength! Seems like you took too long and the plan didn't work this time.";
+ warp "042-1.gat", 114, 85;
+ message strcharinfo(0), "Hasan: \"Hey you! I told you you cannot pass!\"";
+ goto L_Clean;
-042-1.gat,90,62,0|script|#Toll|32767,2,2,
-{
- end;
+L_MessageDeath:
+ message strcharinfo(0), "Ouch... I should be more careful when fighting these monsters.";
+ goto L_Clean;
-OnTouch:
- // implicitly, $@ScorpionFighter is nonzero
- if ($@ScorpionFighter == getcharid(3))
- end;
- if ((FLAGS & FLAG_TUTORIAL_DONE) || (hasan == 4))
- end;
- warp "042-1.gat", 91, 58;
- message strcharinfo(0), "Hasan: \"Stop!\"";
+L_Clean:
+ killmonster "042-1.gat", "#ScorpionTrigger::OnScorpionDeath";
+ set $@ScorpionFighter, 0;
+ set $@ScorpionTimer, 0;
+ set $@ScorpDeath, 0;
+ stopnpctimer;
end;
-
}
-042-1.gat,96,69,0|script|#barrier|45,0,2
+042-1.gat,117,85,0|script|#warp|45,0,0,
{
- end;
-
-OnTouch:
if (FLAGS & FLAG_TUTORIAL_DONE)
goto L_Tut;
- warp "042-1.gat", 94, 69;
- // implicitly, $@ScorpionFighter is nonzero
- if ($@ScorpionFighter == getcharid(3))
- message strcharinfo(0), "Hasan: \"" + strcharinfo(0) + "! Please help me!\"";
- if ($@ScorpionFighter && $@ScorpionFighter != getcharid(3))
- // is this reachable?
- message strcharinfo(0), "Hasan: \"Hey! Stop right there!\"";
- if (hasan == 4)
- message strcharinfo(0), "Hasan: \"Please wait a moment!\"";
+ goto L_SendBack;
+
+L_SendBack:
+ message strcharinfo(0), "Hasan: I can do this all day.";
+ warp "042-1.gat", 114, 85;
end;
L_Tut:
- warp "022-1.gat", 23, 38;
+ warp "022-1.gat", 49, 82;
end;
-
}
diff --git a/world/map/npc/042-1/kaan.txt b/world/map/npc/042-1/kaan.txt
index a5f9f530..d2ba5877 100644
--- a/world/map/npc/042-1/kaan.txt
+++ b/world/map/npc/042-1/kaan.txt
@@ -1,15 +1,18 @@
// This file is part of the Tutorial
// Author: Jenalya
-042-1.gat,84,65,0|script|Kaan|160,
+042-1.gat,103,92,0|script|Kaan|160,
{
if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
- if (hasan == 4) goto L_Hasan_Saved;
+ callfunc "TutorialState";
+ if (@tutorial == 13) goto L_Hasan_Saved;
if ($@ScorpionFighter == getcharid(3)) goto L_Run;
- if (kaan == 4) goto L_Plan;
- if (kaan == 3) goto L_Trick;
- if (kaan == 2) goto L_Out;
- if (kaan == 1) goto L_Tanisha;
+ if (@tutorial == 12) goto L_Plan;
+ if ((@tutorial == 11) && ((@sorfina_hasan) || (@tanisha_hasan))) goto L_TrickKnown;
+ if (@tutorial == 11) goto L_Trick;
+ if (@tutorial == 10) goto L_Hasan;
+ if (@tutorial == 9) goto L_Out;
+ if (@tutorial == 8) goto L_Tanisha;
mes "[Young Man]";
mes "\"You're the person Tanisha brought here, right?";
@@ -22,22 +25,11 @@
mes "\"She hates maggots.\"";
next;
mes "\"Maybe you should go and see her...she was really upset about what happened to you.\"";
- set kaan, 1;
- if (tanisha >= 3)
- goto L_Tanisha2;
goto L_Close;
-L_Tanisha2:
- menu
- "I already did and helped her with the maggots.",L_Tanisha3,
- "I talked to her, and she's done with the maggots.",L_Tanisha3;
-
L_Tanisha:
mes "[Kaan]";
mes "\"Did you already talk to Tanisha?\"";
- if (tanisha < 3)
- goto L_Close;
- next;
menu
"Yes, I helped her with the maggots.",L_Tanisha3,
"Yeah, and she's done with the maggots.",L_Tanisha3;
@@ -54,7 +46,7 @@ L_Tanisha3:
mes "\"But I took care of that problem.\"";
mes "He looks very proud.";
next;
- mes "\"I built the fence down south of here to keep them out.\"";
+ mes "\"I've trapped or slain many scorpians south of here to keep them out of our fields.\"";
next;
menu
"Impressive! Just a bit... skewed.",L_Next,
@@ -62,7 +54,7 @@ L_Tanisha3:
L_Next:
mes "[Kaan]";
- mes "\"Well, it keeps the scorpions out. That's all that matters.\"";
+ mes "\"Well, I keep the scorpions out. That's all that matters.\"";
next;
mes "\"Are you going to visit Tulimshar?";
mes "The bazaar there is a wondeful place! Traders, entertainers, adventurers - it's very exciting.\"";
@@ -72,7 +64,8 @@ L_Next:
set Zeny, Zeny + 15;
next;
mes "\"And Ian the trainer is hanging around there often. You should talk to him, he's a smart guy.\"";
- set kaan, 2;
+ set @tutorial_tmp, 9;
+ callfunc "SetTutorialMask";
if (hasan)
menu
"A guy named Hasan won't let me enter Tulimshar.",L_Hasan,
@@ -82,16 +75,17 @@ L_Next:
L_Out:
mes "[Kaan]";
mes "\"Hello! How are you? Did you already visit Tulimshar?\"";
- next;
- if (hasan)
- menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Hasan,
- "Not yet.",L_Close;
menu
"Not yet.",L_Close;
L_Hasan:
mes "[Kaan]";
+ mes "\"Hello! How are you? Did you already visit Tulimshar?\"";
+ menu
+ "A guy named Hasan won't let me enter Tulimshar.",L_Next1,
+ "Not yet.",L_Close;
+
+L_Next1:
mes "\"Hasan! That's crazy. He becomes more cheeky with every day.";
mes "I'd like to help you, but - I won't risk an open confrontation with him.\"";
next;
@@ -99,7 +93,8 @@ L_Hasan:
mes "He might listen to one of the adult men, but they're all off to work in Tulimshar during the day.\"";
next;
mes "\"We should think about some kind of trick. Ah, if only I knew his weak point.\"";
- set kaan, 3;
+ set @tutorial_tmp, 11;
+ callfunc "SetTutorialMask";
next;
goto L_Trick;
@@ -107,42 +102,43 @@ L_Trick:
mes "[Kaan]";
mes "\"Do you have any idea what Hasan's weakness could be?";
mes "I wonder if Sorfina or Tanisha know something about him that could help us.\"";
- if (hasan < 2)
- goto L_Close;
- next;
menu
- "He's afraid of scorpions.",L_Continue,
"No idea.",L_Close;
-L_Continue:
+L_TrickKnown:
+ mes "[Kaan]";
+ mes "\"Do you have any idea what Hasan's weakness could be?";
+ menu
+ "He's afraid of scorpions.",L_Next2,
+ "No idea.",L_Close;
+
+L_Next2:
mes "[Kaan]";
mes "\"Scorpions?! Right! How could I forget?";
mes "When he was a child, he nearly died because he fell into a scorpion nest.\"";
+ set @tutorial_tmp, 12;
+ callfunc "SetTutorialMask";
next;
goto L_Explain;
L_Explain:
mes "\"Ok, then here's the plan:";
- mes "I will catch one of the scorpions that's coming to the fence from the desert.\"";
+ mes "I will catch one of the scorpions behind the fences.\"";
next;
mes "\"You'll go to Hasan and give me a sign when you're ready.";
mes "Lets say the sign is that you're scratching your head.";
mes "I'll watch you from this point.\"";
next;
- mes "\"When you give me the sign, I'll throw the scorpion down on him.";
+ mes "\"When you give me the sign, I'll throw the scorpion on him.";
mes "While he's distracted with the scorpion, you can pass.\"";
next;
mes "\"How's that? We can start as soon as you're ready.\"";
- if (kaan == 3)
- set kaan, 4;
- set hasan, 3;
goto L_Close;
L_Plan:
mes "[Kaan]";
mes "\"I'm ready. Just give me the sign when you're down there.";
mes "Or do you want me to explain the plan again?\"";
- next;
menu
"Yes please.",L_Explain,
"No, everything's alright.",L_Close;
diff --git a/world/map/npc/042-1/mapflags.txt b/world/map/npc/042-1/mapflags.txt
new file mode 100644
index 00000000..3c0e8f71
--- /dev/null
+++ b/world/map/npc/042-1/mapflags.txt
@@ -0,0 +1 @@
+042-1.gat|mapflag|resave|042-2,26,26
diff --git a/world/map/npc/042-1/valon.txt b/world/map/npc/042-1/valon.txt
index 63530aec..35636f94 100644
--- a/world/map/npc/042-1/valon.txt
+++ b/world/map/npc/042-1/valon.txt
@@ -1,7 +1,7 @@
// This file is part of the Tutorial
// Author: Jenalya
-042-1.gat,44,144,0|script|Valon|156,1,0
+042-1.gat,44,115,0|script|Valon|156,1,0
{
if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
@@ -27,7 +27,7 @@ L_Tut_Done:
OnTouch:
if (FLAGS & FLAG_TUTORIAL_DONE)
goto L_Tut;
- warp "042-1.gat", 44, 143;
+ warp "042-1.gat", 44, 110;
mes "[Valon]";
mes "\"The desert is merciless.";
mes "I can't let you leave like this.\"";
diff --git a/world/map/npc/042-2/_warps.txt b/world/map/npc/042-2/_warps.txt
index 1cc19c4a..117a0f15 100644
--- a/world/map/npc/042-2/_warps.txt
+++ b/world/map/npc/042-2/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Suburbs Indoor warps
-042-2.gat,29,62|warp|To Outside|-1,-1,042-1.gat,65,105
-042-2.gat,22,93|warp|To Outside|-1,-1,042-1.gat,91,103
-042-2.gat,44,93|warp|To Outside|-1,-1,042-1.gat,104,103
+042-2.gat,29,62|warp|To Outside|-1,-1,042-1.gat,65,76
+042-2.gat,22,93|warp|To Outside|-1,-1,042-1.gat,91,74
+042-2.gat,44,93|warp|To Outside|-1,-1,042-1.gat,104,74
diff --git a/world/map/npc/042-2/mapflags.txt b/world/map/npc/042-2/mapflags.txt
index 769024e1..80f1928e 100644
--- a/world/map/npc/042-2/mapflags.txt
+++ b/world/map/npc/042-2/mapflags.txt
@@ -1 +1,2 @@
042-2.gat|mapflag|nosave|042-2,26,26
+042-2.gat|mapflag|resave|042-2,26,26
diff --git a/world/map/npc/042-2/sorfina.txt b/world/map/npc/042-2/sorfina.txt
index a7fd19ac..1fc9d2cf 100644
--- a/world/map/npc/042-2/sorfina.txt
+++ b/world/map/npc/042-2/sorfina.txt
@@ -3,11 +3,26 @@
042-2.gat,28,26,0|script|Sorfina|154,4,4
{
+ callfunc "TutorialState";
+
+ if ((Hp != MaxHp) && (@tutorial >= 4))
+ goto L_Heal;
+ goto L_Main;
+
+L_Heal:
+ mes "[Sorfina]";
+ mes "\"Hello Dear! You look tired, you should rest a moment.\"";
+ mes "You take a short nap and feel refreshed.";
+ heal MaxHp, 0;
+ goto L_Main;
+
+L_Main:
if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Again;
- if (sorfina == 4) goto L_Heal;
- if (sorfina == 3) goto L_Clothes;
- if (sorfina == 2) goto L_Chest;
- if (sorfina == 1) goto L_Carpet;
+ if ((@tutorial == 11) && !(@sorfina_hasan)) goto L_Hasan;
+ if (@tutorial >= 4) goto L_Again;
+ if (@tutorial == 3) goto L_Clothes;
+ if (@tutorial == 2) goto L_Chest;
+ if (@tutorial == 1) goto L_Carpet;
callfunc "GameRules";
goto L_Start;
@@ -32,9 +47,8 @@ L_Start:
mes "Oh, and by the way my name is Sorfina.\"";
next;
mes "[Server]";
- mes "The explanations in this tutorial are based on the official client 0.5 series.";
+ mes "The explanations in this tutorial are based on the official client, Manaplus.";
mes "If you're using another client, settings and controls may be different.";
- next;
menu
"That would be great!",L_Tut,
"No, thanks. I already know how things are going.",L_SkipTut;
@@ -53,8 +67,8 @@ L_Carpet:
mes "[Sorfina]";
mes "\"Try to take a few steps and walk to that red carpet over there.";
mes "Just use the arrow keys or click on the place you want to go to.\"";
- if (!sorfina)
- set sorfina, 1;
+ set @tutorial_tmp, 1;
+ callfunc "SetTutorialMask";
goto L_Close;
L_Chest:
@@ -81,6 +95,11 @@ L_Clothes:
mes "[Sorfina]";
mes "\"That's much better, don't you think?\"";
next;
+ mes "\"Here take this.\"";
+ getitem "HitchhikersTowel", 1;
+ mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
+ mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
+ next;
mes "\"I think this will help you a bit. To get more information, press the button Setup and look at the controls on the Keyboard tab. You can also change them as you like.";
mes "Talk to me again if you want me to explain more things.\"";
next;
@@ -94,28 +113,13 @@ L_Clothes:
mes "\"And here is some money for you. At least you can buy yourself something to eat.";
mes "Good luck!\"";
set Zeny, Zeny + 30;
- set sorfina, 4;
+ set @tutorial_tmp, 4;
+ callfunc "SetTutorialMask";
goto L_Close;
-L_Heal:
- if (Hp == MaxHp)
- goto L_Again;
- mes "[Sorfina]";
- mes "\"Hello Dear! You look tired, you should rest a moment.\"";
- mes "You take a short nap and feel refreshed.";
- heal MaxHp, 0;
- next;
- goto L_Again;
-
L_Again:
mes "[Sorfina]";
mes "\"Make yourself at home! Do you have any questions?\"";
- next;
- if (hasan)
- menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Hasan,
- "Yes, could you explain again about...",L_Explain,
- "No, thanks.",L_Close;
menu
"Yes, could you explain about...",L_Explain,
"No, thanks.",L_Close;
@@ -164,6 +168,9 @@ L_Items:
next;
mes "\"Miscellaneous items such as maggot slime, can be used in creating other items, or just to trade and sell.\"";
next;
+ mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
+ mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
+ next;
mes "\"Press F3 to open your inventory.";
mes "When placing your cursor over an item there, you can see a box with some information about that item.\"";
next;
@@ -198,6 +205,13 @@ L_Aidan:
L_Hasan:
mes "[Sorfina]";
+ mes "\"Make yourself at home! Do you have any questions?\"";
+ menu
+ "A guy named Hasan won't let me enter Tulimshar.",L_Next,
+ "Yes, could you explain again about...",L_Explain,
+ "No, thanks.",L_Close;
+
+L_Next:
mes "\"Ah, Hasan. He's causing trouble again?\"";
mes "She shakes her head.";
next;
@@ -218,14 +232,12 @@ L_Hasan:
next;
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.";
- if (hasan == 1)
- set hasan, 2;
+ set TUTORIAL, TUTORIAL | $@SorfinaHasanBit;
goto L_Close;
L_SkipTut:
mes "[Sorfina]";
mes "\"Really? You seem quite unexperienced. Listening to some advice won't hurt.\"";
- next;
menu
"Thinking about it twice... please tell me.",L_Tut,
"Yeah, but thanks for the offer. Bye.",L_Bye;
@@ -237,6 +249,7 @@ L_Bye:
getitem "Knife", 1;
getitem "SlingShot", 1;
getitem "SlingBullet", 100;
+ getitem "HitchhikersTowel", 1;
getitem "CottonShirt", 1;
getitem "RaggedShorts", 1;
set Zeny, Zeny + 50;
@@ -258,7 +271,8 @@ OnTouch:
end;
OnTouch:
- if (sorfina != 1)
+ callfunc "TutorialState";
+ if (@tutorial != 1)
end;
mes "[Sorfina]";
mes "\"Very good! I'm glad you're recovering.";
@@ -272,14 +286,16 @@ 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 chest.\"";
- set sorfina, 2;
+ set @tutorial_tmp, 2;
+ callfunc "SetTutorialMask";
close;
}
-042-2.gat,27,23,0|script|Chest#sorfina|111,
+042-2.gat,27,23,0|script|Chest#tutorial|111,
{
- if (sorfina > 2) goto L_Empty;
- if (sorfina == 2) goto L_Shirt;
+ callfunc "TutorialState";
+ if (@tutorial > 2) goto L_Empty;
+ if (@tutorial == 2) goto L_Shirt;
mes "The chest is locked.";
close;
@@ -295,7 +311,8 @@ 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 sorfina, 3;
+ set @tutorial_tmp, 3;
+ callfunc "SetTutorialMask";
close;
L_Empty:
@@ -303,15 +320,15 @@ L_Empty:
close;
}
-042-2.gat,44,31,0|script|#DoorOut-sorfina|45,0,0
+042-2.gat,44,31,0|script|#DoorOut-@tutorial|45,0,0
{
end;
OnTouch:
- if ((sorfina < 4)
- && !(FLAGS & FLAG_TUTORIAL_DONE))
+ callfunc "TutorialState";
+ if ((@tutorial < 4) && !(FLAGS & FLAG_TUTORIAL_DONE))
goto L_Block;
- warp "042-1.gat", 63, 77;
+ warp "042-1.gat", 63, 49;
end;
L_Block:
diff --git a/world/map/npc/042-2/tanisha.txt b/world/map/npc/042-2/tanisha.txt
index 673ab696..482224f0 100644
--- a/world/map/npc/042-2/tanisha.txt
+++ b/world/map/npc/042-2/tanisha.txt
@@ -8,17 +8,19 @@
goto L_Fighting;
if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
- if (tanisha == 4) goto L_Again;
- if (tanisha == 3) goto L_Stats;
- if (tanisha == 2) goto L_Fail;
- if (tanisha == 1) goto L_Maggots;
+
+ callfunc "TutorialState";
+ if ((@tutorial == 11) && !(@tanisha_hasan)) goto L_Hasan;
+ if (@tutorial >= 8) goto L_Again;
+ if (@tutorial == 7) goto L_Stats;
+ if (@tutorial == 6) goto L_Fail;
+ if (@tutorial == 5) goto L_Maggots;
mes "[Tanisha]";
mes "\"Hey! You're up again!\"";
emotion EMOTE_HAPPY;
next;
mes "\"Are you feeling better?\"";
- next;
menu
"Yes, thank you.",L_Next,
"Yeah, but all my stuff is gone.",L_Next;
@@ -28,7 +30,8 @@ L_Next:
mes "\"I'm glad you're feeling better. It was really bad luck what happened to you.";
mes "Hey, I have an idea.\"";
next;
- set tanisha, 1;
+ set @tutorial_tmp, 5;
+ callfunc "SetTutorialMask";
goto L_Maggots;
L_Maggots:
@@ -38,12 +41,11 @@ L_Maggots:
next;
mes "\"If you kill them, I'll give you my knife.";
mes "What do you say?\"";
- next;
menu
- "Sure!",L_Continue,
+ "Sure!",L_Next1,
"That's your job.",L_Close;
-L_Continue:
+L_Next1:
mes "[Tanisha]";
mes "\"Wonderful!\"";
// since the check happens here, it is actually possible to have
@@ -51,9 +53,10 @@ L_Continue:
// but that's not a BIG problem
if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
- goto L_FightAgain;
+ next;
+ goto L_Fight_Again;
-L_FightAgain:
+L_Fight_Again:
mes "\"Ok, listen what to do.";
mes "Equip a weapon and kill the maggots.\"";
next;
@@ -66,9 +69,10 @@ L_FightAgain:
next;
mes "\"Sometimes dead monsters leave some useful things. You can pick them up by pressing Z or clicking on the items with your mouse.\"";
close2;
- // The getitem must be in the same place as set tanisha, 2;
- // since it was moved to after L_FightAgain, add it conditionally
- if (tanisha == 1)
+ // The getitem must be in the same place as set @tutorial, 2;
+ // since it was moved to after L_Fight_Again, add it conditionally
+ callfunc "TutorialState";
+ if (@tutorial == 5)
goto L_GetFightItems;
goto L_ContinueFight;
@@ -79,7 +83,8 @@ L_GetFightItems:
goto L_ContinueFight;
L_ContinueFight:
- set tanisha, 2;
+ set @tutorial_tmp, 6;
+ callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
@@ -124,7 +129,7 @@ L_StatsRe:
mes "[Tanisha]";
mes "\"But I doubt he'd do that without a service in return.\"";
- if (tanisha != 3)
+ if (@tutorial != 7)
goto L_Close;
goto L_Money;
@@ -141,19 +146,18 @@ L_Advice:
mes "\"When you go to Tulimshar, you should see Bernard. He can make a delicious soup!";
mes "Good luck!\"";
emotion EMOTE_HAPPY;
- if (tanisha == 3)
- set tanisha, 4;
+ if (@tutorial == 7)
+ goto L_SetTutorial;
+ goto L_Close;
+
+L_SetTutorial:
+ set @tutorial_tmp, 8;
+ callfunc "SetTutorialMask";
goto L_Close;
L_Again:
mes "[Tanisha]";
mes "\"Hi there! Is everything alright? Do you have questions?\"";
- next;
- if (hasan)
- menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Hasan,
- "Yes, could you explain again about...",L_Explain,
- "No, thanks.",L_Close;
menu
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
@@ -192,13 +196,20 @@ L_Mob:
L_Hasan:
mes "[Tanisha]";
+ mes "\"Hi there! Is everything alright? Do you have questions?\"";
+ menu
+ "A guy named Hasan won't let me enter Tulimshar.",L_Next3,
+ "Yes, could you explain again about...",L_Explain,
+ "No, thanks.",L_Close;
+
+L_Next3:
+ mes "[Tanisha]";
mes "\"Bah, Hasan. He's a jerk. But he's very strong.\"";
next;
mes "\"The only thing he's afraid of are scorpions.";
mes "I'm not sure why, some bad experience when he was a child.";
mes "That was before I was born.\"";
- if (hasan == 1)
- set hasan, 2;
+ set TUTORIAL, TUTORIAL | $@TanishaHasanBit;
goto L_Close;
L_Tut_Done:
@@ -243,15 +254,14 @@ L_Fail:
mes "[Tanisha]";
mes "\"Oops, I'm sorry. It's just too funny.";
mes "Do you want to try it again?\"";
- next;
menu
- "Sure!", L_TryAgain,
+ "Sure!", L_Next2,
"No, I need a rest.", L_Close;
-L_TryAgain:
+L_Next2:
if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
- goto L_FightAgain;
+ goto L_Fight_Again;
L_Fighting:
message strcharinfo(0), "Tanisha: I believe in you!";
@@ -297,7 +307,8 @@ OnMaggotDeath:
goto L_Summon;
// else, complete
warp "042-2.gat", 36, 90;
- set tanisha, 3;
+ set @tutorial_tmp, 7;
+ callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
diff --git a/world/map/npc/043-1/_import.txt b/world/map/npc/043-1/_import.txt
index 0ed2ee41..4e21bda1 100644
--- a/world/map/npc/043-1/_import.txt
+++ b/world/map/npc/043-1/_import.txt
@@ -3,3 +3,5 @@
map: 043-1.gat
npc: npc/043-1/_mobs.txt
npc: npc/043-1/_warps.txt
+npc: npc/043-1/mapflags.txt
+npc: npc/043-1/ryger.txt
diff --git a/world/map/npc/043-1/_warps.txt b/world/map/npc/043-1/_warps.txt
index b29eee10..2f2c590f 100644
--- a/world/map/npc/043-1/_warps.txt
+++ b/world/map/npc/043-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Beach warps
-043-1.gat,44,19|warp|To Beach|1,-1,003-1.gat,114,116
+043-1.gat,43,19|warp|To Beach|4,-1,003-1.gat,114,116
043-1.gat,85,54|warp|To Mining Camp|-1,-1,002-3.gat,22,85
043-1.gat,52,38|warp|To Sandy Dungeon|-1,-1,043-3.gat,31,35
diff --git a/world/map/npc/043-1/mapflags.txt b/world/map/npc/043-1/mapflags.txt
new file mode 100644
index 00000000..da09b939
--- /dev/null
+++ b/world/map/npc/043-1/mapflags.txt
@@ -0,0 +1 @@
+043-1.gat|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/043-1/ryger.txt b/world/map/npc/043-1/ryger.txt
new file mode 100644
index 00000000..f3178538
--- /dev/null
+++ b/world/map/npc/043-1/ryger.txt
@@ -0,0 +1,11 @@
+// Sandstorm mine guard
+
+043-1.gat,88,60,0|script|Ryger|123,
+{
+ mes "[Ryger]";
+ mes "\"I'm watching this mine to make sure the monsters don't harm the miners.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/043-3/_import.txt b/world/map/npc/043-3/_import.txt
index a7cabf6c..6bcae599 100644
--- a/world/map/npc/043-3/_import.txt
+++ b/world/map/npc/043-3/_import.txt
@@ -3,3 +3,4 @@
map: 043-3.gat
npc: npc/043-3/_mobs.txt
npc: npc/043-3/_warps.txt
+npc: npc/043-3/mapflags.txt
diff --git a/world/map/npc/043-3/mapflags.txt b/world/map/npc/043-3/mapflags.txt
new file mode 100644
index 00000000..d9d20660
--- /dev/null
+++ b/world/map/npc/043-3/mapflags.txt
@@ -0,0 +1 @@
+043-3.gat|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/043-4/_import.txt b/world/map/npc/043-4/_import.txt
index 567f0636..6456c090 100644
--- a/world/map/npc/043-4/_import.txt
+++ b/world/map/npc/043-4/_import.txt
@@ -3,3 +3,4 @@
map: 043-4.gat
npc: npc/043-4/_mobs.txt
npc: npc/043-4/_warps.txt
+npc: npc/043-4/mapflags.txt
diff --git a/world/map/npc/043-4/mapflags.txt b/world/map/npc/043-4/mapflags.txt
new file mode 100644
index 00000000..15e2030b
--- /dev/null
+++ b/world/map/npc/043-4/mapflags.txt
@@ -0,0 +1 @@
+043-4.gat|mapflag|resave|002-3,72,66
diff --git a/world/map/npc/044-1/_import.txt b/world/map/npc/044-1/_import.txt
index 85578d2d..4e909abe 100644
--- a/world/map/npc/044-1/_import.txt
+++ b/world/map/npc/044-1/_import.txt
@@ -1,5 +1,7 @@
-// Map 044-1: Snow Hills
+// Map 044-1: snow Hills
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 044-1.gat
npc: npc/044-1/_mobs.txt
npc: npc/044-1/_warps.txt
+npc: npc/044-1/mapflags.txt
+npc: npc/044-1/traveler.txt
diff --git a/world/map/npc/044-1/_mobs.txt b/world/map/npc/044-1/_mobs.txt
index 432eed10..62e35607 100644
--- a/world/map/npc/044-1/_mobs.txt
+++ b/world/map/npc/044-1/_mobs.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Snow Hills mobs
+// snow Hills mobs
044-1.gat,37,175,3,2|monster|WhiteSlime|1093,7,100000,30000,Mob044-1::On1093
044-1.gat,45,75,2,2|monster|BlueSlime|1091,1,100000,30000,Mob044-1::On1091
diff --git a/world/map/npc/044-1/_warps.txt b/world/map/npc/044-1/_warps.txt
index 0abcc222..342e0c4a 100644
--- a/world/map/npc/044-1/_warps.txt
+++ b/world/map/npc/044-1/_warps.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Snow Hills warps
+// snow Hills warps
044-1.gat,108,165|warp|To Small Cave|-1,-1,044-3.gat,110,102
044-1.gat,108,156|warp|To Small Cave|-1,-1,044-3.gat,119,94
@@ -11,3 +11,5 @@
044-1.gat,45,73|warp|To Snow Hills Cave|-1,-1,044-3.gat,46,76
044-1.gat,78,109|warp|To Snow Hills Cave|-1,-1,044-3.gat,35,41
044-1.gat,83,123|warp|To Snow Hills Cave|-1,-1,044-3.gat,108,165
+044-1.gat,151,24|warp|To Traveler|-1,-1,044-1.gat,151,21
+044-1.gat,151,22|warp|To Snow Hills|-1,-1,044-1.gat,151,25
diff --git a/world/map/npc/044-1/mapflags.txt b/world/map/npc/044-1/mapflags.txt
new file mode 100644
index 00000000..5f02a6ad
--- /dev/null
+++ b/world/map/npc/044-1/mapflags.txt
@@ -0,0 +1 @@
+044-1.gat|mapflag|resave|044-1,145,20
diff --git a/world/map/npc/044-1/traveler.txt b/world/map/npc/044-1/traveler.txt
new file mode 100644
index 00000000..e5d9c2fe
--- /dev/null
+++ b/world/map/npc/044-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+044-1.gat,151,17,0|script|Klaus the Traveler|103,
+{
+ set @NpcName$, "Klaus";
+ set @NpcTravelBit, $@nivalis_snow_hills_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/044-3/_import.txt b/world/map/npc/044-3/_import.txt
index 3242ba6c..b0a99cfc 100644
--- a/world/map/npc/044-3/_import.txt
+++ b/world/map/npc/044-3/_import.txt
@@ -3,3 +3,4 @@
map: 044-3.gat
npc: npc/044-3/_mobs.txt
npc: npc/044-3/_warps.txt
+npc: npc/044-3/mapflags.txt
diff --git a/world/map/npc/044-3/mapflags.txt b/world/map/npc/044-3/mapflags.txt
new file mode 100644
index 00000000..5f02a6ad
--- /dev/null
+++ b/world/map/npc/044-3/mapflags.txt
@@ -0,0 +1 @@
+044-1.gat|mapflag|resave|044-1,145,20
diff --git a/world/map/npc/045-1/_import.txt b/world/map/npc/045-1/_import.txt
index 4fa77e97..c287ea93 100644
--- a/world/map/npc/045-1/_import.txt
+++ b/world/map/npc/045-1/_import.txt
@@ -3,3 +3,4 @@
map: 045-1.gat
npc: npc/045-1/_mobs.txt
npc: npc/045-1/_warps.txt
+npc: npc/045-1/mapflags.txt
diff --git a/world/map/npc/045-1/mapflags.txt b/world/map/npc/045-1/mapflags.txt
new file mode 100644
index 00000000..b03ceee5
--- /dev/null
+++ b/world/map/npc/045-1/mapflags.txt
@@ -0,0 +1 @@
+045-1.gat|mapflag|resave|033-1,67,33
diff --git a/world/map/npc/046-1/_import.txt b/world/map/npc/046-1/_import.txt
index 9775de82..f6e49475 100644
--- a/world/map/npc/046-1/_import.txt
+++ b/world/map/npc/046-1/_import.txt
@@ -3,3 +3,4 @@
map: 046-1.gat
npc: npc/046-1/_mobs.txt
npc: npc/046-1/_warps.txt
+npc: npc/046-1/mapflags.txt
diff --git a/world/map/npc/046-1/_warps.txt b/world/map/npc/046-1/_warps.txt
index cbc07c7f..e50ae158 100644
--- a/world/map/npc/046-1/_warps.txt
+++ b/world/map/npc/046-1/_warps.txt
@@ -1,12 +1,12 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Rock Plateau warps
-046-1.gat,95,117|warp|ToSnowForest|0,-1,034-1.gat,94,19
-046-1.gat,29,13|warp|ToHighlands1|-1,-1,047-1.gat,34,112
-046-1.gat,31,13|warp|ToHighlands1|-1,-1,047-1.gat,36,112
-046-1.gat,78,30|warp|ToFrostyUnderground|-1,-1,046-3.gat,78,29
-046-1.gat,131,48|warp|ToFrostyUnderground|-1,-1,046-3.gat,131,47
-046-1.gat,131,55|warp|ToFrostyUnderground|-1,-1,046-3.gat,131,54
-046-1.gat,139,19|warp|ToFrostyUnderground|-1,-1,046-3.gat,139,18
-046-1.gat,83,43|warp|ToFrostyUnderground|-1,-1,046-3.gat,83,42
-046-1.gat,124,109|warp|ToFrostyUnderground|-1,-1,046-3.gat,124,108
+046-1.gat,95,117|warp|To Snow Forest|0,-1,034-1.gat,94,19
+046-1.gat,29,13|warp|To Highlands|-1,-1,047-1.gat,34,112
+046-1.gat,31,13|warp|To Highlands|-1,-1,047-1.gat,36,112
+046-1.gat,78,30|warp|To Frosty Underground|-1,-1,046-3.gat,78,29
+046-1.gat,131,48|warp|To Frosty Underground|-1,-1,046-3.gat,131,47
+046-1.gat,131,55|warp|To Frosty Underground|-1,-1,046-3.gat,131,54
+046-1.gat,139,19|warp|To Frosty Underground|-1,-1,046-3.gat,139,18
+046-1.gat,83,43|warp|To Frosty Underground|-1,-1,046-3.gat,83,42
+046-1.gat,124,109|warp|To Frosty Underground|-1,-1,046-3.gat,124,108
diff --git a/world/map/npc/046-1/mapflags.txt b/world/map/npc/046-1/mapflags.txt
new file mode 100644
index 00000000..0d1ef511
--- /dev/null
+++ b/world/map/npc/046-1/mapflags.txt
@@ -0,0 +1 @@
+046-1.gat|mapflag|resave|046-1,92,42
diff --git a/world/map/npc/046-3/_import.txt b/world/map/npc/046-3/_import.txt
index 6031a3a0..2b2dc04d 100644
--- a/world/map/npc/046-3/_import.txt
+++ b/world/map/npc/046-3/_import.txt
@@ -3,3 +3,4 @@
map: 046-3.gat
npc: npc/046-3/_mobs.txt
npc: npc/046-3/_warps.txt
+npc: npc/046-3/mapflags.txt
diff --git a/world/map/npc/046-3/_warps.txt b/world/map/npc/046-3/_warps.txt
index b77c1a54..dddf3434 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 changes will be removed when running the Converter.
// Frosty Underground warps
-046-3.gat,139,19|warp|ToOutside|-1,-1,046-1.gat,139,20
-046-3.gat,78,30|warp|ToOutside|-1,-1,046-1.gat,78,31
-046-3.gat,83,43|warp|ToOutside|-1,-1,046-1.gat,83,44
-046-3.gat,131,48|warp|ToOutside|-1,-1,046-1.gat,131,49
-046-3.gat,131,55|warp|ToOutside|-1,-1,046-1.gat,131,56
-046-3.gat,124,109|warp|ToOutside|-1,-1,046-1.gat,124,110
+046-3.gat,139,19|warp|To Outside|-1,-1,046-1.gat,139,20
+046-3.gat,78,30|warp|To Outside|-1,-1,046-1.gat,78,31
+046-3.gat,83,43|warp|To Outside|-1,-1,046-1.gat,83,44
+046-3.gat,131,48|warp|To Outside|-1,-1,046-1.gat,131,49
+046-3.gat,131,55|warp|To Outside|-1,-1,046-1.gat,131,56
+046-3.gat,124,109|warp|To Outside|-1,-1,046-1.gat,124,110
diff --git a/world/map/npc/046-3/mapflags.txt b/world/map/npc/046-3/mapflags.txt
new file mode 100644
index 00000000..63dab095
--- /dev/null
+++ b/world/map/npc/046-3/mapflags.txt
@@ -0,0 +1 @@
+046-3.gat|mapflag|resave|046-1,92,42
diff --git a/world/map/npc/047-1/_import.txt b/world/map/npc/047-1/_import.txt
index 5da48aa6..8176e20d 100644
--- a/world/map/npc/047-1/_import.txt
+++ b/world/map/npc/047-1/_import.txt
@@ -3,3 +3,4 @@
map: 047-1.gat
npc: npc/047-1/_mobs.txt
npc: npc/047-1/_warps.txt
+npc: npc/047-1/mapflags.txt
diff --git a/world/map/npc/047-1/_warps.txt b/world/map/npc/047-1/_warps.txt
index 0d166c8d..9e95bfe3 100644
--- a/world/map/npc/047-1/_warps.txt
+++ b/world/map/npc/047-1/_warps.txt
@@ -1,7 +1,7 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Highlands warps
-047-1.gat,34,113|warp|ToRockPlateau|-1,-1,046-1.gat,29,14
-047-1.gat,36,113|warp|ToRockPlateau|-1,-1,046-1.gat,31,14
-047-1.gat,25,76|warp|ToSage|-1,0,048-1.gat,155,75
-047-1.gat,24,63|warp|ToSage|-1,0,048-1.gat,154,62
+047-1.gat,34,113|warp|To Rock Plateau|-1,-1,046-1.gat,29,14
+047-1.gat,36,113|warp|To Rock Plateau|-1,-1,046-1.gat,31,14
+047-1.gat,25,76|warp|To Blue Sage|-1,0,048-1.gat,155,75
+047-1.gat,24,63|warp|To Blue Sage|-1,0,048-1.gat,154,62
diff --git a/world/map/npc/047-1/mapflags.txt b/world/map/npc/047-1/mapflags.txt
new file mode 100644
index 00000000..62eb9809
--- /dev/null
+++ b/world/map/npc/047-1/mapflags.txt
@@ -0,0 +1 @@
+047-1.gat|mapflag|resave|048-2,26,46
diff --git a/world/map/npc/048-1/_import.txt b/world/map/npc/048-1/_import.txt
index 7a5740f1..a2d24a78 100644
--- a/world/map/npc/048-1/_import.txt
+++ b/world/map/npc/048-1/_import.txt
@@ -3,3 +3,4 @@
map: 048-1.gat
npc: npc/048-1/_mobs.txt
npc: npc/048-1/_warps.txt
+npc: npc/048-1/mapflags.txt
diff --git a/world/map/npc/048-1/_warps.txt b/world/map/npc/048-1/_warps.txt
index c1dda5ea..b1ab529b 100644
--- a/world/map/npc/048-1/_warps.txt
+++ b/world/map/npc/048-1/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Snow Forest warps
-048-1.gat,155,63|warp|ToHighlands1|-1,0,047-1.gat,25,62
-048-1.gat,156,76|warp|ToHighlands1|-1,0,047-1.gat,26,76
-048-1.gat,64,41|warp|ToSage|-1,-1,048-2.gat,40,48
+048-1.gat,155,63|warp|To Highlands|-1,0,047-1.gat,25,62
+048-1.gat,156,76|warp|To Highlands|-1,0,047-1.gat,26,76
+048-1.gat,64,41|warp|To Blue Sage|-1,-1,048-2.gat,40,48
diff --git a/world/map/npc/048-1/mapflags.txt b/world/map/npc/048-1/mapflags.txt
new file mode 100644
index 00000000..4b5da68d
--- /dev/null
+++ b/world/map/npc/048-1/mapflags.txt
@@ -0,0 +1 @@
+048-1.gat|mapflag|resave|048-2,26,46
diff --git a/world/map/npc/048-2/_import.txt b/world/map/npc/048-2/_import.txt
index ef7c2b74..06398445 100644
--- a/world/map/npc/048-2/_import.txt
+++ b/world/map/npc/048-2/_import.txt
@@ -21,6 +21,8 @@ npc: npc/048-2/helperMSilk.txt
npc: npc/048-2/helperMYetiClaw.txt
npc: npc/048-2/helperResting1.txt
npc: npc/048-2/helperResting2.txt
+npc: npc/048-2/mapflags.txt
npc: npc/048-2/sageNikolai.txt
npc: npc/048-2/slimes.txt
+npc: npc/048-2/traveler.txt
npc: npc/048-2/visitors.txt
diff --git a/world/map/npc/048-2/mapflags.txt b/world/map/npc/048-2/mapflags.txt
new file mode 100644
index 00000000..4e972a11
--- /dev/null
+++ b/world/map/npc/048-2/mapflags.txt
@@ -0,0 +1 @@
+048-2.gat|mapflag|resave|048-2,26,46
diff --git a/world/map/npc/048-2/traveler.txt b/world/map/npc/048-2/traveler.txt
new file mode 100644
index 00000000..9a2d6f76
--- /dev/null
+++ b/world/map/npc/048-2/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+048-2.gat,23,46,0|script|Drake the Traveler|103,
+{
+ set @NpcName$, "Drake";
+ set @NpcTravelBit, $@blue_sage_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/051-1/mapflags.txt b/world/map/npc/051-1/mapflags.txt
index 62670718..99864a1d 100644
--- a/world/map/npc/051-1/mapflags.txt
+++ b/world/map/npc/051-1/mapflags.txt
@@ -1 +1,2 @@
051-1.gat|mapflag|nosave|007-1,86,76
+051-1.gat|mapflag|resave|007-1,86,76
diff --git a/world/map/npc/051-3/mapflags.txt b/world/map/npc/051-3/mapflags.txt
index b02779f1..d2cdb656 100644
--- a/world/map/npc/051-3/mapflags.txt
+++ b/world/map/npc/051-3/mapflags.txt
@@ -1 +1,2 @@
051-3.gat|mapflag|nosave|007-1,86,76
+051-3.gat|mapflag|resave|007-1,86,76
diff --git a/world/map/npc/052-1/mapflags.txt b/world/map/npc/052-1/mapflags.txt
index cc8ed26a..da874ac2 100644
--- a/world/map/npc/052-1/mapflags.txt
+++ b/world/map/npc/052-1/mapflags.txt
@@ -1 +1,2 @@
052-1.gat|mapflag|nosave|007-1,86,76
+052-1.gat|mapflag|resave|007-1,86,76
diff --git a/world/map/npc/052-2/mapflags.txt b/world/map/npc/052-2/mapflags.txt
index 04bde438..2cb3e637 100644
--- a/world/map/npc/052-2/mapflags.txt
+++ b/world/map/npc/052-2/mapflags.txt
@@ -1 +1,2 @@
052-2.gat|mapflag|nosave|007-1,86,76
+052-2.gat|mapflag|resave|007-1,86,76
diff --git a/world/map/npc/055-1/_import.txt b/world/map/npc/055-1/_import.txt
index 4169b0eb..8e9c6aec 100644
--- a/world/map/npc/055-1/_import.txt
+++ b/world/map/npc/055-1/_import.txt
@@ -4,4 +4,6 @@ map: 055-1.gat
npc: npc/055-1/_mobs.txt
npc: npc/055-1/_warps.txt
npc: npc/055-1/flowerpentagram4.txt
+npc: npc/055-1/mapflags.txt
npc: npc/055-1/pumpkins.txt
+npc: npc/055-1/traveler.txt
diff --git a/world/map/npc/055-1/mapflags.txt b/world/map/npc/055-1/mapflags.txt
new file mode 100644
index 00000000..f2f6b2ec
--- /dev/null
+++ b/world/map/npc/055-1/mapflags.txt
@@ -0,0 +1 @@
+055-1.gat|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/055-1/traveler.txt b/world/map/npc/055-1/traveler.txt
new file mode 100644
index 00000000..82877a09
--- /dev/null
+++ b/world/map/npc/055-1/traveler.txt
@@ -0,0 +1,11 @@
+// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world.
+// Author: Wombat, wushin
+// cost depending on level and adapted to new scripting guidelines: Jenalya
+
+055-1.gat,135,60,0|script|Sherman the Traveler|103,
+{
+ set @NpcName$, "Sherman";
+ set @NpcTravelBit, $@hurns_farms_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/world/map/npc/055-3/_import.txt b/world/map/npc/055-3/_import.txt
index 52181f7e..4a243fe1 100644
--- a/world/map/npc/055-3/_import.txt
+++ b/world/map/npc/055-3/_import.txt
@@ -3,3 +3,4 @@
map: 055-3.gat
npc: npc/055-3/_mobs.txt
npc: npc/055-3/_warps.txt
+npc: npc/055-3/mapflags.txt
diff --git a/world/map/npc/055-3/mapflags.txt b/world/map/npc/055-3/mapflags.txt
new file mode 100644
index 00000000..203e5d2e
--- /dev/null
+++ b/world/map/npc/055-3/mapflags.txt
@@ -0,0 +1 @@
+055-3.gat|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/056-1/_import.txt b/world/map/npc/056-1/_import.txt
index 810fdb01..ae136805 100644
--- a/world/map/npc/056-1/_import.txt
+++ b/world/map/npc/056-1/_import.txt
@@ -4,3 +4,4 @@ map: 056-1.gat
npc: npc/056-1/_mobs.txt
npc: npc/056-1/_warps.txt
npc: npc/056-1/flowerpentagram5.txt
+npc: npc/056-1/mapflags.txt
diff --git a/world/map/npc/056-1/mapflags.txt b/world/map/npc/056-1/mapflags.txt
new file mode 100644
index 00000000..3826d217
--- /dev/null
+++ b/world/map/npc/056-1/mapflags.txt
@@ -0,0 +1 @@
+056-1.gat|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/057-1/_import.txt b/world/map/npc/057-1/_import.txt
index 033dca01..a176b0e5 100644
--- a/world/map/npc/057-1/_import.txt
+++ b/world/map/npc/057-1/_import.txt
@@ -3,3 +3,4 @@
map: 057-1.gat
npc: npc/057-1/_mobs.txt
npc: npc/057-1/_warps.txt
+npc: npc/057-1/mapflags.txt
diff --git a/world/map/npc/057-1/mapflags.txt b/world/map/npc/057-1/mapflags.txt
new file mode 100644
index 00000000..408f5186
--- /dev/null
+++ b/world/map/npc/057-1/mapflags.txt
@@ -0,0 +1 @@
+057-1.gat|mapflag|resave|055-1,133,61
diff --git a/world/map/npc/068-1/_import.txt b/world/map/npc/068-1/_import.txt
new file mode 100644
index 00000000..5f518fae
--- /dev/null
+++ b/world/map/npc/068-1/_import.txt
@@ -0,0 +1,8 @@
+// Map 068-1: Tulimshar Noble
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 068-1.gat
+npc: npc/068-1/_mobs.txt
+npc: npc/068-1/_warps.txt
+npc: npc/068-1/stat_reset.txt
+npc: npc/068-1/tombstones.txt
+npc: npc/068-1/vendors.txt
diff --git a/world/map/npc/068-1/_mobs.txt b/world/map/npc/068-1/_mobs.txt
new file mode 100644
index 00000000..147625f7
--- /dev/null
+++ b/world/map/npc/068-1/_mobs.txt
@@ -0,0 +1,24 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Noble mobs
+
+068-1.gat,60,67,52,1|monster|SeaSlime|1033,3,100000,30000,Mob068-1::On1033
+068-1.gat,93,49,4,3|monster|Maggot|1002,5,100000,30000,Mob068-1::On1002
+068-1.gat,89,71,5,8|monster|Maggot|1002,5,100000,30000,Mob068-1::On1002
+068-1.gat,78,38,7,6|monster|Maggot|1002,5,100000,30000,Mob068-1::On1002
+068-1.gat,59,83,52,1|monster|SeaSlime|1033,3,100000,30000,Mob068-1::On1033
+
+
+068-1.gat,0,0,0|script|Mob068-1|-1,
+{
+ end;
+
+On1002:
+ set @mobID, 1002;
+ callfunc "MobPoints";
+ end;
+
+On1033:
+ set @mobID, 1033;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/068-1/_warps.txt b/world/map/npc/068-1/_warps.txt
new file mode 100644
index 00000000..7e11bce2
--- /dev/null
+++ b/world/map/npc/068-1/_warps.txt
@@ -0,0 +1,15 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Noble warps
+
+068-1.gat,34,108|warp|To North Tulimshar|3,-1,021-1.gat,144,23
+068-1.gat,84,108|warp|To Tulimshar Castle|3,-1,069-1.gat,55,23
+068-1.gat,42,96|warp|To Silk Shop|-1,-1,068-2.gat,94,60
+068-1.gat,40,79|warp|To Coconut Farm|-1,-1,068-2.gat,76,29
+068-1.gat,52,48|warp|To Barracks|-1,-1,068-2.gat,36,29
+068-1.gat,47,38|warp|To Watch Tower|-1,-1,068-2.gat,62,60
+068-1.gat,50,96|warp|To Weavers Shop|-1,-1,068-2.gat,61,91
+068-1.gat,56,96|warp|To Weavers Shop|-1,-1,068-2.gat,89,91
+068-1.gat,38,90|warp|To Silk Shop|-1,-1,068-2.gat,84,51
+068-1.gat,30,96|warp|To Bank|-1,-1,068-2.gat,31,91
+068-1.gat,29,84|warp|To Jeweler|-1,-1,068-2.gat,31,60
+068-1.gat,48,29|warp|To Watch Tower|-1,-1,068-2.gat,59,52
diff --git a/world/map/npc/002-2/rogue.txt b/world/map/npc/068-1/stat_reset.txt
index d7b8c5af..fe54f379 100644
--- a/world/map/npc/002-2/rogue.txt
+++ b/world/map/npc/068-1/stat_reset.txt
@@ -1,6 +1,6 @@
//
-002-2.gat,25,28,0|script|Malivox|103,
+068-1.gat,79,94,0|script|Malivox|103,
{
// if (ResetA_charstate == 1) goto L_Multiple;
diff --git a/world/map/npc/068-1/tombstones.txt b/world/map/npc/068-1/tombstones.txt
new file mode 100644
index 00000000..424e0317
--- /dev/null
+++ b/world/map/npc/068-1/tombstones.txt
@@ -0,0 +1,36 @@
+// Tombstones in Noble memorial
+
+068-1.gat,91,48,0|script|Tombstone#1|400,{
+
+ mes "~ wushin ~";
+ mes "Tonori swallowed him whole.";
+ close;
+}
+
+068-1.gat,92,48,0|script|Tombstone#2|400,{
+
+ mes "~ Nard ~";
+ mes "Crushed by a loom.";
+ close;
+}
+
+068-1.gat,93,48,0|script|Tombstone#3|400,{
+
+ mes "~ tux9th ~";
+ mes "Eaten by bugs.";
+ close;
+}
+
+068-1.gat,94,48,0|script|Tombstone#4|400,{
+
+ mes "~ o11c ~";
+ mes "He asked for it. So they gave it to him.";
+ close;
+}
+
+068-1.gat,95,48,0|script|Tombstone#5|400,{
+
+ mes "~ " + strcharinfo(0) + " ~";
+ mes "The tombstone is blank and the grave freshly dug.";
+ close;
+}
diff --git a/world/map/npc/068-1/vendors.txt b/world/map/npc/068-1/vendors.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/world/map/npc/068-1/vendors.txt
diff --git a/world/map/npc/068-2/_import.txt b/world/map/npc/068-2/_import.txt
new file mode 100644
index 00000000..d9ee2cc9
--- /dev/null
+++ b/world/map/npc/068-2/_import.txt
@@ -0,0 +1,9 @@
+// Map 068-2: Tulimshar Noble Indoors
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 068-2.gat
+npc: npc/068-2/_mobs.txt
+npc: npc/068-2/_warps.txt
+npc: npc/068-2/bank.txt
+npc: npc/068-2/hetchel.txt
+npc: npc/068-2/inya.txt
+npc: npc/068-2/latoy.txt
diff --git a/world/map/npc/068-2/_mobs.txt b/world/map/npc/068-2/_mobs.txt
new file mode 100644
index 00000000..d7abff17
--- /dev/null
+++ b/world/map/npc/068-2/_mobs.txt
@@ -0,0 +1,15 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Noble Indoors mobs
+
+068-2.gat,94,54,5,6|monster|Silkworm|1035,4,10000,85000,Mob068-2::On1035
+
+
+068-2.gat,0,0,0|script|Mob068-2|-1,
+{
+ end;
+
+On1035:
+ set @mobID, 1035;
+ callfunc "MobPoints";
+ end;
+}
diff --git a/world/map/npc/068-2/_warps.txt b/world/map/npc/068-2/_warps.txt
new file mode 100644
index 00000000..3776ed28
--- /dev/null
+++ b/world/map/npc/068-2/_warps.txt
@@ -0,0 +1,13 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Noble Indoors warps
+
+068-2.gat,89,92|warp|To Noble Quarter|-1,-1,068-1.gat,56,97
+068-2.gat,61,92|warp|To Noble Quarter|-1,-1,068-1.gat,50,97
+068-2.gat,94,61|warp|To Noble Quarter|-1,-1,068-1.gat,42,97
+068-2.gat,62,61|warp|To Noble Quarter|-1,-1,068-1.gat,47,39
+068-2.gat,31,92|warp|To Noble Quarter|-1,-1,068-1.gat,30,97
+068-2.gat,31,61|warp|To Noble Quarter|-1,-1,068-1.gat,29,85
+068-2.gat,76,30|warp|To Noble Quarter|-1,-1,068-1.gat,40,80
+068-2.gat,36,30|warp|To Noble Quarter|-1,-1,068-1.gat,52,49
+068-2.gat,84,50|warp|To Garden|-1,-1,068-1.gat,38,89
+068-2.gat,58,51|warp|To Noble Quarter|-1,-1,068-1.gat,47,30
diff --git a/world/map/npc/021-2/bank.txt b/world/map/npc/068-2/bank.txt
index a1fbd3c1..70011c70 100644
--- a/world/map/npc/021-2/bank.txt
+++ b/world/map/npc/068-2/bank.txt
@@ -1,5 +1,5 @@
// Another banker
-021-2.gat,69,135,0|script|Hydusun|149,
+068-2.gat,29,83,0|script|Hydusun|149,
{
set @npcname$, "Hydusun";
callfunc "Banker";
diff --git a/world/map/npc/021-1/hetchel.txt b/world/map/npc/068-2/hetchel.txt
index ab44b747..87c3d5af 100644
--- a/world/map/npc/021-1/hetchel.txt
+++ b/world/map/npc/068-2/hetchel.txt
@@ -17,7 +17,7 @@
// @SHEET_ZENY : Money to pay per sheet: A sixth of 10000-2*500-6000
// @SheetCount Number of sheets to buy (variable).
-021-1.gat,120,39,0|script|Hetchel|376,
+068-2.gat,62,83,0|script|Hetchel|376,
{
set @SHEET_COCOONS_NR, 25;
set @SHEET_ZENY, 500;
diff --git a/world/map/npc/021-2/inya.txt b/world/map/npc/068-2/inya.txt
index c448681d..b4fdad2c 100644
--- a/world/map/npc/021-2/inya.txt
+++ b/world/map/npc/068-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?
-021-2.gat,80,134,0|script|Inya|106,
+068-2.gat,29,56,0|script|Inya|106,
{
mes "[Inya]";
mes "\"I am Inya, a jeweler of fine rings. If you have a Simple Ring and a gem, I can make a nice ring for you for 1,000,000 gold pieces.\"";
diff --git a/world/map/npc/068-2/latoy.txt b/world/map/npc/068-2/latoy.txt
new file mode 100644
index 00000000..b1dca208
--- /dev/null
+++ b/world/map/npc/068-2/latoy.txt
@@ -0,0 +1,34 @@
+// A snobby store that won't sell to the player
+// takes part in quest given by 021-2/kylian.txt
+
+// Shop: DesertShirt :-1,SilkRobe :-5,SerfHat :-1,DesertHat :-4
+068-2.gat,92,83,0|shop|#LatoyShop|127,DesertShirt :-1,SilkRobe :-5,SerfHat :-1,DesertHat :-4
+
+068-2.gat,92,83,0|script|Latoy|106,
+{
+ set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT;
+ set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+
+ mes "[Latoy]";
+ mes "\"Is there something I can help you with?\"";
+ if (@kylian != 7)
+ goto L_Shop;
+ next;
+ mes "Maybe this is the kind of shop Kylian is looking for?";
+ goto L_Shop;
+
+L_Shop:
+ mes "[Latoy]";
+ mes "\"How would you like to browse my wares?\"";
+ menu
+ "Yes.", L_LatoyShop,
+ "No.", L_Close;
+
+L_LatoyShop:
+ close2;
+ shop "#LatoyShop";
+
+L_Close:
+ set @kylian, 0;
+ close;
+}
diff --git a/world/map/npc/068-3/_import.txt b/world/map/npc/068-3/_import.txt
new file mode 100644
index 00000000..649dd453
--- /dev/null
+++ b/world/map/npc/068-3/_import.txt
@@ -0,0 +1,5 @@
+// Map 068-3: North Tulimshar
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 068-3.gat
+npc: npc/068-3/_mobs.txt
+npc: npc/068-3/_warps.txt
diff --git a/world/map/npc/068-3/_mobs.txt b/world/map/npc/068-3/_mobs.txt
new file mode 100644
index 00000000..af826257
--- /dev/null
+++ b/world/map/npc/068-3/_mobs.txt
@@ -0,0 +1,61 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// North Tulimshar mobs
+
+068-3.gat,82,114,7,12|monster|Mouboo|1028,20,12000,10,Mob068-3::On1028
+068-3.gat,82,94,4,1|monster|Maggot|1002,4,100000,30000,Mob068-3::On1002
+068-3.gat,135,108,4,1|monster|Maggot|1002,4,100000,30000,Mob068-3::On1002
+068-3.gat,28,119,4,1|monster|Maggot|1002,4,100000,30000,Mob068-3::On1002
+068-3.gat,29,39,1,4|monster|SeaSlime|1033,8,100000,30000,Mob068-3::On1033
+068-3.gat,33,70,1,4|monster|SeaSlime|1033,8,100000,30000,Mob068-3::On1033
+068-3.gat,60,49,8,6|monster|Scorpion|1003,4,100000,30000,Mob068-3::On1003
+068-3.gat,86,63,24,18|monster|FireGoblin|1011,6,100000,30000,Mob068-3::On1011
+068-3.gat,114,70,8,6|monster|Scorpion|1003,4,100000,30000,Mob068-3::On1003
+068-3.gat,78,28,8,6|monster|BlackScorpion|1009,1,100000,30000,Mob068-3::On1009
+068-3.gat,95,35,15,10|monster|Snake|1010,3,100000,30000,Mob068-3::On1010
+068-3.gat,137,50,15,18|monster|GreenSlime|1005,3,100000,30000,Mob068-3::On1005
+068-3.gat,87,142,4,1|monster|Maggot|1002,4,100000,30000,Mob068-3::On1002
+
+
+068-3.gat,0,0,0|script|Mob068-3|-1,{
+On1002:
+ set @mobID, 1002;
+ callfunc "MobPoints";
+ end;
+
+On1003:
+ set @mobID, 1003;
+ callfunc "MobPoints";
+ end;
+
+On1005:
+ set @mobID, 1005;
+ callfunc "MobPoints";
+ end;
+
+On1009:
+ set @mobID, 1009;
+ callfunc "MobPoints";
+ end;
+
+On1010:
+ set @mobID, 1010;
+ callfunc "MobPoints";
+ end;
+
+On1011:
+ set @mobID, 1011;
+ callfunc "MobPoints";
+ end;
+
+On1028:
+ set @mobID, 1028;
+ callfunc "MobPoints";
+ end;
+
+On1033:
+ set @mobID, 1033;
+ callfunc "MobPoints";
+ end;
+
+ end;
+}
diff --git a/world/map/npc/068-3/_warps.txt b/world/map/npc/068-3/_warps.txt
new file mode 100644
index 00000000..b02e2f27
--- /dev/null
+++ b/world/map/npc/068-3/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// North Tulimshar warps
+
+068-3.gat,34,149|warp|to Tulmishar|3,-1,021-1.gat,144,24
diff --git a/world/map/npc/069-1/_import.txt b/world/map/npc/069-1/_import.txt
new file mode 100644
index 00000000..ab877bf9
--- /dev/null
+++ b/world/map/npc/069-1/_import.txt
@@ -0,0 +1,5 @@
+// Map 069-1: Tulimshar Castle
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 069-1.gat
+npc: npc/069-1/_mobs.txt
+npc: npc/069-1/_warps.txt
diff --git a/world/map/npc/069-1/_mobs.txt b/world/map/npc/069-1/_mobs.txt
new file mode 100644
index 00000000..82cb9c8d
--- /dev/null
+++ b/world/map/npc/069-1/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Castle mobs
+
+
+
+069-1.gat,0,0,0|script|Mob069-1|-1,
+{
+ end;
+}
diff --git a/world/map/npc/069-1/_warps.txt b/world/map/npc/069-1/_warps.txt
new file mode 100644
index 00000000..cb2061d4
--- /dev/null
+++ b/world/map/npc/069-1/_warps.txt
@@ -0,0 +1,20 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Castle warps
+
+069-1.gat,55,21|warp|To Tulmishar Noble|3,-1,068-1.gat,84,107
+069-1.gat,19,44|warp|To Tulmishar|-1,0,021-1.gat,155,44
+069-1.gat,19,97|warp|To Tulmishar|-1,0,021-1.gat,155,97
+069-1.gat,67,56|warp|To Tulmishar Castle Indoor|0,-1,069-2.gat,44,126
+069-1.gat,90,100|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,24,30
+069-1.gat,98,79|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,55,30
+069-1.gat,98,57|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,86,30
+069-1.gat,90,40|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,117,30
+069-1.gat,44,40|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,24,61
+069-1.gat,35,57|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,55,61
+069-1.gat,35,79|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,86,61
+069-1.gat,43,99|warp|To Tulmishar Castle Indoor|-1,-1,069-2.gat,117,61
+069-1.gat,64,41|warp|To Tulmishar Castle Indoor Second Floor|-1,-1,069-2.gat,97,126
+069-1.gat,69,41|warp|To Tulmishar Castle Indoor Second Floor|-1,-1,069-2.gat,116,126
+069-1.gat,65,129|warp|To Prison|-1,-1,069-2.gat,4960,3104
+069-1.gat,71,122|warp|To Prison|0,-1,069-2.gat,4960,3104
+069-1.gat,99,122|warp|To Prison Mine|-1,-1,069-3.gat,4960,3104
diff --git a/world/map/npc/069-2/_import.txt b/world/map/npc/069-2/_import.txt
new file mode 100644
index 00000000..33239ec5
--- /dev/null
+++ b/world/map/npc/069-2/_import.txt
@@ -0,0 +1,6 @@
+// Map 069-2: Tulimshar Castle Indoors
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 069-2.gat
+npc: npc/069-2/_mobs.txt
+npc: npc/069-2/_warps.txt
+npc: npc/069-2/wizards.txt
diff --git a/world/map/npc/069-2/_mobs.txt b/world/map/npc/069-2/_mobs.txt
new file mode 100644
index 00000000..d5e5bfd1
--- /dev/null
+++ b/world/map/npc/069-2/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Castle Indoors mobs
+
+
+
+069-2.gat,0,0,0|script|Mob069-2|-1,
+{
+ end;
+}
diff --git a/world/map/npc/069-2/_warps.txt b/world/map/npc/069-2/_warps.txt
new file mode 100644
index 00000000..dfe0fe78
--- /dev/null
+++ b/world/map/npc/069-2/_warps.txt
@@ -0,0 +1,17 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Tulimshar Castle Indoors warps
+
+069-2.gat,24,31|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,90,101
+069-2.gat,55,31|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,98,80
+069-2.gat,86,31|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,98,58
+069-2.gat,117,31|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,90,41
+069-2.gat,24,62|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,44,41
+069-2.gat,55,62|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,35,58
+069-2.gat,86,62|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,35,80
+069-2.gat,117,62|warp|to Tulmishar Castle Outdoor|-1,-1,069-1.gat,43,100
+069-2.gat,45,127|warp|to Tulmishar Castle Outdoor|2,-1,069-1.gat,66,57
+069-2.gat,45,83|warp|to Tulmishar Castle Throne|2,-1,069-2.gat,106,116
+069-2.gat,107,117|warp|to Tulmishar Castle Main Floor|2,-1,069-2.gat,44,84
+069-2.gat,107,117|warp|to Tulmishar Castle Main Floor|2,-1,069-2.gat,44,84
+069-2.gat,116,127|warp|to Tulmishar Castle Parapet|1,-1,069-1.gat,69,42
+069-2.gat,97,127|warp|to Tulmishar Castle Parapet|1,-1,069-1.gat,64,42
diff --git a/world/map/npc/069-2/wizards.txt b/world/map/npc/069-2/wizards.txt
new file mode 100644
index 00000000..f1df5ef4
--- /dev/null
+++ b/world/map/npc/069-2/wizards.txt
@@ -0,0 +1,60 @@
+// Council of Ruling Wizards Room
+
+// manaseed
+069-2.gat,106,82,0|script|Desert Mana Seed#_M|166,
+{
+ end;
+}
+
+//
+069-2.gat,101,85,0|script|Wizard#1|355,
+{
+ end;
+}
+
+//
+069-2.gat,94,87,0|script|Wizard#2|356,
+{
+ end;
+}
+
+//
+069-2.gat,94,93,0|script|Wizard#3|357,
+{
+ end;
+}
+
+//
+069-2.gat,101,95,0|script|Wizard#4|358,
+{
+ end;
+}
+
+//
+069-2.gat,112,85,0|script|Wizard#5|359,
+{
+ end;
+}
+
+//
+069-2.gat,119,87,0|script|Wizard#6|360,
+{
+ end;
+}
+
+//
+069-2.gat,119,93,0|script|Wizard#7|361,
+{
+ end;
+}
+
+//
+069-2.gat,112,95,0|script|Wizard#8|362,
+{
+ end;
+}
+//
+069-2.gat,106,90,0|script|Arch-Wizard#9|354,
+{
+ end;
+}
diff --git a/world/map/npc/069-3/_import.txt b/world/map/npc/069-3/_import.txt
new file mode 100644
index 00000000..edbd2da9
--- /dev/null
+++ b/world/map/npc/069-3/_import.txt
@@ -0,0 +1,5 @@
+// Map 069-3: North Tulimshar
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 069-3.gat
+npc: npc/069-3/_mobs.txt
+npc: npc/069-3/_warps.txt
diff --git a/world/map/npc/069-3/_mobs.txt b/world/map/npc/069-3/_mobs.txt
new file mode 100644
index 00000000..1933ac83
--- /dev/null
+++ b/world/map/npc/069-3/_mobs.txt
@@ -0,0 +1,61 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// North Tulimshar mobs
+
+069-3.gat,82,114,7,12|monster|Mouboo|1028,20,12000,10,Mob069-3::On1028
+069-3.gat,82,94,4,1|monster|Maggot|1002,4,100000,30000,Mob069-3::On1002
+069-3.gat,135,108,4,1|monster|Maggot|1002,4,100000,30000,Mob069-3::On1002
+069-3.gat,28,119,4,1|monster|Maggot|1002,4,100000,30000,Mob069-3::On1002
+069-3.gat,29,39,1,4|monster|SeaSlime|1033,8,100000,30000,Mob069-3::On1033
+069-3.gat,33,70,1,4|monster|SeaSlime|1033,8,100000,30000,Mob069-3::On1033
+069-3.gat,60,49,8,6|monster|Scorpion|1003,4,100000,30000,Mob069-3::On1003
+069-3.gat,86,63,24,18|monster|FireGoblin|1011,6,100000,30000,Mob069-3::On1011
+069-3.gat,114,70,8,6|monster|Scorpion|1003,4,100000,30000,Mob069-3::On1003
+069-3.gat,78,28,8,6|monster|BlackScorpion|1009,1,100000,30000,Mob069-3::On1009
+069-3.gat,95,35,15,10|monster|Snake|1010,3,100000,30000,Mob069-3::On1010
+069-3.gat,137,50,15,18|monster|GreenSlime|1005,3,100000,30000,Mob069-3::On1005
+069-3.gat,87,142,4,1|monster|Maggot|1002,4,100000,30000,Mob069-3::On1002
+
+
+069-3.gat,0,0,0|script|Mob069-3|-1,{
+On1002:
+ set @mobID, 1002;
+ callfunc "MobPoints";
+ end;
+
+On1003:
+ set @mobID, 1003;
+ callfunc "MobPoints";
+ end;
+
+On1005:
+ set @mobID, 1005;
+ callfunc "MobPoints";
+ end;
+
+On1009:
+ set @mobID, 1009;
+ callfunc "MobPoints";
+ end;
+
+On1010:
+ set @mobID, 1010;
+ callfunc "MobPoints";
+ end;
+
+On1011:
+ set @mobID, 1011;
+ callfunc "MobPoints";
+ end;
+
+On1028:
+ set @mobID, 1028;
+ callfunc "MobPoints";
+ end;
+
+On1033:
+ set @mobID, 1033;
+ callfunc "MobPoints";
+ end;
+
+ end;
+}
diff --git a/world/map/npc/069-3/_warps.txt b/world/map/npc/069-3/_warps.txt
new file mode 100644
index 00000000..ed6f7c09
--- /dev/null
+++ b/world/map/npc/069-3/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// North Tulimshar warps
+
+069-3.gat,34,149|warp|to Tulmishar|3,-1,021-1.gat,144,24
diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt
index 70de0525..0972b191 100644
--- a/world/map/npc/_import.txt
+++ b/world/map/npc/_import.txt
@@ -12,10 +12,14 @@ import: npc/003-1/_import.txt
import: npc/003-2/_import.txt
import: npc/004-1/_import.txt
import: npc/004-2/_import.txt
+import: npc/004-3/_import.txt
+import: npc/004-4/_import.txt
+import: npc/004-5/_import.txt
import: npc/005-1/_import.txt
import: npc/005-3/_import.txt
import: npc/005-4/_import.txt
import: npc/006-1/_import.txt
+import: npc/006-2/_import.txt
import: npc/006-3/_import.txt
import: npc/007-1/_import.txt
import: npc/008-1/_import.txt
@@ -60,6 +64,9 @@ import: npc/021-1/_import.txt
import: npc/021-2/_import.txt
import: npc/021-3/_import.txt
import: npc/022-1/_import.txt
+import: npc/023-1/_import.txt
+import: npc/023-2/_import.txt
+import: npc/023-3/_import.txt
import: npc/024-1/_import.txt
import: npc/024-2/_import.txt
import: npc/024-3/_import.txt
@@ -72,6 +79,10 @@ import: npc/027-1/_import.txt
import: npc/027-2/_import.txt
import: npc/027-3/_import.txt
import: npc/027-4/_import.txt
+import: npc/027-5/_import.txt
+import: npc/027-6/_import.txt
+import: npc/027-7/_import.txt
+import: npc/027-8/_import.txt
import: npc/028-1/_import.txt
import: npc/028-3/_import.txt
import: npc/029-1/_import.txt
@@ -89,6 +100,8 @@ import: npc/032-3/_import.txt
import: npc/033-1/_import.txt
import: npc/034-1/_import.txt
import: npc/034-2/_import.txt
+import: npc/035-2/_import.txt
+import: npc/036-2/_import.txt
import: npc/041-1/_import.txt
import: npc/042-1/_import.txt
import: npc/042-2/_import.txt
@@ -112,4 +125,8 @@ import: npc/055-3/_import.txt
import: npc/056-1/_import.txt
import: npc/056-2/_import.txt
import: npc/057-1/_import.txt
+import: npc/068-1/_import.txt
+import: npc/068-2/_import.txt
+import: npc/069-1/_import.txt
+import: npc/069-2/_import.txt
import: npc/botcheck/_import.txt
diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt
index ef4f217a..b83ea630 100644
--- a/world/map/npc/functions/clear_vars.txt
+++ b/world/map/npc/functions/clear_vars.txt
@@ -2,6 +2,28 @@
function|script|ClearVariables|,
{
+ // Tutorial
+ if (sorfina)
+ goto L_SetAllTut;
+ goto L_Easter;
+
+L_SetAllTut:
+ if (FLAGS & FLAG_TUTORIAL_DONE)
+ goto L_ResetAllTut;
+ set @tutorial_tmp, (sorfina + tanisha + hasan + kaan);
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
+ set @tutorial_tmp, 0;
+ goto L_ResetAllTut;
+
+L_ResetAllTut:
+ set sorfina, 0;
+ set tanisha, 0;
+ set hasan, 0;
+ set kaan, 0;
+ goto L_Easter;
+
+L_Easter:
+ // Easter
set EasterQuest, 0;
// Halloween 2006
diff --git a/world/map/npc/functions/debug.txt b/world/map/npc/functions/debug.txt
index e1c9e6c8..9918cbaf 100755
--- a/world/map/npc/functions/debug.txt
+++ b/world/map/npc/functions/debug.txt
@@ -965,3 +965,13 @@ OnInit:
disablenpc "Debug4";
end;
}
+
+027-2.gat,125,103,0|script|Debug5|154,
+{
+ callfunc "Debug";
+ end;
+OnInit:
+ if (!debug)
+ disablenpc "Debug5";
+ end;
+}
diff --git a/world/map/npc/functions/default_npc_checks.txt b/world/map/npc/functions/default_npc_checks.txt
new file mode 100644
index 00000000..4ddd00ca
--- /dev/null
+++ b/world/map/npc/functions/default_npc_checks.txt
@@ -0,0 +1,125 @@
+// Default NPC Checks
+// Author: Wushin
+
+// Range
+// Map, X, Y, Distance in Tiles
+// setarray $@npc_loc, 24, 113, 4;
+function|script|PCtoNPCRange|,
+{
+ set @npc_check, 0;
+ set $@Nmap$, getmap() + ".gat";
+ set $@Nx1, ($@npc_loc[0] - $@npc_loc[2]);
+ set $@Ny1, ($@npc_loc[1] - $@npc_loc[2]);
+ set $@Nx2, ($@npc_loc[0] + $@npc_loc[2]);
+ set $@Ny2, ($@npc_loc[1] + $@npc_loc[2]);
+ if (isin($@Nmap$, $@Nx1, $@Ny1, $@Nx2, $@Ny2))
+ goto L_Return;
+ set @npc_check, 1;
+ goto L_Return;
+
+L_Return:
+ return;
+}
+
+// Inventory & Weight
+// setarray @delitem_names$ Items to delete
+// @delitem_counts Counts of Items to delete
+// @getitem_names$ Items to get
+// @getitem_counts Counts of Items to get
+function|script|CheckInventory|,
+{
+ set @del_loop, 0;
+ set @get_loop, 0;
+ set @delitem_loop, 0;
+ set @getitem_loop, 0;
+ set @check_fail, 0;
+
+ if (getarraysize(@delitem_names$))
+ goto L_DelItemsLoop;
+ goto L_CheckGet;
+
+L_DelItemsLoop:
+ if(countitem(@delitem_names$[@delitem_loop]) >= @delitem_counts[@delitem_loop])
+ goto L_DelLoopAgain;
+ goto L_ReturnMissing;
+
+L_DelLoopAgain:
+ if((@delitems_loop + 1) == getarraysize(@delitems_names$))
+ goto L_CheckGet;
+ set @delitems_loop, (@delitems_loop + 1);
+ goto L_DelItemsLoop;
+
+L_CheckGet:
+ if (getarraysize(@getitem_names$))
+ goto L_CheckWeight;
+ goto L_DelCheck;
+
+L_CheckWeight:
+ getinventorylist;
+ if (@inventorylist_count < (101 - getarraysize(@getitem_names$)))
+ goto L_ReturnSpace;
+ goto L_GetItemsLoop;
+
+L_GetItemsLoop:
+ if (checkweight(@getitem_names$, 1) == 0)
+ goto L_GetLoopAgain;
+ goto L_ReturnWeight;
+
+L_GetLoopAgain:
+ if((@getitems_loop + 1) == getarraysize(@getitems_names$))
+ goto L_DelCheck;
+ set @getitems_loop, (@getitems_loop + 1);
+ goto L_GetItemsLoop;
+
+L_DelCheck:
+ if (getarraysize(@delitem_names$))
+ goto L_DelLoop;
+ goto L_CheckGet2;
+
+L_DelLoop:
+ delitem @delitem_names$[@del_loop], @delitem_counts[@del_loop];
+ goto L_DelAgain;
+
+L_DelAgain:
+ if((@del_loop + 1) == getarraysize(@delitems_names$))
+ goto L_GetLoop;
+ set @del_loop, (@del_loop + 1);
+ goto L_DelLoop;
+
+L_CheckGet2:
+ if (getarraysize(@getitem_names$))
+ goto L_GetLoop;
+ goto L_Return;
+
+L_GetLoop:
+ getitem @getitem_names$[@get_loop], @getitem_counts[@get_loop];
+ goto L_GetAgain;
+
+L_GetAgain:
+ if((@get_loop + 1) == getarraysize(@getitems_names$))
+ goto L_Return;
+ set @get_loop, (@get_loop + 1);
+ goto L_GetLoop;
+
+L_ReturnMissing:
+ mes "\"You are missing required items.\"";
+ set @check_fail, 1;
+ goto L_Return;
+
+L_ReturnWeight:
+ mes "\"You need to be carrying less weight.\"";
+ next;
+ set @check_fail, 1;
+ goto L_Return;
+
+L_ReturnSpace:
+ mes "\"You need more room in your inventory.\"";
+ next;
+ set @check_fail, 1;
+ goto L_Return;
+
+L_Return:
+ cleararray @delitem_names$, "", getarraysize(@delitem_names$);
+ cleararray @getitem_names$, "", getarraysize(@getitem_names$);
+ return;
+}
diff --git a/world/map/npc/functions/ferry.txt b/world/map/npc/functions/ferry.txt
index 03f5777f..271a2e39 100644
--- a/world/map/npc/functions/ferry.txt
+++ b/world/map/npc/functions/ferry.txt
@@ -1,97 +1,116 @@
// The ferry system
-function|script|Ferry|,
+botcheck.gat,27,28,0|script|#FerryConfig|-1,
{
- if (BaseLevel < 20)
- goto L_LowerCost;
- set @cost_tulimshar, 500;
- set @cost_hurnscald, 500;
- set @cost_nivalis, 500;
- goto L_Start;
-
-L_Start:
- set @cost_candor, 1500;
- mes "Where would you like to go?";
- next;
- if (BaseLevel < 40)
- goto L_PlainMenu;
- goto L_MenuWithCandor;
+ end;
+
+OnInit:
+ disablenpc "Hurnscald Koga";
+ disablenpc "Candor Koga";
+ disablenpc "Nivalis Koga";
+ disablenpc "Tulimshar North Koga";
+ disablenpc "Tulimshar South Koga";
+ set $@MainCurrentDock, 0;
+ set $@CandorCurrentDock, 0;
+ set $@DockTickCount, 0;
+ set $@DockLeaveCount, 1;
+ setarray $@MainDocks$, "Hurnscald", "Nivalis", "Tulimshar South";
+ setarray $@CandorDocks$, "Candor", "Tulimshar North";
+ cmdothernpc "#"+$@MainDocks$[$@MainCurrentDock]+"Dock", "Arrive";
+ cmdothernpc "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock", "Arrive";
+ initnpctimer;
+ end;
+
+L_NextDock:
+ set $@MainLastDock, $@MainCurrentDock;
+ set $@CandorLastDock, $@CandorCurrentDock;
+ set $@MainCurrentDock, $@MainCurrentDock + 1;
+ set $@CandorCurrentDock, $@CandorCurrentDock + 1;
+ if($@MainCurrentDock == getarraysize($@MainDocks$))
+ set $@MainCurrentDock, 0;
+ if($@CandorCurrentDock == getarraysize($@CandorDocks$))
+ set $@CandorCurrentDock, 0;
+ set $@DockTickCount, 0;
+ cmdothernpc "#"+$@MainDocks$[$@MainLastDock]+"Dock", "Warp";
+ cmdothernpc "#"+$@MainDocks$[$@MainCurrentDock]+"Dock", "Arrive";
+ cmdothernpc "#"+$@CandorDocks$[$@CandorLastDock]+"Dock", "Warp";
+ cmdothernpc "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock", "Arrive";
+ 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;
+ end;
+
+OnTimer10000:
+ 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;
+}
-L_PlainMenu:
+function|script|FerryManifest|,
+{
+ mes "Which Ferry do you want to check the schedule for?";
menu
- "Tulimshar (" + @cost_tulimshar + "GP)", L_Tulimshar,
- "Hurnscald (" + @cost_hurnscald + "GP)", L_Hurnscald,
- "Nivalis (" + @cost_nivalis + "GP)", L_Nivalis,
- "Nevermind", L_Close;
+ "World Ferry.", L_WorldFerry,
+ "Candor Ferry.", L_CandorFerry;
-L_MenuWithCandor:
- menu
- "Tulimshar (" + @cost_tulimshar + "GP)", L_Tulimshar,
- "Hurnscald (" + @cost_hurnscald + "GP)", L_Hurnscald,
- "Nivalis (" + @cost_nivalis + "GP)", L_Nivalis,
- "Candor (" + @cost_candor + "GP)", L_Candor,
- "Nevermind", L_Close;
-
-L_Tulimshar:
- if (@loc == DOCK_tulimshar)
- goto L_AlreadyThere;
- if (Zeny < @cost_tulimshar)
- goto L_NotEnoughGP;
-
- set Zeny, Zeny - @cost_tulimshar;
- warp "022-1.gat", 76, 72;
+L_CandorFerry:
+ mes "The ferry is currently at "+$@CandorDocks$[$@CandorCurrentDock];
+ next;
+ set @NextDock, ($@CandorCurrentDock + 1);
+ if(@NextDock == getarraysize($@CandorDocks$))
+ set @NextDock, 0;
+ mes "The ferry will be arriving at "+$@CandorDocks$[@NextDock]+" next";
goto L_Close;
-L_Hurnscald:
- if (@loc == DOCK_hurnscald)
- goto L_AlreadyThere;
- if (Zeny < @cost_hurnscald)
- goto L_NotEnoughGP;
-
- set Zeny, Zeny - @cost_hurnscald;
- warp "008-1.gat", 137, 64;
+L_WorldFerry:
+ mes "The ferry is currently at "+$@MainDocks$[$@MainCurrentDock];
+ next;
+ set @NextDock, ($@MainCurrentDock + 1);
+ if(@NextDock == getarraysize($@MainDocks$))
+ set @NextDock, 0;
+ mes "The ferry will be arriving at "+$@MainDocks$[@NextDock]+" next";
goto L_Close;
-L_Nivalis:
- if (@loc == DOCK_nivalis)
- goto L_AlreadyThere;
- if (Zeny < @cost_nivalis)
- goto L_NotEnoughGP;
+L_Close:
+ close;
+}
- set Zeny, Zeny - @cost_nivalis;
- warp "031-1.gat", 95, 109;
- goto L_Close;
+function|script|BoardFerry|,
+{
+ mes "Board the ferry?";
+ menu
+ "yes.", L_Board,
+ "no.", L_Return;
-L_Candor:
- if (@loc == DOCK_candor)
- goto L_AlreadyThere;
- if (Zeny < @cost_candor)
- goto L_NotEnoughGP;
+L_Board:
+ warp "035-2.tmx",39,29;
+ goto L_Return;
- set Zeny, Zeny - @cost_candor;
- warp "029-1.gat", 25, 37;
- goto L_Close;
+L_Return:
+ return;
+}
-L_AlreadyThere:
- mes "You're already here!";
- goto L_Close;
+function|script|BoardCandorFerry|,
+{
+ mes "Board the ferry?";
+ menu
+ "yes.", L_Board,
+ "no.", L_Return;
-L_NotEnoughGP:
- mes "You don't have enough money to go there!";
- goto L_Close;
+L_Board:
+ if (BaseLevel < 40) goto L_TooYoung;
+ warp "036-2.tmx",39,29;
+ goto L_Return;
-L_LowerCost:
- set @cost_tulimshar, 250;
- set @cost_hurnscald, 250;
- set @cost_nivalis, 250;
- goto L_Start;
+L_TooYoung:
+ mes "This area is too dangerous for your low level.";
+ goto L_Return;
-L_Close:
- set @cost_tulimshar, 0;
- set @cost_hurnscald, 0;
- set @cost_candor, 0;
- set @cost_nivalis, 0;
- set @loc, 0;
- close;
+L_Return:
+ return;
}
diff --git a/world/map/npc/functions/soul_menhir.txt b/world/map/npc/functions/soul_menhir.txt
index 14c1cf1c..e5ec9f4a 100644
--- a/world/map/npc/functions/soul_menhir.txt
+++ b/world/map/npc/functions/soul_menhir.txt
@@ -6,7 +6,13 @@ function|script|SoulMenhir|,
menu
"Touch it.", L_Bind,
- "Leave it alone.", L_Return;
+ "Leave it alone.", L_Return,
+ "I lost my towel...", L_Towel;
+
+L_Towel:
+ callfunc "MultiWarpTowel";
+ getitem "HitchhikersTowel", 1;
+ goto L_Return;
L_Bind:
if (Menhir_Activated == 1)
diff --git a/world/map/npc/functions/travelers.txt b/world/map/npc/functions/travelers.txt
new file mode 100644
index 00000000..76e96bf7
--- /dev/null
+++ b/world/map/npc/functions/travelers.txt
@@ -0,0 +1,279 @@
+// Travelers
+// Authors: Wombat, Wushin
+
+// Multiple Travelers
+// Cannot access until found (Player Bitmask)
+// Costs Zeny
+
+// Contains all warp points to find
+botcheck.gat,27,28,0|script|#TravelConfig|-1,
+{
+ end;
+
+OnInit:
+ // TravelFound
+ set $@tut_bit, (1 << 2);
+ set $@druid_tree_bit, (1 << 3);
+ set $@graveyard_bit, (1 << 4);
+ set $@magic_house_bit, (1 << 5);
+ set $@terranite_cave_bit, (1 << 6);
+ set $@tulimshar_bit, (1 << 7);
+ set $@blue_sage_bit, (1 << 8);
+ set $@hurnscald_bit, (1 << 9);
+ set $@nivalis_bit, (1 << 10);
+ set $@tul_mine_bit, (1 << 11);
+ set $@pachua_bit, (1 << 12);
+ set $@nivalis_snow_hills_bit, (1 << 13);
+ set $@barbarians_bit, (1 << 14);
+ set $@hurns_farms_bit, (1 << 15);
+ set $@candor_bit, (1 << 16);
+ // Travel Base Cost
+ set $@tulimshar_cost, 100;
+ set $@hurnscald_cost, 100;
+ set $@nivalis_cost, 100;
+ set $@druid_tree_cost, 150;
+ set $@tul_mine_cost, 150;
+ set $@pachua_cost, 200;
+ set $@graveyard_cost, 200;
+ set $@magic_house_cost, 150;
+ set $@terranite_cave_cost, 200;
+ set $@blue_sage_cost, 200;
+ set $@nivalis_snow_hills_cost, 150;
+ set $@barbarians_cost, 150;
+ set $@hurns_farms_cost, 150;
+ set $@candor_cost, 200;
+ 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.\"";
+ next;
+
+ if (TravelFound & $@tut_bit)
+ goto L_Main;
+ goto L_TravelTut;
+
+L_Main:
+ if (TravelFound & @NpcTravelBit)
+ goto L_BitTravelSet;
+ goto L_SetTravelBit;
+
+L_BitTravelSet:
+ set @Cost, 10;
+ if (BaseLevel < 45)
+ set @Cost, 5;
+ goto L_Start;
+
+L_TravelTut:
+ callfunc "TravelerTut";
+ goto L_Main;
+
+L_SetTravelBit:
+ mes "["+@NpcName$+"]";
+ mes "\"Uplink Set. You can now return to this spot for a fee.\"";
+ next;
+ set TravelFound, TravelFound | @NpcTravelBit;
+ goto L_BitTravelSet;
+
+L_Start:
+ mes "\"Where would you like to go?\"";
+ menu
+ "Tulimshar (" + (@Cost * $@tulimshar_cost) + " GP)", L_TravelTulimshar,
+ "Hurnscald (" + (@Cost * $@hurnscald_cost) + " GP)", L_TravelHurnscald,
+ "Nivalis (" + (@Cost * $@nivalis_cost) + " GP)", L_TravelNivalis,
+ "Candor (" + (@Cost * $@candor_cost) + " GP)", L_TravelCandor,
+ "Tonori - Druid Tree (" + (@Cost * $@druid_tree_cost) + " GP)", L_TravelDruidTree,
+ "Tonori - Tulimshar Mines (" + (@Cost * $@tul_mine_cost) + " GP)", L_TravelTulMine,
+ "Tonori - Pachua's Village (" + (@Cost * $@pachua_cost) + " GP)", L_TravelPachua,
+ "Argeas - Magic House (" + (@Cost * $@magic_house_cost) + " GP)", L_TravelMagicHouse,
+ "Argeas - Farmsteads (" + (@Cost * $@hurns_farms_cost) + " GP)", L_TravelHurnsFarms,
+ "Argeas - Graveyard (" + (@Cost * $@graveyard_cost) + " GP)", L_TravelGraveyard,
+ "Argeas - Terranite Cave (" + (@Cost * $@terranite_cave_cost) + " GP)", L_TravelTerranite,
+ "Nivalis - Barbarian Village (" + (@Cost * $@barbarians_cost) + " GP)", L_TravelBarbarians,
+ "Nivalis - Sage Nikolai's Mansion (" + (@Cost * $@blue_sage_cost) + " GP)", L_TravelBlueSage,
+ "Nivalis - Snow Hills (" + (@Cost * $@nivalis_snow_hills_cost) + " GP)", L_TravelSnowHills,
+ "Who are the Travelers?", L_TravelTut,
+ "I'm not interested.", L_TravelNo;
+
+L_TravelChecks:
+ if (@NpcTravelBit == @NextLocationBit)
+ goto L_AlreadyThere;
+ if (!(TravelFound & @NextLocationBit))
+ goto L_NoFound;
+ if (Zeny < @NextLocationCost)
+ goto L_NoMoney;
+ goto L_TravelPlayer;
+
+L_TravelPlayer:
+ mes "["+@NpcName$+"]";
+ mes "\"Be fearless!\"";
+ close2;
+ set Zeny, Zeny - @NextLocationCost;
+ warp @NextLocationMap$,@NextLocationX,@NextLocationY;
+ goto L_Clearvars;
+
+L_TravelDruidTree:
+ set @NextLocationBit, $@druid_tree_bit;
+ set @NextLocationCost, (@Cost * $@druid_tree_cost);
+ set @NextLocationMap$, "005-1.gat";
+ set @NextLocationX, 76;
+ set @NextLocationY, 36;
+ goto L_TravelChecks;
+
+L_TravelGraveyard:
+ set @NextLocationBit, $@graveyard_bit;
+ set @NextLocationCost, (@Cost * $@graveyard_cost);
+ set @NextLocationMap$, "027-1.gat";
+ set @NextLocationX, 84;
+ set @NextLocationY, 86;
+ goto L_TravelChecks;
+
+L_TravelMagicHouse:
+ set @NextLocationBit, $@magic_house_bit;
+ set @NextLocationCost, (@Cost * $@magic_house_cost);
+ set @NextLocationMap$, "013-1.gat";
+ set @NextLocationX, 120;
+ set @NextLocationY, 93;
+ goto L_TravelChecks;
+
+L_TravelTerranite:
+ set @NextLocationBit, $@terranite_cave_bit;
+ set @NextLocationCost, (@Cost * $@terranite_cave_cost);
+ set @NextLocationMap$, "012-3.gat";
+ set @NextLocationX, 445;
+ set @NextLocationY, 65;
+ goto L_TravelChecks;
+
+L_TravelTulimshar:
+ set @NextLocationBit, $@tulimshar_bit;
+ set @NextLocationCost, (@Cost * $@tulimshar_cost);
+ set @NextLocationMap$, "001-1.gat";
+ set @NextLocationX, 44;
+ set @NextLocationY, 70;
+ goto L_TravelChecks;
+
+L_TravelBlueSage:
+ set @NextLocationBit, $@blue_sage_bit;
+ set @NextLocationCost, (@Cost * $@blue_sage_cost);
+ set @NextLocationMap$, "048-2.gat";
+ set @NextLocationX, 26;
+ set @NextLocationY, 47;
+ goto L_TravelChecks;
+
+L_TravelHurnscald:
+ set @NextLocationBit, $@hurnscald_bit;
+ set @NextLocationCost, (@Cost * $@hurnscald_cost);
+ set @NextLocationMap$, "008-1.gat";
+ set @NextLocationX, 79;
+ set @NextLocationY, 84;
+ goto L_TravelChecks;
+
+L_TravelNivalis:
+ set @NextLocationBit, $@nivalis_bit;
+ set @NextLocationCost, (@Cost * $@nivalis_cost);
+ set @NextLocationMap$, "020-1.gat";
+ set @NextLocationX, 53;
+ set @NextLocationY, 122;
+ goto L_TravelChecks;
+
+L_TravelTulMine:
+ set @NextLocationBit, $@tul_mine_bit;
+ set @NextLocationCost, (@Cost * $@tul_mine_cost);
+ set @NextLocationMap$, "002-2.gat";
+ set @NextLocationX, 27;
+ set @NextLocationY, 28;
+ goto L_TravelChecks;
+
+L_TravelPachua:
+ set @NextLocationBit, $@pachua_bit;
+ set @NextLocationCost, (@Cost * $@pachua_cost);
+ set @NextLocationMap$, "006-1.gat";
+ set @NextLocationX, 28;
+ set @NextLocationY, 97;
+ goto L_TravelChecks;
+
+L_TravelSnowHills:
+ set @NextLocationBit, $@nivalis_snow_hills_bit;
+ set @NextLocationCost, (@Cost * $@nivalis_snow_hills_cost);
+ set @NextLocationMap$, "044-1.gat";
+ set @NextLocationX, 152;
+ set @NextLocationY, 19;
+ goto L_TravelChecks;
+
+L_TravelBarbarians:
+ set @NextLocationBit, $@barbarians_bit;
+ set @NextLocationCost, (@Cost * $@barbarians_cost);
+ set @NextLocationMap$, "033-1.gat";
+ set @NextLocationX, 66;
+ set @NextLocationY, 33;
+ goto L_TravelChecks;
+
+L_TravelHurnsFarms:
+ set @NextLocationBit, $@hurns_farms_bit;
+ set @NextLocationCost, (@Cost * $@hurns_farms_cost);
+ set @NextLocationMap$, "055-1.gat";
+ set @NextLocationX, 135;
+ set @NextLocationY, 60;
+ goto L_TravelChecks;
+
+L_TravelCandor:
+ set @NextLocationBit, $@candor_bit;
+ set @NextLocationCost, (@Cost * $@candor_cost);
+ set @NextLocationMap$, "029-1.gat";
+ set @NextLocationX, 69;
+ set @NextLocationY, 69;
+ goto L_TravelChecks;
+
+L_TravelNo:
+ mes "["+@NpcName$+"]";
+ mes "\"Perhaps some day you will have the courage to help us. Enjoy your stay here in Hurnscald.\"";
+ close2;
+ goto L_Clearvars;
+
+L_NoMoney:
+ mes "["+@NpcName$+"]";
+ mes "\"Sorry, you don't have enough money. Maybe next time.\"";
+ close2;
+ goto L_Clearvars;
+
+L_NoFound:
+ mes "["+@NpcName$+"]";
+ mes "\"Sorry, you don't have a memory from that location. Maybe next time.\"";
+ close2;
+ goto L_Clearvars;
+
+L_AlreadyThere:
+ mes "["+@NpcName$+"]";
+ mes "\"Umm, you are already here. Are you sure you know where you are going?\"";
+ close2;
+ goto L_Clearvars;
+
+L_Clearvars:
+ set @Cost, 0;
+ set @NextLocationBit, 0;
+ set @NextLocationCost, 0;
+ set @NextLocationMap$, "";
+ set @NextLocationX, 0;
+ set @NextLocationY, 0;
+ return;
+}
diff --git a/world/map/npc/functions/undead_debug.txt b/world/map/npc/functions/undead_debug.txt
new file mode 100644
index 00000000..4f01a78c
--- /dev/null
+++ b/world/map/npc/functions/undead_debug.txt
@@ -0,0 +1,106 @@
+// Debug Crypts Battle
+
+function|script|UndeadDebug|,
+{
+ goto L_Main;
+
+L_Main:
+ if (@undeaddebug == 3)
+ goto L_UndeadDebugThree;
+ if (@undeaddebug == 4)
+ goto L_UndeadDebugFour;
+ if (@undeaddebug == 5)
+ goto L_UndeadDebugFive;
+ goto L_Close;
+
+L_UndeadDebugThree:
+ mes "Reset your self to the various states.";
+ mes "Options Limited to Time and Place.";
+ menu
+ "Get Ritual Items.", L_KrukanItems,
+ "Nevermind.", L_Close;
+
+L_UndeadDebugFour:
+ mes "Reset your self to the various states.";
+ mes "Options Limited to Time and Place.";
+ menu
+ "Get Ritual Items.", L_RazhaItems,
+ "Nevermind.", L_Close;
+
+L_UndeadDebugFive:
+ mes "Reset your self to the various states.";
+ mes "Options Limited to Time and Place.";
+ menu
+ "Get Ritual Items.", L_TeroganItems,
+ "Nevermind.", L_Close;
+
+L_InventoryNoSpace:
+ mes "\"Drop some weight then come back.\"";
+ goto L_Close;
+
+L_KrukanItems:
+ if ((checkweight("Soul", 1) == 0)
+ || (checkweight("Skull", 5) == 0)
+ || (checkweight("DarkCrystal", 5) == 0)
+ || (checkweight("Bone", 5) == 0)
+ || (@inventorylist_count == 100))
+ goto L_InventoryNoSpace;
+ getitem "Soul", 1;
+ getitem "Skull", 5;
+ getitem "DarkCrystal", 5;
+ getitem "Bone", 5;
+ goto L_Main;
+
+L_RazhaItems:
+ if ((checkweight("Soul", 3) == 0)
+ || (checkweight("RottenRags", 5) == 0)
+ || (checkweight("UndeadEye", 5) == 0)
+ || (checkweight("UndeadEar", 5) == 0)
+ || (@inventorylist_count == 100))
+ goto L_InventoryNoSpace;
+ getitem "Soul", 3;
+ getitem "RottenRags", 5;
+ getitem "UndeadEye", 5;
+ getitem "UndeadEar", 5;
+ goto L_Main;
+
+L_TeroganItems:
+ if ((checkweight("Soul", 5) == 0)
+ || (checkweight("DiseasedHeart", 5) == 0)
+ || (checkweight("UndeadEye", 5) == 0)
+ || (checkweight("UndeadEar", 5) == 0)
+ || (@inventorylist_count == 100))
+ goto L_InventoryNoSpace;
+ getitem "Soul", 5;
+ getitem "DiseasedHeart", 5;
+ getitem "UndeadEye", 5;
+ getitem "UndeadEar", 5;
+ goto L_Main;
+
+L_Close:
+ close;
+}
+
+// Debug for Krukan
+027-3.gat,84,89,0|script|UndeadDebug3|155,
+{
+ set @undeaddebug, 3;
+ callfunc "UndeadDebug";
+ end;
+}
+
+// Debug for Razha
+027-4.gat,76,79,0|script|UndeadDebug4|155,
+{
+ set @undeaddebug, 4;
+ callfunc "UndeadDebug";
+ end;
+}
+
+// Debug for Terogan
+027-5.gat,72,26,0|script|UndeadDebug5|155,
+{
+ set @undeaddebug, 5;
+ callfunc "UndeadDebug";
+ end;
+}
diff --git a/world/map/npc/items/warpTowels.txt b/world/map/npc/items/warpTowels.txt
index 75209523..1a9c8bcd 100644
--- a/world/map/npc/items/warpTowels.txt
+++ b/world/map/npc/items/warpTowels.txt
@@ -1,360 +1,174 @@
-function|script|useWhiteWarpTowel|,
+// See #TravelConfig
+function|script|WarpTowel|,
{
+ callfunc "MultiWarpTowel";
+ if (@warpTowelName$ == "HitchhikersTowel")
+ goto L_Save;
+ if(@warpTowelName$ == "WhiteHitchhikersTowel")
+ goto L_White;
+ if(@warpTowelName$ == "RedHitchhikersTowel")
+ goto L_Red;
+ if(@warpTowelName$ == "GreenHitchhikersTowel")
+ goto L_Green;
+ if(@warpTowelName$ == "BlueHitchhikersTowel")
+ goto L_Blue;
+ if(@warpTowelName$ == "YellowHitchhikersTowel")
+ goto L_Yellow;
+ if(@warpTowelName$ == "PurpleHitchhikersTowel")
+ goto L_Purple;
+ if(@warpTowelName$ == "OrangeHitchhikersTowel")
+ goto L_Orange;
+ if(@warpTowelName$ == "PinkHitchhikersTowel")
+ goto L_Pink;
+ if(@warpTowelName$ == "TealHitchhikersTowel")
+ goto L_Teal;
+ if(@warpTowelName$ == "LimeHitchhikersTowel")
+ goto L_Lime;
+ goto L_Save;
+
+L_White:
+ // Koga
+ set @NextLocationMap$, "035-2.gat";
+ set @NextLocationX, 20;
+ set @NextLocationY, 21;
+ goto L_WarpChecks;
+
+L_Red:
+ // Barbarians
+ set @NextLocationMap$, "033-1.gat";
+ set @NextLocationX, 66;
+ set @NextLocationY, 33;
+ goto L_WarpChecks;
+
+L_Green:
+ // Candor
+ set @NextLocationMap$, "029-1.gat";
+ set @NextLocationX, 69;
+ set @NextLocationY, 69;
+ goto L_WarpChecks;
+
+L_Blue:
+ // Blue Sages
+ set @NextLocationMap$, "048-2.gat";
+ set @NextLocationX, 26;
+ set @NextLocationY, 47;
+ goto L_WarpChecks;
+
+L_Yellow:
+ // Tulimshar Mines
+ set @NextLocationMap$, "002-2.gat";
+ set @NextLocationX, 27;
+ set @NextLocationY, 28;
+ goto L_WarpChecks;
+
+L_Purple:
+ // Dimonds Inn
+ set @NextLocationMap$, "010-1.gat";
+ set @NextLocationX, 27;
+ set @NextLocationY, 97;
+ goto L_WarpChecks;
+
+L_Orange:
+ // Graveyard
+ set @NextLocationMap$, "027-1.gat";
+ set @NextLocationX, 70;
+ set @NextLocationY, 100;
+ goto L_WarpChecks;
+
+L_Pink:
+ // Terranite Cave
+ set @NextLocationMap$, "012-3.gat";
+ set @NextLocationX, 448;
+ set @NextLocationY, 66;
+ goto L_WarpChecks;
+
+L_Teal:
+ // Mana Seed
+ set @NextLocationMap$, "012-3.gat";
+ set @NextLocationX, 64;
+ set @NextLocationY, 130;
+ goto L_WarpChecks;
+
+L_Lime:
+ // Pachua
+ set @NextLocationMap$, "006-1.gat";
+ set @NextLocationX, 28;
+ set @NextLocationY, 97;
+ goto L_WarpChecks;
+
+L_Save:
+ // Soul Menhir
+ set @NextLocationMap$, getsavepoint(0);
+ set @NextLocationX, getsavepoint(1);
+ set @NextLocationY, getsavepoint(2);
+ goto L_WarpChecks;
+
+L_WarpChecks:
+ if (TowelLastUsed > (gettimetick(2) - 1800))
+ goto L_DontPanic;
if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "020-1.gat",66,91; // Nivalis
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "WhiteHitchhikersTowel", 1;
- end;
-}
-function|script|useRedWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "009-1.gat",51,40; // Hurnscald
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "RedHitchhikersTowel", 1;
- end;
-}
-function|script|useGreenWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "003-1.gat",35,25;
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "GreenHitchhikersTowel", 1;
- end;
-}
-function|script|useBlueWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "003-1.gat",35,25;
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "BlueHitchhikersTowel", 1;
- end;
-}
-function|script|useYellowWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "001-1.gat",40,71; // Tulimshar
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
+ goto L_Prison;
+ if (getmapflag(getmap(), MF_NOSAVE))
+ goto L_Forbid;
+ goto L_WarpPlayer;
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
+L_WarpPlayer:
+ set TowelLastUsed, gettimetick(2);
+ warp @NextLocationMap$,@NextLocationX,@NextLocationY;
+ goto L_BreakChance;
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "YellowHitchhikersTowel", 1;
- end;
-}
-function|script|usePurpleWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "003-1.gat",35,25;
+L_BreakChance:
if (rand(15))
goto L_Keep;
getitem "HitchhikersTowel", 1;
- end;
+ goto L_End;
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
+L_Forbid:
+ message strcharinfo(0), "This area is protected by a force that doesn't tolerate the power of the Towel.";
goto L_Keep;
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
+L_Prison:
+ message strcharinfo(0), "You must be warped by a GM to leave the botcheck area.";
goto L_Keep;
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
+L_DontPanic:
+ message strcharinfo(0), "Your towel is still too low on power to jump again.";
goto L_Keep;
L_Keep:
- getitem "PurpleHitchhikersTowel", 1;
- end;
-}
-function|script|useOrangeWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "027-1.gat",70,100; // Graveyard
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
+ getitem @warpTowelName$, 1;
+ goto L_End;
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "OrangeHitchhikersTowel", 1;
+L_End:
+ set @NextLocationMap$, "";
+ set @NextLocationX, 0;
+ set @NextLocationY, 0;
+ set @warpTowelName$, "";
end;
}
-function|script|usePinkWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "012-3.gat",448,66; // Terranite Cave
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "PinkHitchhikersTowel", 1;
- end;
-}
-function|script|useTealWarpTowel|,
+function|script|MultiWarpTowel|,
{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "003-1.gat",35,25;
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "TealHitchhikersTowel", 1;
- end;
+ setarray $@warpTowels$, "HitchhikersTowel", "WhiteHitchhikersTowel", "RedHitchhikersTowel", "GreenHitchhikersTowel", "BlueHitchhikersTowel", "YellowHitchhikersTowel", "PurpleHitchhikersTowel", "OrangeHitchhikersTowel", "PinkHitchhikersTowel", "TealHitchhikersTowel", "LimeHitchhikersTowel";
+ set @towel_count, 0;
+ set @towel_loop, 0;
+ goto L_CountTowelLoop;
+
+L_CountTowelLoop:
+ set @towel_count, (@towel_count + countitem($@warpTowels$[@towel_loop]));
+ delitem $@warpTowels$[@towel_loop], countitem($@warpTowels$[@towel_loop]);
+ goto L_DelLoopAgain;
+
+L_DelLoopAgain:
+ if((@towel_loop + 1) == getarraysize($@warpTowels$))
+ goto L_Return;
+ set @towel_loop, (@towel_loop + 1);
+ goto L_CountTowelLoop;
+
+L_Return:
+ if (@towel_count > 0)
+ set @warpTowelName$, $@warpTowels$[rand(getarraysize($@warpTowels$))];
+ cleararray $@warpTowels$, "", getarraysize($@warpTowels$);
+ return;
}
-function|script|useLimeWarpTowel|,
-{
- if (isin("botcheck.gat",25,27,51,47))
- goto L_Botcheck;
- if (isin("052-1.gat",1,1,100,80) || isin("052-2.gat",1,1,150,100))
- goto L_Illia;
- if (isin("029-3.gat",1,1,99,99))
- goto L_Candor;
- if (isin("031-4.gat",1,1,90,90))
- goto L_Cindy;
- warp "003-1.gat",35,25;
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
- end;
-
-L_Candor:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the forgein powers of the towel.";
- goto L_Keep;
-L_Cindy:
- message strcharinfo(0), "Something is preventing your towel from working here.";
- goto L_Keep;
-
-L_Illia:
- message strcharinfo(0), "The strong barrier of this island prevents you to teleport!";
- goto L_Keep;
-
-L_Botcheck:
- message strcharinfo(0), "You must be warped by a GM to leave the bot check area.";
- goto L_Keep;
-
-L_Keep:
- getitem "LimeHitchhikersTowel", 1;
- end;
-}
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index 2c8538af..1458423b 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -6,6 +6,7 @@ npc: npc/functions/barber.txt
npc: npc/functions/clear_vars.txt
npc: npc/functions/dailyquest.txt
npc: npc/functions/ferry.txt
+npc: npc/functions/travelers.txt
npc: npc/functions/game_rules.txt
npc: npc/functions/inn.txt
npc: npc/functions/magic.txt
@@ -19,6 +20,8 @@ npc: npc/functions/water_bottle.txt
npc: npc/functions/evil_obelisk.txt
npc: npc/functions/debug.txt
npc: npc/functions/lockpicking.txt
+npc: npc/functions/default_npc_checks.txt
+npc: npc/functions/undead_debug.txt
// Item Functions
npc: npc/items/magic_gm_top_hat.txt