From 61c88ec162713b980f30e6e5111c1cfbd9f23d3a Mon Sep 17 00:00:00 2001 From: wushin Date: Wed, 7 Jan 2015 21:04:38 -0600 Subject: Adjust rest of world to Match new tutorial --- world/map/npc/001-2/_import.txt | 20 +- world/map/npc/001-2/_warps.txt | 25 +- world/map/npc/001-2/bank.txt | 8 + world/map/npc/001-2/casino.txt | 208 ------------- world/map/npc/001-2/david.txt | 53 ++++ world/map/npc/001-2/dedication.txt | 10 - world/map/npc/001-2/fieri.txt | 131 ++++++++ world/map/npc/001-2/forge_shops.txt | 4 + world/map/npc/001-2/government_building.txt | 144 +++++++++ world/map/npc/001-2/heathin.txt | 360 +++++++++++++++++++++ world/map/npc/001-2/jhedia.txt | 62 ++++ world/map/npc/001-2/manakins.txt | 47 +++ world/map/npc/001-2/mapflags.txt | 2 +- world/map/npc/001-2/omar.txt | 335 -------------------- world/map/npc/001-2/pauline.txt | 307 ++++++++++++++++++ world/map/npc/001-2/phaet.txt | 30 -- world/map/npc/001-2/sandra.txt | 118 +++++++ world/map/npc/001-2/shops.txt | 3 - world/map/npc/001-2/tathin.txt | 29 ++ world/map/npc/001-2/tondar.txt | 56 ++++ world/map/npc/001-2/troupe_leader.txt | 65 ---- world/map/npc/001-2/wizards.txt | 60 ++++ world/map/npc/001-2/yanis.txt | 47 +++ world/map/npc/001-3/_warps.txt | 2 +- world/map/npc/001-3/guards.txt | 2 +- world/map/npc/001-3/mapflags.txt | 3 +- world/map/npc/002-2/_import.txt | 19 +- world/map/npc/002-2/_warps.txt | 20 +- world/map/npc/002-2/bakery.txt | 158 ++++++++++ world/map/npc/002-2/barber.txt | 12 + world/map/npc/002-2/bleacher.txt | 293 ++++++++++++++++++ world/map/npc/002-2/casino.txt | 208 +++++++++++++ world/map/npc/002-2/dedication.txt | 10 + world/map/npc/002-2/eurni.txt | 45 +++ world/map/npc/002-2/hetchel.txt | 445 ++++++++++++++++++++++++++ world/map/npc/002-2/imec.txt | 113 +++++++ world/map/npc/002-2/inya.txt | 209 +++++++++++++ world/map/npc/002-2/kps.txt | 164 ++++++++++ world/map/npc/002-2/kylian.txt | 424 +++++++++++++++++++++++++ world/map/npc/002-2/latoy.txt | 33 ++ world/map/npc/002-2/mapflags.txt | 2 +- world/map/npc/002-2/omar.txt | 335 ++++++++++++++++++++ world/map/npc/002-2/phaet.txt | 30 ++ world/map/npc/002-2/rebecca.txt | 84 +++++ world/map/npc/002-2/shops.txt | 3 + world/map/npc/002-2/stranger.txt | 464 ++++++++++++++++++++++++++++ world/map/npc/002-2/traveler.txt | 11 - world/map/npc/002-2/troupe_leader.txt | 65 ++++ world/map/npc/002-3/_import.txt | 1 + world/map/npc/002-3/_warps.txt | 6 +- world/map/npc/002-3/traveler.txt | 11 + world/map/npc/003-2/_import.txt | 6 - world/map/npc/003-2/_mobs.txt | 9 - world/map/npc/003-2/_warps.txt | 5 - world/map/npc/003-2/mapflags.txt | 1 - world/map/npc/004-2/_import.txt | 7 - world/map/npc/004-2/_mobs.txt | 9 - world/map/npc/004-2/_warps.txt | 11 - world/map/npc/004-2/mapflags.txt | 1 - world/map/npc/004-2/pirate_cave_exit.txt | 18 -- world/map/npc/004-3/_warps.txt | 4 +- world/map/npc/004-3/mapflags.txt | 2 +- world/map/npc/004-4/mapflags.txt | 2 +- world/map/npc/004-5/mapflags.txt | 2 +- world/map/npc/005-1/_import.txt | 10 - world/map/npc/005-1/_mobs.txt | 45 --- world/map/npc/005-1/_warps.txt | 21 -- world/map/npc/005-1/mapflags.txt | 1 - world/map/npc/005-1/npcs.txt | 18 -- world/map/npc/005-1/spirit.txt | 299 ------------------ world/map/npc/005-1/traveler.txt | 11 - world/map/npc/005-1/tree.txt | 168 ---------- world/map/npc/005-3/_mobs.txt | 14 +- world/map/npc/005-3/_warps.txt | 9 +- world/map/npc/005-3/mapflags.txt | 2 +- world/map/npc/005-4/_import.txt | 5 - world/map/npc/005-4/_mobs.txt | 9 - world/map/npc/005-4/_warps.txt | 4 - world/map/npc/006-1/_import.txt | 3 + world/map/npc/006-1/_mobs.txt | 44 ++- world/map/npc/006-1/_warps.txt | 54 ++-- world/map/npc/006-1/miriam.txt | 340 ++++++++++++++++++++ world/map/npc/006-1/spirit.txt | 299 ++++++++++++++++++ world/map/npc/006-1/tree.txt | 168 ++++++++++ world/map/npc/006-3/_warps.txt | 13 +- world/map/npc/009-3/_mobs.txt | 10 +- world/map/npc/011-1/_mobs.txt | 12 + world/map/npc/011-4/_mobs.txt | 13 + world/map/npc/013-2/notes.txt | 26 +- world/map/npc/017-9/_warps.txt | 2 +- world/map/npc/017-9/secret.txt | 2 +- world/map/npc/018-1/_mobs.txt | 18 +- world/map/npc/018-3/_mobs.txt | 22 +- world/map/npc/021-2/_import.txt | 17 - world/map/npc/021-2/_mobs.txt | 9 - world/map/npc/021-2/_warps.txt | 29 -- world/map/npc/021-2/bakery.txt | 158 ---------- world/map/npc/021-2/barber.txt | 12 - world/map/npc/021-2/forge_shops.txt | 4 - world/map/npc/021-2/government_building.txt | 180 ----------- world/map/npc/021-2/heathin.txt | 360 --------------------- world/map/npc/021-2/jhedia.txt | 62 ---- world/map/npc/021-2/kps.txt | 164 ---------- world/map/npc/021-2/kylian.txt | 424 ------------------------- world/map/npc/021-2/manakins.txt | 47 --- world/map/npc/021-2/mapflags.txt | 2 - world/map/npc/021-2/rebecca.txt | 11 - world/map/npc/021-2/yanis.txt | 41 --- world/map/npc/021-3/_mobs.txt | 12 +- world/map/npc/021-3/_warps.txt | 7 +- world/map/npc/021-3/mapflags.txt | 2 +- world/map/npc/023-2/_import.txt | 6 - world/map/npc/023-2/_mobs.txt | 9 - world/map/npc/023-2/_warps.txt | 5 - world/map/npc/023-2/mapflags.txt | 1 - world/map/npc/023-3/_import.txt | 6 - world/map/npc/023-3/_mobs.txt | 25 -- world/map/npc/023-3/_warps.txt | 11 - world/map/npc/023-3/mapflags.txt | 1 - world/map/npc/024-2/_import.txt | 9 - world/map/npc/024-2/_mobs.txt | 9 - world/map/npc/024-2/_warps.txt | 5 - world/map/npc/024-2/barrier.txt | 16 - world/map/npc/024-2/mapflags.txt | 2 - world/map/npc/024-2/tyer.txt | 8 - world/map/npc/024-2/tyer_trigger.txt | 24 -- world/map/npc/024-3/_import.txt | 5 - world/map/npc/024-3/_mobs.txt | 9 - world/map/npc/024-3/_warps.txt | 3 - world/map/npc/024-4/_import.txt | 5 - world/map/npc/024-4/_mobs.txt | 9 - world/map/npc/024-4/_warps.txt | 3 - world/map/npc/029-3/barrier.txt | 4 +- world/map/npc/029-3/mapflags.txt | 4 +- world/map/npc/031-1/frozenbeard.txt | 11 +- world/map/npc/032-1/_import.txt | 7 - world/map/npc/032-1/_mobs.txt | 24 -- world/map/npc/032-1/_warps.txt | 4 - world/map/npc/032-1/mapflags.txt | 1 - world/map/npc/032-1/miriam.txt | 335 -------------------- world/map/npc/032-3/_warps.txt | 2 +- world/map/npc/032-3/mapflags.txt | 2 +- world/map/npc/035-2/koga.txt | 2 +- world/map/npc/036-2/emblems.txt | 4 +- world/map/npc/036-2/koga-candor.txt | 8 +- world/map/npc/043-3/_warps.txt | 4 +- world/map/npc/068-2/_import.txt | 10 - world/map/npc/068-2/_mobs.txt | 15 - world/map/npc/068-2/_warps.txt | 13 - world/map/npc/068-2/bank.txt | 8 - world/map/npc/068-2/hetchel.txt | 445 -------------------------- world/map/npc/068-2/inya.txt | 209 ------------- world/map/npc/068-2/latoy.txt | 33 -- world/map/npc/068-2/mapflags.txt | 2 - world/map/npc/069-2/_import.txt | 7 - world/map/npc/069-2/_mobs.txt | 9 - world/map/npc/069-2/_warps.txt | 17 - world/map/npc/069-2/mapflags.txt | 2 - world/map/npc/069-2/wizards.txt | 60 ---- world/map/npc/_import.txt | 27 +- world/map/npc/scripts.conf | 1 + 161 files changed, 5606 insertions(+), 4391 deletions(-) create mode 100644 world/map/npc/001-2/bank.txt delete mode 100644 world/map/npc/001-2/casino.txt create mode 100644 world/map/npc/001-2/david.txt delete mode 100644 world/map/npc/001-2/dedication.txt create mode 100644 world/map/npc/001-2/fieri.txt create mode 100644 world/map/npc/001-2/forge_shops.txt create mode 100644 world/map/npc/001-2/government_building.txt create mode 100644 world/map/npc/001-2/heathin.txt create mode 100644 world/map/npc/001-2/jhedia.txt create mode 100644 world/map/npc/001-2/manakins.txt delete mode 100644 world/map/npc/001-2/omar.txt create mode 100644 world/map/npc/001-2/pauline.txt delete mode 100644 world/map/npc/001-2/phaet.txt create mode 100644 world/map/npc/001-2/sandra.txt delete mode 100644 world/map/npc/001-2/shops.txt create mode 100644 world/map/npc/001-2/tathin.txt create mode 100644 world/map/npc/001-2/tondar.txt delete mode 100644 world/map/npc/001-2/troupe_leader.txt create mode 100644 world/map/npc/001-2/wizards.txt create mode 100644 world/map/npc/001-2/yanis.txt create mode 100644 world/map/npc/002-2/bakery.txt create mode 100644 world/map/npc/002-2/barber.txt create mode 100644 world/map/npc/002-2/bleacher.txt create mode 100644 world/map/npc/002-2/casino.txt create mode 100644 world/map/npc/002-2/dedication.txt create mode 100644 world/map/npc/002-2/eurni.txt create mode 100644 world/map/npc/002-2/hetchel.txt create mode 100644 world/map/npc/002-2/imec.txt create mode 100644 world/map/npc/002-2/inya.txt create mode 100644 world/map/npc/002-2/kps.txt create mode 100644 world/map/npc/002-2/kylian.txt create mode 100644 world/map/npc/002-2/latoy.txt create mode 100644 world/map/npc/002-2/omar.txt create mode 100644 world/map/npc/002-2/phaet.txt create mode 100644 world/map/npc/002-2/rebecca.txt create mode 100644 world/map/npc/002-2/shops.txt create mode 100644 world/map/npc/002-2/stranger.txt delete mode 100644 world/map/npc/002-2/traveler.txt create mode 100644 world/map/npc/002-2/troupe_leader.txt create mode 100644 world/map/npc/002-3/traveler.txt delete mode 100644 world/map/npc/003-2/_import.txt delete mode 100644 world/map/npc/003-2/_mobs.txt delete mode 100644 world/map/npc/003-2/_warps.txt delete mode 100644 world/map/npc/003-2/mapflags.txt delete mode 100644 world/map/npc/004-2/_import.txt delete mode 100644 world/map/npc/004-2/_mobs.txt delete mode 100644 world/map/npc/004-2/_warps.txt delete mode 100644 world/map/npc/004-2/mapflags.txt delete mode 100644 world/map/npc/004-2/pirate_cave_exit.txt delete mode 100644 world/map/npc/005-1/_import.txt delete mode 100644 world/map/npc/005-1/_mobs.txt delete mode 100644 world/map/npc/005-1/_warps.txt delete mode 100644 world/map/npc/005-1/mapflags.txt delete mode 100644 world/map/npc/005-1/npcs.txt delete mode 100644 world/map/npc/005-1/spirit.txt delete mode 100644 world/map/npc/005-1/traveler.txt delete mode 100644 world/map/npc/005-1/tree.txt delete mode 100644 world/map/npc/005-4/_import.txt delete mode 100644 world/map/npc/005-4/_mobs.txt delete mode 100644 world/map/npc/005-4/_warps.txt create mode 100644 world/map/npc/006-1/miriam.txt create mode 100644 world/map/npc/006-1/spirit.txt create mode 100644 world/map/npc/006-1/tree.txt delete mode 100644 world/map/npc/021-2/_import.txt delete mode 100644 world/map/npc/021-2/_mobs.txt delete mode 100644 world/map/npc/021-2/_warps.txt delete mode 100644 world/map/npc/021-2/bakery.txt delete mode 100644 world/map/npc/021-2/barber.txt delete mode 100644 world/map/npc/021-2/forge_shops.txt delete mode 100644 world/map/npc/021-2/government_building.txt delete mode 100644 world/map/npc/021-2/heathin.txt delete mode 100644 world/map/npc/021-2/jhedia.txt delete mode 100644 world/map/npc/021-2/kps.txt delete mode 100644 world/map/npc/021-2/kylian.txt delete mode 100644 world/map/npc/021-2/manakins.txt delete mode 100644 world/map/npc/021-2/mapflags.txt delete mode 100644 world/map/npc/021-2/rebecca.txt delete mode 100644 world/map/npc/021-2/yanis.txt delete mode 100644 world/map/npc/023-2/_import.txt delete mode 100644 world/map/npc/023-2/_mobs.txt delete mode 100644 world/map/npc/023-2/_warps.txt delete mode 100644 world/map/npc/023-2/mapflags.txt delete mode 100644 world/map/npc/023-3/_import.txt delete mode 100644 world/map/npc/023-3/_mobs.txt delete mode 100644 world/map/npc/023-3/_warps.txt delete mode 100644 world/map/npc/023-3/mapflags.txt delete mode 100644 world/map/npc/024-2/_import.txt delete mode 100644 world/map/npc/024-2/_mobs.txt delete mode 100644 world/map/npc/024-2/_warps.txt delete mode 100644 world/map/npc/024-2/barrier.txt delete mode 100644 world/map/npc/024-2/mapflags.txt delete mode 100644 world/map/npc/024-2/tyer.txt delete mode 100644 world/map/npc/024-2/tyer_trigger.txt delete mode 100644 world/map/npc/024-3/_import.txt delete mode 100644 world/map/npc/024-3/_mobs.txt delete mode 100644 world/map/npc/024-3/_warps.txt delete mode 100644 world/map/npc/024-4/_import.txt delete mode 100644 world/map/npc/024-4/_mobs.txt delete mode 100644 world/map/npc/024-4/_warps.txt delete mode 100644 world/map/npc/032-1/_import.txt delete mode 100644 world/map/npc/032-1/_mobs.txt delete mode 100644 world/map/npc/032-1/_warps.txt delete mode 100644 world/map/npc/032-1/mapflags.txt delete mode 100644 world/map/npc/032-1/miriam.txt delete mode 100644 world/map/npc/068-2/_import.txt delete mode 100644 world/map/npc/068-2/_mobs.txt delete mode 100644 world/map/npc/068-2/_warps.txt delete mode 100644 world/map/npc/068-2/bank.txt delete mode 100644 world/map/npc/068-2/hetchel.txt delete mode 100644 world/map/npc/068-2/inya.txt delete mode 100644 world/map/npc/068-2/latoy.txt delete mode 100644 world/map/npc/068-2/mapflags.txt delete mode 100644 world/map/npc/069-2/_import.txt delete mode 100644 world/map/npc/069-2/_mobs.txt delete mode 100644 world/map/npc/069-2/_warps.txt delete mode 100644 world/map/npc/069-2/mapflags.txt delete mode 100644 world/map/npc/069-2/wizards.txt diff --git a/world/map/npc/001-2/_import.txt b/world/map/npc/001-2/_import.txt index ae570981..6ad9ffe0 100644 --- a/world/map/npc/001-2/_import.txt +++ b/world/map/npc/001-2/_import.txt @@ -3,10 +3,18 @@ map: 001-2.gat npc: npc/001-2/_mobs.txt npc: npc/001-2/_warps.txt -npc: npc/001-2/casino.txt -npc: npc/001-2/dedication.txt +npc: npc/001-2/bank.txt +npc: npc/001-2/david.txt +npc: npc/001-2/fieri.txt +npc: npc/001-2/forge_shops.txt +npc: npc/001-2/government_building.txt +npc: npc/001-2/heathin.txt +npc: npc/001-2/jhedia.txt +npc: npc/001-2/manakins.txt npc: npc/001-2/mapflags.txt -npc: npc/001-2/omar.txt -npc: npc/001-2/phaet.txt -npc: npc/001-2/shops.txt -npc: npc/001-2/troupe_leader.txt +npc: npc/001-2/pauline.txt +npc: npc/001-2/sandra.txt +npc: npc/001-2/tathin.txt +npc: npc/001-2/tondar.txt +npc: npc/001-2/wizards.txt +npc: npc/001-2/yanis.txt diff --git a/world/map/npc/001-2/_warps.txt b/world/map/npc/001-2/_warps.txt index 50745da6..6a310169 100644 --- a/world/map/npc/001-2/_warps.txt +++ b/world/map/npc/001-2/_warps.txt @@ -1,13 +1,18 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // South Tulimshar Indoor warps -001-2.gat,25,35|warp|To Outside|-1,-1,001-1.gat,32,72 -001-2.gat,44,25|warp|To Second Floor|-1,0,001-2.gat,65,25 -001-2.gat,64,25|warp|To First Floor|-1,-1,001-2.gat,43,25 -001-2.gat,67,30|warp|To Bedroom|-1,-1,001-2.gat,103,23 -001-2.gat,76,30|warp|To Deposit|-1,-1,001-2.gat,131,23 -001-2.gat,69,22|warp|To Casino|0,-1,001-2.gat,32,72 -001-2.gat,103,22|warp|To Second Floor|0,-1,001-2.gat,67,29 -001-2.gat,131,22|warp|To Second Floor|0,-1,001-2.gat,76,29 -001-2.gat,32,73|warp|To Second Floor|-1,-1,001-2.gat,69,23 -001-2.gat,71,73|warp|To Outside|-1,-1,001-1.gat,75,42 +001-2.gat,25,65|warp|To Outside|-1,-1,001-1.gat,114,100 +001-2.gat,28,102|warp|To Outside|-1,-1,001-1.gat,27,33 +001-2.gat,28,86|warp|To Light|-1,-1,001-1.gat,28,22 +001-2.gat,105,102|warp|To Outside|0,-1,001-1.gat,54,35 +001-2.gat,25,28|warp|To Outside|-1,-1,001-1.gat,49,72 +001-2.gat,28,28|warp|To Outside|-1,-1,001-1.gat,52,72 +001-2.gat,31,28|warp|To Outside|-1,-1,001-1.gat,55,72 +001-2.gat,71,102|warp|To Outside|-1,-1,001-1.gat,37,33 +001-2.gat,105,73|warp|Council Chambers|2,-1,001-2.gat,104,42 +001-2.gat,105,43|warp|Main Floor|2,-1,001-2.gat,104,74 +001-2.gat,114,53|warp|Parapet|-1,-1,001-1.gat,57,23 +001-2.gat,95,53|warp|Parapet|-1,-1,001-1.gat,52,23 +001-2.gat,57,90|warp|Lighthouse|-1,-1,001-2.gat,35,94 +001-2.gat,36,95|warp|MainFloor|-1,0,001-2.gat,58,90 +001-2.gat,65,26|warp|Outside|-1,-1,001-1.gat,59,99 diff --git a/world/map/npc/001-2/bank.txt b/world/map/npc/001-2/bank.txt new file mode 100644 index 00000000..b5bab670 --- /dev/null +++ b/world/map/npc/001-2/bank.txt @@ -0,0 +1,8 @@ +// A Banker +001-2.gat,63,17,0|script|Hydusun|149 +{ + set @npcname$, "Hydusun"; + callfunc "Banker"; + close; +} + diff --git a/world/map/npc/001-2/casino.txt b/world/map/npc/001-2/casino.txt deleted file mode 100644 index ad0b625b..00000000 --- a/world/map/npc/001-2/casino.txt +++ /dev/null @@ -1,208 +0,0 @@ -// Casino - -// takes part in quest given by 021-2/kylian.txt -001-2.gat,32,72,0|script|#CasinoEntrance|32767,1,1 -{ - set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowCasinoNT; - set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); - if (@kylian != 6) - goto L_End; - message strcharinfo(0), "You wonder if Kylian would like to visit the casino in the evening."; - goto L_End; - -L_End: - set @kylian, 0; - end; -} - -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|Slots#1|400 -{ - callfunc "SlotMachine"; - close; -} - -001-2.gat,39,65,0|script|Slots#2|400 -{ - callfunc "SlotMachine"; - close; -} - -001-2.gat,41,65,0|script|Slots#3|400 -{ - callfunc "SlotMachine"; - close; -} - -001-2.gat,102,27,0|shop|MoneyChanger|124,CasinoCoins:*10 - -001-2.gat,28,63,0|script|BlackJack|107 -{ - mes "[Croupier]"; - mes "\"Would you like to play Black Jack?"; - mes "You will need 15 casino coins.\""; - next; - menu - "Yes", L_Begin, - "No", L_Close; - -L_Begin: - if(countitem("CasinoCoins") < 15) goto L_NoCoin; - delitem "CasinoCoins", 15; - set @croupier, rand(0, 4); - set @croupier, @croupier + 17; - set @player, rand(4, 21); - mes "\"You got " + @player + " with your cards."; - if(@player == 21) goto L_End; - mes "Do you want another card?\""; - next; - menu - "Yes", L_Another, - "No", L_End; - -L_Another: - set @tempace, rand(2, 11); - if (@tempace == 11) goto L_Ace; - set @player, @player + @tempace; - if (@player > 21) goto L_Lost; - if (@player == 21) goto L_End; - mes "\"You got " + @player + " with your cards."; - mes "Do you want another card?\""; - next; - menu - "Yes", L_Another, - "No", L_End; - -L_End: - if (@player <= @croupier) goto L_Lost; - mes "\"Congratulations, you won!"; - mes "I had " + @croupier + "."; - mes "You get 45 casino coins.\""; - getitem "CasinoCoins", 45; - goto L_Close; - -L_NoCoin: - mes "\"You need at least 15 coins.\""; - goto L_Close; - -L_Lost: - mes "\"I'm sorry but you lost."; - mes "You got " + @player + " with your cards."; - mes "I had " + @croupier + ".\""; - goto L_Close; - -L_Ace: - set @player, @player + 11; - if (@player > 21) set @player, @player - 10; - if (@player > 21) goto L_Lost; - if (@player == 21) goto L_End; - mes "You got " + @player + " with your cards."; - mes "Do you want another card?"; - next; - menu - "Yes", L_Another, - "No", L_End; - -L_Close: - mes "\"As you wish.\""; - set @croupier, 0; - set @player, 0; - set @tempace, 0; - close; -} - -001-2.gat,22,69,0|script|Roulette|107 -{ - mes "[Croupier]"; - mes "\"Good evening monsieur..."; - mes "How much would you like to bet?\""; - next; - menu - "1 coin", L_b1, - "5 coins", L_b5, - "10 coins", L_b10, - "50 coins", L_b50, - "100 coins", L_b100, - "Maybe I'll play later", L_Close; - -L_b1: - set @bet, 1; - goto L_Check; - -L_b5: - set @bet, 5; - goto L_Check; - -L_b10: - set @bet, 10; - goto L_Check; - -L_b50: - set @bet, 50; - goto L_Check; - -L_b100: - set @bet, 100; - goto L_Check; - -L_Check: - if(countitem("CasinoCoins") < @bet) goto L_NoCoin; - delitem "CasinoCoins", @bet; - menu - "Choose a color", L_PickColor, - "Choose a number", L_Number; - -L_PickColor: - menu - "Black", L_Color, - "Red", L_Color; - -L_Color: - set @color,rand(2); - if(@color == 1) goto L_Lost; - mes "You won!"; - getitem "CasinoCoins", @bet * 2; - goto L_Close; - -L_Number: - menu - "0", L_Menuitems, "00", L_Menuitems, "1", L_Menuitems, "2", L_Menuitems, "3", L_Menuitems, "4", L_Menuitems, "5", L_Menuitems, "6", L_Menuitems, "7", L_Menuitems, "8", L_Menuitems, - "9", L_Menuitems, "10", L_Menuitems, "11", L_Menuitems, "12", L_Menuitems, "13", L_Menuitems, "14", L_Menuitems, "15", L_Menuitems, "16", L_Menuitems, "17", L_Menuitems, "18", L_Menuitems, - "19", L_Menuitems, "20", L_Menuitems, "21", L_Menuitems, "22", L_Menuitems, "23", L_Menuitems, "24", L_Menuitems, "25", L_Menuitems, "26", L_Menuitems, "27", L_Menuitems, "28", L_Menuitems, - "29", L_Menuitems, "30", L_Menuitems, "31", L_Menuitems, "32", L_Menuitems, "33", L_Menuitems, "34", L_Menuitems, "35", L_Menuitems, "36", L_Menuitems; - -L_Menuitems: - if (@menu == 1) set @number, 0; - if (@menu == 2) set @number, 37; - if (@menu >= 3) set @number, @menu - 2; - - set @roulette, rand(38); - if (@roulette == 37) mes "The ball stopped on 00"; - if (@roulette < 37) mes "The ball stopped on " + @roulette; - if (@number != @roulette) goto L_Lost; - mes "\"You won!\""; - getitem "CasinoCoins", @bet * 10; - goto L_Close; - -L_NoCoin: - mes "\"You don't have enough coins.\""; - goto L_Close; - -L_Lost: - mes "\"I'm sorry, you lost.\""; - goto L_Close; - -L_Close: - mes "Come again."; - set @number, 0; - set @roulette, 0; - set @color, 0; - set @bet, 50; - close; -} diff --git a/world/map/npc/001-2/david.txt b/world/map/npc/001-2/david.txt new file mode 100644 index 00000000..fc9e3fd7 --- /dev/null +++ b/world/map/npc/001-2/david.txt @@ -0,0 +1,53 @@ +001-2.gat,92,88,0|script|David|120 +{ + set @Potion_EXP, 2000; + + if (Rossy_Quest == 17) goto L_FinalEnd; + if (Rossy_Quest == 14) goto L_Julia; + if (Rossy_Quest >= 8) goto L_Done; + + mes "[David]"; + mes "\"Learning magic is hard...\""; + if (Rossy_Quest == 7) goto L_Help; + close; + +L_Help: + menu + "Do you know Rossy?", L_Set, + "I can tell, it is hard.", L_No; + +L_Set: + mes "[David]"; + mes "\"Yes, I do. I am her teacher. Actually, that reminds me about her final exam... she didn't hand in her potion yet. Time is running out.\""; + menu + "A potion? Oh, uhm... Strange kind of exam. Bye.", L_No, + "Right, I have her potion in my pocket. She asked me to bring it to you. Here it is.", L_Next; + +L_Next: + mes "[David]"; + mes "\"Let me see.\""; + set Rossy_Quest, 8; + mes "\"This potion is... perfect! Tell Rossy that she successfully made her potion; it is flawless!\""; + getexp @Potion_EXP, 0; + close; + +L_Done: + mes "[David]"; + mes "\"I am really happy that my best student successfully passed her exam!\""; + close; + +L_No: + close; + +L_Julia: + mes "[David]"; + mes "\"I heard Rossy's sister got kidnapped. We're counting on you to find her!\""; + next; + mes "\"If you do find her, talk to her sister and her mother.\""; + close; + +L_FinalEnd: + mes "[David]"; + mes "Well done! Thanks for finding Julia!"; + close; +} diff --git a/world/map/npc/001-2/dedication.txt b/world/map/npc/001-2/dedication.txt deleted file mode 100644 index 03268df0..00000000 --- a/world/map/npc/001-2/dedication.txt +++ /dev/null @@ -1,10 +0,0 @@ -// Dedication to Irene Christina - -001-2.gat,76,68,0|script|#IreneDedication|400 -{ - mes "~ Irene Christina ~"; - mes "The song in this house is dedicated to Irene."; - next; - mes "She had seen only twenty hours of this world when she died in her father's arms."; - close; -} diff --git a/world/map/npc/001-2/fieri.txt b/world/map/npc/001-2/fieri.txt new file mode 100644 index 00000000..1264be4e --- /dev/null +++ b/world/map/npc/001-2/fieri.txt @@ -0,0 +1,131 @@ +// Variables used: nibble 0 of QUEST_SouthTulimshar + +001-2.gat,114,89,0|script|Fieri|117 +{ + set @state, ((QUEST_SouthTulimshar & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT); + + if (@state >= 4) goto L_Done2; + if (@state == 3) goto L_Progress2; + if (@state == 2) goto L_Done1; + if (@state == 1) goto L_Progress; + + set @TEMP, rand(2); + if(@TEMP == 1) goto L_Opening1; + goto L_Opening0; + +L_Opening0: + mes "[Fieri]"; + mes "\"The Wizards are always hungry. All the magic all the time, sapping their energy."; + mes "Could I ask a favor of you?\""; + next; + goto L_Ask; + +L_Opening1: + mes "[Fieri]"; + mes "\"These Wizards eat like a store house full of maggots."; + mes "At this rate I'll have nothing left to cook. Can you help me with a task?\""; + next; + goto L_Ask; + +L_Ask: + menu + "Yes.", L_Yes, + "No.", L_Close; + +L_Yes: + set @TEMP, rand(2); + if(@TEMP == 1) goto L_Req1; + goto L_Req0; + +L_Req0: + mes "[Fieri]"; + mes "\"Great! I need a Beer for my Tonori Delight.\""; + next; + goto L_Set; + +L_Req1: + mes "[Fieri]"; + mes "\"Bring me a Beer. I'll give you something if you do.\""; + next; + goto L_Set; + +L_Set: + set @state, 1; + callsub S_Update_Var; + mes "[Fieri]"; + mes "\"Please bring it to me!\""; + goto L_Close; + +L_Progress: + if (countitem("Beer") < 1) goto L_NotEnough; + mes "[Fieri]"; + mes "\"Oooh, perfect! It's perfect!"; + mes "You brought me my Beer! Here, have some cake for your troubles.\""; + getinventorylist; + if (@inventorylist_count - (countitem("Beer") == 1) > 99 - (countitem("CherryCake") == 0) ) goto L_TooMany; + delitem "Beer", 1; + getexp 100, 0; + getitem "CherryCake", 5; + set @state, 2; + callsub S_Update_Var; + next; + mes "\"Now let's see...\""; + goto L_Close; + +L_Progress2: + if (countitem("MaggotSlime") < 3) goto L_NotEnough1; + mes "[Fieri]"; + mes "\"Nice! They're perfect, just perfect!"; + mes "You brought me the 3 Maggot Slimes! Here, have some Tonori Delight as reward.\""; + getinventorylist; + if ((@inventorylist_count - (countitem("MaggotSlime") == 3) > 99 - (countitem("TonoriDelight") == 0) )) goto L_TooMany; + delitem "MaggotSlime", 3; + getexp 100, 0; + getitem "TonoriDelight", 3; + set @state, 4; + callsub S_Update_Var; + goto L_Close; + +L_NotEnough: + mes "[Fieri]"; + mes "\"Oh, please hurry and bring me a Beer. The Wizards need their Tonori Delight!\""; + goto L_Close; + +L_NotEnough1: + mes "[Fieri]"; + mes "\"Please do hurry and bring me 3 Maggot Slimes, so I can finish the Tonori Delight!\""; + goto L_Close; + +L_Done1: + mes "[Fieri]"; + mes "\"Thank you so much!\""; + mes "\"But... I need some more ingredients.\""; + next; + mes "\"I need 3 Maggot Slimes for that.\""; + mes "\"Bring them to me, and I'll give you something nice.\""; + set @state, 3; + callsub S_Update_Var; + goto L_Close; + +L_Done2: + mes "[Fieri]"; + mes "\"I hope you like Tonori Delight as much as I do, because, you see...\""; + next; + mes "\"Tonori Delight is life!\""; + goto L_Close; + +L_Close: + set @TEMP, 0; + set @state, 0; + close; + +L_TooMany: + next; + mes "[Fieri]"; + mes "\"You don't have room for my reward. I'll wait until you do.\""; + goto L_Close; + +S_Update_Var: + set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_6_MASK) | (@state << NIBBLE_6_SHIFT)); + return; +} diff --git a/world/map/npc/001-2/forge_shops.txt b/world/map/npc/001-2/forge_shops.txt new file mode 100644 index 00000000..5f2ab3ba --- /dev/null +++ b/world/map/npc/001-2/forge_shops.txt @@ -0,0 +1,4 @@ +// Forge Shops + +001-2.gat,30,60,0|shop|Gungnir|311,SlingShot:*500,SlingBullet:*1,ShortBow:*8000,Arrow:*1,IronArrow:*4 +001-2.gat,25,59,0|shop|Mjolnir|377,Knife:*50,SharpKnife:*100,Dagger:*1000,LeatherShirt:*2000,LeatherShield:*2000 diff --git a/world/map/npc/001-2/government_building.txt b/world/map/npc/001-2/government_building.txt new file mode 100644 index 00000000..f201f192 --- /dev/null +++ b/world/map/npc/001-2/government_building.txt @@ -0,0 +1,144 @@ +// The government builing in the south west + +// A clerk +001-2.gat,25,21,0|script|Estard|107 +{ + mes "[Estard]"; + mes "\"Hello what can I do for you?\""; + next; + if (getpartnerid2()) + goto L_main_married; + + menu + "I'm looking at getting married.", L_marry, + "Nothing, I guess.", L_Close; + +L_main_married: + menu + "I'd like a divorce.", L_divorce, + "Nothing, I guess.", L_Close; + +L_marry: + if (BaseLevel < WEDDING_MIN_LEVEL) + goto L_marry_too_young; + if (Zeny < WEDDING_FEE) + goto L_marry_too_poor; + + mes "[Estard]"; + mes "\"Are you sure you want to get married? It'll cost " + WEDDING_FEE + " GP.\""; + menu + "Yes", L_marry_do, + "No", L_Close; + +L_marry_do: + callsub S_give_rings; + + mes "[Estard]"; + mes "\"Here are your rings. You can get married by standing in one of the designated places (like that small rug over there) with your partner, give them their ring, and say 'marry (their name here)'. You both need to have your rings on.\""; + close; + +L_marry_too_young: + mes "[Estard]"; + mes "\"I'm sorry, but you are too young to get married. You must be atleast " + WEDDING_MIN_LEVEL + " levels old.\""; + next; + + menu + "Can I at least get wedding rings?", L_get_rings, + "Thanks anyways.", L_Close; + +L_marry_too_poor: + mes "[Estard]"; + mes "\"You need " + WEDDING_FEE + " GP to get married. That covers all administrative fees for the marriage and provides two wedding rings.\""; + close; + +L_get_rings: + mes "[Estard]"; + mes "\"Yes. They are " + WEDDING_FEE + " GP. That covers all administrative fees for the marriage.\""; + + if (Zeny < WEDDING_FEE) + menu + "Thanks anyways. I don't have enough with me.", 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; + + mes "[Estard]"; + mes "\"There you go. Come again.\""; + close; + +L_divorce: + set @divorce_cost, DIVORCE_FEE_PER_LEVEL * BaseLevel; + + if (Zeny < @divorce_cost) + goto L_divorce_not_enough; + + mes "[Estard]"; + mes "\"If you're sure you want a divorce, it'll cost you " + @divorce_cost + " GP.\""; + next; + menu + "I am sure I want it.", L_do_divorce, + "I don't want it.", L_Close; + +L_do_divorce: + if (Zeny < @divorce_cost) + goto L_not_enough_money; + + if (divorce()) + goto L_divorce_done; + + mes "[Estard]"; + mes "\"I'm having trouble finding the record. \""; + mes "[Server]"; + mes "Try again when your partner is online too."; + close; + +L_divorce_done: + set Zeny, Zeny - @divorce_cost; + + mes "[Estard]"; + mes "\"You have been divorced. Come again.\""; + close; + +L_divorce_not_enough: + mes "[Estard]"; + mes "\"I'm sorry , but you don't have enough money to get a divorce. You need " + @divorce_cost + " GP.\""; + close; + +L_not_enough_money: + mes "[Estard]"; + mes "\"Seems you don't have enough money.\""; + close; + +L_no_room_for_rings: + mes "[Estard]"; + mes "\"You don't have enough room to carry these rings.\""; + close; + +L_Close: + close; + +S_give_rings: + if (Zeny < WEDDING_FEE) + goto L_not_enough_money; + getinventorylist; + if (@inventorylist_count > 98) + goto L_no_room_for_rings; + + set Zeny, Zeny - WEDDING_FEE; + getitem "WeddingRing", 1; + getitem "WeddingRing", 1; + return; +} + +// Guard +001-2.gat,22,21,0|script|Guard#govt_in|123 +{ + mes "[Guard]"; + mes "\"You can't come back here.\""; + close; +} diff --git a/world/map/npc/001-2/heathin.txt b/world/map/npc/001-2/heathin.txt new file mode 100644 index 00000000..113b1b7e --- /dev/null +++ b/world/map/npc/001-2/heathin.txt @@ -0,0 +1,360 @@ +//Items for NPC are incomplete. Makes "simple ring" which can be crafted into a useful ring by Inya and terranite armor. + +001-2.gat,23,55,0|script|Heathin|147 +{ + set @TARROW_REQ_TERRA_ORE, 1; + set @TARROW_REQ_COAL, 5; + set @TARROW_REQ_GP, 3000; + set @heathin_xp_bonus, (100 * BaseLevel); + + set @state, ((QUEST_NorthTulimshar & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT); + + if (@state == 14) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Trade; + if (@state == 13) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Ready; + if (@state == 12) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Forge; + if (@state == 11) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows; + if (@state == 10) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor_Ready; + if (@state == 9) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor_Forge; + if (@state == 8) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor; + if (@state == 7) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs_Ready; + if (@state == 6) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs_Forge; + if (@state == 5) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs; + if (@state == 4) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood_Ready; + if (@state == 3) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood_Forge; + if (@state == 2) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood; + if (@state == 2) && (BaseLevel >= 60) goto L_Heathin_Forge_Thanks; + if (@state == 1) && (BaseLevel >= 60) goto L_Heathin_Forge_Award; + if (BaseLevel >= 60) goto L_Heathin_Start; + + mes "[Heathin]"; + mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \""; + close; + +L_Heathin_Start: + mes "[Heathin]"; + mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \""; + next; + mes "\"By the order of the Wizard's Council, I've been commissioned to forge armor for the upcoming expediation. However, I am but a simple smith and cannot complete all this effort by myself. I need individuals that can gather Coal to heat my forge.\""; + next; + mes "\"Perhaps you would be interested in helping me out? Would you be willing to help me gather Coal and help me fulfill my commission? I am asking any and all willing souls to get me 50 coal, as that would put a significant dint in my goal.\""; + menu + "Sure, I'll help!", L_Heathin_Help, + "I'd rather keep my Coal for my own purposes, thank you very much.", L_Heathin_No, + "Wait, what kind of award are we talking about?", L_Heathin_Interested; + +L_Heathin_Help: + set @state, 1; + callsub S_Update_Mask; + mes "[Heathin]"; + mes "\"Excellent! I am always glad when someone can be of service not just to me, but to all of Tulimshar. Please get me 50 Coal and you will be compensated for your efforts.\""; + close; + +L_Heathin_No: + mes "[Heathin]"; + mes "\"That is too bad. If you change your mind, I shall still be here, attempting to get my commission done.\""; + close; + +L_Heathin_Interested: + mes "[Heathin]"; + mes "\"Well, I can compensate you from the commision I getting from the council.\""; + next; + mes "\"How does 20,000 GP and I'll offer my smithing services for a discount?\""; + next; + mes "\"Does this sound like something you might be interested in?\""; + menu + "Sure, I'll help!", L_Heathin_Help, + "I'd rather keep my Coal.", L_Heathin_No, + "Can you repeat that again?", L_Heathin_Interested; + +L_Heathin_Forge_Award: + if (countitem ("Coal") < 50) goto L_Heathin_Forge_Wait; + getinventorylist; + set @state, 2; + callsub S_Update_Mask; + delitem "Coal", 50; + getexp @heathin_xp_bonus, 0; + set Zeny, Zeny + 20000; + mes "[Heathin]"; + mes "\"You have brought the Coal. This is most excellent! As promised, I have a reward for you. Hopefully you will find it useful.\""; + next; + mes "\"Time to make some armor. The Council will be pleased. Thank you for your efforts!\""; + close; + +L_Heathin_Forge_Wait: + mes "[Heathin]"; + mes "\"Hello again. Making armor keeps me pretty busy. I certainly hope I can fulfill my commission soon so that I can move on to bigger and better things.\""; + next; + mes "\"The pay is good, certainly, but I am a far better smith than this. If you can bring me 50 Coal, it would surely get me to my goal faster.\""; + next; + mes "\"I will be sure to provide an apt award once you are done.\""; + close; + +L_Heathin_Forge_Thanks: + mes "[Heathin]"; + mes "\"Thank you again for helping me fulfil my commission. It has made a signficant dint in what the Council requires of me. Perhaps I may be of service to you again one day!\""; + close; + +L_Heathin_Terranite_Hood: + mes "[Heathin]"; + mes "\"Hello again friend, I just found out about this great metal called terranite.\""; + next; + mes "\"This metal is almost as strong as steel, but is also very ductile.\""; + next; + mes "\"With some effort, I can make this metal form rings tighter than any chain mail. It isn't the prettiest in hue, but its uses can be many.\""; + next; + mes "\"Unfortunately, it seems to be difficult to gather. Most that have searched for Terranite Ore either cannot find it or have never returned...\""; + next; + mes "\"I may be an excellent smith, but I certainly am no combatant. However, I would enjoy turning this ore into something useful, perhaps some type of armor to help those that may be braver.\""; + next; + mes "\"So, what do you say? Are you interested?\""; + menu + "No, thank you. Maybe later.", L_Heathin_Terranite_No, + "Armor, you say? Definitely!", L_Heathin_Terranite_Yes; + +L_Heathin_Terranite_No: + mes "[Heathin]"; + mes "\"Ah, that is too bad. Come by again anytime.\""; + close; + +L_Heathin_Terranite_Yes: + set @state, 3; + callsub S_Update_Mask; + mes "[Heathin]"; + mes "\"Great, this is going to be fun! As I have not had much practice with this armor, I'd like to get started soon.\""; + next; + mes "Heathin thinks for a moment."; + next; + mes "\"Ah, I know! I will make a helm... Well, more like a hood, since it will be woven.\""; + next; + mes "\"It will require a great amount of heat, if the rumors are to be believed. For this, I will need 100 Coal to keep my forge burning hot. I will also need 10 Terranite Ore to make the armor. Of course, such work does not come cheap. While I may enjoy my work, my time and effort is very valuable. Since you have been a great help I will only need 20,000 gold pieces, well below my going rate. Please come back with the gold, Coal and ore and I'll make this hood for you.\""; + close; + +L_Heathin_Terranite_Hood_Forge: + if ( (Zeny < 20000) + || (countitem("Coal") < 100) + || (countitem("TerraniteOre") < 10) ) + goto L_Heathin_Terranite_Hood_Wait; + set @state, 4; + callsub S_Update_Mask; + delitem "Coal", 100; + delitem "TerraniteOre", 10; + getexp @heathin_xp_bonus, 0; + set Zeny, Zeny - 20000; + mes "[Heathin]"; + mes "\"Great, you brought everything! Come back later and I'll have the helm ready for you.\""; + close; + +L_Heathin_Terranite_Hood_Wait: + mes "[Heathin]"; + mes "\"I am very busy right now. If you could bring me 10 Terranite Ore, 100 Coal and 20,000 gold pieces, I will make that terranite hood for you.\""; + close; + +L_Heathin_Terranite_Hood_Ready: + getinventorylist; + if ((checkweight("TerraniteHelmet", 1) == 0) || (@inventorylist_count == 100)) + goto L_InventoryNoSpace; + set @state, 5; + callsub S_Update_Mask; + getitem "TerraniteHelmet", 1; + mes "[Heathin]"; + mes "\"I am all done with your terranite hood. I hope you enjoy it! I have some work to wrap up for the Council, but come back later and I might be able to assist you again.\""; + close; + +L_Heathin_Terranite_Legs: + set @state, 6; + callsub S_Update_Mask; + mes "[Heathin]"; + mes "\"I am glad you are back! I've just finished up some more of my commission. Now I can get back to making terranite armor for you. This time I will make some pants, but they need more ore, more Coal to heat my forge and of course, more gold for my efforts.\""; + next; + mes "\"To make terranite pants, I need 200 Coal, 30 Terranite Ore and 40,000 gold pieces. The faster you bring this to me, the faster I can have your terranite pants ready.\""; + close; + +L_Heathin_Terranite_Legs_Forge: + if ( (Zeny < 40000) + || (countitem("Coal") < 200) + || (countitem("TerraniteOre") < 30) ) + goto L_Heathin_Terranite_Legs_Wait; + set @state, 7; + callsub S_Update_Mask; + delitem "Coal", 200; + delitem "TerraniteOre", 30; + getexp @heathin_xp_bonus, 0; + set Zeny, Zeny - 40000; + mes "[Heathin]"; + mes "\"Great, you have brought everything! Come back later and I will have those terranite pants ready for you.\""; + close; + +L_Heathin_Terranite_Legs_Wait: + mes "[Heathin]"; + mes "\"I am very busy right now. If you could bring me 30 Terranite Ore, 200 Coal and 40,000 gold pieces, I will make those terranite pants for you.\""; + close; + +L_Heathin_Terranite_Legs_Ready: + getinventorylist; + if ((checkweight("TerraniteLegs", 1) == 0) || (@inventorylist_count == 100)) + goto L_InventoryNoSpace; + set @state, 8; + callsub S_Update_Mask; + getitem "TerraniteLegs", 1; + mes "[Heathin]"; + mes "\"I am all done with your terranite pants. Hope you enjoy them! I have some more work to complete for the Council. Come back later and I might be able to assist you again.\""; + close; + +L_Heathin_Terranite_Chest_Armor: + set @state, 9; + callsub S_Update_Mask; + mes "[Heathin]"; + mes "\"Good to see you again. I have just finished up some more of my commission. Now I can get back to making terranite armor for you. This time, I will make some terranite chest armor, but it needs more ore, more Coal for my forge and of course, more gold to compensate for my efforts.\""; + next; + mes "\"To make terranite chest armor, I need 250 Coal, 40 Terranite Ore and 50,000 gold pieces. The faster you bring this to me, the faster I can have your terranite armor ready.\""; + close; + +L_Heathin_Terranite_Chest_Armor_Forge: + if ( (Zeny < 50000) + || (countitem("Coal") < 250) + || (countitem("TerraniteOre") < 40) ) + goto L_Heathin_Terranite_Chest_Armor_Wait; + set @state, 10; + callsub S_Update_Mask; + delitem "Coal", 250; + delitem "TerraniteOre", 40; + getexp @heathin_xp_bonus, 0; + set Zeny, Zeny - 50000; + mes "[Heathin]"; + mes "\"Splendid, you have brought everything! Come back later and I will have the terranite chest armor ready for you.\""; + close; + +L_Heathin_Terranite_Chest_Armor_Wait: + mes "[Heathin]"; + mes "\"I am very busy right now. If you could bring me 40 Terranite Ore, 250 Coal and 50,000 gold pieces, I will make that chest armor for you.\""; + close; + +L_Heathin_Terranite_Chest_Armor_Ready: + getinventorylist; + if ((checkweight("TerraniteChestArmor", 1) == 0) || (@inventorylist_count == 100)) + goto L_InventoryNoSpace; + set @state, 11; + callsub S_Update_Mask; + getitem "TerraniteChestArmor", 1; + mes "[Heathin]"; + mes "\"I have completed your terranite chest armor. I hope you enjoy it! I have some work to wrap up for the Council again, but come back later and I might be able to assist you once more.\""; + close; + +L_Heathin_Terranite_Arrows: + mes "[Heathin]"; + mes "\"How good to see you. I have experimented a little with Terranite Ore to see what else can be done with it. It seems to have some qualities suitable for weapons, but I have only tested it with arrows. If you would like, I can make Terranite Arrows, but as as with the armor, I need Coal, Terranite Ore and payment for my efforts.\""; + next; + mes "\"Also, it might be a while until I have time to see what else I can make with terranite other than arrows, as right now the Council is keeping me rather busy with my commission. So, would you like some Terranite Arrows?\""; + menu + "No, thank you.", L_Heathin_Terranite_Arrows_No, + "Sure, I could use some arrows.", L_Heathin_Terranite_Arrows_Yes; + +L_Heathin_Terranite_Arrows_No: + mes "[Heathin]"; + mes "\"Well, if you change your mind, I'm not going anywhere.\""; + close; + +L_Heathin_Terranite_Arrows_Yes: + set @state, 12; + callsub S_Update_Mask; + mes "[Heathin]"; + mes "\"Good, good. I shall begin crafting these arrows as soon as you come back. However, I cannot just make small handfuls as it would not be worth my time and effort to have my concentration interrupted for small tasks. I will make 1,000 Terranite Arrows per request, for which I will need "+@TARROW_REQ_TERRA_ORE+" Terranite Ore, "+@TARROW_REQ_COAL+" Coal and "+@TARROW_REQ_GP+" gold pieces.\""; + next; + mes "\"See you soon!\""; + close; + +L_Heathin_Terranite_Arrows_Forge: + if ( (Zeny < @TARROW_REQ_GP) + || (countitem("Coal") < @TARROW_REQ_COAL) + || (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) ) + goto L_Heathin_Terranite_Arrows_Wait; + set @state, 13; + callsub S_Update_Mask; + delitem "Coal", @TARROW_REQ_COAL; + delitem "TerraniteOre", @TARROW_REQ_TERRA_ORE; + getexp @heathin_xp_bonus, 0; + set Zeny, Zeny - @TARROW_REQ_GP; + mes "[Heathin]"; + mes "\"Wonderful! You have everything I asked for. I will start working on the arrows right away.\""; + close; + +L_Heathin_Terranite_Arrows_Wait: + mes "[Heathin]"; + mes "\"If you want Terranite Arrows, please get me "+@TARROW_REQ_TERRA_ORE+" Terranite Ore, "+@TARROW_REQ_COAL+" Coal and "+@TARROW_REQ_GP+" gold pieces.\""; + close; + +L_Heathin_Terranite_Arrows_Ready: + getinventorylist; + if ((checkweight("TerraniteArrow", 1000) == 0) || (@inventorylist_count == 100)) + goto L_InventoryNoSpace; + set @state, 14; + callsub S_Update_Mask; + getitem "TerraniteArrow", 1000; + mes "[Heathin]"; + mes "\"All done, here you go! I hope you like them. I am still working on my commission, but if you ever need any more Terranite Arrows, just come on by with "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces and I will make another 1,000 arrows for you. By now I have enough Terranite Ore in reserve that you can just trade me my requirements to keep my resources up. Thank you for all your efforts!\""; + close; + +L_Heathin_Terranite_Arrows_Trade: + mes "[Heathin]"; + mes "\"Hello, there. If you have "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces, I will trade you 1,000 Terranite Arrows. Would you like some Terranite Arrows?\""; + menu + "No.", L_Heathin_Terranite_Arrows_Trade_No, + "Yes.", L_Heathin_Terranite_Arrows_Trade_Yes; + +L_Heathin_Terranite_Arrows_Trade_No: + mes "[Heathin]"; + mes "\"Come back again if you would like to get Terranite Arrows.\""; + close; + +L_Heathin_Terranite_Arrows_Trade_Yes: + if ( (Zeny < @TARROW_REQ_GP) + || (countitem("Coal") < @TARROW_REQ_COAL) + || (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) ) + goto L_Heathin_Terranite_Arrows_Trade_Wait; + getinventorylist; + if ((checkweight("TerraniteArrow", 1500) == 0) || (@inventorylist_count == 100)) + goto L_InventoryNoSpace; + delitem "Coal", @TARROW_REQ_COAL; + delitem "TerraniteOre", @TARROW_REQ_TERRA_ORE; + set Zeny, Zeny - @TARROW_REQ_GP; + set @lucky, 5 * rand(readparam(bLuk)); + getitem "TerraniteArrow", 1000 + @lucky; + mes "[Heathin]"; + mes "\"Here you go! You are lucky, I could forge "+@lucky+" more arrows than expected. Come back again if you want more Terranite Arrows.\""; + close; + +L_Heathin_Terranite_Arrows_Trade_Wait: + mes "[Heathin]"; + mes "\"It seems that you do not have the necessary resources for me to trade you. Please come back with "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces if you want another 1,000 Terranite Arrows.\""; + close; + +L_InventoryNoSpace: + mes "[Heathin]"; + mes "\"Hm no. You can't carry this right now. Make some room and come back.\""; + close; + +S_Update_Mask: + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK)) | (@state << NIBBLE_6_SHIFT); + return; +} +001-2.gat,25,55,0|script|HeathinDebug|147 +{ + mes "[Heathin Debug]"; + mes "Debug Action"; + menu + "Reset", L_Reset, + "Exit", L_End; + +L_Reset: + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK) | (0 << NIBBLE_6_SHIFT)); + mes "Reset!"; + goto L_End; + +L_End: + end; + +OnInit: + if (!debug) + disablenpc "HeathinDebug"; + end; +} diff --git a/world/map/npc/001-2/jhedia.txt b/world/map/npc/001-2/jhedia.txt new file mode 100644 index 00000000..fdee36c9 --- /dev/null +++ b/world/map/npc/001-2/jhedia.txt @@ -0,0 +1,62 @@ +// Ingot maker takes iron ore, gives ingots for future crafting purposes. + +001-2.gat,23,50,0|script|Jhedia|160 +{ + set @Cost_Per_Ingot, 1000; + set @Iron_Ore_Per, 5; + set @Coal_Per, 10; + + mes "[Jhedia]"; + mes "\"I forge Iron Ore into ingots. Ingots are more useful for skilled smiths, like armorers, because the ore is refined and made into useful units which can be worked with. To make ingots, I need " + @Iron_Ore_Per + " Iron Ore and " + @Cost_Per_Ingot + " gp per ingot. I also need " + @Coal_Per + " Coal for my forge.\""; + next; + mes "[Jhedia]"; + mes "\"How many ingots would you like?\""; + input @ingot_count; + + if (@ingot_count == 0) + goto L_Jhedia_Bye; + set @Zeny_cost, @ingot_count * @Cost_Per_Ingot; + if (countitem("IronOre") < @Iron_Ore_Per * @ingot_count) + goto L_Jhedia_NotEnough_Ore; + if (countitem("Coal") < @Coal_Per * @ingot_count) + goto L_Jhedia_NotEnough_Coal; + if (Zeny < @Zeny_cost) + goto L_Jhedia_NotEnough_Zeny; + getinventorylist; + if (@inventorylist_count == 100 + && countitem("IronIngot") == 0 + && countitem("IronOre") > @ingot_count * @Iron_Ore_Per + | countitem("Coal") > @ingot_count * @Coal_Per) + goto L_Jhedia_NotEnoughSlots; + set Zeny, Zeny - @Zeny_cost; + delitem "IronOre", @ingot_count * @Iron_Ore_Per; + delitem "Coal", @ingot_count * @Coal_Per; + getitem "IronIngot", @ingot_count; + close; + +L_Jhedia_Bye: + mes "[Jhedia]"; + mes "\"Goodbye then.\""; + close; + +L_Jhedia_NotEnough_Ore: + mes "[Jhedia]"; + mes "\"You do not seem to have enough Iron Ore.\""; + close; + +L_Jhedia_NotEnough_Coal: + mes "[Jhedia]"; + mes "\"You do not seem to have enough Coal.\""; + close; + +L_Jhedia_NotEnough_Zeny: + mes "[Jhedia]"; + mes "\"You do not seem to have enough gold pieces.\""; + close; + +L_Jhedia_NotEnoughSlots: + mes "[Jhedia]"; + mes "\"You do not seem to have enough room to carry this many ingots.\""; + close; + +} diff --git a/world/map/npc/001-2/manakins.txt b/world/map/npc/001-2/manakins.txt new file mode 100644 index 00000000..23a59909 --- /dev/null +++ b/world/map/npc/001-2/manakins.txt @@ -0,0 +1,47 @@ +// Display Manakins. + +// Forge +001-2.gat,29,57,0|script|Terranite Armor#Female|401 +{ + mes "Terranite Armor complete set, made to order, inquire with Heathin"; + close; +} + +001-2.gat,34,57,0|script|Terranite Armor#Male|402 +{ + mes "Terranite Armor complete set, made to order, inquire with Heathin"; + close; +} + +001-2.gat,34,62,0|script|Terranite|403 +{ + mes "Ahhh! A Terranite! Wait it appears to just be a display model."; + close; +} + +// Museum + +001-2.gat,91,39,0|script|Talponian#Female|404 +{ + mes "A Female Talponian."; + close; +} + +001-2.gat,91,44,0|script|Talponian#Male|405 +{ + mes "A Male Talponian."; + close; +} + +001-2.gat,118,39,0|script|Gispaan#Female|406 +{ + mes "A Female Gispaan."; + close; +} + +001-2.gat,118,44,0|script|Gispaan#Male|407 +{ + mes "A Male Gispaan."; + close; +} + diff --git a/world/map/npc/001-2/mapflags.txt b/world/map/npc/001-2/mapflags.txt index 41bab423..3a1f27a7 100644 --- a/world/map/npc/001-2/mapflags.txt +++ b/world/map/npc/001-2/mapflags.txt @@ -1,2 +1,2 @@ 001-2.gat|mapflag|town -001-2.gat|mapflag|resave|001-1,57,71 +001-2.gat|mapflag|resave|001-1,60,105 diff --git a/world/map/npc/001-2/omar.txt b/world/map/npc/001-2/omar.txt deleted file mode 100644 index c67bd44f..00000000 --- a/world/map/npc/001-2/omar.txt +++ /dev/null @@ -1,335 +0,0 @@ -// -function|script|KadiyaSubquestConsts -{ - set @Q_kadiya_status, (QUEST_MAGIC2 & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT; - - set @Q_STATUS_NONE, 0; - set @Q_STATUS_KNOWS_MOPOX, 1; - set @Q_STATUS_MADE_MOPOX, 2; - set @Q_STATUS_DIDNT_DRINK, 3; - set @Q_STATUS_WANTS_CHOCOCAKE, 4; - set @Q_STATUS_WANTS_ORANGECUPCAKE, 5; - set @Q_STATUS_COMPLETED, 6; - set @Q_STATUS_COMPLETED_ELANORE, 7; - set @Q_STATUS_COMPLETED_NOELANORE, 8; - set @Q_STATUS_COMPLETED_POST_ELANORE, 9; - - if (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) < 4) set @Q_kadiya_status, @Q_STATUS_NONE; - - if (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) > 4) set @Q_kadiya_status, @Q_STATUS_COMPLETED_POST_ELANORE; - - return; -} - -001-2.gat,70,60,0|script|Omar|162 -{ - callfunc "ElanoreFix"; - callfunc "KadiyaSubquestConsts"; - - set @Q_status, @Q_kadiya_status; - - if (@Q_status >= @Q_STATUS_COMPLETED) goto L_cured; - - if (@Q_status == @Q_STATUS_DIDNT_DRINK) goto L_didnt_drink; - - if (@Q_status > @Q_STATUS_DIDNT_DRINK) goto L_make_food; - - mes "[Omar]"; - mes "\"Welcome to my humble abode.\""; - next; - menu - "Well met! May I ask who you are?", L_omar, - "What's wrong with your daughter?", L_kadiya_sick, - "Thank you!", L_Close; - -L_omar: - mes "[Omar]"; - mes "\"My name is Omar; I am a trader of oils and spices.\""; - goto L_Close; - -L_kadiya_sick: - mes "[Omar]"; - mes "\"Kadiya has caught Ponderpox, I fear.\""; - mes "He sighs."; - mes "\"She's has been feverish for many days now. I wish there were something I could do.\""; - next; - menu - "Have you asked Elanore the healer?", L_sick_elanore, - "How about the Hurnscald hospital?", L_sick_hospital, - "Can I help?", L_sick_self, - "I'm sorry to hear that.", L_Next; - -L_Next: - mes "[Omar]"; - mes "\"Well, she is a strong girl. I am sure that she will get over it eventually.\""; - mes "He smiles, but you see doubt in his eyes."; - goto L_Close; - -L_sick_elanore: - mes "[Omar]"; - mes "\"Elanore?\""; - mes "He frowns."; - mes "\"She knows nothing. I see no point in talking to her.\""; - goto L_Close; - -L_sick_hospital: - mes "[Omar]"; - mes "\"Hurnscald is too far away. I don't think that it would be good for her to go on such a long trip.\""; - goto L_Close; - -L_sick_self: - mes "[Omar]"; - mes "\"You are very kind, but I don't think there is anything you can do.\""; - goto L_Close; - -L_didnt_drink: - mes "[Omar]"; - mes "\"So she has Mopox, not Ponderpox, you say? Hmm. That is much harder to cure, I think.\""; - mes "\"I am grateful for the effort you put into brewing a potion for her. But it does smell vile...\""; - next; - mes "[Omar]"; - mes "\"I promised my dear wife that I would never make Kadiya eat or drink anything she doesn't like. So I won't force her to drink this.\""; - next; - mes "[Omar]"; - set @Q_status, (@Q_STATUS_WANTS_CHOCOCAKE + rand(2)); - callsub S_update_var; - if (@Q_status == @Q_STATUS_WANTS_ORANGECUPCAKE) - mes "\"If only we could make it smell and taste like orange cupcakes... she really loves those cupcakes.\""; - if (@Q_status == @Q_STATUS_WANTS_CHOCOCAKE) - mes "\"If only this were a chocolate cake and not a potion... she really loves chocolate cakes.\""; - goto L_Close; - -L_make_food: - mes "[Omar]"; - mes "\"I should stay here to watch over her. I wish I could think of a way to convince her to drink the potion...\""; - if (@Q_status == @Q_STATUS_WANTS_ORANGECUPCAKE) - mes "\"Alas, it is not an orange cupcake.\""; - if (@Q_status == @Q_STATUS_WANTS_CHOCOCAKE) - mes "\"If only it were to smell and taste like her favourite chocolate cake...\""; - goto L_Close; - -L_cured: - if (@Q_status == @Q_STATUS_COMPLETED) goto L_cured_choice; - mes "[Omar]"; - mes "\"She is sleeping now, but she seems to be much better. I am sure that she will be up and running around again soon.\""; - goto L_Close; - -L_cured_choice: - mes "[Omar]"; - mes "\"I am very grateful for your help. I really was sure that it was Ponderpox, not Mopox, that she had.\""; - next; - menu - "Oh, it was nothing.", L_cured_nothing, - "I didn't do it alone; Elanore helped.", L_cured_elanore, - "That will be 5000 GP.", L_Next1; - -L_Next1: - mes "[Omar]"; - mes "\"Ah, certainly.\""; - mes "He hands you a small bag of money."; - next; - set @Q_status, @Q_STATUS_COMPLETED_NOELANORE; - callsub S_update_var; - set Zeny, Zeny + 5000; - goto L_Close; - -L_cured_nothing: - mes "[Omar]"; - mes "\"No, this wasn't nothing. She is everything to me. Here, you deserve a reward.\""; - mes "He hands you a bag of money containing 10,000 GP and two pearls."; - mes "\"And feel free to drop by again whenever you would like!\""; - set @Q_status, @Q_STATUS_COMPLETED_NOELANORE; - callsub S_update_var; - getitem "Pearl", 2; - set Zeny, Zeny + 10000; - goto L_Close; - -L_cured_elanore: - mes "[Omar]"; - mes "Omar frowns."; - mes "\"That witch? You worked with her without telling me?\""; - mes "He looks over to his daughter, concern suddenly in his eyes."; - mes "\"She is looking better, though...\""; - next; - mes "[Omar]"; - mes "Omar shakes his head."; - mes "\"I will have to think about this. Please leave me alone.\""; - next; - set @Q_status, @Q_STATUS_COMPLETED_ELANORE; - callsub S_update_var; - goto L_Close; - -L_Close: - set @Q_STATUS_KNOWS_MOPOX, 0; - set @Q_STATUS_MADE_MOPOX, 0; - set @Q_STATUS_DIDNT_DRINK, 0; - set @Q_STATUS_WANTS_CHOCOCAKE, 0; - set @Q_STATUS_WANTS_ORANGECUPCAKE, 0; - set @Q_STATUS_COMPLETED, 0; - set @Q_STATUS_COMPLETED_ELANORE, 0; - set @Q_STATUS_COMPLETED_NOELANORE, 0; - set @Q_STATUS_COMPLETED_POST_ELANORE, 0; - set @Q_status, 0; - close; - - -S_update_var: - set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(NIBBLE_3_MASK) | (@Q_status << NIBBLE_3_SHIFT)); - return; -} - -001-2.gat,76,59,0|script|Kadiya|174 -{ - set @child_number, 7; - callfunc "XmasList"; - - callfunc "ElanoreFix"; - set @Q_MASK, NIBBLE_3_MASK; - set @Q_SHIFT, NIBBLE_3_SHIFT; - callfunc "KadiyaSubquestConsts"; - set @Q_status, @Q_kadiya_status; - if (@Q_status >= @Q_STATUS_COMPLETED) goto L_cured; - - mes "You see a young girl lying in bed. At first she doesn't seem to notice you approaching."; - mes "Finally, she turns her head towards you. Judging from the sweat on her forehead and look in her eyes, she is suffering from some kind of fever."; - next; - mes "[Kadiya]"; - mes "\"Hello,\" she says in a tiny voice."; - next; - set @M_NAME, 1; - set @M_CANDY, 2; - set @M_POTION, 3; - set @M_CHOCOCAKE, 4; - set @M_CUPCAKE, 5; - - setarray @choice$, "Hello! What's your name?", "Would you like some candy?", "", "", "", "", "", ""; - setarray @choice_idx, @M_NAME, @M_CANDY, 0, 0, 0, 0, 0, 0; - set @choices_nr, 2; - - if (countitem("MopoxCurePotion") == 0) goto L_M_no_cure; - - set @choice_idx[@choices_nr], @M_POTION; - set @choice$[@choices_nr], "This potion will cure your illness!"; - set @choices_nr, @choices_nr + 1; - goto L_M_no_cure; - -L_M_no_cure: - if ((countitem("LacedChocolateCake") == 0) || (@Q_status != @Q_STATUS_WANTS_CHOCOCAKE)) - goto L_M_no_chococake; - set @choice_idx[@choices_nr], @M_CHOCOCAKE; - set @choice$[@choices_nr], "Would you like special chocolate cake?"; - set @choices_nr, @choices_nr + 1; - goto L_M_no_chococake; - -L_M_no_chococake: - if ((countitem("LacedOrangeCupcake") == 0) || (@Q_status != @Q_STATUS_WANTS_ORANGECUPCAKE)) - goto L_M_no_cupcake; - set @choice_idx[@choices_nr], @M_CUPCAKE; - set @choice$[@choices_nr], "Would you like special orange cupcake?"; - set @choices_nr, @choices_nr + 1; - goto L_M_no_cupcake; - -L_M_no_cupcake: - set @choice_idx[@choices_nr], 0; - set @choice$[@choices_nr], "Goodbye."; - set @choices_nr, @choices_nr + 1; - - menu - @choice$[0], L_MenuItems, - @choice$[1], L_MenuItems, - @choice$[2], L_MenuItems, - @choice$[3], L_MenuItems, - @choice$[4], L_MenuItems, - @choice$[5], L_MenuItems; - -L_MenuItems: - set @choice, @choice_idx[@menu - 1]; - - if (@choice == @M_NAME) goto L_name; - if (@choice == @M_CANDY) goto L_no_candy; - if (@choice == @M_POTION) goto L_potion; - if (@choice == @M_CHOCOCAKE) goto L_chococake; - if (@choice == @M_CUPCAKE) goto L_cupcake; - goto L_Close; - -L_name: - mes "[Kadiya]"; - mes "She smiles a faint smile."; - mes "\"My name is Kadiya.\""; - goto L_Close; - -L_no_candy: - mes "[Kadiya]"; - mes "She hesitates for a moment."; - mes "\"No, thank you. I don't think I should.\""; - goto L_Close; - -L_potion: - mes "[Kadiya]"; - if (@Q_status < @Q_STATUS_DIDNT_DRINK) set @Q_status, @Q_STATUS_DIDNT_DRINK; - callsub S_update_var; - - mes "Kadiya grimaces and pushes the bottle away."; - mes "\"That smells terrible!\""; - next; - mes "[Kadiya]"; - mes "She pulls the sheets over her head."; - mes "\"I won't drink that!\""; - goto L_Close; - -L_chococake: - delitem "LacedChocolateCake", 1; - goto L_do_cure; - -L_cupcake: - delitem "LacedOrangeCupcake", 1; - goto L_do_cure; - -L_do_cure: - if (@Q_status < @Q_STATUS_COMPLETED) set @Q_status, @Q_STATUS_COMPLETED; - callsub S_update_var; - - mes "[Kadiya]"; - mes "Kadiya's eyes widen."; - mes "\"Oh! Daddy, is it okay if I eat this?\""; - mes "Omar nods and smiles. \"You should eat a bit to regain your strength, sweetheart.\""; - next; - mes "[Kadiya]"; - mes "Kadiya devours your gift in just a handful of bites."; - next; - mes "[Kadiya]"; - mes "She smiles. \"Thank you! I feel better already!\"."; - next; - mes "[Kadiya]"; - mes "She looks much healthier, too. Omar walks over and touches her forehead."; - mes "\"Now that is funny – your fever has gone down quite a bit!\""; - mes "He smiles at you. \"Thank you for your help!\""; - next; - mes "[Kadiya]"; - mes "\"You should get some sleep now, sweetheart. I'm sure that you will be better soon.\""; - goto L_Close; - -L_cured: - mes "[Kadiya]"; - mes "Kadiya seems to be sleeping calmly. She looks much less sweaty than earlier; unless you are very much mistaken, her fever has disappeared."; - goto L_Close; - -L_Close: - set @Q_status, 0; - set @Q_MASK, 0; - set @Q_SHIFT, 0; - set @M_NAME, 0; - set @M_CANDY, 0; - set @M_POTION, 0; - set @M_CHOCOCAKE, 0; - set @M_CUPCAKE, 0; - set @choice, 0; - set @choices_nr, 0; - cleararray @choice_idx[0], 0, 7; - cleararray @choice$[0], "", 7; - close; - -S_update_var: - set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); - return; -} diff --git a/world/map/npc/001-2/pauline.txt b/world/map/npc/001-2/pauline.txt new file mode 100644 index 00000000..b8833251 --- /dev/null +++ b/world/map/npc/001-2/pauline.txt @@ -0,0 +1,307 @@ +//Author: tux9th +//This is the continuation of Astral Magic Level 2. +//This uses the QUEST_MAGIC2 variable Nibble 4. +//Quest States: +// @pauline_state 1: Got Magic, started to talk to her about Magic. +// @pauline_state 2: Finished Talking to her about new Astral Spells, learnt invocations. +// @pauline_state 3: Told her the correct ingredients to the Mouboo summon spell. +// @pauline_state 4: Told her the correct ingredients to the Pinkie summon spell. +// +//Variables: +// @pauline_ingredient1$ First ingredient input. +// @pauline_ingredient2$ Second ingredient input. +// @pauline_REWARD amount of XP gained for telling her ingredients for each spell. + +001-2.gat,77,78,0|script|Pauline|208 +{ + +//Bitmasking +// QUEST_MAGIC2 - Nibble4 + set @Pauline_MASK, NIBBLE_4_MASK; + set @Pauline_SHIFT, NIBBLE_4_SHIFT; + + set @pauline_state, ((QUEST_MAGIC2 & @Pauline_MASK) >> @Pauline_SHIFT); + +//Bitmasks END + + set @pauline_REWARD, 10000; + + if (@pauline_state == 4) goto L_MoreMagic; + if (@pauline_state == 3) goto L_KnowIngredientsPinkie; + if (@pauline_state == 2) goto L_Ingredients; + if (@pauline_state == 1) goto L_Back; + + if (getskilllv(SKILL_MAGIC_ASTRAL) > 0) + goto L_Magic; + mes "[Pauline]"; + mes "\"I've mastered several schools of magic and fought the Yeti in Kaizei.\""; + next; + mes "\"The path of magic is a long and difficult one.\""; + goto L_Close; + +L_Magic: + mes "[Pauline]"; + mes "\"Ah. I see you are skilled in the Art of Astral Magic.\""; + mes "\"Who taught you?\""; + menu + "I learnt it myself!", L_Next, + "Sagatha is my teacher.", L_Sagatha, + "You must be mistaken.", L_Close; + +L_Next: + mes "\"You did? Not bad. I guess then there is nothing I can teach you. Or are you interested in sharing knowledge?\""; + menu + "Yes, please.", L_Spells, + "No, thanks.", L_Close; + +L_Sagatha: + mes "[Pauline]"; + mes "\"Ah, that Witch!\""; + mes "\"Very well.\""; + next; + mes "\"Do you want me to teach you things Sagatha doesn't know yet?\""; + next; + menu + "Yes.", L_Spells, + "No.", L_Close; + +L_Back: + mes "[Pauline]"; + mes "\"So, you're back. Are you ready to share knowledge now?\""; + menu + "Yes.", L_Spells, + "No.", L_Close; + +L_Spells: + set @pauline_state, 1; + callsub S_Update_Mask; + mes "[Pauline]"; + mes "\"Okay.\""; + mes "\"Not long ago I discovered some new caves near Tulimshar. In an abandond chamber I found some paintings on the wall.\""; + next; + mes "\"They weren't typical for this region, so I examined them closely. I found some invocations I have never heard before.\""; + mes "\"I thought that they would fit better into the Woodland area. I could only decipher two invocations so far. Those are two spells used to summon creatures.\""; + next; + mes "\"One was for summoning Mouboos and the other one was for summoning Pinkies.\""; + mes "\"Have you ever heared about those?\""; + next; + menu + "Yes. I thought you had something new to tell. [Walk Away]", L_Close, + "No, tell me more.", L_Next1; + +L_Next1: + mes "[Pauline]"; + mes "\"Well I could only read the invocations. So I don't exactly know what kind of ingredients you are going to need.\""; + mes "\"The first one for the mouboo was " + getspellinvocation("summon-mouboo") + " and the one for the pinkie was " + getspellinvocation("summon-pinkie") +".\""; + next; + mes "\"For the pinkie spell my suggestion is to try similar ingredients to the other Astral spells. Try a root and some item typical for pinkies.\""; + mes "\"The mouboo spell might be more complicated. From what I could translate, one of the spell components is crafted by magic.\""; + next; + mes "\"When you find the right ingredients, come back and bring them to me to try those spells out.\""; + next; + mes "\"Goodbye.\""; + set @pauline_state, 2; + callsub S_Update_Mask; + goto L_Close; + +L_Ingredients: + mes "[Pauline]"; + mes "\"Hello, have you found out what ingredients to use yet?\""; + menu + "Yes.", L_KnowIngredientsMouboo, + "No.", L_Next2; + +L_Next2: + mes "\"Okay. Come back as soon as you know.\""; + goto L_Close; + +L_KnowIngredientsMouboo: + mes "\"Did you bring them?\""; + menu + "Yes." , L_Next3, + "No.", L_ComeBackLater; + +L_Next3: + mes "\"Then tell me the ingredients for the mouboo summoning spell and give them to me. Start with the first ingredient and then tell me the second one separately.\""; + next; + mes "This is case sensitive. Also do not enter whitespaces."; + next; + input @pauline_ingredient1$; + mes "Next ingredient."; + input @pauline_ingredient2$; + if (@pauline_ingredient1$ == "") + goto L_Wrong; + if (@pauline_ingredient2$ == "") + goto L_Wrong; + if (countitem(@pauline_ingredient1$) < 1) + goto L_NotEnough; + if (countitem(@pauline_ingredient2$) < 1) + goto L_NotEnough; + mes "\"Do you want to give me these items?\""; + menu + "No.", L_ComeBackLater, + "Yes.", L_Next4; + +L_Next4: + delitem @pauline_ingredient1$, 1; + delitem @pauline_ingredient2$, 1; + mes "\"Okay let me try this.\""; + if (@pauline_ingredient1$ == "Root") + goto L_Pass1Mouboo; + if (@pauline_ingredient1$ == "MoubooFigurine") + goto L_Pass2Mouboo; + goto L_DidNotWorkMouboo; + +L_DidNotWorkMouboo: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-mouboo") + "."; + mes "Nothing happens."; + mes "[Pauline]"; + mes "\"It seems you did not tell me the correct ingredients. Come back when you find the correct ones.\""; + goto L_Close; + +L_Pass1Mouboo: + if (@pauline_ingredient2$ == "MoubooFigurine") + goto L_TrySpellMouboo; + goto L_DidNotWorkMouboo; + +L_Pass2Mouboo: + if (@pauline_ingredient2$ == "Root") + goto L_TrySpellMouboo; + goto L_DidNotWorkMouboo; + +L_TrySpellMouboo: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-mouboo") + "."; + monster "001-1.gat", 55,68, "Good", 1028, 1; + mes "[Pauline]"; + mes "\"It worked!\""; + set @pauline_state, 3; + callsub S_Update_Mask; + getexp @pauline_REWARD, 0; + goto L_Close; + +L_KnowIngredientsPinkie: + mes "[Pauline]"; + mes "\"Now give me the ingredients for the pinkie spell.\""; + next; + mes "This is case sensitive. Also do not enter whitespaces."; + input @pauline_ingredient1$; + mes "Next ingredient."; + input @pauline_ingredient2$; + if (@pauline_ingredient1$ == "") + goto L_Wrong; + if (@pauline_ingredient2$ == "") + goto L_Wrong; + if (countitem(@pauline_ingredient1$) < 1) + goto L_NotEnough; + if (countitem(@pauline_ingredient2$) < 1) + goto L_NotEnough; + mes "\"Do you want to give me these items?\""; + menu + "No.", L_ComeBackLater, + "Yes.", L_Next5; + +L_Next5: + delitem @pauline_ingredient1$, 1; + delitem @pauline_ingredient2$, 1; + mes "\"Okay, let me try this.\""; + if (@pauline_ingredient1$ == "Root") + goto L_Pass1Pinkie; + if (@pauline_ingredient1$ == "PinkAntenna") + goto L_Pass2Pinkie; + goto L_DidNotWorkPinkie; + +L_DidNotWorkPinkie: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-pinkie") + "."; + mes "Nothing happens."; + mes "[Pauline]"; + mes "\"It seems you did not tell me the correct ingredients. Come back when you find the correct ones.\""; + goto L_Close; + +L_Pass1Pinkie: + if (@pauline_ingredient2$ == "PinkAntenna") + goto L_TrySpellPinkie; + goto L_DidNotWorkPinkie; + +L_Pass2Pinkie: + if (@pauline_ingredient2$ == "Root") + goto L_TrySpellPinkie; + goto L_DidNotWorkPinkie; + +L_TrySpellPinkie: + mes "The Witch takes " + @pauline_ingredient1$ + " and " + @pauline_ingredient2$ + " and puts them together calling " + getspellinvocation("summon-pinkie") + "."; + monster "001-1.gat", 54,68, "Good", 1018, 1; + mes "[Pauline]"; + mes "\"It worked!\""; + set @pauline_state, 4; + callsub S_Update_Mask; + getexp @pauline_REWARD, 0; + goto L_Close; + +L_MoreMagic: + mes "[Pauline]"; + mes "\"Thanks for telling me the ingredients. As soon as I find out more about those wall paintings I will let you know.\""; + goto L_Close; + +L_Wrong: + mes "The Witch looks at you and snorts."; + mes "[Pauline]"; + mes "\"You told me the wrong ingredients. Come back as soon as you know the correct ones.\""; + goto L_Close; + +L_NotEnough: + mes "[Pauline]"; + mes "\"Hey, you don't have this with you!\""; + mes "\"Come back when you have the right ingredients.\""; + goto L_Close; + +L_ComeBackLater: + mes "[Pauline]"; + mes "\"Then come back later.\""; + goto L_Close; + +L_Close: + set @pauline_ingredient1$, ""; + set @pauline_ingredient2$, ""; + set @pauline_state, 0; + set @pauline_REWARD, 0; + close; + +//Bitmasks +S_Update_Mask: + set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Pauline_MASK)) | (@pauline_state << @Pauline_SHIFT); + return; +} + +001-2.gat,79,74,0|script|PaulineDebug|208 +{ +//load Bitmasks; + set @Pauline_MASK, NIBBLE_4_MASK; + set @Pauline_SHIFT, NIBBLE_4_SHIFT; + + set @pauline_state, ((QUEST_MAGIC2 & @Pauline_MASK) >> @Pauline_SHIFT); + + mes "Reset Quest State"; + mes @pauline_state; + menu + "Yes.", L_Next, + "No.", L_Close; + +L_Next: + set @pauline_state, 0; + callsub S_Update_Mask; + mes "Done"; + close; + +L_Close: + set @pauline_state, 0; + close; + +S_Update_Mask: + set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Pauline_MASK)) | (@pauline_state << @Pauline_SHIFT); + return; + +OnInit: + if (!debug) + disablenpc "PaulineDebug"; + end; +} diff --git a/world/map/npc/001-2/phaet.txt b/world/map/npc/001-2/phaet.txt deleted file mode 100644 index aa0c9848..00000000 --- a/world/map/npc/001-2/phaet.txt +++ /dev/null @@ -1,30 +0,0 @@ -// - -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.\""; - next; - menu - "Yes", L_Sure, - "No", L_Next; - -L_Next: - mes "[Phaet the Royal Guard]"; - mes "\"Ha ha, coward.\""; - close; - -L_Sure: - if (Zeny < 50) goto L_NoMoney; - set Zeny, Zeny - 50; - - mes "[Phaet the Royal Guard]"; - mes "\"Get ready!\""; - next; - warp "001-3.gat", 0, 0; - close; - -L_NoMoney: - mes "\"Wait a second, you don't have enough money.\""; - close; -} diff --git a/world/map/npc/001-2/sandra.txt b/world/map/npc/001-2/sandra.txt new file mode 100644 index 00000000..48632e58 --- /dev/null +++ b/world/map/npc/001-2/sandra.txt @@ -0,0 +1,118 @@ +// Variables used: nibble 3 of QUEST_SouthTulimshar + +001-2.gat,98,88,0|script|Sandra|114 +{ + // This NPC previously used the variable TMW_Quest + callfunc "ClearVarTMW_Quest"; + + set @state, ((QUEST_SouthTulimshar & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT); + + if (@state >= 2) goto L_Done; + if (@state == 1) goto L_Progress; + + mes "[Sandra]"; + mes "\"Hunting monsters for potion ingredients can sometimes be a difficult task.\""; + next; + + set @TEMP, rand(4); + if(@TEMP == 1) goto L_Opening1; + if(@TEMP == 2) goto L_Opening2; + if(@TEMP == 3) goto L_Opening3; + goto L_Opening0; + +L_Opening0: + mes "\"In the outskirts of Tulimshar, there are some scorpions... I need help! Will you help?\""; + next; + goto L_Ask; + +L_Opening1: + mes "\"When you venture to the outskirts of Tulimshar, you can spot scorpions. Will you help me kill some?\""; + next; + goto L_Ask; + +L_Opening2: + mes "\"The Scorpion Stinger carries many properties used in potions. Would you get some for me?\""; + next; + goto L_Ask; + +L_Opening3: + mes "\"You look sturdy enough, will you help me get something?\""; + next; + goto L_Ask; + +L_Ask: + menu + "Yes.", L_Yes, + "No.", L_Close; + +L_Yes: + set @TEMP, rand(3); + if(@TEMP == 1) goto L_Req1; + if(@TEMP == 2) goto L_Req2; + goto L_Req0; + +L_Req0: + mes "[Sandra]"; + mes "\"I need 5 Scorpion Stingers.\""; + next; + goto L_Set; + +L_Req1: + mes "[Sandra]"; + mes "\"I heard a while ago that stingers from scorpions can be used for medical purposes. I need you to help me get 5 Scorpion Stingers.\""; + next; + goto L_Set; + +L_Req2: + mes "[Sandra]"; + mes "\"Bring me 5 Scorpion Stingers. I'll give you something if you do!\""; + next; + goto L_Set; + +L_Set: + set @state, 1; + callsub S_Update_Var; + mes "\"Please get them for me!\""; + goto L_Close; + +L_Progress: + if (countitem("ScorpionStinger") < 5) + goto L_NotEnough; + mes "[Sandra]"; + mes "\"Excellent! You brought me 5 Scorpion Stingers!"; + mes "Here's something for you.\""; + getinventorylist; + if (@inventorylist_count + (countitem("ScorpionStinger") == 5) - (countitem("Arrow") == 0) > 99) + goto L_TooMany; + delitem "ScorpionStinger", 5; + getitem "Bow", 1; + getitem "Arrow", 100; + set @state, 2; + callsub S_Update_Var; + goto L_Close; + +L_NotEnough: + mes "[Sandra]"; + mes "\"Please hurry and bring me 5 Scorpion Stingers.\""; + goto L_Close; + +L_Done: + mes "[Sandra]"; + mes "\"Thank you for all your help!\""; + goto L_Close; + +L_Close: + set @TEMP, 0; + set @state, 0; + close; + +L_TooMany: + next; + mes "[Sandra]"; + mes "\"You don't have room for my reward. I'll wait until you do.\""; + goto L_Close; + +S_Update_Var: + set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_3_MASK) | (@state << NIBBLE_3_SHIFT)); + return; +} diff --git a/world/map/npc/001-2/shops.txt b/world/map/npc/001-2/shops.txt deleted file mode 100644 index 9d71508d..00000000 --- a/world/map/npc/001-2/shops.txt +++ /dev/null @@ -1,3 +0,0 @@ -// Bartender - -001-2.gat,21,27,0|shop|Bartender#Casino|112,Beer:*175,Cake:*30,CherryCake:*100 diff --git a/world/map/npc/001-2/tathin.txt b/world/map/npc/001-2/tathin.txt new file mode 100644 index 00000000..491eb151 --- /dev/null +++ b/world/map/npc/001-2/tathin.txt @@ -0,0 +1,29 @@ +001-2.gat,28,21,0|script|Tathin|107 +{ + mes "[Tathin]"; + mes "\"Hello what Can I do for you?\""; + next; + + menu + "I'd like to join a party.", L_Give_Party, + "I'd like to create my own party.", L_Give_Make_Party, + "Nothing, I guess.", L_Close; + +L_Give_Party: + mes "[Tathin]"; + mes "\"You'll need to be invited by an existing member of a party to join it. You may also create your own party.\""; + next; + mes "[Tathin]"; + mes "\"Remember, parties cannot share experience if any members are more than 10 levels apart.\""; + menu + "I'd like to create my own party.", L_Give_Make_Party, + "Goodbye.", L_Close; + +L_Give_Make_Party: + mes "[Tathin]"; + mes "\"You can create parties with the 'new' or 'create' commands on the Party tab in the client. Parties need to have unique names.\""; + close; + +L_Close: + close; +} diff --git a/world/map/npc/001-2/tondar.txt b/world/map/npc/001-2/tondar.txt new file mode 100644 index 00000000..5c15dddb --- /dev/null +++ b/world/map/npc/001-2/tondar.txt @@ -0,0 +1,56 @@ +// A professor at Tulimshar's magic academy + +001-2.gat,95,79,0|script|Tondar|168 +{ + mes "[Tondar]"; + mes "\"We're not accepting any new students right now.\""; + if (getskilllv(SKILL_MAGIC) > 0) + goto L_may_ask; + goto L_end; + +L_may_ask: + next; + menu + "Can you teach me a spell?", L_askspell, + "Do you have a magic library?", L_library, + "Are you sure? I can pay well...", L_nopay, + "That's unfortunate.", L_end, + "Goodbye, then.", L_end; + +L_library: + mes "[Tondar]"; + mes "\"Of course we do. It is only for graduate students, alumni, and faculty.\""; + next; + menu + "Thank you, and goodbye.", L_end, + "Nobody else is allowed inside?", L_Next; + +L_Next: + mes "[Tondar]"; + mes "\"Well, it is possible to get a special permit from the headmaster. But he is currently on sabbatical.\""; + close; + +L_askspell: + mes "[Tondar]"; + mes "\"We only teach spells to students.\""; + next; + menu + "Oh, come on... just one little spell!", L_nopay, + "Pretty please?", L_spell, + "I can pay you, too...", L_nopay; + +L_spell: + mes "[Tondar]"; + mes "\"Well, all right; this one can't do much harm. Press your hands together and say `" + getspellinvocation("ask-magic-exp") + "'.\""; + mes "\"This will release a steady flow of magic within you. Focus and try to control it; it is a good meditative practice.\""; + close; + +L_nopay: + mes "[Tondar]"; + mes "The wizard frowns angrily."; + mes "\"Do not tempt me to teach you a different kind of lesson, young one! Begone!\""; + goto L_end; + +L_end: + close; +} diff --git a/world/map/npc/001-2/troupe_leader.txt b/world/map/npc/001-2/troupe_leader.txt deleted file mode 100644 index 64eef7b2..00000000 --- a/world/map/npc/001-2/troupe_leader.txt +++ /dev/null @@ -1,65 +0,0 @@ -// - -001-2.gat,34,23,0|script|Troupe Leader|165 -{ - callfunc "ClearVariables"; - - set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT); - - if (@inspector == 4) goto L_NohMask_Troupe; - if (@inspector == 13) goto L_NohMask_Found; - - mes "[Troupe Leader]"; - mes "\"Hello. I'm the leader of a traveling theater troupe. We'll be staying here in Tulimshar for a while.\""; - goto L_Close; - -L_NohMask_Troupe: - mes "[Troupe Leader]"; - mes "\"Yes, a mask was stolen from us the last night we were in Hurnscald.\""; - next; - menu - "Any ideas on who might have taken it?", L_NohMask_Idea, - "Are you sure one of your troupe members didn't hide it and commit those robberies?", L_NohMask_Accuse, - "Hmm...", L_Close; - -L_NohMask_Idea: - set @inspector, 5; - callsub S_Update_Mask; - mes "[Troupe Leader]"; - mes "\"Hm...I did see an old man hang out near the theater after our last show.\""; - goto L_Close; - -L_NohMask_Accuse: - mes "[Troupe Leader]"; - mes "\"I am absolutely positive. None of my troupe have left the city since we got here. Good day!\""; - goto L_Close; - -L_NohMask_Found: - mes "[Troupe Leader]"; - mes "\"Thank you for finding the mask. You did such a good job, you should keep it.\""; - getinventorylist; - if (@inventorylist_count == 100) goto L_NohMask_TooMany; - mes "[1500 experience points]"; - getexp 1500, 0; - set @inspector, 14; - callsub S_Update_Mask; - getitem "NohMask", 1; - next; - mes "[Troupe Leader]"; - mes "\"We don't need it anymore. We're doing different shows here.\""; - goto L_Close; - -L_NohMask_TooMany: - next; - mes "[Troupe Leader]"; - mes "\"Except, you don't seem to have any room for it. I'll hold onto it for you until you do have room.\""; - goto L_Close; - -L_Close: - set @inspector, 0; - close; - -S_Update_Mask: - set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT); - return; -} diff --git a/world/map/npc/001-2/wizards.txt b/world/map/npc/001-2/wizards.txt new file mode 100644 index 00000000..587c999c --- /dev/null +++ b/world/map/npc/001-2/wizards.txt @@ -0,0 +1,60 @@ +// Council of Ruling Wizards Room + +// manaseed +001-2.gat,104,19,0|script|Desert Mana Seed#_M|166 +{ + end; +} + +// +001-2.gat,99,22,0|script|Wizard#1|355 +{ + end; +} + +// +001-2.gat,92,24,0|script|Wizard#2|356 +{ + end; +} + +// +001-2.gat,92,30,0|script|Wizard#3|357 +{ + end; +} + +// +001-2.gat,99,32,0|script|Wizard#4|358 +{ + end; +} + +// +001-2.gat,110,22,0|script|Wizard#5|359 +{ + end; +} + +// +001-2.gat,117,24,0|script|Wizard#6|360 +{ + end; +} + +// +001-2.gat,117,30,0|script|Wizard#7|361 +{ + end; +} + +// +001-2.gat,110,32,0|script|Wizard#8|362 +{ + end; +} +// +001-2.gat,104,27,0|script|Arch-Wizard#9|354 +{ + end; +} diff --git a/world/map/npc/001-2/yanis.txt b/world/map/npc/001-2/yanis.txt new file mode 100644 index 00000000..67175704 --- /dev/null +++ b/world/map/npc/001-2/yanis.txt @@ -0,0 +1,47 @@ +// Government official taking care about shop licenses +// involved in quest given by 021-1/imec.txt and 021-2/kylian.txt + +001-2.gat,31,21,0|script|Yanis|107 +{ + set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowYanisNT; + set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); + set @imec, ((QUEST_NorthTulimshar & TWOBIT_4_MASK) >> TWOBIT_4_SHIFT); + set @halloween_npc_id, $@halloween_npc_yanis; + callfunc "TrickOrTreat"; + + goto L_Base_Menu; + +L_Base_Menu: + + mes "[Yanis]"; + mes "\"Welcome. I'm handling issues with trading licenses for the shop owners in Tulimshar. Can I help you?\""; + if (@imec != 1) + menu + "Nothing right now.",L_BeforeClose; + menu + "Imec asked me to bring this petition.",L_Next, + "Nothing right now.",L_BeforeClose; + +L_Next: + mes "[Yanis]"; + mes "\"Imec? I see. Give it to me.\""; + mes "Yanis has a disapproving look on his face. He takes the letter and writes something on another paper."; + next; + mes "[Yanis]"; + mes "\"Here you have a letter of acknowledgement. You can bring that back to Imec. We will have a look at his case.\""; + set @imec, 2; + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_4_MASK)) | (@imec << TWOBIT_4_SHIFT); + goto L_BeforeClose; + +L_BeforeClose: + if (@kylian != 3) + goto L_Close; + next; + mes "You think that this is the person Kylian needs to talk to. You should tell him."; + goto L_Close; + +L_Close: + set @imec, 0; + set @kylian, 0; + close; +} diff --git a/world/map/npc/001-3/_warps.txt b/world/map/npc/001-3/_warps.txt index e8e35ee1..66eb5137 100644 --- a/world/map/npc/001-3/_warps.txt +++ b/world/map/npc/001-3/_warps.txt @@ -1,4 +1,4 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Tulimshar Arena warps -001-3.gat,73,28|warp|To Tulimshar Indoor|-1,-1,001-2.gat,23,24 +001-3.gat,73,28|warp|To Tulimshar Indoor|-1,-1,002-2.gat,74,59 diff --git a/world/map/npc/001-3/guards.txt b/world/map/npc/001-3/guards.txt index c02a9a17..e6b11a0f 100644 --- a/world/map/npc/001-3/guards.txt +++ b/world/map/npc/001-3/guards.txt @@ -16,7 +16,7 @@ L_Sure: mes "\"Ok.\""; next; if(DUELS & $@DuelPvpBit) goto L_FightClub; - warp "001-2.gat", 25, 23; + warp "002-2.gat", 74, 59; close; L_FightClub: diff --git a/world/map/npc/001-3/mapflags.txt b/world/map/npc/001-3/mapflags.txt index 75eb45d1..7f8170b1 100644 --- a/world/map/npc/001-3/mapflags.txt +++ b/world/map/npc/001-3/mapflags.txt @@ -1 +1,2 @@ -001-3.gat|mapflag|nosave|001-2,128,24 +001-3.gat|mapflag|nosave|002-2,74,59 +001-3.gat|mapflag|resave|002-2,74,59 diff --git a/world/map/npc/002-2/_import.txt b/world/map/npc/002-2/_import.txt index 0cccabbf..673ba2d1 100644 --- a/world/map/npc/002-2/_import.txt +++ b/world/map/npc/002-2/_import.txt @@ -3,5 +3,22 @@ map: 002-2.gat npc: npc/002-2/_mobs.txt npc: npc/002-2/_warps.txt +npc: npc/002-2/bakery.txt +npc: npc/002-2/barber.txt +npc: npc/002-2/bleacher.txt +npc: npc/002-2/casino.txt +npc: npc/002-2/dedication.txt +npc: npc/002-2/eurni.txt +npc: npc/002-2/hetchel.txt +npc: npc/002-2/imec.txt +npc: npc/002-2/inya.txt +npc: npc/002-2/kps.txt +npc: npc/002-2/kylian.txt +npc: npc/002-2/latoy.txt npc: npc/002-2/mapflags.txt -npc: npc/002-2/traveler.txt +npc: npc/002-2/omar.txt +npc: npc/002-2/phaet.txt +npc: npc/002-2/rebecca.txt +npc: npc/002-2/shops.txt +npc: npc/002-2/stranger.txt +npc: npc/002-2/troupe_leader.txt diff --git a/world/map/npc/002-2/_warps.txt b/world/map/npc/002-2/_warps.txt index e370ad8f..fc78534b 100644 --- a/world/map/npc/002-2/_warps.txt +++ b/world/map/npc/002-2/_warps.txt @@ -1,4 +1,22 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Sandstorm Desert Indoors warps -002-2.gat,28,30|warp|To Sand Storm|-1,-1,002-1.gat,104,93 +002-2.gat,44,34|warp|Outside|-1,-1,002-1.gat,73,36 +002-2.gat,44,20|warp|First Floor|0,-1,002-2.gat,45,78 +002-2.gat,46,79|warp|First Floor|0,-1,002-2.gat,43,21 +002-2.gat,46,55|warp|Penthouse|0,-1,002-2.gat,44,109 +002-2.gat,45,110|warp|Second Floor|0,-1,002-2.gat,45,56 +002-2.gat,23,110|warp|Outside|-1,-1,002-1.gat,67,30 +002-2.gat,34,20|warp|Casino|-1,-1,002-2.gat,79,69 +002-2.gat,37,20|warp|Theatre|-1,-1,002-2.gat,72,31 +002-2.gat,72,32|warp|First Floor|-1,-1,002-2.gat,37,21 +002-2.gat,79,70|warp|First Floor|-1,-1,002-2.gat,34,21 +002-2.gat,40,20|warp|Salon|-1,-1,002-2.gat,126,35 +002-2.gat,126,36|warp|First Floor|-1,-1,002-2.gat,40,21 +002-2.gat,75,101|warp|Outside|-1,-1,002-1.gat,109,46 +002-2.gat,83,101|warp|Outside|-1,-1,002-1.gat,115,46 +002-2.gat,78,132|warp|Outside|-1,-1,002-1.gat,114,36 +002-2.gat,68,121|warp|Outside|-1,-1,002-1.gat,110,28 +002-2.gat,120,67|warp|Outside|-1,-1,002-1.gat,99,44 +002-2.gat,120,95|warp|Outside|-1,-1,002-1.gat,57,36 +002-2.gat,119,132|warp|To Outside|-1,-1,002-1.gat,57,27 diff --git a/world/map/npc/002-2/bakery.txt b/world/map/npc/002-2/bakery.txt new file mode 100644 index 00000000..b97c41c1 --- /dev/null +++ b/world/map/npc/002-2/bakery.txt @@ -0,0 +1,158 @@ +// The bakery + +// The chef +002-2.gat,21,22,0|script|Riskim|148 +{ + mes "[Riskim]"; + mes ""; + mes "\"Welcome to our bakery!\""; + + callfunc "KadiyaSubquestConsts"; + if ((@Q_kadiya_status == @Q_STATUS_WANTS_CHOCOCAKE) + && (countitem ("MopoxCurePotion") > 0)) + goto L_lace_chococake; + + if ((@Q_kadiya_status == @Q_STATUS_WANTS_ORANGECUPCAKE) + && (countitem ("MopoxCurePotion") > 0)) + goto L_lace_cupcake; + + mes "\"Would you mind bringing me 6 acorns please? I need them to make flour for the chocolate cakes. I will be so delicious!\""; + next; + mes "\"Um, I mean, the cakes will be delicious...\""; + emotion EMOTE_BLUSH; + next; + + set @dq_level, 15; + set @dq_cost, 3; + set @dq_count, 6; + set @dq_name$, "Acorn"; + set @dq_friendly_name$, "acorns"; + set @dq_money, 250; + set @dq_exp, 50; + + callfunc "DailyQuest"; + + next; + mes "\"And don't forget, our bakery is the best!\""; + close; + +L_lace_chococake: + next; + menu + "Thanks! Let me have a look around...", L_End, + "Can you put this potion into a Chocolate Cake?", L_Next, + "Goodbye!", L_End; + +L_Next: + mes "[Riskim]"; + mes ""; + mes "As you show Riskim the potion, he leans back, away from it."; + mes "\"Ooooh, I remember that smell...\""; + mes "\"Elanore's Mopox potion, right? She made me drink that, too...\""; + mes "He chuckles."; + mes "\"Yes, well, you do want to hide that somehow.\""; + next; + mes "[Riskim]"; + mes ""; + mes "\"We'll need extra chocolate for that one. If you can give me ten pieces of chocolate and that potion, plus 400 GP, I will bake you a special Chocolate Cake that hides the taste.\""; + next; + menu + "I will get them for you.", L_End, + "Here you are!", L_Continue, + "Maybe later.", L_End; + +L_Continue: + if (countitem("ChocolateBar") < 10) + goto L_lacking_ingredients; + if (countitem("MopoxCurePotion") < 1) + goto L_lacking_ingredients; + if (Zeny < 400) + goto L_lacking_Zeny; + delitem "MopoxCurePotion", 1; + delitem "ChocolateBar", 10; + getitem "LacedChocolateCake", 1; + set Zeny, Zeny - 400; + + mes "[Riskim]"; + mes ""; + mes "\"Please have a seat!\""; + mes "You watch as Riskim melts the chocolate and stirs in the potion, then glazes a cake with the mixture."; + mes "\"It's a bit more chocolatey than your average chocolate cake, of course...\""; + next; + mes "[Riskim]"; + mes ""; + mes "Riskim hands you the cake."; + mes "\"Here you are. I hope that this works.\""; + close; + +L_lacking_Zeny: + mes "[Riskim]"; + mes ""; + mes "\"I'm sorry, but I have to charge 400 GP.\""; + close; + +L_lacking_ingredients: + mes "[Riskim]"; + mes ""; + mes "\"Sorry, but I need ten Chocolate Bars AND your cure potion for this. Please come back later when you have everything.\""; + close; + +L_lace_cupcake: + next; + menu + "Thanks! Let me have a look around...", L_End, + "Can you put this potion into an Orange Cupcake?", L_More, + "Goodbye!", L_End; + +L_More: + mes "[Riskim]"; + mes ""; + mes "\"Orange Cupcakes? Oh dear... I'm sorry, but I have a very bad orange allergy.\""; + next; + mes "[Riskim]"; + mes ""; + mes "\"Perhaps the Chef at Dimond's Cove can help you? We get all our cupcakes from him.\""; + next; + goto L_End; + +L_End: + close; +} + +// Server +002-2.gat,28,31,0|script|Sara|108 +{ + mes "[Sara]"; + mes ""; + mes "\"Hello!\""; + close; +} + +// The cashier +002-2.gat,25,22,0|shop|Drabur|112,WhiteCake:*500,ChocolateCake:*550,OrangeCake:*600,AppleCake:*600,Cake:*30,CherryCake:*100,OrangeCupcake:*270,Milk:*1500,XmasCake:*70 + +// Bus boy +002-2.gat,21,28,0|script|Iormo|160 +{ + mes "[Iormo]"; + mes ""; + mes "\"This room can get messy.\""; + close; +} + +// An old couple eating at the bakery +002-2.gat,24,27,0|script|Rynoh|159 +{ + mes "[Rynoh]"; + mes ""; + mes "\"The cakes may be expensive, but they sure are delicious!\""; + close; +} + +002-2.gat,26,27,0|script|Ontas|154 +{ + mes "[Ontas]"; + mes ""; + mes "\"We come here every week. This place has some of the best bread I've ever eaten!\""; + close; +} diff --git a/world/map/npc/002-2/barber.txt b/world/map/npc/002-2/barber.txt new file mode 100644 index 00000000..eb1a5821 --- /dev/null +++ b/world/map/npc/002-2/barber.txt @@ -0,0 +1,12 @@ +// A barber (later we can make it so certain styles need to come from him, for a price) +002-2.gat,117,30,0|script|Issay|156 +{ + mes "[Issay the Barber]"; + mes "\"Do you need a change of style?\""; + next; + callfunc "Barber"; + mes "[Issay the Barber]"; + mes "\"Come again!\""; + close; +} + diff --git a/world/map/npc/002-2/bleacher.txt b/world/map/npc/002-2/bleacher.txt new file mode 100644 index 00000000..3391a62c --- /dev/null +++ b/world/map/npc/002-2/bleacher.txt @@ -0,0 +1,293 @@ +// + +002-2.gat,72,92,0|script|Candide|156 +{ + mes "[Candide]"; + mes "\"I've figured out how that volcanic ash bleaches cloth."; + mes "I could do it for you, but I'll need three piles of ash and 5,000 GP for supplies per item.\""; + next; + + if (countitem("PileOfAsh") < 3) goto L_no_ash; + + if (Zeny < 5000) goto L_no_money; + + menu + "I'd like to bleach something.", L_bleach_menu, + "No thanks.", L_Close; + +L_bleach_menu: + mes "[Candide]"; + mes "\"What would you like to bleach?\""; + next; + + menu + "Cotton shirt.", L_cottonshirt, + "Contributor shirt.", L_contributor, + "V-Neck sweater.", L_vneck, + "Turtleneck sweater.", L_tneck, + "Cotton shorts.", L_shorts, + "Cotton trousers.", L_trousers, + "Cotton skirt.", L_skirt, + "Miniskirt.", L_miniskirt, + "Tank top .", L_tanktop, + "Short tank top.", L_tanktop_short, + "Silk robe.", L_robe, + "Cotton headband.", L_cotton_headband, + "Desert hat.", L_desert_hat, + "Cotton boots.", L_cotton_boots, + "Cotton gloves.", L_cotton_gloves, + "Rabbit ears.", L_rabbit_ears, + "Wizard hat.", L_wizard_hat, + "Bowler hat.", L_bowler_hat, + "Sorcerer robe.", L_sorcerer_robe, + "Bowler hat (brown).", L_bowler_hat_brown, + "Fine dress.", L_fine_dress, + "Cotton cloth.", L_cotton_cloth, + "Nevermind.", L_Close; + +L_contributor: + set @normal, 1178; + set @dyeBase, 5131; + goto L_choose_color; + +L_cottonshirt: + set @normal, 1202; + set @dyeBase, 2050; + goto L_choose_color; + +L_vneck: + set @normal, 624; + set @dyeBase, 2060; + goto L_choose_color; + +L_tneck: + set @normal, 564; + set @dyeBase, 2070; + goto L_choose_color; + +L_shorts: + set @normal, 586; + set @dyeBase, 2110; + goto L_choose_color; + +L_trousers: + set @normal, 648; + set @dyeBase, 2180; + goto L_choose_color; + +L_skirt: + set @normal, 632; + set @dyeBase, 2100; + goto L_choose_color; + +L_miniskirt: + set @normal, 771; + set @dyeBase, 2170; + goto L_choose_color; + +L_tanktop: + set @normal, 688; + set @dyeBase, 2090; + goto L_choose_color; + +L_tanktop_short: + set @normal, 689; + set @dyeBase, 2120; + goto L_choose_color; + +L_robe: + set @normal, 720; + set @dyeBase, 2080; + goto L_choose_color; + +L_cotton_headband: + set @normal, 724; + set @dyeBase, 2140; + goto L_choose_color; + +L_desert_hat: + set @normal, 723; + set @dyeBase, 2130; + goto L_choose_color; + +L_cotton_boots: + set @normal, 735; + set @dyeBase, 2150; + goto L_choose_color; + +L_cotton_gloves: + set @normal, 741; + set @dyeBase, 2160; + goto L_choose_color; + +L_rabbit_ears: + set @normal, 1255; + set @dyeBase, 2190; + goto L_choose_color; + +L_wizard_hat: + set @normal, 4028; + set @dyeBase, 2200; + goto L_choose_color; + +L_bowler_hat: + set @normal, 4030; + set @dyeBase, 2210; + goto L_choose_color; + +L_sorcerer_robe: + mes "[Candide]"; + mes "\"Which one?\""; + next; + menu + "A red lined one.", L_red_lined_sorcerer_robe, + "A green lined one.", L_green_lined_sorcerer_robe, + "A dark blue lined one.", L_dark_blue_lined_sorcerer_robe, + "A yellow lined one.", L_yellow_lined_sorcerer_robe, + "A light blue lined one.", L_light_blue_lined_sorcerer_robe, + "A pink lined one.", L_pink_lined_sorcerer_robe, + "A black lined one.", L_black_lined_sorcerer_robe, + "An orange lined one.", L_orange_lined_sorcerer_robe, + "A purple lined one.", L_purple_lined_sorcerer_robe, + "A dark green lined one.", L_dark_green_lined_sorcerer_robe, + "A white lined one.", L_white_lined_sorcerer_robe, + "Nevermind.", L_Close; + +L_red_lined_sorcerer_robe: + set @normal, 798; + set @dyeBase, 2220; + goto L_choose_color; + +L_green_lined_sorcerer_robe: + set @normal, 5010; + set @dyeBase, 5000; + goto L_choose_color; + +L_dark_blue_lined_sorcerer_robe: + set @normal, 5021; + set @dyeBase, 5011; + goto L_choose_color; + +L_yellow_lined_sorcerer_robe: + set @normal, 5032; + set @dyeBase, 5022; + goto L_choose_color; + +L_light_blue_lined_sorcerer_robe: + set @normal, 5043; + set @dyeBase, 5033; + goto L_choose_color; + +L_pink_lined_sorcerer_robe: + set @normal, 5054; + set @dyeBase, 5044; + goto L_choose_color; + +L_black_lined_sorcerer_robe: + set @normal, 5065; + set @dyeBase, 5055; + goto L_choose_color; + +L_orange_lined_sorcerer_robe: + set @normal, 5076; + set @dyeBase, 5066; + goto L_choose_color; + +L_purple_lined_sorcerer_robe: + set @normal, 5087; + set @dyeBase, 5077; + goto L_choose_color; + +L_dark_green_lined_sorcerer_robe: + set @normal, 5098; + set @dyeBase, 5088; + goto L_choose_color; + +L_white_lined_sorcerer_robe: + set @normal, 5109; + set @dyeBase, 5099; + goto L_choose_color; + +L_bowler_hat_brown: + set @normal, 800; + set @dyeBase, 2230; + goto L_choose_color; + +L_fine_dress: + set @normal, 870; + set @dyeBase, 2240; + goto L_choose_color; + +L_cotton_cloth: + set @normal, 660; + set @dyeBase, 2250; + goto L_choose_color; + +L_choose_color: + mes "[Candide]"; + mes "\"And the color?\""; + next; + + menu + "Red.", L_MenuItems, + "Green.", L_MenuItems, + "Dark Blue.", L_MenuItems, + "Yellow.", L_MenuItems, + "Light Blue.", L_MenuItems, + "Pink.", L_MenuItems, + "Black.", L_MenuItems, + "Orange.", L_MenuItems, + "Purple.", L_MenuItems, + "Dark Green.", L_MenuItems; + +L_MenuItems: + set @del, @dyeBase + @menu - 1; + + if (countitem(@del) == 0) goto L_no_item; + + if (countitem("PileOfAsh") < 3) goto L_no_ash; + + if (Zeny < 5000) goto L_no_money; + + delitem @del, 1; + getitem @normal, 1; + delitem "PileOfAsh", 3; + set Zeny, Zeny - 5000; + goto L_again; + +L_again: + mes "[Candide]"; + mes "\"Would you like to bleach something else?\""; + next; + + menu + "Yes.", L_bleach_menu, + "No.", L_Close; + +L_no_item: + mes "[Candide]"; + mes "\"You don't have one of those.\""; + next; + + goto L_again; + +L_no_ash: + mes "[Candide]"; + mes "\"You don't have enough ash for me to bleach anything."; + mes "I need three piles.\""; + goto L_Close; + +L_no_money: + mes "[Candide]"; + mes "\"You don't have enough gold for me to bleach anything."; + mes "I need 5,000 GP for supplies.\""; + goto L_Close; + +L_Close: + mes "[Candide]"; + mes "\"Come again.\""; + set @normal, 0; + set @dyeBase, 0; + set @del, 0; + close; +} diff --git a/world/map/npc/002-2/casino.txt b/world/map/npc/002-2/casino.txt new file mode 100644 index 00000000..4733bb63 --- /dev/null +++ b/world/map/npc/002-2/casino.txt @@ -0,0 +1,208 @@ +// Casino + +// takes part in quest given by 021-2/kylian.txt +002-2.gat,79,68,0|script|#CasinoEntrance|32767,13,0 +{ + set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowCasinoNT; + set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); + if (@kylian != 6) + goto L_End; + message strcharinfo(0), "You wonder if Kylian would like to visit the casino in the evening."; + goto L_End; + +L_End: + set @kylian, 0; + end; +} + +002-2.gat,86,29,0|script|Valdo|117 +{ + mes "[Valdo the Worker]"; + mes "\"Please let me work. I'm really in a hurry!\""; + close; +} + +002-2.gat,84,62,0|script|Slots#1|400 +{ + callfunc "SlotMachine"; + close; +} + +002-2.gat,86,62,0|script|Slots#2|400 +{ + callfunc "SlotMachine"; + close; +} + +002-2.gat,88,62,0|script|Slots#3|400 +{ + callfunc "SlotMachine"; + close; +} + +002-2.gat,78,56,0|shop|MoneyChanger|124,CasinoCoins:*10 + +002-2.gat,75,60,0|script|BlackJack|107 +{ + mes "[Croupier]"; + mes "\"Would you like to play Black Jack?"; + mes "You will need 15 casino coins.\""; + next; + menu + "Yes", L_Begin, + "No", L_Close; + +L_Begin: + if(countitem("CasinoCoins") < 15) goto L_NoCoin; + delitem "CasinoCoins", 15; + set @croupier, rand(0, 4); + set @croupier, @croupier + 17; + set @player, rand(4, 21); + mes "\"You got " + @player + " with your cards."; + if(@player == 21) goto L_End; + mes "Do you want another card?\""; + next; + menu + "Yes", L_Another, + "No", L_End; + +L_Another: + set @tempace, rand(2, 11); + if (@tempace == 11) goto L_Ace; + set @player, @player + @tempace; + if (@player > 21) goto L_Lost; + if (@player == 21) goto L_End; + mes "\"You got " + @player + " with your cards."; + mes "Do you want another card?\""; + next; + menu + "Yes", L_Another, + "No", L_End; + +L_End: + if (@player <= @croupier) goto L_Lost; + mes "\"Congratulations, you won!"; + mes "I had " + @croupier + "."; + mes "You get 45 casino coins.\""; + getitem "CasinoCoins", 45; + goto L_Close; + +L_NoCoin: + mes "\"You need at least 15 coins.\""; + goto L_Close; + +L_Lost: + mes "\"I'm sorry but you lost."; + mes "You got " + @player + " with your cards."; + mes "I had " + @croupier + ".\""; + goto L_Close; + +L_Ace: + set @player, @player + 11; + if (@player > 21) set @player, @player - 10; + if (@player > 21) goto L_Lost; + if (@player == 21) goto L_End; + mes "You got " + @player + " with your cards."; + mes "Do you want another card?"; + next; + menu + "Yes", L_Another, + "No", L_End; + +L_Close: + mes "\"As you wish.\""; + set @croupier, 0; + set @player, 0; + set @tempace, 0; + close; +} + +002-2.gat,69,67,0|script|Roulette|107 +{ + mes "[Croupier]"; + mes "\"Good evening monsieur..."; + mes "How much would you like to bet?\""; + next; + menu + "1 coin", L_b1, + "5 coins", L_b5, + "10 coins", L_b10, + "50 coins", L_b50, + "100 coins", L_b100, + "Maybe I'll play later", L_Close; + +L_b1: + set @bet, 1; + goto L_Check; + +L_b5: + set @bet, 5; + goto L_Check; + +L_b10: + set @bet, 10; + goto L_Check; + +L_b50: + set @bet, 50; + goto L_Check; + +L_b100: + set @bet, 100; + goto L_Check; + +L_Check: + if(countitem("CasinoCoins") < @bet) goto L_NoCoin; + delitem "CasinoCoins", @bet; + menu + "Choose a color", L_PickColor, + "Choose a number", L_Number; + +L_PickColor: + menu + "Black", L_Color, + "Red", L_Color; + +L_Color: + set @color,rand(2); + if(@color == 1) goto L_Lost; + mes "You won!"; + getitem "CasinoCoins", @bet * 2; + goto L_Close; + +L_Number: + menu + "0", L_Menuitems, "00", L_Menuitems, "1", L_Menuitems, "2", L_Menuitems, "3", L_Menuitems, "4", L_Menuitems, "5", L_Menuitems, "6", L_Menuitems, "7", L_Menuitems, "8", L_Menuitems, + "9", L_Menuitems, "10", L_Menuitems, "11", L_Menuitems, "12", L_Menuitems, "13", L_Menuitems, "14", L_Menuitems, "15", L_Menuitems, "16", L_Menuitems, "17", L_Menuitems, "18", L_Menuitems, + "19", L_Menuitems, "20", L_Menuitems, "21", L_Menuitems, "22", L_Menuitems, "23", L_Menuitems, "24", L_Menuitems, "25", L_Menuitems, "26", L_Menuitems, "27", L_Menuitems, "28", L_Menuitems, + "29", L_Menuitems, "30", L_Menuitems, "31", L_Menuitems, "32", L_Menuitems, "33", L_Menuitems, "34", L_Menuitems, "35", L_Menuitems, "36", L_Menuitems; + +L_Menuitems: + if (@menu == 1) set @number, 0; + if (@menu == 2) set @number, 37; + if (@menu >= 3) set @number, @menu - 2; + + set @roulette, rand(38); + if (@roulette == 37) mes "The ball stopped on 00"; + if (@roulette < 37) mes "The ball stopped on " + @roulette; + if (@number != @roulette) goto L_Lost; + mes "\"You won!\""; + getitem "CasinoCoins", @bet * 10; + goto L_Close; + +L_NoCoin: + mes "\"You don't have enough coins.\""; + goto L_Close; + +L_Lost: + mes "\"I'm sorry, you lost.\""; + goto L_Close; + +L_Close: + mes "Come again."; + set @number, 0; + set @roulette, 0; + set @color, 0; + set @bet, 50; + close; +} diff --git a/world/map/npc/002-2/dedication.txt b/world/map/npc/002-2/dedication.txt new file mode 100644 index 00000000..4ab9ba22 --- /dev/null +++ b/world/map/npc/002-2/dedication.txt @@ -0,0 +1,10 @@ +// Dedication to Irene Christina + +002-2.gat,116,123,0|script|#IreneDedication|400 +{ + mes "~ Irene Christina ~"; + mes "The song in this house is dedicated to Irene."; + next; + mes "She had seen only twenty hours of this world when she died in her father's arms."; + close; +} diff --git a/world/map/npc/002-2/eurni.txt b/world/map/npc/002-2/eurni.txt new file mode 100644 index 00000000..a084acbc --- /dev/null +++ b/world/map/npc/002-2/eurni.txt @@ -0,0 +1,45 @@ +// + +002-2.gat,22,77,0|script|Eurni|136 +{ + set @halloween_npc_id, $@halloween_npc_eurni; + callfunc "TrickOrTreat"; + + if (BaseLevel < 10) goto L_TooYoung; + if (Zeny < 10000) goto L_NoMoney; + + mes "[Eurni the Surgeon]"; + mes "\"Are you tired of being what you are?\""; + next; + + mes "[Eurni the Surgeon]"; + mes "\"Would you maybe be interested in a sex change?\""; + next; + + mes "[Server]"; + mes "Warning: All characters under this login will be changed. Once it's done, you will be kicked from the server. Don't panic, as everything is fine."; + next; + menu + "Please do, my dear...", L_Change, + "Leave alone my family treasure!", L_Close; + +L_Change: + if (Zeny < 10000) + goto L_NoMoney; + set Zeny, Zeny - 10000; + changesex; + close; + +L_TooYoung: + mes "[Eurni the Surgeon]"; + mes "\"Move along, kid.\""; + close; + +L_NoMoney: + mes "[Eurni the Surgeon]"; + mes "\"You don't have enough to pay for my services.\""; + close; + +L_Close: + close; +} diff --git a/world/map/npc/002-2/hetchel.txt b/world/map/npc/002-2/hetchel.txt new file mode 100644 index 00000000..b595bd88 --- /dev/null +++ b/world/map/npc/002-2/hetchel.txt @@ -0,0 +1,445 @@ +// Hetchel the Silk Weaver +// bh28 +// 2013-03, GPLv2. +// +// Hetchel is referred to by Lora Tay. +// She weaves and sells standard double elbow square silk sheets. +// She could also sell, dyed sheets, Silk robes from Lora Tay. +// (6000 with cocoons, 40000 (?) with no cocoons). +// +// @wg_state: variable indicating winter gloves status. +// Lora Tay proposes silk Robe if (@wg_state>= 11). +// @SHEET_COCOONS_NR:* Number of cocoons required per sheet. +// Might ne calculated from @ROBE_COCOONS_NR/@ROBE_SHEETS_NR +// Actually: 150∕6 = 25 +// @SHEET_ZENY :* Money to pay per sheet: A sixth of 10000-2*500-6000 +// @SheetCount Number of sheets to buy (variable). +// +// @silkpants_state: variable indicating silkpant quest status. + +002-2.gat,76,92,0|script|Hetchel|376 +{ + set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT); + set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); + set @SHEET_COCOONS_NR, 25; + set @SHEET_ZENY, 500; + set @spants_minlvl, 45; + setarray @spants_req_hmn$, "Silk Cocoons", "Pieces of Cotton Cloth", "Silk Headbands"; + setarray @spants_req$, "SilkCocoon", "CottonCloth", "SilkHeadband"; + setarray @spants_req_amt, 154, 14, 2; + set @spants_reward, 45000; + set @spants_job_reward, 10000; + set @SheetCount, 0; + + if (@wg_state < 11) + goto L_WG_quest_not_done; + if ( BaseLevel > @spants_minlvl && @spants_state < 1 ) goto L_Spants_Cry; + if ( @spants_state == 1 ) goto L_Spants_Cry_2; + if ( @spants_state == 2 ) goto L_Spants_Start; + if ( @spants_state > 2 && @spants_state < 8 ) goto L_Spants_Steal; + if ( @spants_state == 8 ) goto L_Spants_Make; + + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; + menu + "Sorry to bother, I'm just visiting.", L_Close, + "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu; + +L_WG_quest_not_done: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles."; + mes "My best client is Lora Tay, at Dimond's."; + mes "What can I do for you?\""; + menu + "Sorry to bother, I'm new to this country, just visting.", L_Close, + "What are you selling?", L_main_menu; + +L_Spants_Cry: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; + menu + "Sorry to bother, I'm just visiting.", L_Close, + "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_Spants_Cry_Cont_1; + +L_Spants_Cry_2: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; + menu + "Sorry to bother, I'm just visiting.", L_Close, + "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, + "Hey you have been crying so badly, can I help you somehow?", L_Spants_Reply_Cry, + "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears; + +L_Spants_Start: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; + menu + "Sorry to bother, I'm just visiting.", L_Close, + "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, + "So you are looking for new goals in your life?", L_Spants_No_Cry; + +L_Spants_Steal: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; + menu + "Sorry to bother, I'm just visiting.", L_Close, + "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, + "About the Pants...", L_Spants_Steal_Cont; + +L_Spants_Make: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; + menu + "Sorry to bother, I'm just visiting.", L_Close, + "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, + "Hey what about the Pants you were planning to make?", L_Spants_Make_Cont; + +L_Spants_Cry_Cont_1: + mes "You notice how the tiny woman blushes, she suddenly bursts into tears."; + next; + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Hello\""; + mes "Hetchel hides her face in her hands"; + mes ""; + mes ""; + menu + "\"Hey, what is the problem?\"", L_Spants_Reply_Cry, + "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears, + "\"Oh really? Just sell me some Silk Sheets if you have them\"", L_main_menu; + +L_Spants_Wipe_Tears: + mes "Hand Hetchel a (please type the Item you want to give her)"; + next; + mes "This is case sensitive. Also do not enter whitespaces."; + input @spants_wipe_thingy$; + if (@spants_wipe_thingy$ == "") goto L_Spants_Wrong; + if (countitem(@spants_wipe_thingy$) < 1) goto L_Spants_No_Item; + if (@spants_wipe_thingy$ == "RedCottonCloth") goto L_Spants_Wipe_Tears_Cont; + if (@spants_wipe_thingy$ == "RedHitchhikersTowel") goto L_Spants_Wipe_Tears_Towel; + mes "Hetchel looks at you, then looks at the" + @spants_wipe_thingy$ + "."; + mes "She hangs her head and weeps more"; + mes "Red is the only color I have ever loved, bring me something red to dry my tears"; + goto L_Close; + +L_Spants_Wipe_Tears_Towel: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"No, I recognize this towel, it is one of those warping towels, are you trying to mess with me?\""; + goto L_Close; + +L_Spants_Wrong: + mes "It appears you forgot to type the item you want to give."; + goto L_Close; + +L_Spants_No_Item: + mes "Oh you do not have it."; + goto L_Close; + +L_Spants_Wipe_Tears_Cont: + mes "Hetchel dries her tears with the Red Piece of Cloth you gave her."; + mes "This seems to have consoled her."; + delitem "RedCottonCloth", 1; + set @spants_state, 2; + callsub S_Update_Spants; + goto L_Spants_No_Cry; + +L_Spants_No_Cry: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Oh thank you my dear friend."; + mes "Yes, to some extent."; + next; + mes "I am just so sad because I realized that this is going to be the thing I will be doing for the rest of my life\""; + menu + "\"You are still young, Hetchel, You can still accomplish things\"", L_Spants_Cry_Cont_2, + "\"Yes, you are probably correct.\"", L_Close; + +L_Spants_Cry_Cont_2: + mes "[Hetchel the weaver]"; + mes ""; + mes "Hetchel thinks for a while"; + mes ""; + mes "\"Oh my friend, I have been dreaming of making a garment of my own."; + mes "It always bothered me to see all those wizards and witches here being naked under their cloaks\""; + mes "\"They must be so embarrassed - they are true heroes to give up their dignity to be able to fight the perils of this world\""; + mes "Hetchel sobs"; + menu + "\"So you want to make pants for mages?\"", L_Spants_Cry_Cont_3, + "\"This sounds ridiculous. Good Bye.\"", L_Close; + +L_Spants_Cry_Cont_3: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Ok, so I figured I could make some trousers like Lora Tay makes but from the much finer Material the Silk Worms are making for us\""; + mes "\"But I really need the base plans for the trousers, otherwise I do not know how to attempt this."; + mes "Can you get me those plans from her?\""; + menu + "\"No, sorry I am too busy for that\"", L_Close, + "\"Of course!\"", L_Spants_Cry_Cont_4; + +L_Spants_Cry_Cont_4: + set @spants_state, 3; + callsub S_Update_Spants; + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Oh wait! I am not sure if it is such a good idea to ask her about that, I think she would not give the plans to you anyway."; + mes "Maybe you can find a way to get those plans on a different way?"; + mes "I think there are some people in Hurnscald who have their means of getting you every possible item there is\""; + next; + mes "[Hetchel the weaver]"; + mes ""; + mes "Please please please - I need those plans"; + goto L_Close; + +L_Spants_Reply_Cry: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"...\""; + set @spants_state, 1; + callsub S_Update_Spants; + goto L_Close; + + +L_Spants_Steal_Cont: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Have you gotten hold of the plans?\""; + menu + "Yes I have them somewhere here", L_Spants_Steal_Cont2, + "No, not yet", L_Close; + +L_Spants_Steal_Cont2: + if @spants_state < 7 goto L_Spants_No_Item; + set @spants_state, 8; + callsub S_Update_Spants; + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Oh this is miraculous\""; + mes ""; + mes "Hetchel sheds some tears of joy"; + next; + mes "You hand her the crumpled plans Crastur the Ugly gave you."; + next; + mes "[Hetchel the weaver]"; + mes ""; + mes "\"I need to figure out how to do this now... \""; + next; + mes "Hetchel adjusts her glasses and reads carefully"; + next; + mes "She seems to be very busy, maybe you should come back later."; + goto L_Close; + +L_Spants_Make_Cont: + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Yes, I already made a prototype but it cost me a lot of time and effort."; + mes "I can give it to you if you are willing to pay for my expenses though.\""; + menu + "What do you want for those silken pants?", L_Spants_Make_Cont_2, + "No, I am not particularly interested.", L_Close; + +L_Spants_Make_Cont_2: + if(getarraysize(@spants_req_amt) < 3 || getarraysize(@spants_req$) < 3 || getarraysize(@spants_req_hmn$) < 3) + goto L_Spants_Error; + mes "[Hetchel the weaver]"; + mes ""; + mes "\"I need you to bring me " + @spants_req_amt[0] +" "+ @spants_req_hmn$[0] + ", " + @spants_req_amt[1] +" "+ @spants_req_hmn$[1] + " and " + @spants_req_amt[2] +" "+ @spants_req_hmn$[2]; + next; + mes "You will not have to pay for my time, I am so proud to have accomplished this on my own!\""; + menu + "\"I have those items with me\"", L_Spants_Pay, + "\"I am still looking for them\"", L_Close, + "\"What do you need again?\"", L_Spants_Make_Cont_2; + +L_Spants_Pay: + if (countitem(@spants_req$[0]) < @spants_req_amt[0] || countitem(@spants_req$[1]) < @spants_req_amt[1] || countitem(@spants_req$[2]) < @spants_req_amt[2]) + goto L_Spants_No_Item; + getinventorylist; + if (inventorylist_count == 100) goto L_TooMany; + mes "Hetchel takes your items."; + delitem @spants_req$[0], @spants_req_amt[0]; + delitem @spants_req$[1], @spants_req_amt[1]; + delitem @spants_req$[2], @spants_req_amt[2]; + getitem "SilkPants", 1; + set @spants_state, 9; + callsub S_Update_Spants; + next; + mes "[Hetchel the weaver]"; + mes ""; + mes "\"Here are your pants my dear."; + mes "Keep them safe I do not know if I will ever try this again.\""; + getexp @spants_reward, @spants_job_reward; + goto L_Close; + +L_Spants_Error: + mes "Something went wrong in the script, please inform a developer about that"; + close; + +L_main_menu: + mes "[Hetchel]"; + mes "\"I have some silk sheets: double-elbow squares.\""; + menu + "I'm not interested at the moment, maybe later; thanks anyway.", L_Close, + "Can I buy some?", L_Next; +// "Do you have a silk robe I could buy?", L_robe, +// "Goodbye.", L_Close; + +L_Next: + mes "[Hetchel]"; + mes ""; + mes "\"Sure but you need to provide raw materials."; + mes "I'll need " + @SHEET_COCOONS_NR +" silk cocoons per sheet,"; + mes "and also " + @SHEET_ZENY +" GP per sheet for my work.\""; + next; + if (countitem("SilkCocoon") == 0) + goto L_sheet_no_cocoon; + goto L_sheet_menu; + +L_sheet_menu: + menu + "I have what you asked for.", L_Next1, + "Sorry I didn't pay attention enough, what do you need?", L_how_many_cocoons, + "Oops! Sorry, I'll come back soon with them.", L_Close; + +L_Next1: + mes "[Hetchel]"; + mes ""; + mes "\"How many would you like?\""; + input @SheetCount; + if (@SheetCount == 0) + goto L_zero_sheet; + if (countitem("SilkCocoon") < @SheetCount * @SHEET_COCOONS_NR) + goto L_sheet_missing_cocoons; + if (Zeny < @SheetCount * @SHEET_ZENY) + goto L_sheet_missing_Zeny; + getinventorylist; + if (@inventorylist_count == 100 && countitem("SilkSheet") < 1 && countitem("SilkCocoon") > @SheetCount * @SHEET_COCOONS_NR) + goto L_TooMany; + set Zeny, Zeny - @SheetCount * @SHEET_ZENY; + delitem "SilkCocoon", @SheetCount * @SHEET_COCOONS_NR; + getitem "SilkSheet", @SheetCount; + mes "[Hetchel]"; + mes ""; + mes "\"Thank you, I hope the sheets will fit your needs."; + mes "Please greet Lora for me when you see her.\""; + emotion EMOTE_HAPPY; + goto L_Close; + +L_sheet_missing_cocoons: + mes "[Hetchel]"; + mes ""; + mes "\"I'm sorry, but I need " + @SheetCount * @SHEET_COCOONS_NR + ", not " + countitem("SilkCocoon") + ".\""; + goto L_Close; + +L_sheet_missing_Zeny: + mes "[Hetchel]"; + mes ""; + mes "\"No, no no. The way this works is that you give me the GP first and I give you the sheets afterwards."; + mes "You're " + (@SheetCount * @SHEET_ZENY - Zeny) + " GP short, so come back when you can afford the sheets you asked for!\""; + goto L_Close; + +L_how_many_cocoons: + mes "[Hetchel]"; + mes ""; + mes "\"I need an average of " + @SHEET_COCOONS_NR + " cocoons per sheet"; + mes "and also " + @SHEET_ZENY + " GP per sheet for my work.\""; + next; + goto L_sheet_menu; + +L_sheet_no_cocoon: + mes "[Hetchel]"; + mes ""; + mes "\"You don't have any cocoon? I'm sorry I can't do anything for you.\""; + menu + "I'll seek for them.", L_Close, + "Where can I get cocoons?", L_Next2; + +L_Next2: + mes "[Hetchel]"; + mes "\"Silk cocoons come from Silkworms. Silkworms live in the woodland area around Hurnscald."; + mes "Silkworms like especially woods and dark areas. You can go there by ferry.\""; + goto L_Close; + +//L_robe: +// mes "[Hetchel]"; +// mes "\"I am not a seamstress but I have a few silk robes from Lora Tay left."; +// mes "It is not your size as Lora made them for me, but Tondar was kind enough"; +// mes "to cast a spell on it, so that it will fit to you as soon as you wear it."; +// mes "However his prices are not that low.\""; +// next; +// goto L_main_menu; + +L_zero_sheet: + mes "[Hetchel]"; + mes ""; + mes "\"It's the best way to get quickly served!\""; + goto L_Close; + +L_TooMany: + mes "[Hetchel]"; + mes ""; + mes "\"Your bag hasn't room enough. Store some things and come back.\""; + goto L_Close; + +S_Update_Spants: + set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT)); + return; + +L_Close: + set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT)); + set @wg_state, 0; + set @spants_state, 0; + set @spants_minlvl, 0; + set @spants_reward, 0; + set @spants_job_reward, 0; + set @spants_wipe_thingy, ""; + set @SHEET_COCOONS_NR, 0; + set @SHEET_ZENY, 0; + set @SheetCount, 0; + set @wg_state, 0; + close; +} + +002-2.gat,73,95,0|script|HetchelDebug|376 +{ +set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT); +set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); + +mes "Lora Tay Quest State: "+ @wg_state; +mes "Silk Pants Quest State: "+ @spants_state; + +menu + "Set Lora Tay Quest State", L_Lora_Tay, + "Set Silk Pants Quest State", L_Spants, + "Close", L_Close; + +L_Lora_Tay: + mes "Set Lora Tay Visited State (0 - reset , 11 - enough for SilkPants Quest)"; + input @wg_state; + goto L_Close; + +L_Spants: + mes "Set SilkPants Quest State (0 - reset)"; + input @spants_state; + goto L_Close; + +L_Close: + set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT)); + set @wg_state, 0; + set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT)); + set @spants_state, 0; + close; + +OnInit: + if (!debug) + disablenpc "HetchelDebug"; + end; +} diff --git a/world/map/npc/002-2/imec.txt b/world/map/npc/002-2/imec.txt new file mode 100644 index 00000000..851dd49b --- /dev/null +++ b/world/map/npc/002-2/imec.txt @@ -0,0 +1,113 @@ +// Merchant got his shop shot down due to selling poison and asks the player for some errand +// after finishing this, daily quest with scorpion stingers +// Using bit 8 and 9 of QUEST_NorthTulimshar (first half of nibble 2) +// author: Jenalya +002-2.gat,36,75,0|script|Imec|162 +{ + set @state, ((QUEST_NorthTulimshar & TWOBIT_4_MASK) >> TWOBIT_4_SHIFT); + set @EXP, 90; + set @money, 500; + + if (@state >= 3) goto L_Stingers; + if (@state == 2) goto L_Return; + if (@state == 1) goto L_Bring; + + mes "[Imec]"; + mes "\"The Wizard's Council shut down my shop!"; + mes "They said I was selling illegal things, but what's so illegal about poison?\""; + next; + mes "\"Anyway, I hope to get a merchant's permit again... One of these days...\""; + mes "He looks at you."; + next; + mes "[Imec]"; + mes "\"You can do an errand for me. I just finished writing a petition to the Council about my shop."; + mes "If you bring it to the government building near the docks, I'll give you a small reward.\""; + goto L_Offer; + +L_Offer: + menu + "Where are the docks and what is the government building?",L_Explain, + "Ok, sounds good.",L_Next, + "No!",L_Close; + +L_Next: + mes "[Imec]"; + mes "\"Very good. Here is the paper.\""; + mes "Imec gives you a sealed letter. You put it away in a pocket separated from your inventory, so it won't get lost."; + set @state, 1; + callsub S_Update_Mask; + goto L_Close; + +L_Explain: + mes "[Imec]"; + mes "\"Follow the road to the north through the gate, then go west when you reach the docks. It's right before the castle mount.\""; + next; + mes "\"In the building there are several offices. If you want to join or form a party, you have to pay your taxes there first.\""; + next; + mes "\"So, will you bring my petition to the office in that building?\""; + if (@state == 0) + goto L_Offer; + goto L_Close; + +L_Bring: + mes "[Imec]"; + mes "\"What are you waiting for? Bring my petition to the government building.\""; + menu + "Where is it again?",L_Explain, + "I'm on my way.",L_Close; + +L_Return: + mes "[Imec]"; + mes "\"Ah, you're back.\""; + mes "You hand the letter of acknowledgement over to Imec."; + next; + mes "[Imec]"; + mes "\"Very well. I'm sure I'll be able to open my shop again soon.\""; + next; + mes "It seems Imec doesn't notice you anymore."; + menu + "You mentioned a reward.",L_Next1; + +L_Next1: + mes "[Imec]"; + mes "\"What? Ah, right. Here, have this.\""; + getexp @EXP, 0; + set Zeny, Zeny + @money; + set @state, 3; + callsub S_Update_Mask; + next; + mes "\"Actually, you could be of further help to me.\""; + next; + goto L_Stingers; + +L_Stingers: + mes "[Imec]"; + set @dq_level, 10; + set @dq_cost, 3; + set @dq_count, 3; + set @dq_name$, "ScorpionStinger"; + set @dq_friendly_name$, "Scorpion Stingers"; + set @dq_money, 200; + set @dq_exp, 40; + + callfunc "DailyQuest"; + goto L_Close; + +L_Close: + set @money, 0; + set @state, 0; + + set @dq_level, 0; + set @dq_cost, 0; + set @dq_count, 0; + set @dq_name$, ""; + set @dq_friendly_name$, ""; + set @dq_money, 0; + set @dq_exp, 0; + set @dq_return, 0; + close; + +S_Update_Mask: + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_4_MASK)) | (@state << TWOBIT_4_SHIFT); + return; +} diff --git a/world/map/npc/002-2/inya.txt b/world/map/npc/002-2/inya.txt new file mode 100644 index 00000000..322d0eb3 --- /dev/null +++ b/world/map/npc/002-2/inya.txt @@ -0,0 +1,209 @@ +//Gemstones: Diamond (white) , Ruby (red), Emerald (green), Sapphire (blue), Topaz (yellow), Amethyst (purple) +//The power of the gems is important to future balance of these rings. Are they related to stats, tiers of power, schools of magic? + +002-2.gat,116,61,0|shop|#InyaShop|127,SimpleRing:*100000 + +002-2.gat,116,61,0|script|Inya|106 +{ + mes "[Inya]"; + mes "\"I am Inya, a jeweler of fine rings. I sell and make rings.\""; + next; + mes "\"If you have a Simple Ring and a gem, I can set the gem in it for 100,000 gold pieces.\""; + next; + mes "\"Also, if you have a ring with gems on it, I can remove the gems and return the Simple Ring to you for 50,000 gold pieces.\""; + next; + mes "\"So, how can I help you?\""; + menu + "What jewelry do you have for sale?", L_Inya_Shop, + "I have a wedding ring, will that do?", L_Inya_Wedding_Ring, + "I'd like to remove a gem (50000 GP).", L_Inya_Remove_RingGem, + "I'd like to add a gem (100000 GP).", L_Inya_Add_RingGem, + "Not interested.", L_Inya_NotInterested; + +L_Inya_Shop: + close2; + shop "#InyaShop"; + +L_Inya_Wedding_Ring: + mes "[Inya]"; + mes "\"No, sorry. I do not alter wedding rings at this time.\""; + close; + +L_Inya_Remove_RingGem: + mes "[Inya]"; + mes "\"What kind of gem would you like to have removed?\""; + menu + "Diamond.", L_Inya_Remove_Diamond, + "Ruby.", L_Inya_Remove_Ruby, + "Emerald.", L_Inya_Remove_Emerald, + "Sapphire.", L_Inya_Remove_Sapphire, + "Topaz.", L_Inya_Remove_Topaz, + "Amethyst.", L_Inya_Remove_Amethyst, + "I've changed my mind.", L_Inya_NotInterested; + +L_Inya_Add_RingGem: + mes "[Inya]"; + mes "\"What kind of gem would you like to add?\""; + menu + "Diamond.", L_Inya_Add_Diamond, + "Ruby.", L_Inya_Add_Ruby, + "Emerald.", L_Inya_Add_Emerald, + "Sapphire.", L_Inya_Add_Sapphire, + "Topaz.", L_Inya_Add_Topaz, + "Amethyst.", L_Inya_Add_Amethyst, + "I've changed my mind.", L_Inya_NotInterested; + +L_Inya_Remove_Diamond: + if ( (Zeny < 50000) + | (countitem ("DiamondRing") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 50000; + delitem "DiamondRing", 1; + getitem "SimpleRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Remove_Ruby: + if ( (Zeny < 50000) + | (countitem ("RubyRing") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 50000; + delitem "RubyRing", 1; + getitem "SimpleRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Remove_Emerald: + if ( (Zeny < 50000) + | (countitem ("EmeraldRing") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 50000; + delitem "EmeraldRing", 1; + getitem "SimpleRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Remove_Sapphire: + if ( (Zeny < 50000) + | (countitem ("SapphireRing") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 50000; + delitem "SapphireRing", 1; + getitem "SimpleRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Remove_Topaz: + if ( (Zeny < 50000) + | (countitem ("TopazRing") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 50000; + delitem "TopazRing", 1; + getitem "SimpleRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Remove_Amethyst: + if ( (Zeny < 50000) + | (countitem ("AmethystRing") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 50000; + delitem "AmethystRing", 1; + getitem "SimpleRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Add_Diamond: + if ( (Zeny < 100000) + | (countitem ("SimpleRing") < 1) + | (countitem ("Diamond") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 100000; + delitem "SimpleRing", 1; + delitem "Diamond", 1; + getitem "DiamondRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Add_Ruby: + if ( (Zeny < 100000) + | (countitem ("SimpleRing") < 1) + | (countitem ("Ruby") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 100000; + delitem "SimpleRing", 1; + delitem "Ruby", 1; + getitem "RubyRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Add_Emerald: + if ( (Zeny < 100000) + | (countitem ("SimpleRing") < 1) + | (countitem ("Emerald") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 100000; + delitem "SimpleRing", 1; + delitem "Emerald", 1; + getitem "EmeraldRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Add_Sapphire: + if ( (Zeny < 100000) + | (countitem ("SimpleRing") < 1) + | (countitem ("Sapphire") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 100000; + delitem "SimpleRing", 1; + delitem "Sapphire", 1; + getitem "SapphireRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Add_Topaz: + if ( (Zeny < 100000) + | (countitem ("SimpleRing") < 1) + | (countitem ("Topaz") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 100000; + delitem "SimpleRing", 1; + delitem "Topaz", 1; + getitem "TopazRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_Add_Amethyst: + if ( (Zeny < 100000) + | (countitem ("SimpleRing") < 1) + | (countitem ("Amethyst") < 1) ) + goto L_Inya_Not_Enough; + set Zeny, Zeny - 100000; + delitem "SimpleRing", 1; + delitem "Amethyst", 1; + getitem "AmethystRing", 1; + mes "[Inya]"; + mes "\"Here you go.\""; + close; + +L_Inya_NotInterested: + mes "[Inya]"; + mes "\"Come back later and I will try to be of assistance.\""; + close; + +L_Inya_Not_Enough: + mes "[Inya]"; + mes "\"I am sorry, you simply do not seem to have the necessary items for me to help you. Please come back when you do, and I would be more than happy to help you out.\""; + close; +} diff --git a/world/map/npc/002-2/kps.txt b/world/map/npc/002-2/kps.txt new file mode 100644 index 00000000..a17df1a3 --- /dev/null +++ b/world/map/npc/002-2/kps.txt @@ -0,0 +1,164 @@ +// KPS (Killian Parcel Service) +// Author: Wushin +// Kylian_Timer denotes current quest time & holds last completed. +// reuse the 4 bits +// To Mark 4 Different NPCs. +// setarray $@kps_npc_bits, $@knowYanisNT, $@knowLatoyNT, $@knowWeellosNT, $@knowCasinoNT; +002-2.gat,120,89,0|script|KPS Manager|191 +{ + set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); + set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT); + set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT); + if (@state == 15) + goto L_SeeKylian; + if (@state == 14) + goto L_RunComplete; + if (@state == 13) + goto L_RunStarted; + if (@state == 12) + goto L_JobSelect; + if (@state == 11) + goto L_AcceptJob; + if (@state == 10) + goto L_OfferJob; + goto L_Default; + +L_Default: + mes "[KPS Manager]"; + mes "\"Kylian staying at the Inn bought this shop recently.\""; + mes "\"I'm waiting for him to open the shop.\""; + next; + mes "\"I wonder if he needs any help?\""; + goto L_Close; + +L_OfferJob: + mes "[KPS Manager]"; + mes "\"Hello and what how can I help you today?\""; + menu + "My name is " + strcharinfo(0), L_MyName, + "Nothing.", L_Close; + +L_MyName: + set @state, 11; + callfunc "SetKylianQuest"; + mes "\"Ahhh, Kylian said you would be dropping by.\""; + next; + mes "\"I assume you are looking for some work?\""; + menu + "Yes.", L_StartJob, + "No.", L_Close; + +L_AcceptJob: + mes "[KPS Manager]"; + mes "\"Interested in some work?\""; + menu + "Yes.", L_StartJob, + "No.", L_Close; + +L_StartJob: + set @run, 0; + callfunc "SetKylianRun"; + set @run_cnt, 0; + callfunc "SetKylianRunCnt"; + set @state, 12; + callfunc "SetKylianQuest"; + goto L_JobSelect; + +L_StartJobAgain: + set @run, 0; + callfunc "SetKylianRun"; + set @state, 12; + callfunc "SetKylianQuest"; + goto L_JobSelect; + +L_JobSelect: + if ((gettimetick(2) - Kylian_Timer) < 86400) + goto L_NoPackages; + mes "[KPS Manager]"; + mes "\"We have a number of deliveries that need to go all over the world.\""; + next; + goto L_RandJob; + +L_RandJob: + set @rand_quest, rand(1,3); + goto L_JobInfo; + +L_JobInfo: + mes "\"We have a delivery for:* " + $@random_quests$[@rand_quest] + "\""; + menu + "Take It.", L_StartRun, + "Anything Else?", L_RandJob, + "I need a break.", L_Close; + +L_StartRun: + set @state, 13; + callfunc "SetKylianQuest"; + set @run, @rand_quest; + callfunc "SetKylianRun"; + set Kylian_Timer, gettimetick(2); + goto L_Close; + +L_RunStarted: + mes "Deliver this package to:* " + $@random_quests$[@run] + "\""; + goto L_Close; + +L_RunComplete: + set @elapsed_time, (gettimetick(2) - Kylian_Timer); + if (@elapsed_time > 600) + goto L_Failed; + set @run_cnt, (@run_cnt + 1); + callfunc "SetKylianRunCnt"; + // Set Kylian wants to see you reward state + if (@run_cnt > 3) + goto L_KylianReward; + goto L_RunAgain; + +L_SeeKylian: + mes "\"You need to go see Kylian before I can give you any more work.\""; + goto L_Close; + +L_Failed: + mes "\"You need to be faster next time to earn a bonus.\""; + next; + goto L_RunAgain; + +L_KylianReward: + set Zeny, Zeny + $@delivery_money; + getexp ($@delivery_exp_mod * BaseLevel), 0; + callfunc "SetKylianRun"; + set @state, 15; + callfunc "SetKylianQuest"; + mes "[" + $@delivery_money + " money]"; + mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; + next; + mes "\"I have a message Kylian wants me to send you over right away.\""; + goto L_Close; + +L_RunAgain: + set Zeny, Zeny + $@delivery_money; + getexp ($@delivery_exp_mod * BaseLevel), 0; + callfunc "SetKylianRun"; + mes "[" + $@delivery_money + " money]"; + mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; + next; + mes "\"Good job, keep up the nice work and I'm sure the bonus will give you a bonus.\""; + next; + goto L_StartJobAgain; + +L_NoPackages: + mes "\"Come back tomorrow, maybe we will have some more work.\""; + goto L_Close; + +L_Close: + close; +} +function|script|SetKylianRun +{ + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_8_MASK)) | (@run << TWOBIT_8_SHIFT); + return; +} +function|script|SetKylianRunCnt +{ + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_9_MASK)) | (@run_cnt << TWOBIT_9_SHIFT); + return; +} diff --git a/world/map/npc/002-2/kylian.txt b/world/map/npc/002-2/kylian.txt new file mode 100644 index 00000000..7f832b87 --- /dev/null +++ b/world/map/npc/002-2/kylian.txt @@ -0,0 +1,424 @@ +// Kylian is a businessman from Argeas who wants to eventually open a shop in Tulimshar +// asks the player for several information about the city +// Quest uses Nibble 4 and 5 of QUEST_NorthTulimshar +// Author: Jenalya + +// Nibble 4 is used as flags to indicate if the player knows certain places/persons +// Bit 0: player talked to Yanis in the government building +// Bit 1: player talked to Latoy on the market in North Tulimshar +// Bit 2: player talked to Weellos as the historic building +// Bit 3: player was in the casino rooms + +// Nibble 5 is used to save the quest progress with Kylian +// state 1: player has the task to get the luggage from the harbor +// state 2: Adrian gave the luggage to the player +// state 3: player gave luggage to Kylian and Kylian asks who to talk to for the shop license +// after the player answered this, @KylianNTLicense is set. +// the player can only continue the quest when logging out and therefore setting that value to 0 again +// state 4: Kylian asks for a historical building to get some cultural knowledge +// state 5: Kylian asks where to get some typical food +// after the player answered this, @KylianNTSightSeeing is set. +// the player can only continue the quest when logging out and therefore setting that value to 0 again +// state 6: Kylian asks where to go to have some fun in the evening (casino) +// state 7: Kylian asks where to get exquisite clothing before going out in the evening +// after the player answered this, @KylianNTSightSeeing is set. +// the player can only continue the quest when logging out and therefore setting that value to 0 again +// state 8: Kylian was in the casino and gives a desert hat as reward +// state 9: Shop approved, go talk Kylian's shopkeeper if you are looking for work. +// state 10: Meet Shop keeper +// state 11: Start Time Trial +// state 12: Return +// state 13: Start Daily Timed +// state 14: Return +// state 15: Completed +// Kylian_Timer is used to denote start time. + +// temporary variables used to check if the player logged out or left the building in the meanwhile +// this is to ensure some 'time in between' different actions of the quest +// @KylianNTLicense +// @KylianNTSightSeeing +// @KylianNTCasino + +-|script|#businessmanNTconfig|-1 +{ + end; + +OnInit: + // Nibble 4 + // Used in Random Quest later as a Nibble + set $@knowYanisNT, (1 << 16); + set $@knowLatoyNT, (1 << 17); + set $@knowWeellosNT, (1 << 18); + set $@knowCasinoNT, (1 << 19); + + // Random Quests for Later + setarray $@random_quests$, "None", "Falkurn", "Old Wizard", "Baktar"; + set $@delivery_money, 100; + set $@delivery_exp_mod, 10; + end; +} +002-2.gat,44,107,0|script|#KylianOut|32767,1,1 +{ + set @KylianNTLicense, 0; + set @KylianNTSightSeeing, 0; + set @KylianNTCasino, 0; + end; +} +002-2.gat,43,101,0|script|Kylian|193 +{ + set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); + + set @acorn_amount, 12; + set @suitcase_money, 100; + set @suitcase_exp, 50; + set @license_money, 50; + set @license_exp, 20; + set @sightseeing_money, 50; + set @sightseeing_exp, 20; + set @food_money, 50; + set @food_exp, 20; + set @clothes_money, 50; + set @clothes_exp, 20; + set @fun_money, 50; + set @fun_exp, 20; + + // This NPC previously used the variable TMW_Quest + callfunc "ClearVarTMW_Quest"; + set @fieri, ((QUEST_SouthTulimshar & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT); + + if (@state == 15) goto L_Done; + if (@state >= 11) goto L_Helping; + if (@state == 10) goto L_OfferedJob; + if (@state == 9) goto L_Shop; + if (@KylianNTCasino) goto L_CasinoDone; + if (@state == 8) goto L_DesertHat; + if (@state == 7) goto L_Clothes; + if (@KylianNTSightSeeing) goto L_SightSeeingDone; + if (@state == 6) goto L_Casino; + if (@state == 5) goto L_Food; + if (@KylianNTLicense) goto L_LicenseDone; + if (@state == 4) goto L_SightSeeing; + if (@state == 3) goto L_ShopLicense; + if (@state >= 1) goto L_Suitcase; + + mes "[Kylian]"; + mes "\"Ah, are you the room service? I've some requests.\""; + menu + "Sure, what can I do for you?",L_Luggage, + "No, I'm not!",L_Next; + +L_Next: + mes "[Kylian]"; + mes "\"Too bad. Would you be interested in earning some quick money with some errands regardless?\""; + menu + "I'm a great adventurer! I don't do errands.",L_Close, + "No, I'm busy.",L_Close, + "Mh, ok.",L_Luggage; + +L_Luggage: + mes "[Kylian]"; + mes "\"I need someone to get my luggage from the docks. Show this paper to the sailor who's watching the luggage.\""; + mes "He gives you his ticket which you store in your pocket, separated from your inventory."; + set @state, 1; + callfunc "SetKylianQuest"; + goto L_Close; + +L_Suitcase: // @state >= 1, but below 3 + mes "[Kylian]"; + mes "\"Did you already get my luggage from the docks?\""; + if (@state != 2) + goto L_Close; + menu + "Here it is.",L_Continue, + "I'm on my way, don't worry.",L_Close; + +L_Continue: + if (countitem("LeatherSuitcase") < 1) + goto L_NoItem; + delitem "LeatherSuitcase", 1; + set Zeny, Zeny + @suitcase_money; + getexp @suitcase_exp, 0; + set @state, 3; + callfunc "SetKylianQuest"; + mes "[Kylian]"; + mes "\"Ah, very good. I really need to have a look at some of my papers in there.\""; + mes "He gives you some money."; + next; + mes "[Kylian]"; + mes "\"Oh, and I have some acorns left, I had them with me as travelling fare. You can have them, they're tasty."; + mes "In case you don't like them, you could also bring them to the Tulimshar bakery. I heard they use them to make some special flour.\""; + getitem "Acorn", @acorn_amount; + next; + goto L_ShopLicense; + +L_ShopLicense: // @state == 3 + mes "[Kylian]"; + mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here. While I'm going through my papers, could you find out who I have to talk to about opening a shop in this city?\""; + if (!(QUEST_NorthTulimshar & $@knowYanisNT)) + goto L_Close; + menu + "You need to talk to Yanis in the government building.",L_GovBuild, + "I'll see what I can do.",L_Close; + +L_GovBuild: + set Zeny, Zeny + @license_money; + getexp @license_exp, 0; + set @state, 4; + callfunc "SetKylianQuest"; + set @KylianNTLicense, 1; + mes "[Kylian]"; + mes "\"Ah, excellent. That's very helpful. Could you tell me how to get to that building?\""; + mes "You explain the way to the building."; + next; + goto L_LicenseDone; + +L_LicenseDone: // the player didn't log out yet after telling about Yanis + mes "[Kylian]"; + mes "\"I need to prepare my papers now. I might have some more questions later.\""; + goto L_Close; + +L_SightSeeing: // @state == 4 and logged out sometime between getting to that state and now + mes "[Kylian]"; + mes "\"You just came here the right moment. I have finished my business affairs. I think I should use my time here to also get a bit of cultural knowledge about the area. Can you tell me if there are any historical places to visit?\""; + if (!(QUEST_NorthTulimshar & $@knowWeellosNT)) + goto L_Close; + menu + "There is a very old historic building not far from here.",L_HistBuild, + "I don't know, but will have a look around.",L_Close; + +L_HistBuild: + set Zeny, Zeny + @sightseeing_money; + getexp @sightseeing_exp, 0; + set @state, 5; + callfunc "SetKylianQuest"; + mes "[Kylian]"; + mes "\"This sounds interesting. Please tell me the way.\""; + mes "You tell him how to get to the historic building."; + next; + goto L_Food; + +L_Food: // @state == 5 + mes "[Kylian]"; + mes "\"While I'm out, I could also get something to eat. Maybe some typical dish for this region. Do you have a good suggestion for that?\""; + if (@fieri < 4) // didn't yet help Fieri make Tonori Delight + goto L_Close; + menu + "Fieri at the castle makes great Tonori Delight.",L_SoupBer, + "No idea, I'll try to find out.",L_Close; + +L_SoupBer: + set Zeny, Zeny + @food_money; + getexp @food_exp, 0; + set @state, 6; + callfunc "SetKylianQuest"; + set @KylianNTSightSeeing, 1; + goto L_SightSeeingDone; + +L_SightSeeingDone: + mes "[Kylian]"; + mes "\"I'm going to see the historic building you told me about and try this local food at the castle. Thank you for the suggestions.\""; + goto L_Close; + +L_Casino: // @state == 6 and logged out sometime between getting to that state and now + mes "[Kylian]"; + mes "\"Hello. I just came back from my sight-seeing tour. And this Tonori Delight really was delicious. I wonder what it's made of...\""; + next; + mes "\"However, I was wondering if you know about a good place to spend the evening? Some place to have fun?\""; + if (!(QUEST_NorthTulimshar & $@knowCasinoNT)) + goto L_Close; + menu + "Of course! The casino!",L_CasinoFound, + "Not really.",L_Close; + +L_CasinoFound: + set Zeny, Zeny + @casino_money; + getexp @casino_exp, 0; + set @state, 7; + callfunc "SetKylianQuest"; + mes "[Kylian]"; + mes "\"Oh, there's a casino in this city? That's a wonderful thing. Where can I find it?\""; + mes "You explain how to get to the casino."; + next; + goto L_Clothes; + +L_Clothes: // @state == 7 + mes "[Kylian]"; + mes "\"I should get proper clothing before I go to the casino tonight. Do you know a reputable shop where clothing of high quality is sold?\""; + if (!(QUEST_NorthTulimshar & $@knowLatoyNT)) + goto L_Close; + menu + "Latoy's shop. On the west side of Tulimshar.",L_HarborDistrict, + "Mh, I don't know.",L_Close; + +L_HarborDistrict: + set Zeny, Zeny + @clothes_money; + getexp @clothes_exp, 0; + set @state, 8; + callfunc "SetKylianQuest"; + set @KylianNTCasino, 1; + mes "You explain about Latoy and the high quality shop."; + mes "[Kylian]"; + mes "\"This seems to be exactly what I need. Thanks a lot.\""; + goto L_Close; + +L_CasinoDone: + mes "[Kylian]"; + mes "\"I'm looking forward to going to the casino tonight. See me tomorrow.\""; + goto L_Close; + +L_DesertHat: // @state == 8 + mes "Kylian looks a bit tired."; + mes "[Kylian]"; + mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\""; + next; + getinventorylist; + mes "\"You helped me a lot, so I bought a souvenir for you while I was shopping.\""; + if ((checkweight("DesertHat", 1) == 0) || (@inventorylist_count == 100)) + goto L_Inventory; + getitem "DesertHat", 1; + set @state, 9; + callfunc "SetKylianQuest"; + next; + goto L_Close; + +L_Shop: + mes "[Kylian]"; + mes "\"The Council of Wizards approved my shop license!\""; + mes "\"I purchased a store just acorss the way from the hotel exit.\""; + next; + mes "\"If you are looking for work, go see the shop keeper I have working for me.\""; + mes "\"Mention your name and he will know I sent you.\""; + set @state, 10; + callfunc "SetKylianQuest"; + goto L_Close; + +L_OfferedJob: + mes "[Kylian]"; + mes "\"I spoke with the shopkeeper, They said you haven't stopped in yet.\""; + next; + mes "\"I wish you would consider working for KPS.\""; + next; + mes "\"KPS needs a well-traveled go getter like you.\""; + goto L_Close; + +L_Helping: + mes "[Kylian]"; + mes "\"I've heard you decided to come work for me. That is great news.\""; + mes "\"Keep up the good work and I might have something a little extra for you.\""; + goto L_Close; + +L_Done: + mes "[Kylian]"; + mes "\"Thanks a bunch, buisness is booming!\""; + mes "\"For your hard work take this.\""; + next; + set Zeny, Zeny + $@delivery_money; + getexp ($@delivery_exp_mod * BaseLevel), 0; + set @run_cnt, 0; + callfunc "SetKylianRunCnt"; + set @state, 12; + callfunc "SetKylianQuest"; + mes "[" + $@delivery_money + " money]"; + mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; + next; + goto L_Close; + +L_Inventory: + mes "[Kylian]"; + mes "\"Oh, you're carrying a lot of things. Come back when you have more room.\""; + goto L_Close; + +L_NoItem: + mes "[Kylian]"; + mes "\"I don't see it! Are you trying to tease me? This is not funny!\""; + goto L_Close; + +L_Close: + set @acorn_amount, 0; + set @suitcase_money, 0; + set @suitcase_exp, 0; + set @license_money, 0; + set @license_exp, 0; + set @sightseeing_money, 0; + set @sightseeing_exp, 0; + set @food_money, 0; + set @food_exp, 0; + set @clothes_money, 0; + set @clothes_exp, 0; + set @fun_money, 0; + set @fun_exp, 0; + set @inventorylist_count, 0; + set @fieri, 0; + // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino + // those are used to check if the player logged out in the meanwhile + close; +} +function|script|SetKylianQuest +{ + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_5_MASK)) | (@state << NIBBLE_5_SHIFT); + return; +} +function|script|KylianDebug +{ + set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); + callfunc "ClearVarTMW_Quest"; + set @fieri, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); + set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT); + set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT); + goto L_Menu; + +L_Menu: + mes "[Kylian Debug]"; + menu + "Show Quest State", L_ShowState, + "Set Quest State", L_SetState, + "Reset Timer to now", L_WorkTimer, + "Reset Timer + 24 hours", L_MoreWorkTimer, + "Close.", L_Close; + +L_ShowState: + mes "State: " + @state; + mes "Timer: " + Kylian_Timer; + mes "Time: " + gettimetick(2); + mes "Elapsed Time: " + (gettimetick(2) - Kylian_Timer); + mes "Reset Timer: 86400 > " + (gettimetick(2) - Kylian_Timer); + mes "Run: " + @run; + mes "Run NPC: " + $@random_quests$[@run]; + mes "Run Count: " + @run_cnt; + goto L_Menu; + +L_SetState: + mes "\"Input the quest state desired.\""; + input @state; + callfunc "SetKylianQuest"; + goto L_Menu; + +L_WorkTimer: + set Kylian_Timer, gettimetick(2); + goto L_Menu; + +L_MoreWorkTimer: + set Kylian_Timer, (gettimetick(2) - 86401); + goto L_Menu; + +L_Close: + close; +} +002-2.gat,40,101,0|script|KylianDebug#1|193 +{ + callfunc "KylianDebug"; + end; +OnInit: + if (!debug) + disablenpc "KylianDebug#1"; + end; +} +002-2.gat,118,89,0|script|KylianDebug#2|193 +{ + callfunc "KylianDebug"; + end; +OnInit: + if (!debug) + disablenpc "KylianDebug#2"; + end; +} diff --git a/world/map/npc/002-2/latoy.txt b/world/map/npc/002-2/latoy.txt new file mode 100644 index 00000000..4c847af7 --- /dev/null +++ b/world/map/npc/002-2/latoy.txt @@ -0,0 +1,33 @@ +// A snobby store that won't sell to the player +// takes part in quest given by 021-2/kylian.txt + +002-2.gat,86,93,0|shop|#LatoyShop|127,SilkHeadband:*20000,SilkGloves:*20000,SilkPants:*30000,SilkRobe:*40000 + +002-2.gat,86,93,0|script|Latoy|106 +{ + set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT; + set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_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/002-2/mapflags.txt b/world/map/npc/002-2/mapflags.txt index c23a7f11..5448030e 100644 --- a/world/map/npc/002-2/mapflags.txt +++ b/world/map/npc/002-2/mapflags.txt @@ -1 +1 @@ -002-2.gat|mapflag|resave|001-1,57,71 +002-2.gat|mapflag|resave|001-1,60,105 diff --git a/world/map/npc/002-2/omar.txt b/world/map/npc/002-2/omar.txt new file mode 100644 index 00000000..048f129c --- /dev/null +++ b/world/map/npc/002-2/omar.txt @@ -0,0 +1,335 @@ +// +function|script|KadiyaSubquestConsts +{ + set @Q_kadiya_status, (QUEST_MAGIC2 & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT; + + set @Q_STATUS_NONE, 0; + set @Q_STATUS_KNOWS_MOPOX, 1; + set @Q_STATUS_MADE_MOPOX, 2; + set @Q_STATUS_DIDNT_DRINK, 3; + set @Q_STATUS_WANTS_CHOCOCAKE, 4; + set @Q_STATUS_WANTS_ORANGECUPCAKE, 5; + set @Q_STATUS_COMPLETED, 6; + set @Q_STATUS_COMPLETED_ELANORE, 7; + set @Q_STATUS_COMPLETED_NOELANORE, 8; + set @Q_STATUS_COMPLETED_POST_ELANORE, 9; + + if (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) < 4) set @Q_kadiya_status, @Q_STATUS_NONE; + + if (((QUEST_MAGIC2 & NIBBLE_1_MASK) >> NIBBLE_1_SHIFT) > 4) set @Q_kadiya_status, @Q_STATUS_COMPLETED_POST_ELANORE; + + return; +} + +002-2.gat,117,126,0|script|Omar|162 +{ + callfunc "ElanoreFix"; + callfunc "KadiyaSubquestConsts"; + + set @Q_status, @Q_kadiya_status; + + if (@Q_status >= @Q_STATUS_COMPLETED) goto L_cured; + + if (@Q_status == @Q_STATUS_DIDNT_DRINK) goto L_didnt_drink; + + if (@Q_status > @Q_STATUS_DIDNT_DRINK) goto L_make_food; + + mes "[Omar]"; + mes "\"Welcome to my humble abode.\""; + next; + menu + "Well met! May I ask who you are?", L_omar, + "What's wrong with your daughter?", L_kadiya_sick, + "Thank you!", L_Close; + +L_omar: + mes "[Omar]"; + mes "\"My name is Omar; I am a trader of oils and spices.\""; + goto L_Close; + +L_kadiya_sick: + mes "[Omar]"; + mes "\"Kadiya has caught Ponderpox, I fear.\""; + mes "He sighs."; + mes "\"She's has been feverish for many days now. I wish there were something I could do.\""; + next; + menu + "Have you asked Elanore the healer?", L_sick_elanore, + "How about the Hurnscald hospital?", L_sick_hospital, + "Can I help?", L_sick_self, + "I'm sorry to hear that.", L_Next; + +L_Next: + mes "[Omar]"; + mes "\"Well, she is a strong girl. I am sure that she will get over it eventually.\""; + mes "He smiles, but you see doubt in his eyes."; + goto L_Close; + +L_sick_elanore: + mes "[Omar]"; + mes "\"Elanore?\""; + mes "He frowns."; + mes "\"She knows nothing. I see no point in talking to her.\""; + goto L_Close; + +L_sick_hospital: + mes "[Omar]"; + mes "\"Hurnscald is too far away. I don't think that it would be good for her to go on such a long trip.\""; + goto L_Close; + +L_sick_self: + mes "[Omar]"; + mes "\"You are very kind, but I don't think there is anything you can do.\""; + goto L_Close; + +L_didnt_drink: + mes "[Omar]"; + mes "\"So she has Mopox, not Ponderpox, you say? Hmm. That is much harder to cure, I think.\""; + mes "\"I am grateful for the effort you put into brewing a potion for her. But it does smell vile...\""; + next; + mes "[Omar]"; + mes "\"I promised my dear wife that I would never make Kadiya eat or drink anything she doesn't like. So I won't force her to drink this.\""; + next; + mes "[Omar]"; + set @Q_status, (@Q_STATUS_WANTS_CHOCOCAKE + rand(2)); + callsub S_update_var; + if (@Q_status == @Q_STATUS_WANTS_ORANGECUPCAKE) + mes "\"If only we could make it smell and taste like orange cupcakes... she really loves those cupcakes.\""; + if (@Q_status == @Q_STATUS_WANTS_CHOCOCAKE) + mes "\"If only this were a chocolate cake and not a potion... she really loves chocolate cakes.\""; + goto L_Close; + +L_make_food: + mes "[Omar]"; + mes "\"I should stay here to watch over her. I wish I could think of a way to convince her to drink the potion...\""; + if (@Q_status == @Q_STATUS_WANTS_ORANGECUPCAKE) + mes "\"Alas, it is not an orange cupcake.\""; + if (@Q_status == @Q_STATUS_WANTS_CHOCOCAKE) + mes "\"If only it were to smell and taste like her favourite chocolate cake...\""; + goto L_Close; + +L_cured: + if (@Q_status == @Q_STATUS_COMPLETED) goto L_cured_choice; + mes "[Omar]"; + mes "\"She is sleeping now, but she seems to be much better. I am sure that she will be up and running around again soon.\""; + goto L_Close; + +L_cured_choice: + mes "[Omar]"; + mes "\"I am very grateful for your help. I really was sure that it was Ponderpox, not Mopox, that she had.\""; + next; + menu + "Oh, it was nothing.", L_cured_nothing, + "I didn't do it alone; Elanore helped.", L_cured_elanore, + "That will be 5000 GP.", L_Next1; + +L_Next1: + mes "[Omar]"; + mes "\"Ah, certainly.\""; + mes "He hands you a small bag of money."; + next; + set @Q_status, @Q_STATUS_COMPLETED_NOELANORE; + callsub S_update_var; + set Zeny, Zeny + 5000; + goto L_Close; + +L_cured_nothing: + mes "[Omar]"; + mes "\"No, this wasn't nothing. She is everything to me. Here, you deserve a reward.\""; + mes "He hands you a bag of money containing 10,000 GP and two pearls."; + mes "\"And feel free to drop by again whenever you would like!\""; + set @Q_status, @Q_STATUS_COMPLETED_NOELANORE; + callsub S_update_var; + getitem "Pearl", 2; + set Zeny, Zeny + 10000; + goto L_Close; + +L_cured_elanore: + mes "[Omar]"; + mes "Omar frowns."; + mes "\"That witch? You worked with her without telling me?\""; + mes "He looks over to his daughter, concern suddenly in his eyes."; + mes "\"She is looking better, though...\""; + next; + mes "[Omar]"; + mes "Omar shakes his head."; + mes "\"I will have to think about this. Please leave me alone.\""; + next; + set @Q_status, @Q_STATUS_COMPLETED_ELANORE; + callsub S_update_var; + goto L_Close; + +L_Close: + set @Q_STATUS_KNOWS_MOPOX, 0; + set @Q_STATUS_MADE_MOPOX, 0; + set @Q_STATUS_DIDNT_DRINK, 0; + set @Q_STATUS_WANTS_CHOCOCAKE, 0; + set @Q_STATUS_WANTS_ORANGECUPCAKE, 0; + set @Q_STATUS_COMPLETED, 0; + set @Q_STATUS_COMPLETED_ELANORE, 0; + set @Q_STATUS_COMPLETED_NOELANORE, 0; + set @Q_STATUS_COMPLETED_POST_ELANORE, 0; + set @Q_status, 0; + close; + + +S_update_var: + set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(NIBBLE_3_MASK) | (@Q_status << NIBBLE_3_SHIFT)); + return; +} + +002-2.gat,124,124,0|script|Kadiya|174 +{ + set @child_number, 7; + callfunc "XmasList"; + + callfunc "ElanoreFix"; + set @Q_MASK, NIBBLE_3_MASK; + set @Q_SHIFT, NIBBLE_3_SHIFT; + callfunc "KadiyaSubquestConsts"; + set @Q_status, @Q_kadiya_status; + if (@Q_status >= @Q_STATUS_COMPLETED) goto L_cured; + + mes "You see a young girl lying in bed. At first she doesn't seem to notice you approaching."; + mes "Finally, she turns her head towards you. Judging from the sweat on her forehead and look in her eyes, she is suffering from some kind of fever."; + next; + mes "[Kadiya]"; + mes "\"Hello,\" she says in a tiny voice."; + next; + set @M_NAME, 1; + set @M_CANDY, 2; + set @M_POTION, 3; + set @M_CHOCOCAKE, 4; + set @M_CUPCAKE, 5; + + setarray @choice$, "Hello! What's your name?", "Would you like some candy?", "", "", "", "", "", ""; + setarray @choice_idx, @M_NAME, @M_CANDY, 0, 0, 0, 0, 0, 0; + set @choices_nr, 2; + + if (countitem("MopoxCurePotion") == 0) goto L_M_no_cure; + + set @choice_idx[@choices_nr], @M_POTION; + set @choice$[@choices_nr], "This potion will cure your illness!"; + set @choices_nr, @choices_nr + 1; + goto L_M_no_cure; + +L_M_no_cure: + if ((countitem("LacedChocolateCake") == 0) || (@Q_status != @Q_STATUS_WANTS_CHOCOCAKE)) + goto L_M_no_chococake; + set @choice_idx[@choices_nr], @M_CHOCOCAKE; + set @choice$[@choices_nr], "Would you like special chocolate cake?"; + set @choices_nr, @choices_nr + 1; + goto L_M_no_chococake; + +L_M_no_chococake: + if ((countitem("LacedOrangeCupcake") == 0) || (@Q_status != @Q_STATUS_WANTS_ORANGECUPCAKE)) + goto L_M_no_cupcake; + set @choice_idx[@choices_nr], @M_CUPCAKE; + set @choice$[@choices_nr], "Would you like special orange cupcake?"; + set @choices_nr, @choices_nr + 1; + goto L_M_no_cupcake; + +L_M_no_cupcake: + set @choice_idx[@choices_nr], 0; + set @choice$[@choices_nr], "Goodbye."; + set @choices_nr, @choices_nr + 1; + + menu + @choice$[0], L_MenuItems, + @choice$[1], L_MenuItems, + @choice$[2], L_MenuItems, + @choice$[3], L_MenuItems, + @choice$[4], L_MenuItems, + @choice$[5], L_MenuItems; + +L_MenuItems: + set @choice, @choice_idx[@menu - 1]; + + if (@choice == @M_NAME) goto L_name; + if (@choice == @M_CANDY) goto L_no_candy; + if (@choice == @M_POTION) goto L_potion; + if (@choice == @M_CHOCOCAKE) goto L_chococake; + if (@choice == @M_CUPCAKE) goto L_cupcake; + goto L_Close; + +L_name: + mes "[Kadiya]"; + mes "She smiles a faint smile."; + mes "\"My name is Kadiya.\""; + goto L_Close; + +L_no_candy: + mes "[Kadiya]"; + mes "She hesitates for a moment."; + mes "\"No, thank you. I don't think I should.\""; + goto L_Close; + +L_potion: + mes "[Kadiya]"; + if (@Q_status < @Q_STATUS_DIDNT_DRINK) set @Q_status, @Q_STATUS_DIDNT_DRINK; + callsub S_update_var; + + mes "Kadiya grimaces and pushes the bottle away."; + mes "\"That smells terrible!\""; + next; + mes "[Kadiya]"; + mes "She pulls the sheets over her head."; + mes "\"I won't drink that!\""; + goto L_Close; + +L_chococake: + delitem "LacedChocolateCake", 1; + goto L_do_cure; + +L_cupcake: + delitem "LacedOrangeCupcake", 1; + goto L_do_cure; + +L_do_cure: + if (@Q_status < @Q_STATUS_COMPLETED) set @Q_status, @Q_STATUS_COMPLETED; + callsub S_update_var; + + mes "[Kadiya]"; + mes "Kadiya's eyes widen."; + mes "\"Oh! Daddy, is it okay if I eat this?\""; + mes "Omar nods and smiles. \"You should eat a bit to regain your strength, sweetheart.\""; + next; + mes "[Kadiya]"; + mes "Kadiya devours your gift in just a handful of bites."; + next; + mes "[Kadiya]"; + mes "She smiles. \"Thank you! I feel better already!\"."; + next; + mes "[Kadiya]"; + mes "She looks much healthier, too. Omar walks over and touches her forehead."; + mes "\"Now that is funny – your fever has gone down quite a bit!\""; + mes "He smiles at you. \"Thank you for your help!\""; + next; + mes "[Kadiya]"; + mes "\"You should get some sleep now, sweetheart. I'm sure that you will be better soon.\""; + goto L_Close; + +L_cured: + mes "[Kadiya]"; + mes "Kadiya seems to be sleeping calmly. She looks much less sweaty than earlier; unless you are very much mistaken, her fever has disappeared."; + goto L_Close; + +L_Close: + set @Q_status, 0; + set @Q_MASK, 0; + set @Q_SHIFT, 0; + set @M_NAME, 0; + set @M_CANDY, 0; + set @M_POTION, 0; + set @M_CHOCOCAKE, 0; + set @M_CUPCAKE, 0; + set @choice, 0; + set @choices_nr, 0; + cleararray @choice_idx[0], 0, 7; + cleararray @choice$[0], "", 7; + close; + +S_update_var: + set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); + return; +} diff --git a/world/map/npc/002-2/phaet.txt b/world/map/npc/002-2/phaet.txt new file mode 100644 index 00000000..eb464e1e --- /dev/null +++ b/world/map/npc/002-2/phaet.txt @@ -0,0 +1,30 @@ +// + +002-2.gat,75,56,0|script|Phaet|125,0,0 +{ + mes "[Phaet the Royal Guard]"; + mes "\"Hey, you seem tough enough! Would you like to prove your skills? I'll let you in the arena if you give me 50 gp. You can fight against other players there.\""; + next; + menu + "Yes", L_Sure, + "No", L_Next; + +L_Next: + mes "[Phaet the Royal Guard]"; + mes "\"Ha ha, coward.\""; + close; + +L_Sure: + if (Zeny < 50) goto L_NoMoney; + set Zeny, Zeny - 50; + + mes "[Phaet the Royal Guard]"; + mes "\"Get ready!\""; + next; + warp "001-3.gat", 0, 0; + close; + +L_NoMoney: + mes "\"Wait a second, you don't have enough money.\""; + close; +} diff --git a/world/map/npc/002-2/rebecca.txt b/world/map/npc/002-2/rebecca.txt new file mode 100644 index 00000000..54244115 --- /dev/null +++ b/world/map/npc/002-2/rebecca.txt @@ -0,0 +1,84 @@ +// + +002-2.gat,44,27,0|script|Rebecca|118 +{ + set @npcname$, "Rebecca the Inn Keeper"; + set @cost, 100; + mes "[" + @npcname$ + "]"; + mes "\"Welcome to 'The Wizard's Rest'\""; + goto L_MainMenu; + +L_MainMenu: + mes "\"How may I help you?\""; + menu + "Can I get a room?", L_Inn, + "Any interesting guests?", L_Guests, + "Bakery?", L_Bakery, + "Barber?", L_Barber, + "Casino?", L_Casino, + "Theatre?", L_Theatre, + "Pvp?", L_Pvp, + "I don't need any help, thanks.", L_Close; + +L_Guests: + mes "\"We had a very rich business man show up the other day.\""; + next; + mes "\"He caused quite a stir when he paid for the penthouse so far in advance."; + mes "I hear he is looking for help.\""; + next; + mes "\"Other then that feel free to mingle with the guests.\""; + next; + mes "\"You can find them in the door behind me.\""; + goto L_Close; + + +L_Bakery: + mes "\"Ahh yes, the World Famous Riskim's bakery.\""; + next; + mes "\"They only use the finest ingredients like Acorn Flour"; + mes "to make some of the tastest treats in Tonori.\""; + next; + mes "Second only to the Wizards' private chef, Fieri.\""; + goto L_MainMenu; + +L_Barber: + mes "\"Issay the barber of Tonori can be found through the door behind me\""; + next; + mes "\"The master stylist can do anything with anyones hair.\""; + next; + mes "\"He always welcomes walk ins.\""; + goto L_MainMenu; + +L_Casino: + mes "\"Games, Games, Games.\""; + next; + mes "\"Test your luck or skill in the Casino. From Blackjack to Pvp.\""; + next; + mes "\"Win or Lose, you'll still have fun!\""; + goto L_MainMenu; + +L_Theatre: + mes "\"A touring troop from Hurnscald just arrived.\""; + next; + mes "\"The are currently rehearsing for their next show.\""; + next; + mes "\"Feel free to talk to the troupe leader, they are in the theatre behind me.\""; + goto L_MainMenu; + +L_Pvp: + mes "\"Yes, our Casino has Pvp in the Casino behind me.\""; + next; + mes "\"Test your self against other players and gamble on the outcome.\""; + next; + mes "\"Fame and glory awaits you gladiator!\""; + goto L_MainMenu; + +L_Inn: + callfunc "Inn"; + goto L_Close; + +L_Close: + set @npcname$, ""; + set @cost, 0; + close; +} diff --git a/world/map/npc/002-2/shops.txt b/world/map/npc/002-2/shops.txt new file mode 100644 index 00000000..87986111 --- /dev/null +++ b/world/map/npc/002-2/shops.txt @@ -0,0 +1,3 @@ +// Bartender + +002-2.gat,68,25,0|shop|Bartender#Casino|112,Beer:*175,Cake:*30,CherryCake:*100 diff --git a/world/map/npc/002-2/stranger.txt b/world/map/npc/002-2/stranger.txt new file mode 100644 index 00000000..563af742 --- /dev/null +++ b/world/map/npc/002-2/stranger.txt @@ -0,0 +1,464 @@ +002-2.gat,38,57,0|script|Stranger|192 +{ + set @IRONINGOT, 5; + set @PINKANTENNA, 21; + 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 ((gettimetick(2)-TUT_var < 6*7*86400) || (BaseLevel < 42)) //player must be created at least 6 weeks ago and at least level 42 + goto L_No_Event; + if (FLAGS & FLAG_TOWEL_HELPED) goto L_Towel; + + mes "[Stranger]"; + mes "\"Hello, hello! It's great to see you. Maybe you can help me with a little problem I have.\""; + next; + mes "\"I need some materials to repair my spacesh- ahm, it's not important why I need it.\""; + next; + mes "\"Anyway, I'd be really happy if you can give me " + @IRONINGOT + " Iron Ingots and " + @PINKANTENNA + " Pink Antennas.\""; + next; + mes "\"Do you have that for me?\""; + menu + "Yeah, sure.",L_Items, + "No.",L_Close; + +L_Items: + if (countitem("IronIngot") < @IRONINGOT) goto L_No_Item; + if (countitem("PinkAntenna") < @PINKANTENNA) goto L_No_Item; + delitem "IronIngot", @IRONINGOT; + delitem "PinkAntenna", @PINKANTENNA; + getexp @Exp, 0; + set FLAGS, FLAGS | FLAG_TOWEL_HELPED; + + mes "[Stranger]"; + mes "\"Great! Thank you!\""; + next; + mes "\"I have a lot of work to do now. But before you leave...\""; + next; + goto L_Towel; + +L_Towel: + getinventorylist; + if (@inventorylist_count == 100) goto L_Full_Inv; + mes "[Stranger]"; + mes "\"On May 25th it is a very special day - Towel Day.\""; + next; + mes "\"To celebrate this I'll ask you some questions about my favourite book, The Hitchhiker's Guide to the Galaxy. If you can answer them, I'll give you something very useful.\""; + next; + mes ""; + mes "[Server]"; + mes "The answers might need to have whitespaces."; + mes "If you're using a client which confirms your answer when pressing space, change this setting before continuing."; + mes ""; + next; + mes "[Stranger]"; + mes "\"The first one is easy.\""; + next; + + setarray @easy_questions$, + "What two words are written in big friendly letters on the back cover?", + "What's the name of the paranoid robot?", + "What is the answer to life, the universe and everything?", + "What is the first name of the author of the hitchhikers guide?", + "What is the last name of the author of the hitchhikers guide?", + "Who is the male human protagonist?", + "Who is the female human protagonist?", + "According to the Guide, space is ____?", + "What is the name of the spaceship which was stolen by the president of the universe?", + "How many heads does Zaphod Beeblebrox have?"; + + setarray @easy_answers_amount,2,2,2,2,2,4,4,2,4,2; + + set @random, rand(10); + mes "\"" + @easy_questions$[@random] + "\""; + input @answer$; + + if (@easy_answers_amount[@random] < 4) + goto L_Easy_Skip4; + set @quizparam$, "towelanswer0" + @random + "d"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + goto L_Easy_Skip4; + +L_Easy_Skip4: + if (@easy_answers_amount[@random] < 3) + goto L_Easy_Skip3; + set @quizparam$, "towelanswer0" + @random + "c"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + goto L_Easy_Skip3; + +L_Easy_Skip3: + set @quizparam$, "towelanswer0" + @random + "b"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + + set @quizparam$, "towelanswer0" + @random + "a"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + + goto L_Wrong_Answer; + +L_Right_Answer_Easy: + mes "[Stranger]"; + mes "\"You're absolutely right. The next one will be more tricky.\""; + next; + + setarray @medium_questions$, + "What is the name of the rock group claiming to be the loudest band in the universe?", + "What star is near Ford's home planet?", + "Which country does the human protagonist come from?", + "What is the name of the computer on The Heart of Gold?", + "What color is a Babel Fish?", + "What did the bowl of petunias think?", + "What body orifice should a babel fish be inserted in to work properly?", + "What is the name of the super computer?", + "What were the second most intelligent creatures on Earth?", + "What race creates the worst poetry in universe?", + "What is the name of the Vogon home planet?", + "What is the name of the Restaurant at the End of the Universe?"; + + setarray @medium_answers_amount,2,2,2,2,2,3,2,2,4,4,2,2; + + set @random, rand(12); + mes "\"" + @medium_questions$[@random] + "\""; + input @answer$; + + if (@medium_answers_amount[@random] < 4) + goto L_Medium_Skip4; + + set @quizparam$, "towelanswer1" + @random + "d"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + goto L_Medium_Skip4; + +L_Medium_Skip4: + if (@medium_answers_amount[@random] < 3) + goto L_Medium_Skip3; + set @quizparam$, "towelanswer1" + @random + "c"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + goto L_Medium_Skip3; + +L_Medium_Skip3: + set @quizparam$, "towelanswer1" + @random + "b"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + + set @quizparam$, "towelanswer1" + @random + "a"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + + goto L_Wrong_Answer; + +L_Right_Answer_Medium: + mes "[Stranger]"; + mes "\"Not bad, not bad. Let's see if you can answer an even more difficult one.\""; + next; + + setarray @hard_questions$, + "Drinking what drink is like having your brain smashed out by a slice of lemon wrapped round a large gold brick?", + "How many pints of beers should you drink before hitchhiking?", + "What initials are carved into Zaphod Beeblebrox's brain?", + "What is Ford Prefect's nickname?", + "Who is responsible for the fjords of Norway?", + "What game is played on earth as a relict of memories to an ancient war?", + "What is the name of the triple-breasted whore from Eroticon VI?", + "Who will insult every living being in the universe, because he is immortal and getting bored?", + "What is the name of the piteous creature that is continually reincarnated and subsequently killed, each time unknowingly, by Arthur Dent?"; + + setarray @hard_answers_amount,4,2,2,2,2,2,2,4,2; + + set @random, rand(9); + mes "\"" + @hard_questions$[@random] + "\""; + input @answer$; + + if (@hard_answers_amount[@random] < 4) + goto L_Hard_Skip4; + set @quizparam$, "towelanswer2" + @random + "d"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + goto L_Hard_Skip4; + +L_Hard_Skip4: + if (@hard_answers_amount[@random] < 3) + goto L_Hard_Skip3; + set @quizparam$, "towelanswer2" + @random + "c"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + goto L_Hard_Skip3; + +L_Hard_Skip3: + set @quizparam$, "towelanswer2" + @random + "b"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + + set @quizparam$, "towelanswer2" + @random + "a"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + + goto L_Wrong_Answer; + +L_Right_Answer_Hard: + mes "[Stranger]"; + mes "\"Unbelievable! You're really a wise person.\""; + next; + mes "\"One last question, but this shouldn't be a problem for you.\""; + next; + mes "\"What is the most important item for every hitchhiker to have?\""; + input @answer$; + if (@answer$ != "Towel" && @answer$ != "towel") + goto L_Wrong_Answer; + + mes "[Stranger]"; + mes "\"There you are! A towel is really the most important item for a hitchhiker to have.\""; + next; + mes "\"Please take this.\""; // no full inventory check, this is done before the game + set FLAGS, FLAGS | FLAG_TOWEL_COMPLETED; + next; + goto L_Explain; + +L_Explain: + mes "[Stranger]"; + mes "\"This towel is even more useful than usual towels are. If you change its color, it uses a special techno-, ahm, let's say, it can help you to get to other places.\""; + next; + mes "\"Bring me some powder made from gemstones and a bottle of water, and I can prepare it for you.\""; + next; + mes "\"Depending on the color it will bring you to different places. It might wear out after a while and it'll loose its color, but I can prepare it for you again.\""; + next; + mes "\"Since I'm not familar with this plane-, ahm, with this area, I can't tell which places you will end up in.\""; + goto L_Close; + +L_No_Event: + mes "[Stranger]"; + mes "\"Hello. Isn't this a beautiful place?\""; + next; + mes "\"And it really comes in handy that I have my towel with me. A towel is about the most massively useful thing an inte- ahm, a person can have.\""; + next; + mes "\"You can read more about that in my favourite book, 'The Hitchhiker's Guide to the Galaxy'.\""; + if (FLAGS & FLAG_TOWEL_COMPLETED) + menu + "Thanks for the advice.",L_Close, + "I have my towel with me too.",L_Dye; + goto L_Close; + +L_Dye: + mes "[Stranger]"; + mes "\"Wonderful! Let me have a look.\""; + mes "He's taking a very interested look at your towel."; + next; + mes "[Stranger]"; + mes "\"I'm impressed. This is not an usual towel.\""; + next; + menu + "Oh? Can you explain about it?",L_Explain, + "I know. Could you dye it for me?",L_StartDyeTowel, + "It's great, isn't it? I have to go now.",L_Close; + +L_No_Item: + mes "[Stranger]"; + mes "\"Hu? It seems you haven't.\""; + goto L_Close; + +L_Wrong_Answer: + mes "[Stranger]"; + mes "\"Nah, that's wrong. Come back if you want to try again.\""; + goto L_Close; + +L_Event_Done: + mes "[Stranger]"; + mes "\"Ah, welcome back. Thanks again for your help.\""; + next; + mes "\"Shall I dye your towel?\""; + menu + "That would be great!", L_StartDyeTowel, + "No, thanks.", L_Close; + +L_StartDyeTowel: + mes "[Stranger]"; + mes "\"Alright, which color do you want?\""; +// the other colors should be added when more places are released + menu + "Red",L_Red, + "Yellow",L_Yellow, + "White",L_White, + "Blue",L_Blue, + "Green",L_Green, + "Purple",L_Purple, + "Orange",L_Orange, + "Pink",L_Pink, + "Lime",L_Lime, + "Teal",L_Teal, + "I changed my mind.", L_Close; + +L_White: + // Koga + set @warpTowelName$, "WhiteHitchhikersTowel"; + setarray @towelPowder$, "DiamondPowder"; + setarray @towelPowderCnt, 2; + goto L_DyeChecks; + +L_Red: + // Barbarians + set @warpTowelName$, "RedHitchhikersTowel"; + setarray @towelPowder$, "RubyPowder"; + setarray @towelPowderCnt, 2; + goto L_DyeChecks; + +L_Green: + // Candor + set @warpTowelName$, "GreenHitchhikersTowel"; + setarray @towelPowder$, "EmeraldPowder"; + setarray @towelPowderCnt, 2; + goto L_DyeChecks; + +L_Blue: + // Blue Sages + set @warpTowelName$, "BlueHitchhikersTowel"; + setarray @towelPowder$, "SapphirePowder"; + setarray @towelPowderCnt, 2; + goto L_DyeChecks; + +L_Yellow: + // Tulimshar Mines + set @warpTowelName$, "YellowHitchhikersTowel"; + setarray @towelPowder$, "TopazPowder"; + setarray @towelPowderCnt, 2; + goto L_DyeChecks; + +L_Purple: + // Dimonds Inn + set @warpTowelName$, "PurpleHitchhikersTowel"; + setarray @towelPowder$, "AmethystPowder"; + setarray @towelPowderCnt, 2; + goto L_DyeChecks; + +L_Orange: + // Graveyard + set @warpTowelName$, "OrangeHitchhikersTowel"; + setarray @towelPowder$, "RubyPowder", "TopazPowder"; + setarray @towelPowderCnt, 1, 1; + goto L_DyeChecks; + +L_Pink: + // Terranite Cave + set @warpTowelName$, "PinkHitchhikersTowel"; + setarray @towelPowder$, "RubyPowder", "DiamondPowder"; + setarray @towelPowderCnt, 1, 1; + goto L_DyeChecks; + +L_Teal: + // Mana Seed + set @warpTowelName$, "TealHitchhikersTowel"; + setarray @towelPowder$, "EmeraldPowder", "SapphirePowder"; + setarray @towelPowderCnt, 1, 1; + goto L_DyeChecks; + +L_Lime: + // Panchua + set @warpTowelName$, "LimeHitchhikersTowel"; + setarray @towelPowder$, "EmeraldPowder", "TopazPowder"; + setarray @towelPowderCnt, 1, 1; + goto L_DyeChecks; + +L_DyeChecks: + mes "[Stranger]"; + mes "\"Ok, I'll need a bottle of water first.\""; + next; + getinventorylist; + if (@inventorylist_count == 100) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + set @powderCheckCount, 0; + goto L_PowderChecks; + +L_PowderCheckAgain: + mes "[Stranger]"; + mes "\"Now I need " + @towelPowderCnt[@powderCheckCount] + " " + @towelPowder$[@powderCheckCount] + ".\""; + next; + if((@powderCheckCount + 1) == getarraysize(@towelPowder$)) + goto L_TowelChecks; + set @powderCheckCount, (@powderCheckCount + 1); + goto L_PowderChecks; + +L_PowderChecks: + if (countitem(@towelPowder$[@powderCheckCount]) < @towelPowderCnt[@powderCheckCount]) + goto L_No_Powder; + goto L_PowderCheckAgain; + +L_TowelCheckAgain: + set @towelCheckCount, (@towelCheckCount + 1); + if(@towelCheckCount >= getarraysize(@towelReq$)) + goto L_No_Towel; + goto L_TowelChecks; + +L_TowelChecks: + if (countitem(@towelReq$[@towelCheckCount]) > 0) + goto L_DeletePowder; + goto L_TowelCheckAgain; + +L_DeleteAgain: + set @powderCheckCount, (@powderCheckCount - 1); + goto L_DeletePowder; + +L_DeletePowder: + delitem @towelPowder$[@powderCheckCount], @towelPowderCnt[@powderCheckCount]; + if (@powderCheckCount) + goto L_DeleteAgain; + goto L_DyeTowel; + +L_DyeTowel: + delitem @towelReq$[@towelCheckCount], 1; + callfunc "MultiWarpTowel"; + delitem "BottleOfWater", 1; + getitem @warpTowelName$, 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_Close; + +L_No_Water: + mes "[Stranger]"; + mes "\"You don't have water.\""; + goto L_Close; + +L_No_Powder: + mes "[Stranger]"; + mes "\"You need to bring me enough gem powder in that color. Maybe someone used to mining can help you with that.\""; + goto L_Close; + +L_No_Towel: + mes "[Stranger]"; + mes "\"Where's your towel? It is really useful, you should always keep it with you.\""; + goto L_Close; + +L_Full_Inv: + mes "[Stranger]"; + mes "\"You carry a lot of stuff with you, don't you? Maybe you should get rid of something.\""; + goto L_Close; + +L_Close: + set @IRONINGOT, 0; + set @PINKANTENNA, 0; + set @Exp, 0; + set @random, 0; + set @quizparam$, ""; + set @warpTowelName$, ""; + set @powderCheckCount, 0; + set @towelCheckCount, 0; + cleararray @towelPowder$, "", getarraysize(@towelPowder$); + cleararray @towelPowderCnt, "", getarraysize(@towelPowderCnt); + close; +} diff --git a/world/map/npc/002-2/traveler.txt b/world/map/npc/002-2/traveler.txt deleted file mode 100644 index 945bc82e..00000000 --- a/world/map/npc/002-2/traveler.txt +++ /dev/null @@ -1,11 +0,0 @@ -// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world. -// Author: Wombat, wushin -// cost depending on level and adapted to new scripting guidelines: Jenalya - -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-2/troupe_leader.txt b/world/map/npc/002-2/troupe_leader.txt new file mode 100644 index 00000000..c736899d --- /dev/null +++ b/world/map/npc/002-2/troupe_leader.txt @@ -0,0 +1,65 @@ +// + +002-2.gat,81,21,0|script|Troupe Leader|165 +{ + callfunc "ClearVariables"; + + set @inspector, ((QUEST_Hurnscald & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT); + + if (@inspector == 4) goto L_NohMask_Troupe; + if (@inspector == 13) goto L_NohMask_Found; + + mes "[Troupe Leader]"; + mes "\"Hello. I'm the leader of a traveling theater troupe. We'll be staying here in Tulimshar for a while.\""; + goto L_Close; + +L_NohMask_Troupe: + mes "[Troupe Leader]"; + mes "\"Yes, a mask was stolen from us the last night we were in Hurnscald.\""; + next; + menu + "Any ideas on who might have taken it?", L_NohMask_Idea, + "Are you sure one of your troupe members didn't hide it and commit those robberies?", L_NohMask_Accuse, + "Hmm...", L_Close; + +L_NohMask_Idea: + set @inspector, 5; + callsub S_Update_Mask; + mes "[Troupe Leader]"; + mes "\"Hm...I did see an old man hang out near the theater after our last show.\""; + goto L_Close; + +L_NohMask_Accuse: + mes "[Troupe Leader]"; + mes "\"I am absolutely positive. None of my troupe have left the city since we got here. Good day!\""; + goto L_Close; + +L_NohMask_Found: + mes "[Troupe Leader]"; + mes "\"Thank you for finding the mask. You did such a good job, you should keep it.\""; + getinventorylist; + if (@inventorylist_count == 100) goto L_NohMask_TooMany; + mes "[1500 experience points]"; + getexp 1500, 0; + set @inspector, 14; + callsub S_Update_Mask; + getitem "NohMask", 1; + next; + mes "[Troupe Leader]"; + mes "\"We don't need it anymore. We're doing different shows here.\""; + goto L_Close; + +L_NohMask_TooMany: + next; + mes "[Troupe Leader]"; + mes "\"Except, you don't seem to have any room for it. I'll hold onto it for you until you do have room.\""; + goto L_Close; + +L_Close: + set @inspector, 0; + close; + +S_Update_Mask: + set QUEST_Hurnscald, (QUEST_Hurnscald & ~(NIBBLE_3_MASK)) | (@inspector << NIBBLE_3_SHIFT); + return; +} diff --git a/world/map/npc/002-3/_import.txt b/world/map/npc/002-3/_import.txt index 47aab35a..bab4c837 100644 --- a/world/map/npc/002-3/_import.txt +++ b/world/map/npc/002-3/_import.txt @@ -7,3 +7,4 @@ npc: npc/002-3/mapflags.txt npc: npc/002-3/merchant.txt npc: npc/002-3/mining_camp_barrier.txt npc: npc/002-3/nathan.txt +npc: npc/002-3/traveler.txt diff --git a/world/map/npc/002-3/_warps.txt b/world/map/npc/002-3/_warps.txt index e7ed3d83..b4f2078d 100644 --- a/world/map/npc/002-3/_warps.txt +++ b/world/map/npc/002-3/_warps.txt @@ -1,6 +1,6 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Tulimshar Mining Camp warps -002-3.gat,22,87|warp|To Beach|-1,-1,043-1.gat,85,55 -002-3.gat,85,51|warp|To Sand Storm Upper|-1,-1,002-1.gat,79,101 -002-3.gat,51,36|warp|To Sand Storm|-1,-1,002-1.gat,20,96 +002-3.gat,22,87|warp|Deep Caves|-1,-1,043-3.gat,31,27 +002-3.gat,85,51|warp|To Sand Storm Upper|-1,-1,002-1.gat,92,115 +002-3.gat,51,36|warp|To Sand Storm|-1,-1,002-1.gat,33,110 diff --git a/world/map/npc/002-3/traveler.txt b/world/map/npc/002-3/traveler.txt new file mode 100644 index 00000000..ff53af8f --- /dev/null +++ b/world/map/npc/002-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 + +002-3.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/003-2/_import.txt b/world/map/npc/003-2/_import.txt deleted file mode 100644 index 8f9dba48..00000000 --- a/world/map/npc/003-2/_import.txt +++ /dev/null @@ -1,6 +0,0 @@ -// Map 003-2: Beach House -// This file is generated automatically. All manually changes will be removed when running the Converter. -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/_mobs.txt b/world/map/npc/003-2/_mobs.txt deleted file mode 100644 index 7a08ce43..00000000 --- a/world/map/npc/003-2/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Beach House mobs - - - -003-2.gat,0,0,0|script|Mob003-2|-1 -{ - end; -} diff --git a/world/map/npc/003-2/_warps.txt b/world/map/npc/003-2/_warps.txt deleted file mode 100644 index 56865f1e..00000000 --- a/world/map/npc/003-2/_warps.txt +++ /dev/null @@ -1,5 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Beach House warps - -003-2.gat,22,29|warp|To Outside|-1,-1,003-1.gat,48,37 -003-2.gat,56,29|warp|To Outside|-1,-1,003-1.gat,59,30 diff --git a/world/map/npc/003-2/mapflags.txt b/world/map/npc/003-2/mapflags.txt deleted file mode 100644 index be495b87..00000000 --- a/world/map/npc/003-2/mapflags.txt +++ /dev/null @@ -1 +0,0 @@ -003-2.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 deleted file mode 100644 index f4d7ac2b..00000000 --- a/world/map/npc/004-2/_import.txt +++ /dev/null @@ -1,7 +0,0 @@ -// 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 deleted file mode 100644 index 8d94f675..00000000 --- a/world/map/npc/004-2/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Buccaneer's Den mobs - - - -004-2.gat,0,0,0|script|Mob004-2|-1 -{ - end; -} diff --git a/world/map/npc/004-2/_warps.txt b/world/map/npc/004-2/_warps.txt deleted file mode 100644 index 99d99a88..00000000 --- a/world/map/npc/004-2/_warps.txt +++ /dev/null @@ -1,11 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Buccaneer's Den warps - -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 -004-2.gat,68,66|warp|To First Floor|0,-1,004-2.gat,35,19 -004-2.gat,36,18|warp|To Second Floor|0,-1,004-2.gat,67,65 -004-2.gat,57,66|warp|To Roof|-1,-1,004-1.gat,86,28 diff --git a/world/map/npc/004-2/mapflags.txt b/world/map/npc/004-2/mapflags.txt deleted file mode 100644 index 8424c17f..00000000 --- a/world/map/npc/004-2/mapflags.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index c5149098..00000000 --- a/world/map/npc/004-2/pirate_cave_exit.txt +++ /dev/null @@ -1,18 +0,0 @@ -// 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/_warps.txt b/world/map/npc/004-3/_warps.txt index 507b3d9d..dfdfa8be 100644 --- a/world/map/npc/004-3/_warps.txt +++ b/world/map/npc/004-3/_warps.txt @@ -1,10 +1,10 @@ // This file is generated automatically. All manually 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,24,95|warp|To West Beach|-1,-1,002-1.gat,49,21 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,80,22|warp|To West Beach House|-1,-1,021-3.gat,44,142 004-3.gat,77,40|warp|To Pirate Caves|-1,-1,004-4.gat,78,34 diff --git a/world/map/npc/004-3/mapflags.txt b/world/map/npc/004-3/mapflags.txt index 736aefe5..a6af2bfc 100644 --- a/world/map/npc/004-3/mapflags.txt +++ b/world/map/npc/004-3/mapflags.txt @@ -1 +1 @@ -004-3.gat|mapflag|resave|001-1,57,71 +004-3.gat|mapflag|resave|001-1,60,105 diff --git a/world/map/npc/004-4/mapflags.txt b/world/map/npc/004-4/mapflags.txt index 47d2d4fc..5a8e7b9e 100644 --- a/world/map/npc/004-4/mapflags.txt +++ b/world/map/npc/004-4/mapflags.txt @@ -1 +1 @@ -004-4.gat|mapflag|resave|001-1,57,71 +004-4.gat|mapflag|resave|001-1,60,105 diff --git a/world/map/npc/004-5/mapflags.txt b/world/map/npc/004-5/mapflags.txt index 34d312dc..4bdc0a1b 100644 --- a/world/map/npc/004-5/mapflags.txt +++ b/world/map/npc/004-5/mapflags.txt @@ -1 +1 @@ -004-5.gat|mapflag|resave|001-1,57,71 +004-5.gat|mapflag|resave|001-1,60,105 diff --git a/world/map/npc/005-1/_import.txt b/world/map/npc/005-1/_import.txt deleted file mode 100644 index 1b386a11..00000000 --- a/world/map/npc/005-1/_import.txt +++ /dev/null @@ -1,10 +0,0 @@ -// Map 005-1: Snake Desert -// This file is generated automatically. All manually changes will be removed when running the Converter. -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 deleted file mode 100644 index 22f80e0f..00000000 --- a/world/map/npc/005-1/_mobs.txt +++ /dev/null @@ -1,45 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Snake Desert mobs - -005-1.gat,0,0,0,0|monster|Maggot|1002,1,100000ms,30000ms,Mob005-1::On1002 -005-1.gat,0,0,0,0|monster|Snake|1010,1,100000ms,30000ms,Mob005-1::On1010 -005-1.gat,71,77,9,6|monster|Snake|1010,2,40000ms,50000ms,Mob005-1::On1010 -005-1.gat,92,25,8,5|monster|Snake|1010,3,40000ms,50000ms,Mob005-1::On1010 -005-1.gat,99,68,95,52|monster|GiantMaggot|1006,20,100000ms,30000ms,Mob005-1::On1006 -005-1.gat,91,15,66,23|monster|BlackScorpion|1009,7,100000ms,30000ms,Mob005-1::On1009 -005-1.gat,99,87,85,32|monster|BlackScorpion|1009,8,100000ms,30000ms,Mob005-1::On1009 -005-1.gat,30,43,21,25|monster|GreenSlime|1005,3,100000ms,30000ms,Mob005-1::On1005 -005-1.gat,118,70,3,2|monster|GreenSlime|1005,2,100000ms,30000ms,Mob005-1::On1005 -005-1.gat,163,71,32,65|monster|Snake|1010,8,100000ms,30000ms,Mob005-1::On1010 -005-1.gat,122,52,77,84|monster|Maggot|1002,20,100000ms,30000ms,Mob005-1::On1002 - - -005-1.gat,0,0,0|script|Mob005-1|-1 -{ - end; - -On1002: - set @mobID, 1002; - callfunc "MobPoints"; - end; - -On1005: - set @mobID, 1005; - callfunc "MobPoints"; - end; - -On1006: - set @mobID, 1006; - callfunc "MobPoints"; - end; - -On1009: - set @mobID, 1009; - callfunc "MobPoints"; - end; - -On1010: - set @mobID, 1010; - callfunc "MobPoints"; - end; -} diff --git a/world/map/npc/005-1/_warps.txt b/world/map/npc/005-1/_warps.txt deleted file mode 100644 index a4622df6..00000000 --- a/world/map/npc/005-1/_warps.txt +++ /dev/null @@ -1,21 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Snake Desert warps - -005-1.gat,19,41|warp|To Sandstorm Desert|-1,2,002-1.gat,107,79 -005-1.gat,89,23|warp|To Snake Pit|-1,-1,005-3.gat,52,35 -005-1.gat,71,75|warp|To Snake Pit|-1,-1,005-3.gat,33,84 -005-1.gat,167,108|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,168,107|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,169,106|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,170,105|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,171,104|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,172,103|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,173,102|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,174,101|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,175,100|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -005-1.gat,176,99|warp|To Desert Mountains|-1,-1,006-1.gat,25,26 -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 deleted file mode 100644 index 3ede3802..00000000 --- a/world/map/npc/005-1/mapflags.txt +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index 6eed9735..00000000 --- a/world/map/npc/005-1/npcs.txt +++ /dev/null @@ -1,18 +0,0 @@ -// - - -//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 -{ - mes "[William]"; - mes "\"Going in the cave?"; - mes "You better watch your step, last time I checked it was full of monsters!\""; - close; -} diff --git a/world/map/npc/005-1/spirit.txt b/world/map/npc/005-1/spirit.txt deleted file mode 100644 index 6e2784d2..00000000 --- a/world/map/npc/005-1/spirit.txt +++ /dev/null @@ -1,299 +0,0 @@ -function|script|EarthImpTouch -{ - if (getskilllv(SKILL_MAGIC)) goto L_message; - - mes "[Well]"; - mes "You hear noises from within the well."; - close; - -L_message: - set @Q_MASK, NIBBLE_0_MASK; - set @Q_SHIFT, NIBBLE_0_SHIFT; - set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT; - - // Set up SkillUp function - set @SUP_id, SKILL_MAGIC_NATURE; - set @SUP_name$, "Nature Magic"; - set @Q_STATUS_INITIAL, 0; - set @Q_STATUS_ONQUEST, 1; - set @Q_STATUS_STUDENT0, 2; - set @Q_STATUS_STUDENT1, 3; - set @Q_STATUS_STUDENT2, 4; - set @Q_STATUS_STUDENT3, 5; - - set @s$, "girl"; - if (Sex) set @s$, "boy"; - - if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) goto L_wb; - - mes "[Well]"; - mes "Something is inside that well, and now that you have turned your attention towards it, it seems to be talking to you!"; - next; - - mes "[Well]"; - mes "\"Hey! You there! Yes, I'm talking to you!\""; - mes "That strange voice seems to be coming from inside your head!"; - next; - menu - "Who, me?", L_Next, - "Leave me alone!", L_Close, - "Aaah! I'm hearing voices!", L_silly_close; - -L_Next: - mes "[Well]"; - mes "\"I'm in here, in the well, talking to you! If I'm not very mistaken, you are a powerful wizard-to-be, except that nobody has showed you how to properly do magic yet!\""; - next; - menu - "Who are you?", L_Next1, - "Aaaah! The voices are after me!", L_silly_close, - "Whatever it is, I'm not interested.", L_Close; - -L_Next1: - mes "[Earth Spirit]"; - mes "\"I'm an earth spirit; my name isn't important... all that matters is that I like you, and that I will help you become a powerful wizard if you help me. Just a fair deal, no more than that...\""; - next; - set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_IMP; - goto L_main; - -L_wb: - mes "[Earth Spirit]"; - mes "\"It's excellent to see you again!\""; - next; - goto L_main; - -L_main: - menu - "How did you get trapped?", L_Q_trapped, - "Can you teach me magic and spells?", L_Q_magic, - "What do you know about...", L_Q, - "Goodbye!", L_Close; - -L_Q_trapped: - mes "[Earth Spirit]"; - mes "\"Oh, a wicked witch grew jealous of my power and locked me up in this well.\""; - next; - goto L_main; - -L_Q: - mes "[Earth Spirit]"; - mes "\"Stop bothering me with your questions, will you? I'm trying to make you a powerful wizard, after all!\""; - next; - goto L_main; - -L_Q_magic: - if (@Q_status == @Q_STATUS_ONQUEST) goto L_Q_magic_1; - if (@Q_status == @Q_STATUS_STUDENT0) goto L_Q_magic_2; - if (@Q_status == @Q_STATUS_STUDENT1) goto L_Q_magic_3; - if (@Q_status == @Q_STATUS_STUDENT2) goto L_Q_magic_4; - - mes "[Earth Spirit]"; - mes "\"Good, good... that's the right attitude! Yes, I can teach you magic, but first you must prove that you are worthy to be my student!\""; - next; - mes "[Earth Spirit]"; - mes "\"North-west of here sits and old, dead tree. Well, not completely dead, not yet, but almost. It's nothing special. Well, maybe a little, but not really. I want you to cut off one of its branches.\""; - next; - menu - "No way.", L_silly_close, - "Sure.", L_Q_tree_ok, - "Why that particular tree?", L_Next2; - -L_Next2: - mes "[Earth Spirit]"; - mes "\"Oh, you and your questions! Well, that tree was a druid once, so the branches contain a bit of its lifeforce. And that's useful.\""; - next; - menu - "Yuck.", L_silly_close, - "Sure, whatever.", L_Q_tree_ok, - "Isn't that like cutting off someone's arm?", L_Next3; - -L_Next3: - mes "[Earth Spirit]"; - mes "\"Oooh... now come on! Don't be so sentimental. He turned himself into a tree, he can hardly expect everyone to leave him alone.\""; - next; - mes "[Earth Spirit]"; - mes "\"Who knows if he can even feel anything anymore? I'm sure he can't, being wooden and all. Besides, it's only a measly tree. Not like I'm asking you to cut him down!.\""; - next; - menu - "No way.", L_silly_close, - "Alright, that makes sense.", L_Q_tree_ok; - -L_Q_tree_ok: - mes "[Earth Spirit]"; - mes "\"Good, good, good! Yes, that will be very good! So, come back when you have the branch. Oh, and bring 100,000 GP, too, as an enrollment fee.\""; - set @Q_status, @Q_STATUS_ONQUEST; - callsub S_update_var; - set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_CUTTREE; - next; - goto L_main; - -L_Q_magic_1: - mes "[Earth Spirit]"; - mes "\"Yes, yes, if you bring me the branch and the money, then I will!\""; - next; - menu - "Here are the branch and the money.", L_Next4, - "How much money did you want again?", L_Q_tree_howmuch, - "How can I cut it?", L_Q_tree_how, - "Where was the tree again?", L_Q_tree_where, - "What is that tree?", L_Q_tree_what; - -L_Next4: - if (countitem("DruidTreeBranch") < 1) goto L_Q_tree_none; - if (!(MAGIC_FLAGS & MFLAG_DID_CUTTREE)) goto L_Q_tree_dry; - if (Zeny < 100000) goto L_Q_tree_nomoney; - - set Zeny, Zeny - 100000; - delitem "DruidTreeBranch", 1; - mes "[Earth Spirit]"; - mes "Following the earth sprite's instructions, you throw branch and GP into the well."; - next; - mes "[Earth Spirit]"; - mes "\"Well done, very well done! Consider yourself my student now.\""; - set @SUP_xp, 5000; - set @SUP_lvl, 2; - callfunc "SkillUp"; - next; - set @Q_status, @Q_STATUS_STUDENT0; - callsub S_update_var; - goto L_main; - -L_Q_magic_finish: - mes "[1000 experience points]"; - set @Q_status, @Q_status + 1; - callsub S_update_var; - getexp 1000,0; - next; - goto L_main; - -L_Q_magic_2: - mes "[Earth Spirit]"; - mes "\"Yes, of course! For just 20,000 GP I will teach you your first spell!\""; - next; - menu - "Here you are.", L_Next5, - "No.", L_main; - -L_Next5: - if (Zeny < 20000) goto L_no20k; - - set Zeny, Zeny - 20000; - mes "[Earth Spirit]"; - mes "\"Kekeke... excellent! Yes, here goes your first spell, the flying backpack! If you are overloaded, it will take the load off your shoulders.\""; - next; - mes "[Earth Spirit]"; - mes "\"Take a cocoon, living or dead, and suffuse it in magic. Whisper '" + getspellinvocation("flying-backpack") + "', and feel it float!\""; - goto L_Q_magic_finish; - -L_Q_magic_3: - mes "[Earth Spirit]"; - mes "\"But yes, yes! Only 20,000 GP, once again, and I will teach you a far more useful spell!\""; - next; - menu - "Here you are.", L_Next6, - "No.", L_main; - -L_Next6: - if (Zeny < 20000) goto L_no20k; - set Zeny, Zeny - 20000; - mes "[Earth Spirit]"; - mes "\"Yeees, good! This one is a protection spell, making your skin harder. You need a hard spike for it, though. Hold that spike in your hands, and focus on it.\""; - next; - mes "[Earth Spirit]"; - mes "\"Next, say '" + getspellinvocation("protect") + "', and feel your skin grow rigid! Very useful against stings and stabs and pokes and pricks and that sort of stuff.\""; - goto L_Q_magic_finish; - -L_Q_magic_4: - mes "[Earth Spirit]"; - mes "\"Naah, you're too weak now! Come back later when you have grown!\""; - next; - goto L_main; - -L_no20k: - mes "[Earth Spirit]"; - mes "\"You can't pay me 20,000 if you don't have that much!\""; - next; - goto L_main; - -L_Q_tree_none: - mes "[Earth Spirit]"; - mes "\"Where is your branch?\""; - next; - goto L_main; - -L_Q_tree_dry: - mes "[Earth Spirit]"; - mes "\"That won't do. This branch is completely dead; you'll have to get another.\""; - next; - goto L_main; - -L_Q_tree_nomoney: - mes "[Earth Spirit]"; - mes "\"No, you don't have enough money! Come back when you have 100,000.\""; - next; - goto L_main; - -L_Q_tree_howmuch: - mes "[Earth Spirit]"; - mes "\"It's only 100,000 GP to become my student.\""; - next; - goto L_main; - -L_Q_tree_how: - mes "[Earth Spirit]"; - mes "\"Oh... right, the tree might be protected. Only a bone knife will cut that. No idea where you can find one, but I'm sure you will manage!\""; - next; - goto L_main; - -L_Q_tree_where: - mes "[Earth Spirit]"; - mes "\"North-west of here.\""; - next; - goto L_main; - -L_Q_tree_what: - mes "[Earth Spirit]"; - mes "\"Just some silly druid who turned himself into a tree; nothing important.\""; - next; - goto L_main; - -L_silly_close: - if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) - mes "[Earth Spirit]"; - if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP)) - mes "[Well]"; - mes "\"Silly " + @s$ + ".\""; - goto L_Close; - -L_Close: - set @Q_MASK, 0; - set @Q_SHIFT, 0; - set @Q_status, 0; - set @SUP_id, 0; - set @SUP_name$, ""; - set @SUP_xp, 0; - set @SUP_lvl, 0; - set @Q_STATUS_INITIAL, 0; - set @Q_STATUS_ONQUEST, 0; - set @Q_STATUS_STUDENT0, 0; - set @Q_STATUS_STUDENT1, 0; - set @Q_STATUS_STUDENT2, 0; - set @Q_STATUS_STUDENT3, 0; - set @s$, ""; - close; - -S_update_var: - set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); - return; -} - -005-1.gat,118,70,0|script|#EarthImp0#_M|400 -{ - callfunc "EarthImpTouch"; - end; -} - -005-1.gat,119,70,0|script|#EarthImp1#_M|400 -{ - callfunc "EarthImpTouch"; - end; -} diff --git a/world/map/npc/005-1/traveler.txt b/world/map/npc/005-1/traveler.txt deleted file mode 100644 index 0d6f2eee..00000000 --- a/world/map/npc/005-1/traveler.txt +++ /dev/null @@ -1,11 +0,0 @@ -// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world. -// Author: Wombat, wushin -// cost depending on level and adapted to new scripting guidelines: Jenalya - -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-1/tree.txt b/world/map/npc/005-1/tree.txt deleted file mode 100644 index 27840370..00000000 --- a/world/map/npc/005-1/tree.txt +++ /dev/null @@ -1,168 +0,0 @@ -function|script|QuestTreeTrigger -{ - set @Q_MASK, NIBBLE_2_MASK; - set @Q_SHIFT, NIBBLE_2_SHIFT; - - set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; - set @Q_status_lower, @Q_status & 3; - set @Q_status, (@Q_status & 12) >> 2; - - if (@Q_status & @flag) goto L_Close; // already did that - - if (@flag == 2) goto L_hug; - goto L_cont; - -L_cont: - set @Q_status, @Q_status | @flag; - callsub S_update_var; - - if (@Q_status != 3) goto L_Close; - - if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_Close; - - mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger."; - mes "[20000 experience points]"; - getexp 20000, 0; - set @value, 15; - callfunc "QuestSagathaHappy"; - goto L_Close; - -L_hug: - mes "You hug the tree."; - next; - goto L_cont; - -L_Close: - set @Q_MASK, 0; - set @Q_SHIFT, 0; - set @Q_status, 0; - set @Q_status_lower, 0; - set @Q_wr_status, 0; - set @value, 0; - close; - -S_update_var: - set @Q_wr_status, (@Q_status << 2) | @Q_status_lower; - set QUEST_MAGIC, (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT)); - return; -} - -function|script|QuestTreeTouch -{ - set @Q_MASK, NIBBLE_2_MASK; - set @Q_SHIFT, NIBBLE_2_SHIFT; - - set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; - set @Q_status, (@Q_status & 12) >> 2; - - if (@Q_status == 3) goto L_happy; - - if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut; - - if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_water; - - if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0) //i.e., both are set - goto L_both; - - mes "[Dying Tree]"; - mes "You see a strange tree."; - goto L_Close; - -L_cut: - mes "[Dying Tree]"; - mes "This must be the tree that the earth spirit was referring to."; - next; - menu - "Cut off a branch", L_do_cut, - "Leave it alone", L_Close; - -L_water: - mes "[Dying Tree]"; - mes "This must be the druid tree."; - next; - menu - "Water the tree", L_givewater, - "Kiss tree", L_kiss, - "Leave it alone", L_Close; - -L_both: - mes "[Dying Tree]"; - mes "This must be the druid tree that Wyara and the earth spirit were talking about."; - next; - menu - "Water the tree", L_givewater, - "Kiss tree", L_kiss, - "Cut off a branch", L_do_cut, - "Leave it alone", L_Close; - -L_givewater: - if (countitem("BottleOfWater") < 1) goto L_no_water; - delitem "BottleOfWater", 1; - getitem "EmptyBottle", 1; - - mes "[Dying Tree]"; - mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect."; - goto L_Close; - -L_no_water: - mes "[Dying Tree]"; - mes "You don't have any water."; - goto L_Close; - -L_kiss: - mes "[Dying Tree]"; - mes "You pluck out a splinter from your lip."; - mes "Somehow, you don't think that this helped."; - goto L_Close; - -L_do_cut: - if (countitem("BoneKnife") < 1) goto L_no_boneknife; - - if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut; - - mes "[Dying Tree]"; - mes "You find a suitable branch and put your bone knife in position."; - mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you..."; - mes "Do you want to continue cutting?"; - next; - menu - "Nah... better not.", L_Close, - "Yes, let's cut!", L_really_cut; - -L_really_cut: - set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_DID_CUTTREE; - getitem "DruidTreeBranch", 1; - mes "[Dying Tree]"; - mes "You cut off a branch from the tree."; - mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand..."; - goto L_Close; - -L_no_boneknife: - mes "[Dying Tree]"; - mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?"; - goto L_Close; - -L_happy: - mes "[Druid Tree]"; - mes "The tree looks younger and healthier now."; - goto L_Close; - -L_Close: - set @Q_MASK, 0; - set @Q_SHIFT, 0; - set @Q_status, 0; - close; - -} - -005-1.gat,79,41,0|script|#DruidTree0#_M|400 -{ - callfunc "QuestTreeTouch"; - end; -} - -005-1.gat,80,41,0|script|#DruidTree1#_M|400 -{ - callfunc "QuestTreeTouch"; - end; -} diff --git a/world/map/npc/005-3/_mobs.txt b/world/map/npc/005-3/_mobs.txt index f275f267..d13405f5 100644 --- a/world/map/npc/005-3/_mobs.txt +++ b/world/map/npc/005-3/_mobs.txt @@ -1,13 +1,25 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Snake Pit mobs -005-3.gat,0,0,0,0|monster|Snake|1010,175,0ms,0ms,Mob005-3::On1010 +005-3.gat,58,57,62,57|monster|Snake|1010,50,100000ms,30000ms,Mob005-3::On1010 +005-3.gat,58,57,62,57|monster|BlackScorpion|1009,15,100000ms,30000ms,Mob005-3::On1009 +005-3.gat,58,57,62,57|monster|GiantMaggot|1006,20,100000ms,30000ms,Mob005-3::On1006 005-3.gat,0,0,0|script|Mob005-3|-1 { end; +On1006: + set @mobID, 1006; + callfunc "MobPoints"; + end; + +On1009: + set @mobID, 1009; + callfunc "MobPoints"; + end; + On1010: set @mobID, 1010; callfunc "MobPoints"; diff --git a/world/map/npc/005-3/_warps.txt b/world/map/npc/005-3/_warps.txt index 2f757add..b49daa39 100644 --- a/world/map/npc/005-3/_warps.txt +++ b/world/map/npc/005-3/_warps.txt @@ -1,5 +1,10 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Snake Pit warps -005-3.gat,52,33|warp|To Outside|-1,-1,005-1.gat,89,25 -005-3.gat,33,82|warp|To Outside|-1,-1,005-1.gat,71,77 +005-3.gat,52,33|warp|To Outside|-1,-1,002-1.gat,113,109 +005-3.gat,63,46|warp|Snake Mountain|-1,-1,006-3.gat,89,45 +005-3.gat,85,49|warp|Snake Mountain|-1,-1,006-3.gat,125,65 +005-3.gat,86,30|warp|To Outside|-1,-1,006-1.gat,55,47 +005-3.gat,73,60|warp|To Outside|-1,-1,006-1.gat,51,69 +005-3.gat,78,88|warp|Sandy Dungeon|-1,-1,043-3.gat,116,37 +005-3.gat,33,82|warp|Sandy Dungeon|-1,-1,043-3.gat,31,35 diff --git a/world/map/npc/005-3/mapflags.txt b/world/map/npc/005-3/mapflags.txt index 65920d4d..8916c392 100644 --- a/world/map/npc/005-3/mapflags.txt +++ b/world/map/npc/005-3/mapflags.txt @@ -1 +1 @@ -005-3.gat|mapflag|resave|005-1,80,30 +005-3.gat|mapflag|resave|006-1,36,18 diff --git a/world/map/npc/005-4/_import.txt b/world/map/npc/005-4/_import.txt deleted file mode 100644 index d48c6a1c..00000000 --- a/world/map/npc/005-4/_import.txt +++ /dev/null @@ -1,5 +0,0 @@ -// Map 005-4: Electricity Boss Cave -// This file is generated automatically. All manually changes will be removed when running the Converter. -map: 005-4.gat -npc: npc/005-4/_mobs.txt -npc: npc/005-4/_warps.txt diff --git a/world/map/npc/005-4/_mobs.txt b/world/map/npc/005-4/_mobs.txt deleted file mode 100644 index cc3a7de8..00000000 --- a/world/map/npc/005-4/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Electricity Boss Cave mobs - - - -005-4.gat,0,0,0|script|Mob005-4|-1 -{ - end; -} diff --git a/world/map/npc/005-4/_warps.txt b/world/map/npc/005-4/_warps.txt deleted file mode 100644 index 6d2cb2de..00000000 --- a/world/map/npc/005-4/_warps.txt +++ /dev/null @@ -1,4 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Electricity Boss Cave warps - -005-4.gat,37,36|warp|To Snake Pit|0,-1,005-3.gat,85,50 diff --git a/world/map/npc/006-1/_import.txt b/world/map/npc/006-1/_import.txt index 492ddf7d..b3f17a58 100644 --- a/world/map/npc/006-1/_import.txt +++ b/world/map/npc/006-1/_import.txt @@ -5,5 +5,8 @@ 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/miriam.txt npc: npc/006-1/pachua.txt +npc: npc/006-1/spirit.txt npc: npc/006-1/traveler.txt +npc: npc/006-1/tree.txt diff --git a/world/map/npc/006-1/_mobs.txt b/world/map/npc/006-1/_mobs.txt index 7b5aaf95..9a376631 100644 --- a/world/map/npc/006-1/_mobs.txt +++ b/world/map/npc/006-1/_mobs.txt @@ -1,32 +1,48 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Desert Mountains mobs -006-1.gat,25,34,12,31|monster|Snake|1010,3,100000ms,30000ms,Mob006-1::On1010 -006-1.gat,36,29,9,16|monster|Snake|1010,1,100000ms,30000ms,Mob006-1::On1010 -006-1.gat,34,41,4,6|monster|MountainSnake|1026,1,30000ms,75000ms,Mob006-1::On1026 -006-1.gat,55,37,27,23|monster|MountainSnake|1026,3,150000ms,10000ms,Mob006-1::On1026 +006-1.gat,49,52,7,3|monster|Snake|1010,1,100000ms,30000ms,Mob006-1::On1010 +006-1.gat,53,36,16,13|monster|MountainSnake|1026,3,150000ms,10000ms,Mob006-1::On1026 006-1.gat,89,26,33,13|monster|MountainSnake|1026,5,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,118,43,22,40|monster|MountainSnake|1026,8,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,115,49,6,3|monster|MountainSnake|1026,3,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,88,47,36,11|monster|MountainSnake|1026,3,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,105,72,25,16|monster|MountainSnake|1026,3,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,75,106,16,22|monster|MountainSnake|1026,4,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,102,97,36,29|monster|MountainSnake|1026,8,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,65,65,49,30|monster|MountainSnake|1026,8,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,95,120,38,13|monster|MountainSnake|1026,5,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,54,120,29,7|monster|MountainSnake|1026,4,15000ms,75000ms,Mob006-1::On1026 -006-1.gat,36,98,33,35|monster|Scorpion|1003,10,100000ms,30000ms,Mob006-1::On1003 +006-1.gat,113,41,12,37|monster|MountainSnake|1026,8,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,113,51,6,3|monster|MountainSnake|1026,3,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,86,46,29,5|monster|MountainSnake|1026,3,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,105,73,21,14|monster|MountainSnake|1026,3,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,73,102,8,13|monster|MountainSnake|1026,4,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,104,100,11,15|monster|MountainSnake|1026,8,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,82,72,25,16|monster|MountainSnake|1026,8,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,95,114,17,4|monster|MountainSnake|1026,5,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,57,119,18,2|monster|MountainSnake|1026,4,15000ms,75000ms,Mob006-1::On1026 +006-1.gat,33,97,27,33|monster|Scorpion|1003,10,100000ms,30000ms,Mob006-1::On1003 +006-1.gat,58,49,3,3|monster|GreenSlime|1005,3,100000ms,30000ms,Mob006-1::On1005 +006-1.gat,34,50,5,4|monster|Snake|1010,2,40000ms,50000ms,Mob006-1::On1010 +006-1.gat,96,92,20,48|monster|Snake|1010,2,40000ms,50000ms,Mob006-1::On1010 +006-1.gat,35,97,28,29|monster|Maggot|1002,20,100000ms,30000ms,Mob006-1::On1002 +006-1.gat,28,73,3,2|monster|GreenSlime|1005,2,100000ms,30000ms,Mob006-1::On1005 +006-1.gat,33,59,3,2|monster|GreenSlime|1005,2,100000ms,30000ms,Mob006-1::On1005 +006-1.gat,37,73,7,3|monster|Snake|1010,1,100000ms,30000ms,Mob006-1::On1010 +006-1.gat,100,36,38,24|monster|Snake|1010,2,40000ms,50000ms,Mob006-1::On1010 006-1.gat,0,0,0|script|Mob006-1|-1 { end; +On1002: + set @mobID, 1002; + callfunc "MobPoints"; + end; + On1003: set @mobID, 1003; callfunc "MobPoints"; end; +On1005: + set @mobID, 1005; + callfunc "MobPoints"; + end; + On1010: set @mobID, 1010; callfunc "MobPoints"; diff --git a/world/map/npc/006-1/_warps.txt b/world/map/npc/006-1/_warps.txt index 91459352..551d74a2 100644 --- a/world/map/npc/006-1/_warps.txt +++ b/world/map/npc/006-1/_warps.txt @@ -1,42 +1,32 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Desert Mountains warps -006-1.gat,18,31|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,40,26|warp|To Desert Mountains Cav|-1,-1,006-3.gat,40,28 -006-1.gat,60,58|warp|To Desert Mountains Cav|-1,-1,006-3.gat,60,70 -006-1.gat,62,30|warp|To Desert Mountains Cav|-1,-1,006-3.gat,62,32 -006-1.gat,55,27|warp|To Desert Mountains Cav|-1,-1,006-3.gat,55,29 -006-1.gat,77,44|warp|To Desert Mountains Cav|-1,-1,006-3.gat,77,46 -006-1.gat,86,24|warp|To Desert Mountains Cav|-1,-1,006-3.gat,86,26 -006-1.gat,91,24|warp|To Desert Mountains Cav|-1,-1,006-3.gat,91,26 -006-1.gat,104,44|warp|To Desert Mountains Cav|-1,-1,006-3.gat,104,46 -006-1.gat,122,24|warp|To Desert Mountains Cav|-1,-1,006-3.gat,122,26 -006-1.gat,114,49|warp|To Desert Mountains Cav|-1,-1,006-3.gat,114,51 -006-1.gat,110,56|warp|To Desert Mountains Cav|-1,-1,006-3.gat,110,58 -006-1.gat,125,59|warp|To Desert Mountains Cav|-1,-1,006-3.gat,125,61 -006-1.gat,92,63|warp|To Desert Mountains Cav|-1,-1,006-3.gat,92,65 -006-1.gat,112,74|warp|To Desert Mountains Cav|-1,-1,006-3.gat,112,76 -006-1.gat,121,110|warp|To Desert Mountains Cav|-1,-1,006-3.gat,121,112 -006-1.gat,79,120|warp|To Desert Mountains Cav|-1,-1,006-3.gat,79,122 -006-1.gat,38,121|warp|To Desert Mountains Cav|-1,-1,006-3.gat,38,123 -006-1.gat,74,90|warp|To Desert Mountains Cav|-1,-1,006-3.gat,74,92 -006-1.gat,51,90|warp|To Desert Mountains Cav|-1,-1,006-3.gat,51,92 +006-1.gat,40,26|warp|To Desert Mountain Cave|-1,-1,006-3.gat,40,28 +006-1.gat,60,58|warp|To Desert Mountain Cave|-1,-1,006-3.gat,60,70 +006-1.gat,62,30|warp|To Desert Mountain Cave|-1,-1,006-3.gat,62,32 +006-1.gat,55,27|warp|To Desert Mountain Cave|-1,-1,006-3.gat,55,29 +006-1.gat,77,44|warp|To Desert Mountain Cave|-1,-1,006-3.gat,77,46 +006-1.gat,86,24|warp|To Desert Mountain Cave|-1,-1,006-3.gat,86,26 +006-1.gat,91,24|warp|To Desert Mountain Cave|-1,-1,006-3.gat,91,26 +006-1.gat,98,46|warp|To Desert Mountain Cave|-1,-1,006-3.gat,104,46 +006-1.gat,114,22|warp|To Desert Mountain Cave|-1,-1,006-3.gat,122,26 +006-1.gat,114,49|warp|To Desert Mountain Cave|-1,-1,006-3.gat,114,51 +006-1.gat,102,53|warp|To Desert Mountain Cave|-1,-1,006-3.gat,110,58 +006-1.gat,117,57|warp|To Desert Mountain Cave|-1,-1,006-3.gat,125,61 +006-1.gat,92,63|warp|To Desert Mountain Cave|-1,-1,006-3.gat,92,65 +006-1.gat,112,74|warp|To Desert Mountain Cave|-1,-1,006-3.gat,112,76 +006-1.gat,111,110|warp|To Desert Mountain Cave|-1,-1,032-3.gat,56,60 +006-1.gat,83,117|warp|To Desert Mountain Cave|-1,-1,006-3.gat,79,121 +006-1.gat,38,121|warp|To Desert Mountain Cave|-1,-1,006-3.gat,38,123 +006-1.gat,74,90|warp|To Desert Mountain Cave|-1,-1,006-3.gat,74,92 +006-1.gat,51,90|warp|To Desert Mountain Cave|-1,-1,006-3.gat,51,92 006-1.gat,30,123|warp|To Outback Cave|-1,-1,032-3.gat,128,33 -006-1.gat,19,30|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,20,29|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,21,28|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,22,27|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,23,26|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,24,25|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,25,24|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,26,23|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -006-1.gat,27,22|warp|To Snake Desert|-1,-1,005-1.gat,172,101 -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 +006-1.gat,55,46|warp|Snake Cave|-1,-1,005-3.gat,86,31 +006-1.gat,20,48|warp|To Sandstorm Desert|-1,0,002-1.gat,118,95 +006-1.gat,51,68|warp|Snake Cave|-1,-1,005-3.gat,73,59 diff --git a/world/map/npc/006-1/miriam.txt b/world/map/npc/006-1/miriam.txt new file mode 100644 index 00000000..4279e3d5 --- /dev/null +++ b/world/map/npc/006-1/miriam.txt @@ -0,0 +1,340 @@ +//############################################# +// author: alastrim, PjotrOrial +//############################################# +// This npc teaches you the speed skill. +// used variables: +// QUEST_MIRIAM: +// 0 either fully completed the quests in here, or not started. +// 1 you said the wrong words, she is insulted. (so you excuse and goto 2) +// 2 waiting for the ingredients +// 3 you brought the needed stuff. if you meet other criteria (BaseLevel, agi) you will be taught the skill +// 4 you have met the criteria of 3, but declined to take the speed test. +// 5 you tried the quest but you failed +// QUEST_MIRIAM_start +// a time in ticks. This is only !=0 if you started running to pachua. +// QUEST_MIRIAM_run +// when you reach pachua, he stores the difference of start and arrival in here. +//############################################# +// after you gained the speed skill, all variables are reset to zero. +//############################################# + +006-1.gat,115,111,0|script|Miriam|175 +{ + setarray @npc_loc, 115, 111, 2; + callfunc "PCtoNPCRange"; + if (@npc_check) + goto L_Close; + + if (getskilllv(SKILL_SPEED)) goto L_fast; + if (getequipid(equip_torso) < 0) goto L_naked; + if (QUEST_MIRIAM == 0) goto L_intro; + if (QUEST_MIRIAM == 1) goto L_ask1; + if (QUEST_MIRIAM == 2) goto L_ask2; + if (QUEST_MIRIAM == 3) goto L_teach; + if (QUEST_MIRIAM == 4) goto L_testoffer; + if (QUEST_MIRIAM_run != 0) goto L_checktime; + if (QUEST_MIRIAM_start != 0) goto L_wasting; + if (QUEST_MIRIAM == 5) goto L_testoffer; + goto L_intro; + +L_intro: + mes "You see a woman sitting in the hot sand with eyes wide open... But she does not seem to be looking at something in particular..."; + next; + menu + "Ehr... Hi, my name is " +strcharinfo(0)+ ". Are you OK?",L_Next; + +L_Next: + mes "[Miriam]"; + mes "\"..."; + next; + menu + "Hello?",L_Continue; + +L_Continue: + mes "[Miriam]"; + mes "\"Yes, I am. Why? Do you think I am not OK? I am OK. You interrupted my meditation. Now I will need hours to calm down and stay quiet! Yes, yes, I know, I'm a fast talker!\""; + next; + mes "\"In fact, I am fast in everything I do! I can kill a Mountain Snake before it even starts to think about attacking me! Yes my friend, in a battle, speed is power!"; + next; + menu + "Wow! Very impressi...",L_More; + +L_More: + mes "[Miriam]"; + mes "\"Yes, yes, I know. But if there is one thing I am NOT good at, it is meditation! My master said I need to meditate, but... Ohh! So difficult to stay quiet! And when you FINALLY do, someone INTERRUPTS you, asking if you are 'OK'...\""; + next; + menu + "Oh, I am sorry! I didn't know you were meditating...",L_WallText; + +L_WallText: + mes "[Miriam]"; + mes "\"You are really sorry? Ok, but that is not enough... I need you to do something for me. As you can imagine, I will need a lot of time to concentrate and get back to the state I was when you interrupted me.\""; + next; + mes "\"But the problem is that I wasn't expecting to be here for so long, so I will need some food and something to drink.\""; + next; + mes "\"So, if you really want to prove that you are sorry, bring me 5 Concentration Potions and 10 Snake Tongues.\""; + next; + menu + "Ok, but those potions will not help with your mental concent...",L_MoreTalking, + "Sorry, but I can't help you right now.",L_canthelp; + +L_MoreTalking: + mes "[Miriam]"; + mes "\"ah, ah, ah... I know what I am doing! Now run and get what I asked.\""; + set QUEST_MIRIAM, 2; + close; + +L_canthelp: + mes "[Miriam]"; + mes "\"Oh, really? So you better pray to not need my help in the future!\""; + set QUEST_MIRIAM, 1; + close; + +L_canthelp2: + mes "[Miriam]"; + mes "\"...\""; + next; + mes "\"...\""; + next; + mes "\"Well, if you don't have time to help, at least don't make things difficult for me!\""; + close; + +L_ask1: + mes "[Miriam]"; + mes "\"So, you are back... have you changed your mind about my request?\""; + next; + menu + "Yes, I will get what you want!",L_WillGetItems, + "No, I have no time right now.",L_canthelp2; + +L_WillGetItems: + set QUEST_MIRIAM, 2; + mes "\"Good. So, run and get it!\""; + close; + +L_ask2: + mes "[Miriam]"; + mes "\"Did you get what I asked for?\""; + next; + menu + "Yes, here it is!",L_getitems, + "What was that again?", L_ask3, + "No, not yet.",L_Hurry; + +L_Hurry: + mes "\"So please hurry up!\""; + close; + +L_ask3: + mes "[Miriam]"; + mes "\"You have a small mind, haven't you? I am meditating here and I asked you to bring me stuff, so I can concentrate better.\""; + next; + mes "\"And stop asking such silly questions in the future.\""; + next; + mes "\"So, if you really want to help me now, bring me 5 Concentration Potions and 10 Snake Tongues.\""; + close; + +L_getitems: + if (countitem("SnakeTongue") < 10 + || countitem("ConcentrationPotion") < 5) + goto L_notenough; + delitem "SnakeTongue", 10; + delitem "ConcentrationPotion", 5; + set QUEST_MIRIAM, 3; + mes "[Miriam]"; + mes "\"Good job! Now I have enough food to stay in this desert for days!\""; + next; + mes "\"Now, since you helped me, maybe I can teach you a basic skill, but only if you prove yourself to be a fast runner! Come back and talk to me when you think you are prepared to learn.\""; + close; + +L_notenough: + mes "[Miriam]"; + mes "\"Hey, you don't have all that I asked. Come back when you have everything.\""; + close; + +L_teach: + mes "[Miriam]"; + mes "\"Hmm... do you think you can learn the special Speed skill?\""; + next; + menu + "Yes, I am prepared...", L_Prepared, + "I am already fast.", L_notfast; + +L_Prepared: + set @agi, readparam(bAgi); + set @torso$, getitemname(getequipid(equip_torso)); + set @weight, MaxWeight/Weight; + if (@weight < 3) + goto L_heavyweight; + if (@agi < 60) + goto L_slow; + if (BaseLevel < 60) + goto L_lowlevel; + if (countitem("SteelShield") > 0 + || countitem("WarlordHelmet") > 0 + || countitem("CrusadeHelmet") > 0 + || countitem("WarlordPlate") > 0 + || countitem("KnightsHelmet") > 0 + || countitem("InfantryHelmet") > 0 + || countitem("ChainmailShirt") > 0 + || countitem("WarlordBoots") > 0 + || countitem("LightPlatemail") > 0 + || countitem("CandleHelmet") > 0) + goto L_heavymetal; + goto L_offer; + +L_heavyweight: + mes "[Miriam]"; + mes "\"Wow... Why do you bring so many things with you? You must be carrying more than one third of your own weight! I won't teach you unless you get rid of some stuff... \""; + close; + +L_heavymetal: + mes "[Miriam]"; + mes "\"Hmm... I see... You want to be one of those lazy slow warriors... wasting all their strength carrying kilos of metal clothes... Why does no one see the great advantages of a beautiful, flexible, lightweight armor nowadays?\""; + next; + mes "\"Come back here when you get rid of this junk...\""; + close; + +L_slow: + mes "[Miriam]"; + mes "Oh, wait, wait... " +@agi+ " Agility? Are you serious? What do you do with all your Character points? Put them all to 'Strength'? Really... I don't even want to know... Come back here when you have a decent character points distribution!\""; + close; + +L_lowlevel: + mes "[Miriam]"; + mes "\"Come back here when you are old enough. I even wonder how you could get here so unexperienced as you are.\""; + close; + +L_offer: + mes "[Miriam]"; + mes "\"Hmm! You look great in these clothes! They look very comfortable too... And it seems like you are not carrying too much weight.\""; + next; + if (!(getskilllv(SKILL_POOL))) + goto L_noskill; + menu + "Yes, I look really good in this " +@torso$+ ".",L_TorsoNext; + +L_TorsoNext: + mes "[Miriam]"; + mes "\"I see. I like the way you distributed your Character Points too... " +@agi+ " points to Agility! You really know how to prepare yourself for a good fight!\""; + next; + mes "\"Well... Even if you have a potential to be a good fighter, moving the way you do will not help. You need to be fast to avoid the monsters. \""; + next; + mes "\"So, if you pass a small test I can teach you a skill that will increase your walking speed! You will not be as fast as I am, but I am sure it will be useful.\""; + next; + menu + "I'm in! What kind of test is it?",L_test, + "I don't think I need more speed right now",L_giveup; + +L_test: + mes "[Miriam]"; + mes "\"Great! The test is simple. You need to run as fast as you can from the place where I am sitting to the mountains and talk to Pachua, the chief. When you get there and talk to Pachua, he will send a special smoke signal to me, so I can know how much time it took for you to get there.\""; + next; + mes "\"If you make it in a good time, I will teach you the special speeding skill. If not, you can always try again. So, are you ready?\""; + next; + menu + "Yes, let's do it!",L_LetsDoThis, + "No, I need to stretch my muscles first!",L_stretch; + +L_LetsDoThis: + close2; + message strcharinfo(0), "Miriam quickly grabs your arm and pull you to the place where she is sitting."; + // Warp the player to the place where the NPC is defined, so he can't cheat. + warp "032-1.gat",55,21; + npctalk "Run " +strcharinfo(0)+ ", run!"; + set QUEST_MIRIAM, 5; + set QUEST_MIRIAM_start, gettimetick(2); + set QUEST_MIRIAM_cheat, 0; + end; + +L_naked: + mes "[Miriam]"; + mes "\"Hmmm?! Please put on some clothes before talking to me.\""; + close; + +L_notfast: + mes "[Miriam]"; + mes "\"Hah! If you think so...\""; + close; + +L_noskill: + mes "[Miriam]"; + mes "\"For a person like you, I could even teach a useful skill! Too bad you don't have the basic abillities to learn it...\""; + close; + +L_giveup: + mes "[Miriam]"; + mes "\"Oh, that is too bad... But if you change your mind, come back!\""; + set QUEST_MIRIAM, 4; + close; + +L_testoffer: + mes "[Miriam]"; + mes "\"Are you ready for the test now?\""; + next; + menu + "Yes!",L_test, + "Not yet.",L_Close; + +L_Close: + close; + +L_warning: + mes "[Miriam]"; + mes "\"I know very well what you tried to do. I will not teach you the speed skill if you keep trying this kind of trick!\""; + next; + goto L_testoffer; + +L_stretch: + mes "[Miriam]"; + mes "\"Ok. Good idea... Stretching exercises can increase your flexibility and even prevent injuries!\""; + set QUEST_MIRIAM, 4; + close; + +L_wasting: + mes "[Miriam]"; + mes "\"Don't waste your time talking to me! RUN and talk to Pachua!\""; + close; + +L_checktime: + if (QUEST_MIRIAM_cheat != 0) + goto L_warning; + if (QUEST_MIRIAM_run <= 210) + goto L_goodjob; + goto L_tryagain; + +L_tryagain: + mes "[Miriam]"; + mes "\"You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. It is not enough.\""; + set QUEST_MIRIAM_run, 0; + close; + +L_goodjob: + mes "[Miriam]"; + mes "\"Great job! You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. Very impressive for a person like you.\""; + next; + mes "\"Now I need you to relax. Do NOT move. This teaching process can be painful sometimes.\""; + next; + mes "Miriam stares into your eyes and starts to scream some strange words very close to your ears."; + next; + mes "You feel dizzy and as soon as you move your head and look to the ground, Miriam pushes you hard, sending you meters away from her."; + close2; + warp "032-1.gat",55,22; + // free all used player variables. This can be done, since there is a conditional on the speedskill at the beginning. + set QUEST_MIRIAM_start, 0; + set QUEST_MIRIAM_run, 0; + set QUEST_MIRIAM, 0; + message strcharinfo(0), "[You gain 2500 experience points]"; + message strcharinfo(0), "[You learned Speed Skill]"; + setskill SKILL_SPEED, 1; + getexp 2500, 0; + set QUEST_MIRIAM_cheat, 0; // reset just in case it is still set. + close; + +L_fast: + mes "[Miriam]"; + mes "\"I hope you make a good use of your new skill... Take care!\""; + set QUEST_MIRIAM_cheat, 0; // reset just in case it is still set. + close; + +} diff --git a/world/map/npc/006-1/spirit.txt b/world/map/npc/006-1/spirit.txt new file mode 100644 index 00000000..5f7d06fb --- /dev/null +++ b/world/map/npc/006-1/spirit.txt @@ -0,0 +1,299 @@ +function|script|EarthImpTouch +{ + if (getskilllv(SKILL_MAGIC)) goto L_message; + + mes "[Well]"; + mes "You hear noises from within the well."; + close; + +L_message: + set @Q_MASK, NIBBLE_0_MASK; + set @Q_SHIFT, NIBBLE_0_SHIFT; + set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT; + + // Set up SkillUp function + set @SUP_id, SKILL_MAGIC_NATURE; + set @SUP_name$, "Nature Magic"; + set @Q_STATUS_INITIAL, 0; + set @Q_STATUS_ONQUEST, 1; + set @Q_STATUS_STUDENT0, 2; + set @Q_STATUS_STUDENT1, 3; + set @Q_STATUS_STUDENT2, 4; + set @Q_STATUS_STUDENT3, 5; + + set @s$, "girl"; + if (Sex) set @s$, "boy"; + + if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) goto L_wb; + + mes "[Well]"; + mes "Something is inside that well, and now that you have turned your attention towards it, it seems to be talking to you!"; + next; + + mes "[Well]"; + mes "\"Hey! You there! Yes, I'm talking to you!\""; + mes "That strange voice seems to be coming from inside your head!"; + next; + menu + "Who, me?", L_Next, + "Leave me alone!", L_Close, + "Aaah! I'm hearing voices!", L_silly_close; + +L_Next: + mes "[Well]"; + mes "\"I'm in here, in the well, talking to you! If I'm not very mistaken, you are a powerful wizard-to-be, except that nobody has showed you how to properly do magic yet!\""; + next; + menu + "Who are you?", L_Next1, + "Aaaah! The voices are after me!", L_silly_close, + "Whatever it is, I'm not interested.", L_Close; + +L_Next1: + mes "[Earth Spirit]"; + mes "\"I'm an earth spirit; my name isn't important... all that matters is that I like you, and that I will help you become a powerful wizard if you help me. Just a fair deal, no more than that...\""; + next; + set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_IMP; + goto L_main; + +L_wb: + mes "[Earth Spirit]"; + mes "\"It's excellent to see you again!\""; + next; + goto L_main; + +L_main: + menu + "How did you get trapped?", L_Q_trapped, + "Can you teach me magic and spells?", L_Q_magic, + "What do you know about...", L_Q, + "Goodbye!", L_Close; + +L_Q_trapped: + mes "[Earth Spirit]"; + mes "\"Oh, a wicked witch grew jealous of my power and locked me up in this well.\""; + next; + goto L_main; + +L_Q: + mes "[Earth Spirit]"; + mes "\"Stop bothering me with your questions, will you? I'm trying to make you a powerful wizard, after all!\""; + next; + goto L_main; + +L_Q_magic: + if (@Q_status == @Q_STATUS_ONQUEST) goto L_Q_magic_1; + if (@Q_status == @Q_STATUS_STUDENT0) goto L_Q_magic_2; + if (@Q_status == @Q_STATUS_STUDENT1) goto L_Q_magic_3; + if (@Q_status == @Q_STATUS_STUDENT2) goto L_Q_magic_4; + + mes "[Earth Spirit]"; + mes "\"Good, good... that's the right attitude! Yes, I can teach you magic, but first you must prove that you are worthy to be my student!\""; + next; + mes "[Earth Spirit]"; + mes "\"North-east of here sits and old, dead tree. Well, not completely dead, not yet, but almost. It's nothing special. Well, maybe a little, but not really. I want you to cut off one of its branches.\""; + next; + menu + "No way.", L_silly_close, + "Sure.", L_Q_tree_ok, + "Why that particular tree?", L_Next2; + +L_Next2: + mes "[Earth Spirit]"; + mes "\"Oh, you and your questions! Well, that tree was a druid once, so the branches contain a bit of its lifeforce. And that's useful.\""; + next; + menu + "Yuck.", L_silly_close, + "Sure, whatever.", L_Q_tree_ok, + "Isn't that like cutting off someone's arm?", L_Next3; + +L_Next3: + mes "[Earth Spirit]"; + mes "\"Oooh... now come on! Don't be so sentimental. He turned himself into a tree, he can hardly expect everyone to leave him alone.\""; + next; + mes "[Earth Spirit]"; + mes "\"Who knows if he can even feel anything anymore? I'm sure he can't, being wooden and all. Besides, it's only a measly tree. Not like I'm asking you to cut him down!.\""; + next; + menu + "No way.", L_silly_close, + "Alright, that makes sense.", L_Q_tree_ok; + +L_Q_tree_ok: + mes "[Earth Spirit]"; + mes "\"Good, good, good! Yes, that will be very good! So, come back when you have the branch. Oh, and bring 100,000 GP, too, as an enrollment fee.\""; + set @Q_status, @Q_STATUS_ONQUEST; + callsub S_update_var; + set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_CUTTREE; + next; + goto L_main; + +L_Q_magic_1: + mes "[Earth Spirit]"; + mes "\"Yes, yes, if you bring me the branch and the money, then I will!\""; + next; + menu + "Here are the branch and the money.", L_Next4, + "How much money did you want again?", L_Q_tree_howmuch, + "How can I cut it?", L_Q_tree_how, + "Where was the tree again?", L_Q_tree_where, + "What is that tree?", L_Q_tree_what; + +L_Next4: + if (countitem("DruidTreeBranch") < 1) goto L_Q_tree_none; + if (!(MAGIC_FLAGS & MFLAG_DID_CUTTREE)) goto L_Q_tree_dry; + if (Zeny < 100000) goto L_Q_tree_nomoney; + + set Zeny, Zeny - 100000; + delitem "DruidTreeBranch", 1; + mes "[Earth Spirit]"; + mes "Following the earth sprite's instructions, you throw branch and GP into the well."; + next; + mes "[Earth Spirit]"; + mes "\"Well done, very well done! Consider yourself my student now.\""; + set @SUP_xp, 5000; + set @SUP_lvl, 2; + callfunc "SkillUp"; + next; + set @Q_status, @Q_STATUS_STUDENT0; + callsub S_update_var; + goto L_main; + +L_Q_magic_finish: + mes "[1000 experience points]"; + set @Q_status, @Q_status + 1; + callsub S_update_var; + getexp 1000,0; + next; + goto L_main; + +L_Q_magic_2: + mes "[Earth Spirit]"; + mes "\"Yes, of course! For just 20,000 GP I will teach you your first spell!\""; + next; + menu + "Here you are.", L_Next5, + "No.", L_main; + +L_Next5: + if (Zeny < 20000) goto L_no20k; + + set Zeny, Zeny - 20000; + mes "[Earth Spirit]"; + mes "\"Kekeke... excellent! Yes, here goes your first spell, the flying backpack! If you are overloaded, it will take the load off your shoulders.\""; + next; + mes "[Earth Spirit]"; + mes "\"Take a cocoon, living or dead, and suffuse it in magic. Whisper '" + getspellinvocation("flying-backpack") + "', and feel it float!\""; + goto L_Q_magic_finish; + +L_Q_magic_3: + mes "[Earth Spirit]"; + mes "\"But yes, yes! Only 20,000 GP, once again, and I will teach you a far more useful spell!\""; + next; + menu + "Here you are.", L_Next6, + "No.", L_main; + +L_Next6: + if (Zeny < 20000) goto L_no20k; + set Zeny, Zeny - 20000; + mes "[Earth Spirit]"; + mes "\"Yeees, good! This one is a protection spell, making your skin harder. You need a hard spike for it, though. Hold that spike in your hands, and focus on it.\""; + next; + mes "[Earth Spirit]"; + mes "\"Next, say '" + getspellinvocation("protect") + "', and feel your skin grow rigid! Very useful against stings and stabs and pokes and pricks and that sort of stuff.\""; + goto L_Q_magic_finish; + +L_Q_magic_4: + mes "[Earth Spirit]"; + mes "\"Naah, you're too weak now! Come back later when you have grown!\""; + next; + goto L_main; + +L_no20k: + mes "[Earth Spirit]"; + mes "\"You can't pay me 20,000 if you don't have that much!\""; + next; + goto L_main; + +L_Q_tree_none: + mes "[Earth Spirit]"; + mes "\"Where is your branch?\""; + next; + goto L_main; + +L_Q_tree_dry: + mes "[Earth Spirit]"; + mes "\"That won't do. This branch is completely dead; you'll have to get another.\""; + next; + goto L_main; + +L_Q_tree_nomoney: + mes "[Earth Spirit]"; + mes "\"No, you don't have enough money! Come back when you have 100,000.\""; + next; + goto L_main; + +L_Q_tree_howmuch: + mes "[Earth Spirit]"; + mes "\"It's only 100,000 GP to become my student.\""; + next; + goto L_main; + +L_Q_tree_how: + mes "[Earth Spirit]"; + mes "\"Oh... right, the tree might be protected. Only a bone knife will cut that. No idea where you can find one, but I'm sure you will manage!\""; + next; + goto L_main; + +L_Q_tree_where: + mes "[Earth Spirit]"; + mes "\"North-east of here.\""; + next; + goto L_main; + +L_Q_tree_what: + mes "[Earth Spirit]"; + mes "\"Just some silly druid who turned himself into a tree; nothing important.\""; + next; + goto L_main; + +L_silly_close: + if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) + mes "[Earth Spirit]"; + if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP)) + mes "[Well]"; + mes "\"Silly " + @s$ + ".\""; + goto L_Close; + +L_Close: + set @Q_MASK, 0; + set @Q_SHIFT, 0; + set @Q_status, 0; + set @SUP_id, 0; + set @SUP_name$, ""; + set @SUP_xp, 0; + set @SUP_lvl, 0; + set @Q_STATUS_INITIAL, 0; + set @Q_STATUS_ONQUEST, 0; + set @Q_STATUS_STUDENT0, 0; + set @Q_STATUS_STUDENT1, 0; + set @Q_STATUS_STUDENT2, 0; + set @Q_STATUS_STUDENT3, 0; + set @s$, ""; + close; + +S_update_var: + set QUEST_MAGIC2, (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT)); + return; +} + +006-1.gat,63,79,0|script|#EarthImp0#_M|400 +{ + callfunc "EarthImpTouch"; + end; +} + +006-1.gat,64,79,0|script|#EarthImp1#_M|400 +{ + callfunc "EarthImpTouch"; + end; +} diff --git a/world/map/npc/006-1/tree.txt b/world/map/npc/006-1/tree.txt new file mode 100644 index 00000000..dbef23f2 --- /dev/null +++ b/world/map/npc/006-1/tree.txt @@ -0,0 +1,168 @@ +function|script|QuestTreeTrigger +{ + set @Q_MASK, NIBBLE_2_MASK; + set @Q_SHIFT, NIBBLE_2_SHIFT; + + set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + set @Q_status_lower, @Q_status & 3; + set @Q_status, (@Q_status & 12) >> 2; + + if (@Q_status & @flag) goto L_Close; // already did that + + if (@flag == 2) goto L_hug; + goto L_cont; + +L_cont: + set @Q_status, @Q_status | @flag; + callsub S_update_var; + + if (@Q_status != 3) goto L_Close; + + if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_Close; + + mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger."; + mes "[20000 experience points]"; + getexp 20000, 0; + set @value, 15; + callfunc "QuestSagathaHappy"; + goto L_Close; + +L_hug: + mes "You hug the tree."; + next; + goto L_cont; + +L_Close: + set @Q_MASK, 0; + set @Q_SHIFT, 0; + set @Q_status, 0; + set @Q_status_lower, 0; + set @Q_wr_status, 0; + set @value, 0; + close; + +S_update_var: + set @Q_wr_status, (@Q_status << 2) | @Q_status_lower; + set QUEST_MAGIC, (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT)); + return; +} + +function|script|QuestTreeTouch +{ + set @Q_MASK, NIBBLE_2_MASK; + set @Q_SHIFT, NIBBLE_2_SHIFT; + + set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT; + set @Q_status, (@Q_status & 12) >> 2; + + if (@Q_status == 3) goto L_happy; + + if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut; + + if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_water; + + if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0) //i.e., both are set + goto L_both; + + mes "[Dying Tree]"; + mes "You see a strange tree."; + goto L_Close; + +L_cut: + mes "[Dying Tree]"; + mes "This must be the tree that the earth spirit was referring to."; + next; + menu + "Cut off a branch", L_do_cut, + "Leave it alone", L_Close; + +L_water: + mes "[Dying Tree]"; + mes "This must be the druid tree."; + next; + menu + "Water the tree", L_givewater, + "Kiss tree", L_kiss, + "Leave it alone", L_Close; + +L_both: + mes "[Dying Tree]"; + mes "This must be the druid tree that Wyara and the earth spirit were talking about."; + next; + menu + "Water the tree", L_givewater, + "Kiss tree", L_kiss, + "Cut off a branch", L_do_cut, + "Leave it alone", L_Close; + +L_givewater: + if (countitem("BottleOfWater") < 1) goto L_no_water; + delitem "BottleOfWater", 1; + getitem "EmptyBottle", 1; + + mes "[Dying Tree]"; + mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect."; + goto L_Close; + +L_no_water: + mes "[Dying Tree]"; + mes "You don't have any water."; + goto L_Close; + +L_kiss: + mes "[Dying Tree]"; + mes "You pluck out a splinter from your lip."; + mes "Somehow, you don't think that this helped."; + goto L_Close; + +L_do_cut: + if (countitem("BoneKnife") < 1) goto L_no_boneknife; + + if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut; + + mes "[Dying Tree]"; + mes "You find a suitable branch and put your bone knife in position."; + mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you..."; + mes "Do you want to continue cutting?"; + next; + menu + "Nah... better not.", L_Close, + "Yes, let's cut!", L_really_cut; + +L_really_cut: + set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_DID_CUTTREE; + getitem "DruidTreeBranch", 1; + mes "[Dying Tree]"; + mes "You cut off a branch from the tree."; + mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand..."; + goto L_Close; + +L_no_boneknife: + mes "[Dying Tree]"; + mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?"; + goto L_Close; + +L_happy: + mes "[Druid Tree]"; + mes "The tree looks younger and healthier now."; + goto L_Close; + +L_Close: + set @Q_MASK, 0; + set @Q_SHIFT, 0; + set @Q_status, 0; + close; + +} + +006-1.gat,82,59,0|script|#DruidTree0#_M|400 +{ + callfunc "QuestTreeTouch"; + end; +} + +006-1.gat,83,59,0|script|#DruidTree1#_M|400 +{ + callfunc "QuestTreeTouch"; + end; +} diff --git a/world/map/npc/006-3/_warps.txt b/world/map/npc/006-3/_warps.txt index c0744946..5c130a60 100644 --- a/world/map/npc/006-3/_warps.txt +++ b/world/map/npc/006-3/_warps.txt @@ -6,17 +6,18 @@ 006-3.gat,62,30|warp|To Desert Mountains|-1,-1,006-1.gat,62,32 006-3.gat,86,24|warp|To Desert Mountains|-1,-1,006-1.gat,86,26 006-3.gat,91,24|warp|To Desert Mountains|-1,-1,006-1.gat,91,26 -006-3.gat,122,24|warp|To Desert Mountains|-1,-1,006-1.gat,122,26 +006-3.gat,122,24|warp|To Desert Mountains|-1,-1,006-1.gat,114,24 006-3.gat,114,49|warp|To Desert Mountains|-1,-1,006-1.gat,114,51 -006-3.gat,104,44|warp|To Desert Mountains|-1,-1,006-1.gat,104,46 +006-3.gat,104,44|warp|To Desert Mountains|-1,-1,006-1.gat,98,48 006-3.gat,77,44|warp|To Desert Mountains|-1,-1,006-1.gat,77,46 006-3.gat,60,68|warp|To Desert Mountains|-1,-1,006-1.gat,60,60 006-3.gat,92,63|warp|To Desert Mountains|-1,-1,006-1.gat,92,65 006-3.gat,112,74|warp|To Desert Mountains|-1,-1,006-1.gat,112,76 -006-3.gat,110,56|warp|To Desert Mountains|-1,-1,006-1.gat,110,58 -006-3.gat,125,59|warp|To Desert Mountains|-1,-1,006-1.gat,125,61 +006-3.gat,110,56|warp|To Desert Mountains|-1,-1,006-1.gat,102,55 +006-3.gat,125,59|warp|To Desert Mountains|-1,-1,006-1.gat,117,59 006-3.gat,74,90|warp|To Desert Mountains|-1,-1,006-1.gat,74,92 006-3.gat,51,90|warp|To Desert Mountains|-1,-1,006-1.gat,51,92 006-3.gat,38,121|warp|To Desert Mountains|-1,-1,006-1.gat,38,123 -006-3.gat,79,120|warp|To Desert Mountains|-1,-1,006-1.gat,79,122 -006-3.gat,121,110|warp|To Desert Mountains|-1,-1,006-1.gat,121,112 +006-3.gat,79,120|warp|To Desert Mountains|-1,-1,006-1.gat,83,119 +006-3.gat,125,66|warp|Snake Cave|-1,-1,005-3.gat,85,50 +006-3.gat,89,46|warp|Snake Cave|-1,-1,005-3.gat,63,47 diff --git a/world/map/npc/009-3/_mobs.txt b/world/map/npc/009-3/_mobs.txt index 2ccde6e5..3e0430fd 100644 --- a/world/map/npc/009-3/_mobs.txt +++ b/world/map/npc/009-3/_mobs.txt @@ -2,8 +2,9 @@ // Hurnscald Cave mobs 009-3.gat,0,0,0,0|monster|YellowSlime|1007,20,0ms,0ms,Mob009-3::On1007 -009-3.gat,0,0,0,0|monster|BlackScorpion|1009,25,0ms,0ms,Mob009-3::On1009 -009-3.gat,0,0,0,0|monster|RedSlime|1008,35,0ms,0ms,Mob009-3::On1008 +009-3.gat,62,75,125,150|monster|BlackScorpion|1009,25,0ms,0ms,Mob009-3::On1009 +009-3.gat,63,75,126,150|monster|RedSlime|1008,35,0ms,0ms,Mob009-3::On1008 +009-3.gat,145,75,110,151|monster|CaveMaggot|1056,20,100000ms,30000ms,Mob009-3::On1056 009-3.gat,0,0,0|script|Mob009-3|-1 @@ -24,4 +25,9 @@ On1009: set @mobID, 1009; callfunc "MobPoints"; end; + +On1056: + set @mobID, 1056; + callfunc "MobPoints"; + end; } diff --git a/world/map/npc/011-1/_mobs.txt b/world/map/npc/011-1/_mobs.txt index e209acea..156afe85 100644 --- a/world/map/npc/011-1/_mobs.txt +++ b/world/map/npc/011-1/_mobs.txt @@ -13,12 +13,19 @@ 011-1.gat,0,0,0,0|monster|Squirrel|1038,25,30ms,20ms,Mob011-1::On1038 011-1.gat,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms,Mob011-1::On1055 011-1.gat,0,0,0,0|monster|Mouboo|1028,5,0ms,10ms,Mob011-1::On1028 +011-1.gat,1,1,0,0|monster|ManaBug|1131,18,30ms,0ms,Mob011-1::On1131 +011-1.gat,92,44,35,28|monster|Maggot|1002,10,30ms,0ms,Mob011-1::On1002 011-1.gat,0,0,0|script|Mob011-1|-1 { end; +On1002: + set @mobID, 1002; + callfunc "MobPoints"; + end; + On1013: set @mobID, 1013; callfunc "MobPoints"; @@ -73,4 +80,9 @@ On1055: set @mobID, 1055; callfunc "MobPoints"; end; + +On1131: + set @mobID, 1131; + callfunc "MobPoints"; + end; } diff --git a/world/map/npc/011-4/_mobs.txt b/world/map/npc/011-4/_mobs.txt index fa887b14..79bac221 100644 --- a/world/map/npc/011-4/_mobs.txt +++ b/world/map/npc/011-4/_mobs.txt @@ -5,12 +5,20 @@ 011-4.gat,93,114,39,39|monster|CaveSnake|1021,1,100000ms,30000ms,Mob011-4::On1021 011-4.gat,0,0,0,0|monster|CaveSnake|1021,40,0ms,0ms,Mob011-4::On1021 011-4.gat,0,0,0,0|monster|SpikyMushroom|1019,15,0ms,0ms,Mob011-4::On1019 +011-4.gat,60,78,56,75|monster|CaveMaggot|1056,10,100000ms,30000ms,Mob011-4::On1056 +011-4.gat,63,21,110,35|monster|CaveMaggot|1056,10,100000ms,30000ms,Mob011-4::On1056 +011-4.gat,0,0,0,0|monster|Bat|1017,20,180000ms,40000ms,Mob011-4::On1017 011-4.gat,0,0,0|script|Mob011-4|-1 { end; +On1017: + set @mobID, 1017; + callfunc "MobPoints"; + end; + On1019: set @mobID, 1019; callfunc "MobPoints"; @@ -20,4 +28,9 @@ On1021: set @mobID, 1021; callfunc "MobPoints"; end; + +On1056: + set @mobID, 1056; + callfunc "MobPoints"; + end; } diff --git a/world/map/npc/013-2/notes.txt b/world/map/npc/013-2/notes.txt index 37014a76..20ce05c1 100644 --- a/world/map/npc/013-2/notes.txt +++ b/world/map/npc/013-2/notes.txt @@ -72,6 +72,19 @@ L_Close: next; mes "You feel the floor disappear below your feet..."; next; + if (QUEST_MIRIAM_start != 0) + goto L_cheat; + goto L_Warp; + +// 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_Warp; + +L_Warp: set @dest, rand(BaseLevel); if (@dest < 10) goto L_PlaceOne; @@ -80,24 +93,15 @@ L_Close: goto L_PlaceThree; L_PlaceOne: - warp "006-1.gat",125,111; + warp "006-1.gat",83,60; goto L_Close; L_PlaceTwo: - warp "032-1.gat",77,22; + warp "006-1.gat",77,22; goto L_Close; L_PlaceThree: warp "006-1.gat",33,93; - if (QUEST_MIRIAM_start != 0) goto L_cheat; - 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: diff --git a/world/map/npc/017-9/_warps.txt b/world/map/npc/017-9/_warps.txt index 1a89c0b0..03859972 100644 --- a/world/map/npc/017-9/_warps.txt +++ b/world/map/npc/017-9/_warps.txt @@ -3,6 +3,6 @@ 017-9.gat,22,20|warp|To Nivalis|-1,-1,020-1.gat,60,75 017-9.gat,26,21|warp|To Hurnscald|-1,-1,009-1.gat,43,45 -017-9.gat,30,20|warp|To Tumlishar|-1,-1,001-1.gat,33,65 +017-9.gat,30,20|warp|To Tumlishar|-1,-1,001-1.gat,55,118 017-9.gat,26,28|warp|To second warpzone|-1,-1,017-2.gat,26,23 017-9.gat,31,28|warp|To Crypt|-1,-1,027-2.gat,118,109 diff --git a/world/map/npc/017-9/secret.txt b/world/map/npc/017-9/secret.txt index 050773a6..49261537 100644 --- a/world/map/npc/017-9/secret.txt +++ b/world/map/npc/017-9/secret.txt @@ -18,7 +18,7 @@ L_close: close; } -001-1.gat,32,65,0|script|#SecretDoor3|127,0,0 +001-1.gat,54,118,0|script|#SecretDoor3|127,0,0 { if (getgmlevel() < 40 && !debug) goto L_close; warp "017-9.gat", 30, 22; diff --git a/world/map/npc/018-1/_mobs.txt b/world/map/npc/018-1/_mobs.txt index d2aa5d7d..3536b5b6 100644 --- a/world/map/npc/018-1/_mobs.txt +++ b/world/map/npc/018-1/_mobs.txt @@ -2,7 +2,7 @@ // Woodland Mining Camp mobs 018-1.gat,136,79,9,41|monster|SeaSlime|1033,10,100000ms,30000ms,Mob018-1::On1033 -018-1.gat,108,87,53,25|monster|LogHead|1025,10,100000ms,30000ms,Mob018-1::On1025 +018-1.gat,108,87,53,25|monster|ManaBug|1131,10,100000ms,30000ms,Mob018-1::On1131 018-1.gat,116,44,6,7|monster|SeaSlime|1033,3,100000ms,30000ms,Mob018-1::On1033 018-1.gat,119,56,13,6|monster|PinkFlower|1014,2,100000ms,30000ms,Mob018-1::On1014 018-1.gat,175,28,17,19|monster|JackO|1022,1,180000ms,120000ms,Mob018-1::On1022 @@ -27,12 +27,18 @@ 018-1.gat,160,31,11,18|monster|RedSlime|1008,5,100000ms,50000ms,Mob018-1::On1008 018-1.gat,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms,Mob018-1::On1037 018-1.gat,0,0,0,0|monster|Butterfly|1055,20,30ms,20ms,Mob018-1::On1055 +018-1.gat,134,80,14,39|monster|Maggot|1002,15,30ms,0ms,Mob018-1::On1002 018-1.gat,0,0,0|script|Mob018-1|-1 { end; +On1002: + set @mobID, 1002; + callfunc "MobPoints"; + end; + On1007: set @mobID, 1007; callfunc "MobPoints"; @@ -58,11 +64,6 @@ On1022: callfunc "MobPoints"; end; -On1025: - set @mobID, 1025; - callfunc "MobPoints"; - end; - On1030: set @mobID, 1030; callfunc "MobPoints"; @@ -92,4 +93,9 @@ On1055: set @mobID, 1055; callfunc "MobPoints"; end; + +On1131: + set @mobID, 1131; + callfunc "MobPoints"; + end; } diff --git a/world/map/npc/018-3/_mobs.txt b/world/map/npc/018-3/_mobs.txt index e80abda4..64b7c42d 100644 --- a/world/map/npc/018-3/_mobs.txt +++ b/world/map/npc/018-3/_mobs.txt @@ -7,25 +7,23 @@ 018-3.gat,28,157,3,2|monster|PinkFlower|1014,1,60000ms,30000ms,Mob018-3::On1014 018-3.gat,99,111,17,41|monster|YellowSlime|1007,10,90000ms,30000ms,Mob018-3::On1007 018-3.gat,134,140,12,8|monster|Maggot|1002,3,80000ms,40000ms,Mob018-3::On1002 -018-3.gat,132,137,15,25|monster|Spider|1012,8,300000ms,120000ms,Mob018-3::On1012 +018-3.gat,82,149,73,26|monster|Spider|1012,8,300000ms,120000ms,Mob018-3::On1012 018-3.gat,102,172,131,13|monster|BlackScorpion|1009,20,60000ms,10000ms,Mob018-3::On1009 018-3.gat,174,37,10,31|monster|YellowSlime|1007,5,180000ms,120000ms,Mob018-3::On1007 -018-3.gat,87,153,78,22|monster|Snake|1010,10,60000ms,10000ms,Mob018-3::On1010 018-3.gat,148,148,13,24|monster|Bat|1017,3,180000ms,40000ms,Mob018-3::On1017 -018-3.gat,153,97,18,22|monster|YellowSlime|1007,6,80000ms,40000ms,Mob018-3::On1007 +018-3.gat,136,87,21,7|monster|YellowSlime|1007,6,80000ms,40000ms,Mob018-3::On1007 018-3.gat,81,77,27,21|monster|RedSlime|1008,15,80000ms,40000ms,Mob018-3::On1008 018-3.gat,111,80,5,6|monster|BlackScorpion|1009,10,80000ms,40000ms,Mob018-3::On1009 018-3.gat,175,122,5,40|monster|Snake|1010,15,40000ms,20000ms,Mob018-3::On1010 -018-3.gat,98,75,1,2|monster|FireSkull|1023,1,120000ms,30000ms,Mob018-3::On1023 -018-3.gat,100,75,1,2|monster|PoisonSkull|1024,1,120000ms,30000ms,Mob018-3::On1024 -018-3.gat,171,95,15,19|monster|BlackScorpion|1009,5,60000ms,30000ms,Mob018-3::On1009 -018-3.gat,134,87,17,7|monster|RedSlime|1008,10,60000ms,30000ms,Mob018-3::On1008 +018-3.gat,172,94,17,17|monster|RedSlime|1008,10,60000ms,30000ms,Mob018-3::On1008 018-3.gat,59,95,11,8|monster|Spider|1012,15,60000ms,30000ms,Mob018-3::On1012 018-3.gat,77,92,23,7|monster|BlackScorpion|1009,15,60000ms,30000ms,Mob018-3::On1009 018-3.gat,94,55,16,8|monster|Snake|1010,5,60000ms,30000ms,Mob018-3::On1010 018-3.gat,133,39,12,17|monster|Spider|1012,10,60000ms,30000ms,Mob018-3::On1012 018-3.gat,111,33,30,16|monster|Snake|1010,15,60000ms,30000ms,Mob018-3::On1010 -018-3.gat,68,101,5,4|monster|Snake|1010,4,60000ms,30000ms,Mob018-3::On1010 +018-3.gat,68,101,5,4|monster|CaveSnake|1021,4,60000ms,30000ms,Mob018-3::On1021 +018-3.gat,153,96,18,17|monster|CaveMaggot|1056,4,100000ms,30000ms,Mob018-3::On1056 +018-3.gat,99,99,17,17|monster|CaveMaggot|1056,4,100000ms,30000ms,Mob018-3::On1056 018-3.gat,0,0,0|script|Mob018-3|-1 @@ -77,13 +75,13 @@ On1017: callfunc "MobPoints"; end; -On1023: - set @mobID, 1023; +On1021: + set @mobID, 1021; callfunc "MobPoints"; end; -On1024: - set @mobID, 1024; +On1056: + set @mobID, 1056; callfunc "MobPoints"; end; } diff --git a/world/map/npc/021-2/_import.txt b/world/map/npc/021-2/_import.txt deleted file mode 100644 index 67974f1a..00000000 --- a/world/map/npc/021-2/_import.txt +++ /dev/null @@ -1,17 +0,0 @@ -// Map 021-2: North Tulimshar Indoor -// This file is generated automatically. All manually changes will be removed when running the Converter. -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/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/jhedia.txt -npc: npc/021-2/kps.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/_mobs.txt b/world/map/npc/021-2/_mobs.txt deleted file mode 100644 index 6feaf1ea..00000000 --- a/world/map/npc/021-2/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// North Tulimshar Indoor mobs - - - -021-2.gat,0,0,0|script|Mob021-2|-1 -{ - end; -} diff --git a/world/map/npc/021-2/_warps.txt b/world/map/npc/021-2/_warps.txt deleted file mode 100644 index 9eb18a2a..00000000 --- a/world/map/npc/021-2/_warps.txt +++ /dev/null @@ -1,29 +0,0 @@ -// 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,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,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 -021-2.gat,84,123|warp|To Second Floor|-1,0,021-2.gat,81,95 -021-2.gat,79,139|warp|To Outside|-1,-1,021-1.gat,132,32 -021-2.gat,72,139|warp|To Outside|-1,-1,021-1.gat,125,32 -021-2.gat,124,69|warp|To Outside|-1,-1,021-1.gat,125,28 -021-2.gat,75,93|warp|To Outside|-1,-1,021-1.gat,133,25 -021-2.gat,33,30|warp|To Outside|-1,-1,021-1.gat,55,135 diff --git a/world/map/npc/021-2/bakery.txt b/world/map/npc/021-2/bakery.txt deleted file mode 100644 index acde18f2..00000000 --- a/world/map/npc/021-2/bakery.txt +++ /dev/null @@ -1,158 +0,0 @@ -// The bakery - -// The chef -021-2.gat,95,21,0|script|Riskim|148 -{ - mes "[Riskim]"; - mes ""; - mes "\"Welcome to our bakery!\""; - - callfunc "KadiyaSubquestConsts"; - if ((@Q_kadiya_status == @Q_STATUS_WANTS_CHOCOCAKE) - && (countitem ("MopoxCurePotion") > 0)) - goto L_lace_chococake; - - if ((@Q_kadiya_status == @Q_STATUS_WANTS_ORANGECUPCAKE) - && (countitem ("MopoxCurePotion") > 0)) - goto L_lace_cupcake; - - mes "\"Would you mind bringing me 6 acorns please? I need them to make flour for the chocolate cakes. I will be so delicious!\""; - next; - mes "\"Um, I mean, the cakes will be delicious...\""; - emotion EMOTE_BLUSH; - next; - - set @dq_level, 15; - set @dq_cost, 3; - set @dq_count, 6; - set @dq_name$, "Acorn"; - set @dq_friendly_name$, "acorns"; - set @dq_money, 250; - set @dq_exp, 50; - - callfunc "DailyQuest"; - - next; - mes "\"And don't forget, our bakery is the best!\""; - close; - -L_lace_chococake: - next; - menu - "Thanks! Let me have a look around...", L_End, - "Can you put this potion into a Chocolate Cake?", L_Next, - "Goodbye!", L_End; - -L_Next: - mes "[Riskim]"; - mes ""; - mes "As you show Riskim the potion, he leans back, away from it."; - mes "\"Ooooh, I remember that smell...\""; - mes "\"Elanore's Mopox potion, right? She made me drink that, too...\""; - mes "He chuckles."; - mes "\"Yes, well, you do want to hide that somehow.\""; - next; - mes "[Riskim]"; - mes ""; - mes "\"We'll need extra chocolate for that one. If you can give me ten pieces of chocolate and that potion, plus 400 GP, I will bake you a special Chocolate Cake that hides the taste.\""; - next; - menu - "I will get them for you.", L_End, - "Here you are!", L_Continue, - "Maybe later.", L_End; - -L_Continue: - if (countitem("ChocolateBar") < 10) - goto L_lacking_ingredients; - if (countitem("MopoxCurePotion") < 1) - goto L_lacking_ingredients; - if (Zeny < 400) - goto L_lacking_Zeny; - delitem "MopoxCurePotion", 1; - delitem "ChocolateBar", 10; - getitem "LacedChocolateCake", 1; - set Zeny, Zeny - 400; - - mes "[Riskim]"; - mes ""; - mes "\"Please have a seat!\""; - mes "You watch as Riskim melts the chocolate and stirs in the potion, then glazes a cake with the mixture."; - mes "\"It's a bit more chocolatey than your average chocolate cake, of course...\""; - next; - mes "[Riskim]"; - mes ""; - mes "Riskim hands you the cake."; - mes "\"Here you are. I hope that this works.\""; - close; - -L_lacking_Zeny: - mes "[Riskim]"; - mes ""; - mes "\"I'm sorry, but I have to charge 400 GP.\""; - close; - -L_lacking_ingredients: - mes "[Riskim]"; - mes ""; - mes "\"Sorry, but I need ten Chocolate Bars AND your cure potion for this. Please come back later when you have everything.\""; - close; - -L_lace_cupcake: - next; - menu - "Thanks! Let me have a look around...", L_End, - "Can you put this potion into an Orange Cupcake?", L_More, - "Goodbye!", L_End; - -L_More: - mes "[Riskim]"; - mes ""; - mes "\"Orange Cupcakes? Oh dear... I'm sorry, but I have a very bad orange allergy.\""; - next; - mes "[Riskim]"; - mes ""; - mes "\"Perhaps the Chef at Dimond's Cove can help you? We get all our cupcakes from him.\""; - next; - goto L_End; - -L_End: - close; -} - -// Server -021-2.gat,82,23,0|script|Sara|108 -{ - mes "[Sara]"; - mes ""; - mes "\"Hello!\""; - close; -} - -// The cashier -021-2.gat,89,21,0|shop|Drabur|112,WhiteCake:*500,ChocolateCake:*550,OrangeCake:*600,AppleCake:*600,Cake:*30,CherryCake:*100,OrangeCupcake:*270,Milk:*1500,XmasCake:*70 - -// Stockroom boy -021-2.gat,133,21,0|script|Iormo|160 -{ - mes "[Iormo]"; - mes ""; - mes "\"This stock room can get messy.\""; - close; -} - -// An old couple eating at the bakery -021-2.gat,71,22,0|script|Rynoh|159 -{ - mes "[Rynoh]"; - mes ""; - mes "\"The cakes may be expensive, but they sure are delicious!\""; - close; -} - -021-2.gat,73,22,0|script|Ontas|154 -{ - mes "[Ontas]"; - mes ""; - mes "\"We come here every week. This place has some of the best bread I've ever eaten!\""; - close; -} diff --git a/world/map/npc/021-2/barber.txt b/world/map/npc/021-2/barber.txt deleted file mode 100644 index d057786d..00000000 --- a/world/map/npc/021-2/barber.txt +++ /dev/null @@ -1,12 +0,0 @@ -// A barber (later we can make it so certain styles need to come from him, for a price) -021-2.gat,72,101,0|script|Issay|156 -{ - mes "[Issay the Barber]"; - mes "\"Do you need a change of style?\""; - next; - callfunc "Barber"; - mes "[Issay the Barber]"; - mes "\"Come again!\""; - close; -} - diff --git a/world/map/npc/021-2/forge_shops.txt b/world/map/npc/021-2/forge_shops.txt deleted file mode 100644 index 4e30fe50..00000000 --- a/world/map/npc/021-2/forge_shops.txt +++ /dev/null @@ -1,4 +0,0 @@ -// Forge Shops - -021-2.gat,77,134,0|shop|Gungnir|311,SlingShot:*500,SlingBullet:*1,ShortBow:*8000,Arrow:*1,IronArrow:*4 -021-2.gat,71,133,0|shop|Mjolnir|377,Knife:*50,SharpKnife:*100,Dagger:*1000,LeatherShirt:*2000,LeatherShield:*2000 diff --git a/world/map/npc/021-2/government_building.txt b/world/map/npc/021-2/government_building.txt deleted file mode 100644 index 441b77a0..00000000 --- a/world/map/npc/021-2/government_building.txt +++ /dev/null @@ -1,180 +0,0 @@ -// The government builing in the south west - -// A clerk -021-2.gat,27,17,0|script|Estard|107 -{ - mes "[Estard]"; - mes "\"Hello what can I do for you?\""; - next; - if (getpartnerid2()) - goto L_main_married; - - menu - "I'm looking at getting married.", L_marry, - "Nothing, I guess.", L_Close; - -L_main_married: - menu - "I'd like a divorce.", L_divorce, - "Nothing, I guess.", L_Close; - -L_marry: - if (BaseLevel < WEDDING_MIN_LEVEL) - goto L_marry_too_young; - if (Zeny < WEDDING_FEE) - goto L_marry_too_poor; - - mes "[Estard]"; - mes "\"Are you sure you want to get married? It'll cost " + WEDDING_FEE + " GP.\""; - menu - "Yes", L_marry_do, - "No", L_Close; - -L_marry_do: - callsub S_give_rings; - - mes "[Estard]"; - mes "\"Here are your rings. You can get married by standing in one of the designated places (like that small rug over there) with your partner, give them their ring, and say 'marry (their name here)'. You both need to have your rings on.\""; - close; - -L_marry_too_young: - mes "[Estard]"; - mes "\"I'm sorry, but you are too young to get married. You must be atleast " + WEDDING_MIN_LEVEL + " levels old.\""; - next; - - menu - "Can I at least get wedding rings?", L_get_rings, - "Thanks anyways.", L_Close; - -L_marry_too_poor: - mes "[Estard]"; - mes "\"You need " + WEDDING_FEE + " GP to get married. That covers all administrative fees for the marriage and provides two wedding rings.\""; - close; - -L_get_rings: - mes "[Estard]"; - mes "\"Yes. They are " + WEDDING_FEE + " GP. That covers all administrative fees for the marriage.\""; - - if (Zeny < WEDDING_FEE) - menu - "Thanks anyways. I don't have enough with me.", 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; - - mes "[Estard]"; - mes "\"There you go. Come again.\""; - close; - -L_divorce: - set @divorce_cost, DIVORCE_FEE_PER_LEVEL * BaseLevel; - - if (Zeny < @divorce_cost) - goto L_divorce_not_enough; - - mes "[Estard]"; - mes "\"If you're sure you want a divorce, it'll cost you " + @divorce_cost + " GP.\""; - next; - menu - "I am sure I want it.", L_do_divorce, - "I don't want it.", L_Close; - -L_do_divorce: - if (Zeny < @divorce_cost) - goto L_not_enough_money; - - if (divorce()) - goto L_divorce_done; - - mes "[Estard]"; - mes "\"I'm having trouble finding the record. \""; - mes "[Server]"; - mes "Try again when your partner is online too."; - close; - -L_divorce_done: - set Zeny, Zeny - @divorce_cost; - - mes "[Estard]"; - mes "\"You have been divorced. Come again.\""; - close; - -L_divorce_not_enough: - mes "[Estard]"; - mes "\"I'm sorry , but you don't have enough money to get a divorce. You need " + @divorce_cost + " GP.\""; - close; - -L_not_enough_money: - mes "[Estard]"; - mes "\"Seems you don't have enough money.\""; - close; - -L_no_room_for_rings: - mes "[Estard]"; - mes "\"You don't have enough room to carry these rings.\""; - close; - -L_Close: - close; - -S_give_rings: - if (Zeny < WEDDING_FEE) - goto L_not_enough_money; - getinventorylist; - if (@inventorylist_count > 98) - goto L_no_room_for_rings; - - set Zeny, Zeny - WEDDING_FEE; - getitem "WeddingRing", 1; - getitem "WeddingRing", 1; - return; -} - -021-2.gat,36,17,0|script|Tathin|107 -{ - mes "[Tathin]"; - mes "\"Hello what Can I do for you?\""; - next; - - set @halloween_npc_id, $@halloween_npc_tathin; - callfunc "TrickOrTreat"; - - goto L_Base_Menu; - -L_Base_Menu: - menu - "I'd like to join a party.", L_Give_Party, - "I'd like to create my own party.", L_Give_Make_Party, - "Nothing, I guess.", L_Close; - -L_Give_Party: - mes "[Tathin]"; - mes "\"You'll need to be invited by an existing member of a party to join it. You may also create your own party.\""; - next; - mes "[Tathin]"; - mes "\"Remember, parties cannot share experience if any members are more than 10 levels apart.\""; - menu - "I'd like to create my own party.", L_Give_Make_Party, - "Goodbye.", L_Close; - -L_Give_Make_Party: - mes "[Tathin]"; - mes "\"You can create parties with the 'new' or 'create' commands on the Party tab in the client. Parties need to have unique names.\""; - close; - -L_Close: - close; -} - -// Guard -021-2.gat,20,19,0|script|Guard#govt_in|123,1,1 -{ - mes "[Guard]"; - mes "\"You can't come back here.\""; - close; -} diff --git a/world/map/npc/021-2/heathin.txt b/world/map/npc/021-2/heathin.txt deleted file mode 100644 index 4bd9aae7..00000000 --- a/world/map/npc/021-2/heathin.txt +++ /dev/null @@ -1,360 +0,0 @@ -//Items for NPC are incomplete. Makes "simple ring" which can be crafted into a useful ring by Inya and terranite armor. - -021-2.gat,70,129,0|script|Heathin|147 -{ - set @TARROW_REQ_TERRA_ORE, 1; - set @TARROW_REQ_COAL, 5; - set @TARROW_REQ_GP, 3000; - set @heathin_xp_bonus, (100 * BaseLevel); - - set @state, ((QUEST_NorthTulimshar & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT); - - if (@state == 14) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Trade; - if (@state == 13) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Ready; - if (@state == 12) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows_Forge; - if (@state == 11) && (BaseLevel >= 80) goto L_Heathin_Terranite_Arrows; - if (@state == 10) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor_Ready; - if (@state == 9) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor_Forge; - if (@state == 8) && (BaseLevel >= 80) goto L_Heathin_Terranite_Chest_Armor; - if (@state == 7) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs_Ready; - if (@state == 6) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs_Forge; - if (@state == 5) && (BaseLevel >= 80) goto L_Heathin_Terranite_Legs; - if (@state == 4) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood_Ready; - if (@state == 3) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood_Forge; - if (@state == 2) && (BaseLevel >= 80) goto L_Heathin_Terranite_Hood; - if (@state == 2) && (BaseLevel >= 60) goto L_Heathin_Forge_Thanks; - if (@state == 1) && (BaseLevel >= 60) goto L_Heathin_Forge_Award; - if (BaseLevel >= 60) goto L_Heathin_Start; - - mes "[Heathin]"; - mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \""; - close; - -L_Heathin_Start: - mes "[Heathin]"; - mes "\"Hello, friend. I am Heathin, a smith of exotic metals. \""; - next; - mes "\"By the order of the Wizard's Council, I've been commissioned to forge armor for the upcoming expediation. However, I am but a simple smith and cannot complete all this effort by myself. I need individuals that can gather Coal to heat my forge.\""; - next; - mes "\"Perhaps you would be interested in helping me out? Would you be willing to help me gather Coal and help me fulfill my commission? I am asking any and all willing souls to get me 50 coal, as that would put a significant dint in my goal.\""; - menu - "Sure, I'll help!", L_Heathin_Help, - "I'd rather keep my Coal for my own purposes, thank you very much.", L_Heathin_No, - "Wait, what kind of award are we talking about?", L_Heathin_Interested; - -L_Heathin_Help: - set @state, 1; - callsub S_Update_Mask; - mes "[Heathin]"; - mes "\"Excellent! I am always glad when someone can be of service not just to me, but to all of Tulimshar. Please get me 50 Coal and you will be compensated for your efforts.\""; - close; - -L_Heathin_No: - mes "[Heathin]"; - mes "\"That is too bad. If you change your mind, I shall still be here, attempting to get my commission done.\""; - close; - -L_Heathin_Interested: - mes "[Heathin]"; - mes "\"Well, I can compensate you from the commision I getting from the council.\""; - next; - mes "\"How does 20,000 GP and I'll offer my smithing services for a discount?\""; - next; - mes "\"Does this sound like something you might be interested in?\""; - menu - "Sure, I'll help!", L_Heathin_Help, - "I'd rather keep my Coal.", L_Heathin_No, - "Can you repeat that again?", L_Heathin_Interested; - -L_Heathin_Forge_Award: - if (countitem ("Coal") < 50) goto L_Heathin_Forge_Wait; - getinventorylist; - set @state, 2; - callsub S_Update_Mask; - delitem "Coal", 50; - getexp @heathin_xp_bonus, 0; - set Zeny, Zeny + 20000; - mes "[Heathin]"; - mes "\"You have brought the Coal. This is most excellent! As promised, I have a reward for you. Hopefully you will find it useful.\""; - next; - mes "\"Time to make some armor. The Council will be pleased. Thank you for your efforts!\""; - close; - -L_Heathin_Forge_Wait: - mes "[Heathin]"; - mes "\"Hello again. Making armor keeps me pretty busy. I certainly hope I can fulfill my commission soon so that I can move on to bigger and better things.\""; - next; - mes "\"The pay is good, certainly, but I am a far better smith than this. If you can bring me 50 Coal, it would surely get me to my goal faster.\""; - next; - mes "\"I will be sure to provide an apt award once you are done.\""; - close; - -L_Heathin_Forge_Thanks: - mes "[Heathin]"; - mes "\"Thank you again for helping me fulfil my commission. It has made a signficant dint in what the Council requires of me. Perhaps I may be of service to you again one day!\""; - close; - -L_Heathin_Terranite_Hood: - mes "[Heathin]"; - mes "\"Hello again friend, I just found out about this great metal called terranite.\""; - next; - mes "\"This metal is almost as strong as steel, but is also very ductile.\""; - next; - mes "\"With some effort, I can make this metal form rings tighter than any chain mail. It isn't the prettiest in hue, but its uses can be many.\""; - next; - mes "\"Unfortunately, it seems to be difficult to gather. Most that have searched for Terranite Ore either cannot find it or have never returned...\""; - next; - mes "\"I may be an excellent smith, but I certainly am no combatant. However, I would enjoy turning this ore into something useful, perhaps some type of armor to help those that may be braver.\""; - next; - mes "\"So, what do you say? Are you interested?\""; - menu - "No, thank you. Maybe later.", L_Heathin_Terranite_No, - "Armor, you say? Definitely!", L_Heathin_Terranite_Yes; - -L_Heathin_Terranite_No: - mes "[Heathin]"; - mes "\"Ah, that is too bad. Come by again anytime.\""; - close; - -L_Heathin_Terranite_Yes: - set @state, 3; - callsub S_Update_Mask; - mes "[Heathin]"; - mes "\"Great, this is going to be fun! As I have not had much practice with this armor, I'd like to get started soon.\""; - next; - mes "Heathin thinks for a moment."; - next; - mes "\"Ah, I know! I will make a helm... Well, more like a hood, since it will be woven.\""; - next; - mes "\"It will require a great amount of heat, if the rumors are to be believed. For this, I will need 100 Coal to keep my forge burning hot. I will also need 10 Terranite Ore to make the armor. Of course, such work does not come cheap. While I may enjoy my work, my time and effort is very valuable. Since you have been a great help I will only need 20,000 gold pieces, well below my going rate. Please come back with the gold, Coal and ore and I'll make this hood for you.\""; - close; - -L_Heathin_Terranite_Hood_Forge: - if ( (Zeny < 20000) - || (countitem("Coal") < 100) - || (countitem("TerraniteOre") < 10) ) - goto L_Heathin_Terranite_Hood_Wait; - set @state, 4; - callsub S_Update_Mask; - delitem "Coal", 100; - delitem "TerraniteOre", 10; - getexp @heathin_xp_bonus, 0; - set Zeny, Zeny - 20000; - mes "[Heathin]"; - mes "\"Great, you brought everything! Come back later and I'll have the helm ready for you.\""; - close; - -L_Heathin_Terranite_Hood_Wait: - mes "[Heathin]"; - mes "\"I am very busy right now. If you could bring me 10 Terranite Ore, 100 Coal and 20,000 gold pieces, I will make that terranite hood for you.\""; - close; - -L_Heathin_Terranite_Hood_Ready: - getinventorylist; - if ((checkweight("TerraniteHelmet", 1) == 0) || (@inventorylist_count == 100)) - goto L_InventoryNoSpace; - set @state, 5; - callsub S_Update_Mask; - getitem "TerraniteHelmet", 1; - mes "[Heathin]"; - mes "\"I am all done with your terranite hood. I hope you enjoy it! I have some work to wrap up for the Council, but come back later and I might be able to assist you again.\""; - close; - -L_Heathin_Terranite_Legs: - set @state, 6; - callsub S_Update_Mask; - mes "[Heathin]"; - mes "\"I am glad you are back! I've just finished up some more of my commission. Now I can get back to making terranite armor for you. This time I will make some pants, but they need more ore, more Coal to heat my forge and of course, more gold for my efforts.\""; - next; - mes "\"To make terranite pants, I need 200 Coal, 30 Terranite Ore and 40,000 gold pieces. The faster you bring this to me, the faster I can have your terranite pants ready.\""; - close; - -L_Heathin_Terranite_Legs_Forge: - if ( (Zeny < 40000) - || (countitem("Coal") < 200) - || (countitem("TerraniteOre") < 30) ) - goto L_Heathin_Terranite_Legs_Wait; - set @state, 7; - callsub S_Update_Mask; - delitem "Coal", 200; - delitem "TerraniteOre", 30; - getexp @heathin_xp_bonus, 0; - set Zeny, Zeny - 40000; - mes "[Heathin]"; - mes "\"Great, you have brought everything! Come back later and I will have those terranite pants ready for you.\""; - close; - -L_Heathin_Terranite_Legs_Wait: - mes "[Heathin]"; - mes "\"I am very busy right now. If you could bring me 30 Terranite Ore, 200 Coal and 40,000 gold pieces, I will make those terranite pants for you.\""; - close; - -L_Heathin_Terranite_Legs_Ready: - getinventorylist; - if ((checkweight("TerraniteLegs", 1) == 0) || (@inventorylist_count == 100)) - goto L_InventoryNoSpace; - set @state, 8; - callsub S_Update_Mask; - getitem "TerraniteLegs", 1; - mes "[Heathin]"; - mes "\"I am all done with your terranite pants. Hope you enjoy them! I have some more work to complete for the Council. Come back later and I might be able to assist you again.\""; - close; - -L_Heathin_Terranite_Chest_Armor: - set @state, 9; - callsub S_Update_Mask; - mes "[Heathin]"; - mes "\"Good to see you again. I have just finished up some more of my commission. Now I can get back to making terranite armor for you. This time, I will make some terranite chest armor, but it needs more ore, more Coal for my forge and of course, more gold to compensate for my efforts.\""; - next; - mes "\"To make terranite chest armor, I need 250 Coal, 40 Terranite Ore and 50,000 gold pieces. The faster you bring this to me, the faster I can have your terranite armor ready.\""; - close; - -L_Heathin_Terranite_Chest_Armor_Forge: - if ( (Zeny < 50000) - || (countitem("Coal") < 250) - || (countitem("TerraniteOre") < 40) ) - goto L_Heathin_Terranite_Chest_Armor_Wait; - set @state, 10; - callsub S_Update_Mask; - delitem "Coal", 250; - delitem "TerraniteOre", 40; - getexp @heathin_xp_bonus, 0; - set Zeny, Zeny - 50000; - mes "[Heathin]"; - mes "\"Splendid, you have brought everything! Come back later and I will have the terranite chest armor ready for you.\""; - close; - -L_Heathin_Terranite_Chest_Armor_Wait: - mes "[Heathin]"; - mes "\"I am very busy right now. If you could bring me 40 Terranite Ore, 250 Coal and 50,000 gold pieces, I will make that chest armor for you.\""; - close; - -L_Heathin_Terranite_Chest_Armor_Ready: - getinventorylist; - if ((checkweight("TerraniteChestArmor", 1) == 0) || (@inventorylist_count == 100)) - goto L_InventoryNoSpace; - set @state, 11; - callsub S_Update_Mask; - getitem "TerraniteChestArmor", 1; - mes "[Heathin]"; - mes "\"I have completed your terranite chest armor. I hope you enjoy it! I have some work to wrap up for the Council again, but come back later and I might be able to assist you once more.\""; - close; - -L_Heathin_Terranite_Arrows: - mes "[Heathin]"; - mes "\"How good to see you. I have experimented a little with Terranite Ore to see what else can be done with it. It seems to have some qualities suitable for weapons, but I have only tested it with arrows. If you would like, I can make Terranite Arrows, but as as with the armor, I need Coal, Terranite Ore and payment for my efforts.\""; - next; - mes "\"Also, it might be a while until I have time to see what else I can make with terranite other than arrows, as right now the Council is keeping me rather busy with my commission. So, would you like some Terranite Arrows?\""; - menu - "No, thank you.", L_Heathin_Terranite_Arrows_No, - "Sure, I could use some arrows.", L_Heathin_Terranite_Arrows_Yes; - -L_Heathin_Terranite_Arrows_No: - mes "[Heathin]"; - mes "\"Well, if you change your mind, I'm not going anywhere.\""; - close; - -L_Heathin_Terranite_Arrows_Yes: - set @state, 12; - callsub S_Update_Mask; - mes "[Heathin]"; - mes "\"Good, good. I shall begin crafting these arrows as soon as you come back. However, I cannot just make small handfuls as it would not be worth my time and effort to have my concentration interrupted for small tasks. I will make 1,000 Terranite Arrows per request, for which I will need "+@TARROW_REQ_TERRA_ORE+" Terranite Ore, "+@TARROW_REQ_COAL+" Coal and "+@TARROW_REQ_GP+" gold pieces.\""; - next; - mes "\"See you soon!\""; - close; - -L_Heathin_Terranite_Arrows_Forge: - if ( (Zeny < @TARROW_REQ_GP) - || (countitem("Coal") < @TARROW_REQ_COAL) - || (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) ) - goto L_Heathin_Terranite_Arrows_Wait; - set @state, 13; - callsub S_Update_Mask; - delitem "Coal", @TARROW_REQ_COAL; - delitem "TerraniteOre", @TARROW_REQ_TERRA_ORE; - getexp @heathin_xp_bonus, 0; - set Zeny, Zeny - @TARROW_REQ_GP; - mes "[Heathin]"; - mes "\"Wonderful! You have everything I asked for. I will start working on the arrows right away.\""; - close; - -L_Heathin_Terranite_Arrows_Wait: - mes "[Heathin]"; - mes "\"If you want Terranite Arrows, please get me "+@TARROW_REQ_TERRA_ORE+" Terranite Ore, "+@TARROW_REQ_COAL+" Coal and "+@TARROW_REQ_GP+" gold pieces.\""; - close; - -L_Heathin_Terranite_Arrows_Ready: - getinventorylist; - if ((checkweight("TerraniteArrow", 1000) == 0) || (@inventorylist_count == 100)) - goto L_InventoryNoSpace; - set @state, 14; - callsub S_Update_Mask; - getitem "TerraniteArrow", 1000; - mes "[Heathin]"; - mes "\"All done, here you go! I hope you like them. I am still working on my commission, but if you ever need any more Terranite Arrows, just come on by with "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces and I will make another 1,000 arrows for you. By now I have enough Terranite Ore in reserve that you can just trade me my requirements to keep my resources up. Thank you for all your efforts!\""; - close; - -L_Heathin_Terranite_Arrows_Trade: - mes "[Heathin]"; - mes "\"Hello, there. If you have "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces, I will trade you 1,000 Terranite Arrows. Would you like some Terranite Arrows?\""; - menu - "No.", L_Heathin_Terranite_Arrows_Trade_No, - "Yes.", L_Heathin_Terranite_Arrows_Trade_Yes; - -L_Heathin_Terranite_Arrows_Trade_No: - mes "[Heathin]"; - mes "\"Come back again if you would like to get Terranite Arrows.\""; - close; - -L_Heathin_Terranite_Arrows_Trade_Yes: - if ( (Zeny < @TARROW_REQ_GP) - || (countitem("Coal") < @TARROW_REQ_COAL) - || (countitem("TerraniteOre") < @TARROW_REQ_TERRA_ORE) ) - goto L_Heathin_Terranite_Arrows_Trade_Wait; - getinventorylist; - if ((checkweight("TerraniteArrow", 1500) == 0) || (@inventorylist_count == 100)) - goto L_InventoryNoSpace; - delitem "Coal", @TARROW_REQ_COAL; - delitem "TerraniteOre", @TARROW_REQ_TERRA_ORE; - set Zeny, Zeny - @TARROW_REQ_GP; - set @lucky, 5 * rand(readparam(bLuk)); - getitem "TerraniteArrow", 1000 + @lucky; - mes "[Heathin]"; - mes "\"Here you go! You are lucky, I could forge "+@lucky+" more arrows than expected. Come back again if you want more Terranite Arrows.\""; - close; - -L_Heathin_Terranite_Arrows_Trade_Wait: - mes "[Heathin]"; - mes "\"It seems that you do not have the necessary resources for me to trade you. Please come back with "+@TARROW_REQ_COAL+" Coal, "+@TARROW_REQ_TERRA_ORE+" Terranite Ore and "+@TARROW_REQ_GP+" gold pieces if you want another 1,000 Terranite Arrows.\""; - close; - -L_InventoryNoSpace: - mes "[Heathin]"; - mes "\"Hm no. You can't carry this right now. Make some room and come back.\""; - close; - -S_Update_Mask: - set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK)) | (@state << NIBBLE_6_SHIFT); - return; -} -021-2.gat,72,129,0|script|HeathinDebug|147 -{ - mes "[Heathin Debug]"; - mes "Debug Action"; - menu - "Reset", L_Reset, - "Exit", L_End; - -L_Reset: - set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_6_MASK) | (0 << NIBBLE_6_SHIFT)); - mes "Reset!"; - goto L_End; - -L_End: - end; - -OnInit: - if (!debug) - disablenpc "HeathinDebug"; - end; -} diff --git a/world/map/npc/021-2/jhedia.txt b/world/map/npc/021-2/jhedia.txt deleted file mode 100644 index cc2f9165..00000000 --- a/world/map/npc/021-2/jhedia.txt +++ /dev/null @@ -1,62 +0,0 @@ -// Ingot maker takes iron ore, gives ingots for future crafting purposes. - -021-2.gat,70,124,0|script|Jhedia|160 -{ - set @Cost_Per_Ingot, 1000; - set @Iron_Ore_Per, 5; - set @Coal_Per, 10; - - mes "[Jhedia]"; - mes "\"I forge Iron Ore into ingots. Ingots are more useful for skilled smiths, like armorers, because the ore is refined and made into useful units which can be worked with. To make ingots, I need " + @Iron_Ore_Per + " Iron Ore and " + @Cost_Per_Ingot + " gp per ingot. I also need " + @Coal_Per + " Coal for my forge.\""; - next; - mes "[Jhedia]"; - mes "\"How many ingots would you like?\""; - input @ingot_count; - - if (@ingot_count == 0) - goto L_Jhedia_Bye; - set @Zeny_cost, @ingot_count * @Cost_Per_Ingot; - if (countitem("IronOre") < @Iron_Ore_Per * @ingot_count) - goto L_Jhedia_NotEnough_Ore; - if (countitem("Coal") < @Coal_Per * @ingot_count) - goto L_Jhedia_NotEnough_Coal; - if (Zeny < @Zeny_cost) - goto L_Jhedia_NotEnough_Zeny; - getinventorylist; - if (@inventorylist_count == 100 - && countitem("IronIngot") == 0 - && countitem("IronOre") > @ingot_count * @Iron_Ore_Per - | countitem("Coal") > @ingot_count * @Coal_Per) - goto L_Jhedia_NotEnoughSlots; - set Zeny, Zeny - @Zeny_cost; - delitem "IronOre", @ingot_count * @Iron_Ore_Per; - delitem "Coal", @ingot_count * @Coal_Per; - getitem "IronIngot", @ingot_count; - close; - -L_Jhedia_Bye: - mes "[Jhedia]"; - mes "\"Goodbye then.\""; - close; - -L_Jhedia_NotEnough_Ore: - mes "[Jhedia]"; - mes "\"You do not seem to have enough Iron Ore.\""; - close; - -L_Jhedia_NotEnough_Coal: - mes "[Jhedia]"; - mes "\"You do not seem to have enough Coal.\""; - close; - -L_Jhedia_NotEnough_Zeny: - mes "[Jhedia]"; - mes "\"You do not seem to have enough gold pieces.\""; - close; - -L_Jhedia_NotEnoughSlots: - mes "[Jhedia]"; - mes "\"You do not seem to have enough room to carry this many ingots.\""; - close; - -} diff --git a/world/map/npc/021-2/kps.txt b/world/map/npc/021-2/kps.txt deleted file mode 100644 index fb6ce235..00000000 --- a/world/map/npc/021-2/kps.txt +++ /dev/null @@ -1,164 +0,0 @@ -// KPS (Killian Parcel Service) -// Author: Wushin -// Kylian_Timer denotes current quest time & holds last completed. -// reuse the 4 bits -// To Mark 4 Different NPCs. -// setarray $@kps_npc_bits, $@knowYanisNT, $@knowLatoyNT, $@knowWeellosNT, $@knowCasinoNT; -021-2.gat,27,124,0|script|KPS Manager|191 -{ - set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); - set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT); - set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT); - if (@state == 15) - goto L_SeeKylian; - if (@state == 14) - goto L_RunComplete; - if (@state == 13) - goto L_RunStarted; - if (@state == 12) - goto L_JobSelect; - if (@state == 11) - goto L_AcceptJob; - if (@state == 10) - goto L_OfferJob; - goto L_Default; - -L_Default: - mes "[KPS Manager]"; - mes "\"Kylian staying at the Inn bought this shop recently.\""; - mes "\"I'm waiting for him to open the shop.\""; - next; - mes "\"I wonder if he needs any help?\""; - goto L_Close; - -L_OfferJob: - mes "[KPS Manager]"; - mes "\"Hello and what how can I help you today?\""; - menu - "My name is " + strcharinfo(0), L_MyName, - "Nothing.", L_Close; - -L_MyName: - set @state, 11; - callfunc "SetKylianQuest"; - mes "\"Ahhh, Kylian said you would be dropping by.\""; - next; - mes "\"I assume you are looking for some work?\""; - menu - "Yes.", L_StartJob, - "No.", L_Close; - -L_AcceptJob: - mes "[KPS Manager]"; - mes "\"Interested in some work?\""; - menu - "Yes.", L_StartJob, - "No.", L_Close; - -L_StartJob: - set @run, 0; - callfunc "SetKylianRun"; - set @run_cnt, 0; - callfunc "SetKylianRunCnt"; - set @state, 12; - callfunc "SetKylianQuest"; - goto L_JobSelect; - -L_StartJobAgain: - set @run, 0; - callfunc "SetKylianRun"; - set @state, 12; - callfunc "SetKylianQuest"; - goto L_JobSelect; - -L_JobSelect: - if ((gettimetick(2) - Kylian_Timer) < 86400) - goto L_NoPackages; - mes "[KPS Manager]"; - mes "\"We have a number of deliveries that need to go all over the world.\""; - next; - goto L_RandJob; - -L_RandJob: - set @rand_quest, rand(1,3); - goto L_JobInfo; - -L_JobInfo: - mes "\"We have a delivery for:* " + $@random_quests$[@rand_quest] + "\""; - menu - "Take It.", L_StartRun, - "Anything Else?", L_RandJob, - "I need a break.", L_Close; - -L_StartRun: - set @state, 13; - callfunc "SetKylianQuest"; - set @run, @rand_quest; - callfunc "SetKylianRun"; - set Kylian_Timer, gettimetick(2); - goto L_Close; - -L_RunStarted: - mes "Deliver this package to:* " + $@random_quests$[@run] + "\""; - goto L_Close; - -L_RunComplete: - set @elapsed_time, (gettimetick(2) - Kylian_Timer); - if (@elapsed_time > 600) - goto L_Failed; - set @run_cnt, (@run_cnt + 1); - callfunc "SetKylianRunCnt"; - // Set Kylian wants to see you reward state - if (@run_cnt > 3) - goto L_KylianReward; - goto L_RunAgain; - -L_SeeKylian: - mes "\"You need to go see Kylian before I can give you any more work.\""; - goto L_Close; - -L_Failed: - mes "\"You need to be faster next time to earn a bonus.\""; - next; - goto L_RunAgain; - -L_KylianReward: - set Zeny, Zeny + $@delivery_money; - getexp ($@delivery_exp_mod * BaseLevel), 0; - callfunc "SetKylianRun"; - set @state, 15; - callfunc "SetKylianQuest"; - mes "[" + $@delivery_money + " money]"; - mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; - next; - mes "\"I have a message Kylian wants me to send you over right away.\""; - goto L_Close; - -L_RunAgain: - set Zeny, Zeny + $@delivery_money; - getexp ($@delivery_exp_mod * BaseLevel), 0; - callfunc "SetKylianRun"; - mes "[" + $@delivery_money + " money]"; - mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; - next; - mes "\"Good job, keep up the nice work and I'm sure the bonus will give you a bonus.\""; - next; - goto L_StartJobAgain; - -L_NoPackages: - mes "\"Come back tomorrow, maybe we will have some more work.\""; - goto L_Close; - -L_Close: - close; -} -function|script|SetKylianRun -{ - set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_8_MASK)) | (@run << TWOBIT_8_SHIFT); - return; -} -function|script|SetKylianRunCnt -{ - set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_9_MASK)) | (@run_cnt << TWOBIT_9_SHIFT); - return; -} diff --git a/world/map/npc/021-2/kylian.txt b/world/map/npc/021-2/kylian.txt deleted file mode 100644 index 5a162242..00000000 --- a/world/map/npc/021-2/kylian.txt +++ /dev/null @@ -1,424 +0,0 @@ -// Kylian is a businessman from Argeas who wants to eventually open a shop in Tulimshar -// asks the player for several information about the city -// Quest uses Nibble 4 and 5 of QUEST_NorthTulimshar -// Author: Jenalya - -// Nibble 4 is used as flags to indicate if the player knows certain places/persons -// Bit 0: player talked to Yanis in the government building -// Bit 1: player talked to Latoy on the market in North Tulimshar -// Bit 2: player talked to Weellos as the historic building -// Bit 3: player was in the casino rooms - -// Nibble 5 is used to save the quest progress with Kylian -// state 1: player has the task to get the luggage from the harbor -// state 2: Adrian gave the luggage to the player -// state 3: player gave luggage to Kylian and Kylian asks who to talk to for the shop license -// after the player answered this, @KylianNTLicense is set. -// the player can only continue the quest when logging out and therefore setting that value to 0 again -// state 4: Kylian asks for a historical building to get some cultural knowledge -// state 5: Kylian asks where to get some typical food -// after the player answered this, @KylianNTSightSeeing is set. -// the player can only continue the quest when logging out and therefore setting that value to 0 again -// state 6: Kylian asks where to go to have some fun in the evening (casino) -// state 7: Kylian asks where to get exquisite clothing before going out in the evening -// after the player answered this, @KylianNTSightSeeing is set. -// the player can only continue the quest when logging out and therefore setting that value to 0 again -// state 8: Kylian was in the casino and gives a desert hat as reward -// state 9: Shop approved, go talk Kylian's shopkeeper if you are looking for work. -// state 10: Meet Shop keeper -// state 11: Start Time Trial -// state 12: Return -// state 13: Start Daily Timed -// state 14: Return -// state 15: Completed -// Kylian_Timer is used to denote start time. - -// temporary variables used to check if the player logged out or left the building in the meanwhile -// this is to ensure some 'time in between' different actions of the quest -// @KylianNTLicense -// @KylianNTSightSeeing -// @KylianNTCasino - --|script|#businessmanNTconfig|-1 -{ - end; - -OnInit: - // Nibble 4 - // Used in Random Quest later as a Nibble - set $@knowYanisNT, (1 << 16); - set $@knowLatoyNT, (1 << 17); - set $@knowWeellosNT, (1 << 18); - set $@knowCasinoNT, (1 << 19); - - // Random Quests for Later - setarray $@random_quests$, "None", "Falkurn", "Old Wizard", "Baktar"; - set $@delivery_money, 100; - set $@delivery_exp_mod, 10; - end; -} -021-2.gat,25,67,0|script|#KylianOut|32767,1,1 -{ - set @KylianNTLicense, 0; - set @KylianNTSightSeeing, 0; - set @KylianNTCasino, 0; - end; -} -021-2.gat,89,55,0|script|Kylian|193 -{ - set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); - - set @acorn_amount, 12; - set @suitcase_money, 100; - set @suitcase_exp, 50; - set @license_money, 50; - set @license_exp, 20; - set @sightseeing_money, 50; - set @sightseeing_exp, 20; - set @food_money, 50; - set @food_exp, 20; - set @clothes_money, 50; - set @clothes_exp, 20; - set @fun_money, 50; - set @fun_exp, 20; - - // This NPC previously used the variable TMW_Quest - callfunc "ClearVarTMW_Quest"; - set @bernard, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); - - if (@state == 15) goto L_Done; - if (@state >= 11) goto L_Helping; - if (@state == 10) goto L_OfferedJob; - if (@state == 9) goto L_Shop; - if (@KylianNTCasino) goto L_CasinoDone; - if (@state == 8) goto L_DesertHat; - if (@state == 7) goto L_Clothes; - if (@KylianNTSightSeeing) goto L_SightSeeingDone; - if (@state == 6) goto L_Casino; - if (@state == 5) goto L_Food; - if (@KylianNTLicense) goto L_LicenseDone; - if (@state == 4) goto L_SightSeeing; - if (@state == 3) goto L_ShopLicense; - if (@state >= 1) goto L_Suitcase; - - mes "[Kylian]"; - mes "\"Ah, are you the room service? I've some requests.\""; - menu - "Sure, what can I do for you?",L_Luggage, - "No, I'm not!",L_Next; - -L_Next: - mes "[Kylian]"; - mes "\"Too bad. Would you be interested in earning some quick money with some errands regardless?\""; - menu - "I'm a great adventurer! I don't do errands.",L_Close, - "No, I'm busy.",L_Close, - "Mh, ok.",L_Luggage; - -L_Luggage: - mes "[Kylian]"; - mes "\"I need someone to get my luggage from the docks. Show this paper to the sailor who's watching the luggage.\""; - mes "He gives you his ticket which you store in your pocket, separated from your inventory."; - set @state, 1; - callfunc "SetKylianQuest"; - goto L_Close; - -L_Suitcase: // @state >= 1, but below 3 - mes "[Kylian]"; - mes "\"Did you already get my luggage from the docks?\""; - if (@state != 2) - goto L_Close; - menu - "Here it is.",L_Continue, - "I'm on my way, don't worry.",L_Close; - -L_Continue: - if (countitem("LeatherSuitcase") < 1) - goto L_NoItem; - delitem "LeatherSuitcase", 1; - set Zeny, Zeny + @suitcase_money; - getexp @suitcase_exp, 0; - set @state, 3; - callfunc "SetKylianQuest"; - mes "[Kylian]"; - mes "\"Ah, very good. I really need to have a look at some of my papers in there.\""; - mes "He gives you some money."; - next; - mes "[Kylian]"; - mes "\"Oh, and I have some acorns left, I had them with me as travelling fare. You can have them, they're tasty."; - mes "In case you don't like them, you could also bring them to the Tulimshar bakery. I heard they use them to make some special flour.\""; - getitem "Acorn", @acorn_amount; - next; - goto L_ShopLicense; - -L_ShopLicense: // @state == 3 - mes "[Kylian]"; - mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here. While I'm going through my papers, could you find out who I have to talk to about opening a shop in this city?\""; - if (!(QUEST_NorthTulimshar & $@knowYanisNT)) - goto L_Close; - menu - "You need to talk to Yanis in the government building.",L_GovBuild, - "I'll see what I can do.",L_Close; - -L_GovBuild: - set Zeny, Zeny + @license_money; - getexp @license_exp, 0; - set @state, 4; - callfunc "SetKylianQuest"; - set @KylianNTLicense, 1; - mes "[Kylian]"; - mes "\"Ah, excellent. That's very helpful. Could you tell me how to get to that building?\""; - mes "You explain the way to the building."; - next; - goto L_LicenseDone; - -L_LicenseDone: // the player didn't log out yet after telling about Yanis - mes "[Kylian]"; - mes "\"I need to prepare my papers now. I might have some more questions later.\""; - goto L_Close; - -L_SightSeeing: // @state == 4 and logged out sometime between getting to that state and now - mes "[Kylian]"; - mes "\"You just came here the right moment. I have finished my business affairs. I think I should use my time here to also get a bit of cultural knowledge about the area. Can you tell me if there are any historical places to visit?\""; - if (!(QUEST_NorthTulimshar & $@knowWeellosNT)) - goto L_Close; - menu - "There is a very old historic building not far from here.",L_HistBuild, - "I don't know, but will have a look around.",L_Close; - -L_HistBuild: - set Zeny, Zeny + @sightseeing_money; - getexp @sightseeing_exp, 0; - set @state, 5; - callfunc "SetKylianQuest"; - mes "[Kylian]"; - mes "\"This sounds interesting. Please tell me the way.\""; - mes "You tell him how to get to the historic building."; - next; - goto L_Food; - -L_Food: // @state == 5 - mes "[Kylian]"; - mes "\"While I'm out, I could also get something to eat. Maybe some typical dish for this region. Do you have a good suggestion for that?\""; - if (@bernard < 4) // didn't yet help Bernard to make his soup - goto L_Close; - menu - "Bernard on the bazaar makes a great soup.",L_SoupBer, - "No idea, I'll try to find out.",L_Close; - -L_SoupBer: - set Zeny, Zeny + @food_money; - getexp @food_exp, 0; - set @state, 6; - callfunc "SetKylianQuest"; - set @KylianNTSightSeeing, 1; - goto L_SightSeeingDone; - -L_SightSeeingDone: - mes "[Kylian]"; - mes "\"I'm going to see the historic building you told me about and try this local soup on the bazaar. Thank you for the suggestions.\""; - goto L_Close; - -L_Casino: // @state == 6 and logged out sometime between getting to that state and now - mes "[Kylian]"; - mes "\"Hello. I just came back from my sight-seeing tour. And this soup from Bernard really was delicious. I wonder what it's made of...\""; - next; - mes "\"However, I was wondering if you know about a good place to spend the evening? Some place to have fun?\""; - if (!(QUEST_NorthTulimshar & $@knowCasinoNT)) - goto L_Close; - menu - "Of course! The casino!",L_CasinoFound, - "Not really.",L_Close; - -L_CasinoFound: - set Zeny, Zeny + @casino_money; - getexp @casino_exp, 0; - set @state, 7; - callfunc "SetKylianQuest"; - mes "[Kylian]"; - mes "\"Oh, there's a casino in this city? That's a wonderful thing. Where can I find it?\""; - mes "You explain how to get to the casino."; - next; - goto L_Clothes; - -L_Clothes: // @state == 7 - mes "[Kylian]"; - mes "\"I should get proper clothing before I go to the casino tonight. Do you know a reputable shop where clothing of high quality is sold?\""; - if (!(QUEST_NorthTulimshar & $@knowLatoyNT)) - goto L_Close; - menu - "At the market near the harbor district...",L_HarborDistrict, - "Mh, I don't know.",L_Close; - -L_HarborDistrict: - set Zeny, Zeny + @clothes_money; - getexp @clothes_exp, 0; - set @state, 8; - callfunc "SetKylianQuest"; - set @KylianNTCasino, 1; - mes "You explain about Latoy and his high quality shop."; - mes "[Kylian]"; - mes "\"This seems to be exactly what I need. Thanks a lot.\""; - goto L_Close; - -L_CasinoDone: - mes "[Kylian]"; - mes "\"I'm looking forward to going to the casino tonight. See me tomorrow.\""; - goto L_Close; - -L_DesertHat: // @state == 8 - mes "Kylian looks a bit tired."; - mes "[Kylian]"; - mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\""; - next; - getinventorylist; - mes "\"You helped me a lot, so I bought a souvenir for you while I was shopping.\""; - if ((checkweight("DesertHat", 1) == 0) || (@inventorylist_count == 100)) - goto L_Inventory; - getitem "DesertHat", 1; - set @state, 9; - callfunc "SetKylianQuest"; - next; - goto L_Close; - -L_Shop: - mes "[Kylian]"; - mes "\"The Council of Wizards approved my shop license!\""; - mes "\"I purchased a store just acorss the way from the hotel exit.\""; - next; - mes "\"If you are looking for work, go see the shop keeper I have working for me.\""; - mes "\"Mention your name and he will know I sent you.\""; - set @state, 10; - callfunc "SetKylianQuest"; - goto L_Close; - -L_OfferedJob: - mes "[Kylian]"; - mes "\"I spoke with the shopkeeper, They said you haven't stopped in yet.\""; - next; - mes "\"I wish you would consider working for KPS.\""; - next; - mes "\"KPS needs a well-traveled go getter like you.\""; - goto L_Close; - -L_Helping: - mes "[Kylian]"; - mes "\"I've heard you decided to come work for me. That is great news.\""; - mes "\"Keep up the good work and I might have something a little extra for you.\""; - goto L_Close; - -L_Done: - mes "[Kylian]"; - mes "\"Thanks a bunch, buisness is booming!\""; - mes "\"For your hard work take this.\""; - next; - set Zeny, Zeny + $@delivery_money; - getexp ($@delivery_exp_mod * BaseLevel), 0; - set @run_cnt, 0; - callfunc "SetKylianRunCnt"; - set @state, 12; - callfunc "SetKylianQuest"; - mes "[" + $@delivery_money + " money]"; - mes "[" + ($@delivery_exp_mod * BaseLevel) + " experience points]"; - next; - goto L_Close; - -L_Inventory: - mes "[Kylian]"; - mes "\"Oh, you're carrying a lot of things. Come back when you have more room.\""; - goto L_Close; - -L_NoItem: - mes "[Kylian]"; - mes "\"I don't see it! Are you trying to tease me? This is not funny!\""; - goto L_Close; - -L_Close: - set @acorn_amount, 0; - set @suitcase_money, 0; - set @suitcase_exp, 0; - set @license_money, 0; - set @license_exp, 0; - set @sightseeing_money, 0; - set @sightseeing_exp, 0; - set @food_money, 0; - set @food_exp, 0; - set @clothes_money, 0; - set @clothes_exp, 0; - set @fun_money, 0; - set @fun_exp, 0; - set @inventorylist_count, 0; - set @bernard, 0; - // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino - // those are used to check if the player logged out in the meanwhile - close; -} -function|script|SetKylianQuest -{ - set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_5_MASK)) | (@state << NIBBLE_5_SHIFT); - return; -} -function|script|KylianDebug -{ - set @state, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); - callfunc "ClearVarTMW_Quest"; - set @bernard, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT); - set @run, ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT); - set @run_cnt, ((QUEST_NorthTulimshar & TWOBIT_9_MASK) >> TWOBIT_9_SHIFT); - goto L_Menu; - -L_Menu: - mes "[Kylian Debug]"; - menu - "Show Quest State", L_ShowState, - "Set Quest State", L_SetState, - "Reset Timer to now", L_WorkTimer, - "Reset Timer + 24 hours", L_MoreWorkTimer, - "Close.", L_Close; - -L_ShowState: - mes "State: " + @state; - mes "Timer: " + Kylian_Timer; - mes "Time: " + gettimetick(2); - mes "Elapsed Time: " + (gettimetick(2) - Kylian_Timer); - mes "Reset Timer: 86400 > " + (gettimetick(2) - Kylian_Timer); - mes "Run: " + @run; - mes "Run NPC: " + $@random_quests$[@run]; - mes "Run Count: " + @run_cnt; - goto L_Menu; - -L_SetState: - mes "\"Input the quest state desired.\""; - input @state; - callfunc "SetKylianQuest"; - goto L_Menu; - -L_WorkTimer: - set Kylian_Timer, gettimetick(2); - goto L_Menu; - -L_MoreWorkTimer: - set Kylian_Timer, (gettimetick(2) - 86401); - goto L_Menu; - -L_Close: - close; -} -021-2.gat,87,55,0|script|KylianDebug#1|193 -{ - callfunc "KylianDebug"; - end; -OnInit: - if (!debug) - disablenpc "KylianDebug#1"; - end; -} -021-2.gat,29,124,0|script|KylianDebug#2|193 -{ - callfunc "KylianDebug"; - end; -OnInit: - if (!debug) - disablenpc "KylianDebug#2"; - end; -} diff --git a/world/map/npc/021-2/manakins.txt b/world/map/npc/021-2/manakins.txt deleted file mode 100644 index 85f757a5..00000000 --- a/world/map/npc/021-2/manakins.txt +++ /dev/null @@ -1,47 +0,0 @@ -// 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; -} - -// Museum - -021-2.gat,71,161,0|script|Talponian#Female|404 -{ - mes "A Female Talponian."; - close; -} - -021-2.gat,77,161,0|script|Talponian#Male|405 -{ - mes "A Male Talponian."; - close; -} - -021-2.gat,83,161,0|script|Gispaan#Female|406 -{ - mes "A Female Gispaan."; - close; -} - -021-2.gat,89,161,0|script|Gispaan#Male|407 -{ - mes "A Male Gispaan."; - close; -} - diff --git a/world/map/npc/021-2/mapflags.txt b/world/map/npc/021-2/mapflags.txt deleted file mode 100644 index d3dd0e16..00000000 --- a/world/map/npc/021-2/mapflags.txt +++ /dev/null @@ -1,2 +0,0 @@ -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 deleted file mode 100644 index 37df8d65..00000000 --- a/world/map/npc/021-2/rebecca.txt +++ /dev/null @@ -1,11 +0,0 @@ -// - -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-2/yanis.txt b/world/map/npc/021-2/yanis.txt deleted file mode 100644 index 0cc28962..00000000 --- a/world/map/npc/021-2/yanis.txt +++ /dev/null @@ -1,41 +0,0 @@ -// Government official taking care about shop licenses -// involved in quest given by 021-1/imec.txt and 021-2/kylian.txt - -021-2.gat,33,17,0|script|Yanis|107 -{ - set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowYanisNT; - set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_SHIFT); - set @imec, ((QUEST_NorthTulimshar & TWOBIT_4_MASK) >> TWOBIT_4_SHIFT); - - mes "[Yanis]"; - mes "\"Welcome. I'm handling issues with trading licenses for the shop owners in Tulimshar. Can I help you?\""; - if (@imec != 1) - menu - "Nothing right now.",L_BeforeClose; - menu - "Imec asked me to bring this petition.",L_Next, - "Nothing right now.",L_BeforeClose; - -L_Next: - mes "[Yanis]"; - mes "\"Imec? I see. Give it to me.\""; - mes "Yanis has a disapproving look on his face. He takes the letter and writes something on another paper."; - next; - mes "[Yanis]"; - mes "\"Here you have a letter of acknowledgement. You can bring that back to Imec. We will have a look at his case.\""; - set @imec, 2; - set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_4_MASK)) | (@imec << TWOBIT_4_SHIFT); - goto L_BeforeClose; - -L_BeforeClose: - if (@kylian != 3) - goto L_Close; - next; - mes "You think that this is the person Kylian needs to talk to. You should tell him."; - goto L_Close; - -L_Close: - set @imec, 0; - set @kylian, 0; - close; -} diff --git a/world/map/npc/021-3/_mobs.txt b/world/map/npc/021-3/_mobs.txt index 78b2ad47..d4d62bef 100644 --- a/world/map/npc/021-3/_mobs.txt +++ b/world/map/npc/021-3/_mobs.txt @@ -7,21 +7,23 @@ 021-3.gat,129,82,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms,Mob021-3::On1056 021-3.gat,140,38,16,8|monster|AngryFireGoblin|1108,3,100000ms,30000ms,Mob021-3::On1108 021-3.gat,79,98,33,31|monster|BlackScorpion|1009,4,100000ms,1800000ms,Mob021-3::On1009 -021-3.gat,52,53,2,17|monster|Snake|1010,2,40000ms,50000ms,Mob021-3::On1010 +021-3.gat,52,53,2,17|monster|GreenSlime|1005,4,40000ms,50000ms,Mob021-3::On1005 021-3.gat,93,31,28,22|monster|SeaSlime|1033,6,100000ms,30000ms,Mob021-3::On1033 +021-3.gat,121,128,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms,Mob021-3::On1056 +021-3.gat,47,139,8,3|monster|CaveMaggot|1056,5,100000ms,30000ms,Mob021-3::On1056 021-3.gat,0,0,0|script|Mob021-3|-1 { end; -On1009: - set @mobID, 1009; +On1005: + set @mobID, 1005; callfunc "MobPoints"; end; -On1010: - set @mobID, 1010; +On1009: + set @mobID, 1009; callfunc "MobPoints"; end; diff --git a/world/map/npc/021-3/_warps.txt b/world/map/npc/021-3/_warps.txt index 192f6c95..1abe90e3 100644 --- a/world/map/npc/021-3/_warps.txt +++ b/world/map/npc/021-3/_warps.txt @@ -1,6 +1,7 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Central Tulimshar Sewers warps -021-3.gat,143,127|warp|To Central Tulimshar|-1,-1,021-1.gat,147,137 -021-3.gat,125,33|warp|To Central Tulimshar|-1,-1,021-1.gat,124,39 -021-3.gat,57,99|warp|To Central Tulimshar|-1,-1,021-1.gat,50,105 +021-3.gat,143,127|warp|To Central Tulimshar|-1,-1,001-1.gat,117,109 +021-3.gat,57,99|warp|To Central Tulimshar|-1,-1,001-1.gat,60,84 +021-3.gat,29,62|warp|To Beach|-1,-1,001-1.gat,28,45 +021-3.gat,44,143|warp|To Sea Cave|-1,-1,004-3.gat,80,23 diff --git a/world/map/npc/021-3/mapflags.txt b/world/map/npc/021-3/mapflags.txt index d02af5d8..07afc1c8 100644 --- a/world/map/npc/021-3/mapflags.txt +++ b/world/map/npc/021-3/mapflags.txt @@ -1 +1 @@ -021-3.gat|mapflag|resave|001-1,57,71 +021-3.gat|mapflag|resave|001-1,60,105 diff --git a/world/map/npc/023-2/_import.txt b/world/map/npc/023-2/_import.txt deleted file mode 100644 index ceb63a25..00000000 --- a/world/map/npc/023-2/_import.txt +++ /dev/null @@ -1,6 +0,0 @@ -// 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 -npc: npc/023-2/mapflags.txt diff --git a/world/map/npc/023-2/_mobs.txt b/world/map/npc/023-2/_mobs.txt deleted file mode 100644 index 89768e20..00000000 --- a/world/map/npc/023-2/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// 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 deleted file mode 100644 index 1c25c857..00000000 --- a/world/map/npc/023-2/_warps.txt +++ /dev/null @@ -1,5 +0,0 @@ -// 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-2/mapflags.txt b/world/map/npc/023-2/mapflags.txt deleted file mode 100644 index 84596948..00000000 --- a/world/map/npc/023-2/mapflags.txt +++ /dev/null @@ -1 +0,0 @@ -023-2.gat|mapflag|resave|001-1,57,71 diff --git a/world/map/npc/023-3/_import.txt b/world/map/npc/023-3/_import.txt deleted file mode 100644 index b9b116f0..00000000 --- a/world/map/npc/023-3/_import.txt +++ /dev/null @@ -1,6 +0,0 @@ -// 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 -npc: npc/023-3/mapflags.txt diff --git a/world/map/npc/023-3/_mobs.txt b/world/map/npc/023-3/_mobs.txt deleted file mode 100644 index 26b0f4f8..00000000 --- a/world/map/npc/023-3/_mobs.txt +++ /dev/null @@ -1,25 +0,0 @@ -// 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,100000ms,30000ms,Mob023-3::On1119 -023-3.gat,127,85,7,7|monster|Swashbuckler|1120,1,100000ms,30000ms,Mob023-3::On1120 -023-3.gat,98,28,7,7|monster|Swashbuckler|1120,1,100000ms,30000ms,Mob023-3::On1120 -023-3.gat,120,45,7,7|monster|Thug|1119,1,100000ms,30000ms,Mob023-3::On1119 -023-3.gat,51,107,12,5|monster|Swashbuckler|1120,1,100000ms,30000ms,Mob023-3::On1120 -023-3.gat,69,52,66,8|monster|Thug|1119,1,100000ms,30000ms,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 deleted file mode 100644 index 3c95fb55..00000000 --- a/world/map/npc/023-3/_warps.txt +++ /dev/null @@ -1,11 +0,0 @@ -// 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/023-3/mapflags.txt b/world/map/npc/023-3/mapflags.txt deleted file mode 100644 index 8d7ca6b9..00000000 --- a/world/map/npc/023-3/mapflags.txt +++ /dev/null @@ -1 +0,0 @@ -023-3.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 deleted file mode 100644 index 685cb331..00000000 --- a/world/map/npc/024-2/_import.txt +++ /dev/null @@ -1,9 +0,0 @@ -// Map 024-2: Tulimshar Magic School -// This file is generated automatically. All manually changes will be removed when running the Converter. -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/_mobs.txt b/world/map/npc/024-2/_mobs.txt deleted file mode 100644 index 14ac77bc..00000000 --- a/world/map/npc/024-2/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Tulimshar Magic School mobs - - - -024-2.gat,0,0,0|script|Mob024-2|-1 -{ - end; -} diff --git a/world/map/npc/024-2/_warps.txt b/world/map/npc/024-2/_warps.txt deleted file mode 100644 index b6e41de6..00000000 --- a/world/map/npc/024-2/_warps.txt +++ /dev/null @@ -1,5 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Tulimshar Magic School warps - -024-2.gat,26,27|warp|To Tulimshar Canyon|0,-1,024-1.gat,80,49 -024-2.gat,42,28|warp|To Outside|-1,-1,024-1.gat,86,49 diff --git a/world/map/npc/024-2/barrier.txt b/world/map/npc/024-2/barrier.txt deleted file mode 100644 index 84405447..00000000 --- a/world/map/npc/024-2/barrier.txt +++ /dev/null @@ -1,16 +0,0 @@ -// A barrier in the magic school to keep less experienced players out of the canyon - -024-2.gat,31,24,0|script|#MagicSchoolBarrier1#M|127,1,1 -{ - callfunc "MorganState"; - if (@morgan >= 4) - goto L_End; - goto L_PushBack; - -L_PushBack: - warp "024-2.gat", 34, 24; - goto L_End; - -L_End: - end; -} diff --git a/world/map/npc/024-2/mapflags.txt b/world/map/npc/024-2/mapflags.txt deleted file mode 100644 index 03190692..00000000 --- a/world/map/npc/024-2/mapflags.txt +++ /dev/null @@ -1,2 +0,0 @@ -024-2.gat|mapflag|town -024-2.gat|mapflag|resave|001-1,57,71 diff --git a/world/map/npc/024-2/tyer.txt b/world/map/npc/024-2/tyer.txt deleted file mode 100644 index 21868e96..00000000 --- a/world/map/npc/024-2/tyer.txt +++ /dev/null @@ -1,8 +0,0 @@ -// A man in the magic school - -024-2.gat,36,21,0|script|Tyer|157 -{ - mes "[Tyer]"; - mes "\"Hello. Welcome to the Magic Insitute of Tulimshar.\""; - close; -} diff --git a/world/map/npc/024-2/tyer_trigger.txt b/world/map/npc/024-2/tyer_trigger.txt deleted file mode 100644 index 6c532b62..00000000 --- a/world/map/npc/024-2/tyer_trigger.txt +++ /dev/null @@ -1,24 +0,0 @@ -// A man in the magic school - -024-2.gat,33,24,0|script|#Tyer_Trigger|127,0,1 -{ - callfunc "MorganState"; - if (@morgan >= 4) - goto L_Close; - - mes "[Tyer]"; - mes "\"You're not allowed to go in there.\""; - menu - "What do you mean I'm not allowed to go in there?", L_Explain, - "Ah, right.", L_Close; - -L_Explain: - mes "[Tyer]"; - mes "\"Access to those areas are for students of magic only.\""; - next; - mes "\"That barrier was made to keep those that are not students out.\""; - goto L_Close; - -L_Close: - close; -} diff --git a/world/map/npc/024-3/_import.txt b/world/map/npc/024-3/_import.txt deleted file mode 100644 index 306ec8ee..00000000 --- a/world/map/npc/024-3/_import.txt +++ /dev/null @@ -1,5 +0,0 @@ -// Map 024-3: Entry Ancient Amulets -// This file is generated automatically. All manually changes will be removed when running the Converter. -map: 024-3.gat -npc: npc/024-3/_mobs.txt -npc: npc/024-3/_warps.txt diff --git a/world/map/npc/024-3/_mobs.txt b/world/map/npc/024-3/_mobs.txt deleted file mode 100644 index c9456ee3..00000000 --- a/world/map/npc/024-3/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Entry Ancient Amulets mobs - - - -024-3.gat,0,0,0|script|Mob024-3|-1 -{ - end; -} diff --git a/world/map/npc/024-3/_warps.txt b/world/map/npc/024-3/_warps.txt deleted file mode 100644 index eb326a51..00000000 --- a/world/map/npc/024-3/_warps.txt +++ /dev/null @@ -1,3 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Entry Ancient Amulets warps - diff --git a/world/map/npc/024-4/_import.txt b/world/map/npc/024-4/_import.txt deleted file mode 100644 index e76b609b..00000000 --- a/world/map/npc/024-4/_import.txt +++ /dev/null @@ -1,5 +0,0 @@ -// Map 024-4: Giant Maze -// This file is generated automatically. All manually changes will be removed when running the Converter. -map: 024-4.gat -npc: npc/024-4/_mobs.txt -npc: npc/024-4/_warps.txt diff --git a/world/map/npc/024-4/_mobs.txt b/world/map/npc/024-4/_mobs.txt deleted file mode 100644 index bcb4d487..00000000 --- a/world/map/npc/024-4/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Giant Maze mobs - - - -024-4.gat,0,0,0|script|Mob024-4|-1 -{ - end; -} diff --git a/world/map/npc/024-4/_warps.txt b/world/map/npc/024-4/_warps.txt deleted file mode 100644 index cd46789f..00000000 --- a/world/map/npc/024-4/_warps.txt +++ /dev/null @@ -1,3 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Giant Maze warps - diff --git a/world/map/npc/029-3/barrier.txt b/world/map/npc/029-3/barrier.txt index 27b472cf..e1d2c399 100644 --- a/world/map/npc/029-3/barrier.txt +++ b/world/map/npc/029-3/barrier.txt @@ -1,7 +1,7 @@ -029-3.gat,46,21,0|script|#FightCaveBarrier|45,0,0 +029-3.gat,49,54,0|script|#FightCaveBarrier|45,0,0 { if ($@FIGHT_CAVE_STATUS == 1) goto L_Block; - warp "029-1.gat", 54, 39; + warp "029-1.gat", 69, 62; end; L_Block: diff --git a/world/map/npc/029-3/mapflags.txt b/world/map/npc/029-3/mapflags.txt index 549377f1..f7cfbcaf 100644 --- a/world/map/npc/029-3/mapflags.txt +++ b/world/map/npc/029-3/mapflags.txt @@ -1,2 +1,2 @@ -029-3.gat|mapflag|nosave|029-1,69,69 -029-3.gat|mapflag|resave|029-1,69,69 +029-3.gat|mapflag|nosave|029-1,39,102 +029-3.gat|mapflag|resave|029-1,39,102 diff --git a/world/map/npc/031-1/frozenbeard.txt b/world/map/npc/031-1/frozenbeard.txt index e05b3d67..ba656244 100644 --- a/world/map/npc/031-1/frozenbeard.txt +++ b/world/map/npc/031-1/frozenbeard.txt @@ -16,16 +16,7 @@ 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.\""; + callfunc "FerryHelp"; goto L_Main; L_Close: diff --git a/world/map/npc/032-1/_import.txt b/world/map/npc/032-1/_import.txt deleted file mode 100644 index 00df1589..00000000 --- a/world/map/npc/032-1/_import.txt +++ /dev/null @@ -1,7 +0,0 @@ -// Map 032-1: Outback -// This file is generated automatically. All manually changes will be removed when running the Converter. -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/_mobs.txt b/world/map/npc/032-1/_mobs.txt deleted file mode 100644 index 5c41b90a..00000000 --- a/world/map/npc/032-1/_mobs.txt +++ /dev/null @@ -1,24 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Outback mobs - -032-1.gat,47,64,27,15|monster|BlackScorpion|1009,5,30000ms,100000ms,Mob032-1::On1009 -032-1.gat,24,72,27,24|monster|BlackScorpion|1009,5,30000ms,100000ms,Mob032-1::On1009 -032-1.gat,24,48,25,21|monster|BlackScorpion|1009,5,30000ms,100000ms,Mob032-1::On1009 -032-1.gat,57,44,23,18|monster|Snake|1010,13,30000ms,100000ms,Mob032-1::On1010 -032-1.gat,77,76,34,27|monster|Snake|1010,13,30000ms,100000ms,Mob032-1::On1010 - - -032-1.gat,0,0,0|script|Mob032-1|-1 -{ - end; - -On1009: - set @mobID, 1009; - callfunc "MobPoints"; - end; - -On1010: - set @mobID, 1010; - callfunc "MobPoints"; - end; -} diff --git a/world/map/npc/032-1/_warps.txt b/world/map/npc/032-1/_warps.txt deleted file mode 100644 index bdef5c3f..00000000 --- a/world/map/npc/032-1/_warps.txt +++ /dev/null @@ -1,4 +0,0 @@ -// This file is generated automatically. All manually changes will be removed when running the Converter. -// Outback warps - -032-1.gat,64,52|warp|To Outback Cave|-1,-1,032-3.gat,56,60 diff --git a/world/map/npc/032-1/mapflags.txt b/world/map/npc/032-1/mapflags.txt deleted file mode 100644 index 534224b6..00000000 --- a/world/map/npc/032-1/mapflags.txt +++ /dev/null @@ -1 +0,0 @@ -032-1.gat|mapflag|resave|032-1,77,23 diff --git a/world/map/npc/032-1/miriam.txt b/world/map/npc/032-1/miriam.txt deleted file mode 100644 index d4daaafd..00000000 --- a/world/map/npc/032-1/miriam.txt +++ /dev/null @@ -1,335 +0,0 @@ -//############################################# -// author: alastrim, PjotrOrial -//############################################# -// This npc teaches you the speed skill. -// used variables: -// QUEST_MIRIAM: -// 0 either fully completed the quests in here, or not started. -// 1 you said the wrong words, she is insulted. (so you excuse and goto 2) -// 2 waiting for the ingredients -// 3 you brought the needed stuff. if you meet other criteria (BaseLevel, agi) you will be taught the skill -// 4 you have met the criteria of 3, but declined to take the speed test. -// 5 you tried the quest but you failed -// QUEST_MIRIAM_start -// a time in ticks. This is only !=0 if you started running to pachua. -// QUEST_MIRIAM_run -// when you reach pachua, he stores the difference of start and arrival in here. -//############################################# -// after you gained the speed skill, all variables are reset to zero. -//############################################# - -032-1.gat,55,20,0|script|Miriam|175 -{ - if (getskilllv(SKILL_SPEED)) goto L_fast; - if (getequipid(equip_torso) < 0) goto L_naked; - if (QUEST_MIRIAM == 0) goto L_intro; - if (QUEST_MIRIAM == 1) goto L_ask1; - if (QUEST_MIRIAM == 2) goto L_ask2; - if (QUEST_MIRIAM == 3) goto L_teach; - if (QUEST_MIRIAM == 4) goto L_testoffer; - if (QUEST_MIRIAM_run != 0) goto L_checktime; - if (QUEST_MIRIAM_start != 0) goto L_wasting; - if (QUEST_MIRIAM == 5) goto L_testoffer; - goto L_intro; - -L_intro: - mes "You see a woman sitting in the hot sand with eyes wide open... But she does not seem to be looking at something in particular..."; - next; - menu - "Ehr... Hi, my name is " +strcharinfo(0)+ ". Are you OK?",L_Next; - -L_Next: - mes "[Miriam]"; - mes "\"..."; - next; - menu - "Hello?",L_Continue; - -L_Continue: - mes "[Miriam]"; - mes "\"Yes, I am. Why? Do you think I am not OK? I am OK. You interrupted my meditation. Now I will need hours to calm down and stay quiet! Yes, yes, I know, I'm a fast talker!\""; - next; - mes "\"In fact, I am fast in everything I do! I can kill a Mountain Snake before it even starts to think about attacking me! Yes my friend, in a battle, speed is power!"; - next; - menu - "Wow! Very impressi...",L_More; - -L_More: - mes "[Miriam]"; - mes "\"Yes, yes, I know. But if there is one thing I am NOT good at, it is meditation! My master said I need to meditate, but... Ohh! So difficult to stay quiet! And when you FINALLY do, someone INTERRUPTS you, asking if you are 'OK'...\""; - next; - menu - "Oh, I am sorry! I didn't know you were meditating...",L_WallText; - -L_WallText: - mes "[Miriam]"; - mes "\"You are really sorry? Ok, but that is not enough... I need you to do something for me. As you can imagine, I will need a lot of time to concentrate and get back to the state I was when you interrupted me.\""; - next; - mes "\"But the problem is that I wasn't expecting to be here for so long, so I will need some food and something to drink.\""; - next; - mes "\"So, if you really want to prove that you are sorry, bring me 5 Concentration Potions and 10 Snake Tongues.\""; - next; - menu - "Ok, but those potions will not help with your mental concent...",L_MoreTalking, - "Sorry, but I can't help you right now.",L_canthelp; - -L_MoreTalking: - mes "[Miriam]"; - mes "\"ah, ah, ah... I know what I am doing! Now run and get what I asked.\""; - set QUEST_MIRIAM, 2; - close; - -L_canthelp: - mes "[Miriam]"; - mes "\"Oh, really? So you better pray to not need my help in the future!\""; - set QUEST_MIRIAM, 1; - close; - -L_canthelp2: - mes "[Miriam]"; - mes "\"...\""; - next; - mes "\"...\""; - next; - mes "\"Well, if you don't have time to help, at least don't make things difficult for me!\""; - close; - -L_ask1: - mes "[Miriam]"; - mes "\"So, you are back... have you changed your mind about my request?\""; - next; - menu - "Yes, I will get what you want!",L_WillGetItems, - "No, I have no time right now.",L_canthelp2; - -L_WillGetItems: - set QUEST_MIRIAM, 2; - mes "\"Good. So, run and get it!\""; - close; - -L_ask2: - mes "[Miriam]"; - mes "\"Did you get what I asked for?\""; - next; - menu - "Yes, here it is!",L_getitems, - "What was that again?", L_ask3, - "No, not yet.",L_Hurry; - -L_Hurry: - mes "\"So please hurry up!\""; - close; - -L_ask3: - mes "[Miriam]"; - mes "\"You have a small mind, haven't you? I am meditating here and I asked you to bring me stuff, so I can concentrate better.\""; - next; - mes "\"And stop asking such silly questions in the future.\""; - next; - mes "\"So, if you really want to help me now, bring me 5 Concentration Potions and 10 Snake Tongues.\""; - close; - -L_getitems: - if (countitem("SnakeTongue") < 10 - || countitem("ConcentrationPotion") < 5) - goto L_notenough; - delitem "SnakeTongue", 10; - delitem "ConcentrationPotion", 5; - set QUEST_MIRIAM, 3; - mes "[Miriam]"; - mes "\"Good job! Now I have enough food to stay in this desert for days!\""; - next; - mes "\"Now, since you helped me, maybe I can teach you a basic skill, but only if you prove yourself to be a fast runner! Come back and talk to me when you think you are prepared to learn.\""; - close; - -L_notenough: - mes "[Miriam]"; - mes "\"Hey, you don't have all that I asked. Come back when you have everything.\""; - close; - -L_teach: - mes "[Miriam]"; - mes "\"Hmm... do you think you can learn the special Speed skill?\""; - next; - menu - "Yes, I am prepared...", L_Prepared, - "I am already fast.", L_notfast; - -L_Prepared: - set @agi, readparam(bAgi); - set @torso$, getitemname(getequipid(equip_torso)); - set @weight, MaxWeight/Weight; - if (@weight < 3) - goto L_heavyweight; - if (@agi < 60) - goto L_slow; - if (BaseLevel < 60) - goto L_lowlevel; - if (countitem("SteelShield") > 0 - || countitem("WarlordHelmet") > 0 - || countitem("CrusadeHelmet") > 0 - || countitem("WarlordPlate") > 0 - || countitem("KnightsHelmet") > 0 - || countitem("InfantryHelmet") > 0 - || countitem("ChainmailShirt") > 0 - || countitem("WarlordBoots") > 0 - || countitem("LightPlatemail") > 0 - || countitem("CandleHelmet") > 0) - goto L_heavymetal; - goto L_offer; - -L_heavyweight: - mes "[Miriam]"; - mes "\"Wow... Why do you bring so many things with you? You must be carrying more than one third of your own weight! I won't teach you unless you get rid of some stuff... \""; - close; - -L_heavymetal: - mes "[Miriam]"; - mes "\"Hmm... I see... You want to be one of those lazy slow warriors... wasting all their strength carrying kilos of metal clothes... Why does no one see the great advantages of a beautiful, flexible, lightweight armor nowadays?\""; - next; - mes "\"Come back here when you get rid of this junk...\""; - close; - -L_slow: - mes "[Miriam]"; - mes "Oh, wait, wait... " +@agi+ " Agility? Are you serious? What do you do with all your Character points? Put them all to 'Strength'? Really... I don't even want to know... Come back here when you have a decent character points distribution!\""; - close; - -L_lowlevel: - mes "[Miriam]"; - mes "\"Come back here when you are old enough. I even wonder how you could get here so unexperienced as you are.\""; - close; - -L_offer: - mes "[Miriam]"; - mes "\"Hmm! You look great in these clothes! They look very comfortable too... And it seems like you are not carrying too much weight.\""; - next; - if (!(getskilllv(SKILL_POOL))) - goto L_noskill; - menu - "Yes, I look really good in this " +@torso$+ ".",L_TorsoNext; - -L_TorsoNext: - mes "[Miriam]"; - mes "\"I see. I like the way you distributed your Character Points too... " +@agi+ " points to Agility! You really know how to prepare yourself for a good fight!\""; - next; - mes "\"Well... Even if you have a potential to be a good fighter, moving the way you do will not help. You need to be fast to avoid the monsters. \""; - next; - mes "\"So, if you pass a small test I can teach you a skill that will increase your walking speed! You will not be as fast as I am, but I am sure it will be useful.\""; - next; - menu - "I'm in! What kind of test is it?",L_test, - "I don't think I need more speed right now",L_giveup; - -L_test: - mes "[Miriam]"; - mes "\"Great! The test is simple. You need to run as fast as you can from the place where I am sitting to the mountains and talk to Pachua, the chief. When you get there and talk to Pachua, he will send a special smoke signal to me, so I can know how much time it took for you to get there.\""; - next; - mes "\"If you make it in a good time, I will teach you the special speeding skill. If not, you can always try again. So, are you ready?\""; - next; - menu - "Yes, let's do it!",L_LetsDoThis, - "No, I need to stretch my muscles first!",L_stretch; - -L_LetsDoThis: - close2; - message strcharinfo(0), "Miriam quickly grabs your arm and pull you to the place where she is sitting."; - // Warp the player to the place where the NPC is defined, so he can't cheat. - warp "032-1.gat",55,21; - npctalk "Run " +strcharinfo(0)+ ", run!"; - set QUEST_MIRIAM, 5; - set QUEST_MIRIAM_start, gettimetick(2); - set QUEST_MIRIAM_cheat, 0; - end; - -L_naked: - mes "[Miriam]"; - mes "\"Hmmm?! Please put on some clothes before talking to me.\""; - close; - -L_notfast: - mes "[Miriam]"; - mes "\"Hah! If you think so...\""; - close; - -L_noskill: - mes "[Miriam]"; - mes "\"For a person like you, I could even teach a useful skill! Too bad you don't have the basic abillities to learn it...\""; - close; - -L_giveup: - mes "[Miriam]"; - mes "\"Oh, that is too bad... But if you change your mind, come back!\""; - set QUEST_MIRIAM, 4; - close; - -L_testoffer: - mes "[Miriam]"; - mes "\"Are you ready for the test now?\""; - next; - menu - "Yes!",L_test, - "Not yet.",L_Close; - -L_Close: - close; - -L_warning: - mes "[Miriam]"; - mes "\"I know very well what you tried to do. I will not teach you the speed skill if you keep trying this kind of trick!\""; - next; - goto L_testoffer; - -L_stretch: - mes "[Miriam]"; - mes "\"Ok. Good idea... Stretching exercises can increase your flexibility and even prevent injuries!\""; - set QUEST_MIRIAM, 4; - close; - -L_wasting: - mes "[Miriam]"; - mes "\"Don't waste your time talking to me! RUN and talk to Pachua!\""; - close; - -L_checktime: - if (QUEST_MIRIAM_cheat != 0) - goto L_warning; - if (QUEST_MIRIAM_run <= 210) - goto L_goodjob; - goto L_tryagain; - -L_tryagain: - mes "[Miriam]"; - mes "\"You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. It is not enough.\""; - set QUEST_MIRIAM_run, 0; - close; - -L_goodjob: - mes "[Miriam]"; - mes "\"Great job! You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. Very impressive for a person like you.\""; - next; - mes "\"Now I need you to relax. Do NOT move. This teaching process can be painful sometimes.\""; - next; - mes "Miriam stares into your eyes and starts to scream some strange words very close to your ears."; - next; - mes "You feel dizzy and as soon as you move your head and look to the ground, Miriam pushes you hard, sending you meters away from her."; - close2; - warp "032-1.gat",55,22; - // free all used player variables. This can be done, since there is a conditional on the speedskill at the beginning. - set QUEST_MIRIAM_start, 0; - set QUEST_MIRIAM_run, 0; - set QUEST_MIRIAM, 0; - message strcharinfo(0), "[You gain 2500 experience points]"; - message strcharinfo(0), "[You learned Speed Skill]"; - setskill SKILL_SPEED, 1; - getexp 2500, 0; - set QUEST_MIRIAM_cheat, 0; // reset just in case it is still set. - close; - -L_fast: - mes "[Miriam]"; - mes "\"I hope you make a good use of your new skill... Take care!\""; - set QUEST_MIRIAM_cheat, 0; // reset just in case it is still set. - close; - -} diff --git a/world/map/npc/032-3/_warps.txt b/world/map/npc/032-3/_warps.txt index b84c4e2c..f4569169 100644 --- a/world/map/npc/032-3/_warps.txt +++ b/world/map/npc/032-3/_warps.txt @@ -2,4 +2,4 @@ // Outback Cave warps 032-3.gat,128,34|warp|To Desert Mountains|-1,-1,006-1.gat,30,124 -032-3.gat,56,61|warp|To Outback|-1,-1,032-1.gat,64,53 +032-3.gat,56,61|warp|To Desert Mountains|-1,-1,006-1.gat,111,111 diff --git a/world/map/npc/032-3/mapflags.txt b/world/map/npc/032-3/mapflags.txt index 3c28a3a0..d619bf99 100644 --- a/world/map/npc/032-3/mapflags.txt +++ b/world/map/npc/032-3/mapflags.txt @@ -1 +1 @@ -032-3.gat|mapflag|resave|032-1,77,23 +032-3.gat|mapflag|resave|006-1,36,18 diff --git a/world/map/npc/035-2/koga.txt b/world/map/npc/035-2/koga.txt index c38221a4..616de0f3 100644 --- a/world/map/npc/035-2/koga.txt +++ b/world/map/npc/035-2/koga.txt @@ -17,7 +17,7 @@ L_Leave: goto L_Close; L_Tulimshar: - warp "022-1.gat", 76, 72; + warp "001-1.gat", 63, 73; goto L_Close; L_Hurnscald: diff --git a/world/map/npc/036-2/emblems.txt b/world/map/npc/036-2/emblems.txt index ed73729b..1c8bad11 100644 --- a/world/map/npc/036-2/emblems.txt +++ b/world/map/npc/036-2/emblems.txt @@ -1,11 +1,11 @@ -036-2.gat,29,27,0|script|#k2city1e|410 +036-2.gat,29,27,0|script|#k2city1e|412 { end; OnInit: disablenpc "#k2city1e"; end; } -036-2.gat,29,27,0|script|#k2city1d|411 +036-2.gat,29,27,0|script|#k2city1d|413 { end; } diff --git a/world/map/npc/036-2/koga-candor.txt b/world/map/npc/036-2/koga-candor.txt index 555fbec5..3b9fd932 100644 --- a/world/map/npc/036-2/koga-candor.txt +++ b/world/map/npc/036-2/koga-candor.txt @@ -11,15 +11,15 @@ L_Leave: if ($@CandorCurrentDock == 0) goto L_Candor; if ($@CandorCurrentDock == 1) - goto L_Tulimshar; + goto L_Hurnscald; goto L_Close; -L_Tulimshar: - warp "022-1.gat", 60, 33; +L_Hurnscald: + warp "008-1.gat", 137, 75; goto L_Close; L_Candor: - warp "029-1.gat", 25, 37; + warp "029-1.gat", 46, 109; goto L_Close; L_Close: diff --git a/world/map/npc/043-3/_warps.txt b/world/map/npc/043-3/_warps.txt index 11506fb8..5decf57c 100644 --- a/world/map/npc/043-3/_warps.txt +++ b/world/map/npc/043-3/_warps.txt @@ -1,5 +1,7 @@ // This file is generated automatically. All manually changes will be removed when running the Converter. // Sandy Dungeon Level 1 warps -043-3.gat,32,36|warp|To Beach|0,-1,043-1.gat,52,39 +043-3.gat,31,26|warp|Mine Camp|-1,-1,002-3.gat,22,86 043-3.gat,77,30|warp|To Lower Level|-1,-1,043-4.gat,47,67 +043-3.gat,116,36|warp|To Snake Cave|-1,-1,005-3.gat,78,87 +043-3.gat,32,37|warp|To Snake Cave|0,-1,005-3.gat,33,83 diff --git a/world/map/npc/068-2/_import.txt b/world/map/npc/068-2/_import.txt deleted file mode 100644 index 38ad884b..00000000 --- a/world/map/npc/068-2/_import.txt +++ /dev/null @@ -1,10 +0,0 @@ -// 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 -npc: npc/068-2/mapflags.txt diff --git a/world/map/npc/068-2/_mobs.txt b/world/map/npc/068-2/_mobs.txt deleted file mode 100644 index c0b6cd10..00000000 --- a/world/map/npc/068-2/_mobs.txt +++ /dev/null @@ -1,15 +0,0 @@ -// 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,10000ms,85000ms,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 deleted file mode 100644 index 3776ed28..00000000 --- a/world/map/npc/068-2/_warps.txt +++ /dev/null @@ -1,13 +0,0 @@ -// 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/068-2/bank.txt b/world/map/npc/068-2/bank.txt deleted file mode 100644 index 328d98ae..00000000 --- a/world/map/npc/068-2/bank.txt +++ /dev/null @@ -1,8 +0,0 @@ -// Another banker -068-2.gat,29,83,0|script|Hydusun|149 -{ - set @npcname$, "Hydusun"; - callfunc "Banker"; - close; -} - diff --git a/world/map/npc/068-2/hetchel.txt b/world/map/npc/068-2/hetchel.txt deleted file mode 100644 index c81d0cf1..00000000 --- a/world/map/npc/068-2/hetchel.txt +++ /dev/null @@ -1,445 +0,0 @@ -// Hetchel the Silk Weaver -// bh28 -// 2013-03, GPLv2. -// -// Hetchel is referred to by Lora Tay. -// She weaves and sells standard double elbow square silk sheets. -// She could also sell, dyed sheets, Silk robes from Lora Tay. -// (6000 with cocoons, 40000 (?) with no cocoons). -// -// @wg_state: variable indicating winter gloves status. -// Lora Tay proposes silk Robe if (@wg_state>= 11). -// @SHEET_COCOONS_NR:* Number of cocoons required per sheet. -// Might ne calculated from @ROBE_COCOONS_NR/@ROBE_SHEETS_NR -// Actually: 150∕6 = 25 -// @SHEET_ZENY :* Money to pay per sheet: A sixth of 10000-2*500-6000 -// @SheetCount Number of sheets to buy (variable). -// -// @silkpants_state: variable indicating silkpant quest status. - -068-2.gat,62,83,0|script|Hetchel|376 -{ - set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT); - set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); - set @SHEET_COCOONS_NR, 25; - set @SHEET_ZENY, 500; - set @spants_minlvl, 45; - setarray @spants_req_hmn$, "Silk Cocoons", "Pieces of Cotton Cloth", "Silk Headbands"; - setarray @spants_req$, "SilkCocoon", "CottonCloth", "SilkHeadband"; - setarray @spants_req_amt, 154, 14, 2; - set @spants_reward, 45000; - set @spants_job_reward, 10000; - set @SheetCount, 0; - - if (@wg_state < 11) - goto L_WG_quest_not_done; - if ( BaseLevel > @spants_minlvl && @spants_state < 1 ) goto L_Spants_Cry; - if ( @spants_state == 1 ) goto L_Spants_Cry_2; - if ( @spants_state == 2 ) goto L_Spants_Start; - if ( @spants_state > 2 && @spants_state < 8 ) goto L_Spants_Steal; - if ( @spants_state == 8 ) goto L_Spants_Make; - - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; - menu - "Sorry to bother, I'm just visiting.", L_Close, - "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu; - -L_WG_quest_not_done: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles."; - mes "My best client is Lora Tay, at Dimond's."; - mes "What can I do for you?\""; - menu - "Sorry to bother, I'm new to this country, just visting.", L_Close, - "What are you selling?", L_main_menu; - -L_Spants_Cry: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; - menu - "Sorry to bother, I'm just visiting.", L_Close, - "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_Spants_Cry_Cont_1; - -L_Spants_Cry_2: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; - menu - "Sorry to bother, I'm just visiting.", L_Close, - "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, - "Hey you have been crying so badly, can I help you somehow?", L_Spants_Reply_Cry, - "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears; - -L_Spants_Start: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; - menu - "Sorry to bother, I'm just visiting.", L_Close, - "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, - "So you are looking for new goals in your life?", L_Spants_No_Cry; - -L_Spants_Steal: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; - menu - "Sorry to bother, I'm just visiting.", L_Close, - "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, - "About the Pants...", L_Spants_Steal_Cont; - -L_Spants_Make: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello I am Hetchel, I weave fine textiles, what can I do for you?\""; - menu - "Sorry to bother, I'm just visiting.", L_Close, - "I am looking for silk sheets, Lora Tay told me that I could find some in this market. Can you help?", L_main_menu, - "Hey what about the Pants you were planning to make?", L_Spants_Make_Cont; - -L_Spants_Cry_Cont_1: - mes "You notice how the tiny woman blushes, she suddenly bursts into tears."; - next; - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Hello\""; - mes "Hetchel hides her face in her hands"; - mes ""; - mes ""; - menu - "\"Hey, what is the problem?\"", L_Spants_Reply_Cry, - "Give Hetchel something to dry her tears", L_Spants_Wipe_Tears, - "\"Oh really? Just sell me some Silk Sheets if you have them\"", L_main_menu; - -L_Spants_Wipe_Tears: - mes "Hand Hetchel a (please type the Item you want to give her)"; - next; - mes "This is case sensitive. Also do not enter whitespaces."; - input @spants_wipe_thingy$; - if (@spants_wipe_thingy$ == "") goto L_Spants_Wrong; - if (countitem(@spants_wipe_thingy$) < 1) goto L_Spants_No_Item; - if (@spants_wipe_thingy$ == "RedCottonCloth") goto L_Spants_Wipe_Tears_Cont; - if (@spants_wipe_thingy$ == "RedHitchhikersTowel") goto L_Spants_Wipe_Tears_Towel; - mes "Hetchel looks at you, then looks at the" + @spants_wipe_thingy$ + "."; - mes "She hangs her head and weeps more"; - mes "Red is the only color I have ever loved, bring me something red to dry my tears"; - goto L_Close; - -L_Spants_Wipe_Tears_Towel: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"No, I recognize this towel, it is one of those warping towels, are you trying to mess with me?\""; - goto L_Close; - -L_Spants_Wrong: - mes "It appears you forgot to type the item you want to give."; - goto L_Close; - -L_Spants_No_Item: - mes "Oh you do not have it."; - goto L_Close; - -L_Spants_Wipe_Tears_Cont: - mes "Hetchel dries her tears with the Red Piece of Cloth you gave her."; - mes "This seems to have consoled her."; - delitem "RedCottonCloth", 1; - set @spants_state, 2; - callsub S_Update_Spants; - goto L_Spants_No_Cry; - -L_Spants_No_Cry: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Oh thank you my dear friend."; - mes "Yes, to some extent."; - next; - mes "I am just so sad because I realized that this is going to be the thing I will be doing for the rest of my life\""; - menu - "\"You are still young, Hetchel, You can still accomplish things\"", L_Spants_Cry_Cont_2, - "\"Yes, you are probably correct.\"", L_Close; - -L_Spants_Cry_Cont_2: - mes "[Hetchel the weaver]"; - mes ""; - mes "Hetchel thinks for a while"; - mes ""; - mes "\"Oh my friend, I have been dreaming of making a garment of my own."; - mes "It always bothered me to see all those wizards and witches here being naked under their cloaks\""; - mes "\"They must be so embarrassed - they are true heroes to give up their dignity to be able to fight the perils of this world\""; - mes "Hetchel sobs"; - menu - "\"So you want to make pants for mages?\"", L_Spants_Cry_Cont_3, - "\"This sounds ridiculous. Good Bye.\"", L_Close; - -L_Spants_Cry_Cont_3: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Ok, so I figured I could make some trousers like Lora Tay makes but from the much finer Material the Silk Worms are making for us\""; - mes "\"But I really need the base plans for the trousers, otherwise I do not know how to attempt this."; - mes "Can you get me those plans from her?\""; - menu - "\"No, sorry I am too busy for that\"", L_Close, - "\"Of course!\"", L_Spants_Cry_Cont_4; - -L_Spants_Cry_Cont_4: - set @spants_state, 3; - callsub S_Update_Spants; - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Oh wait! I am not sure if it is such a good idea to ask her about that, I think she would not give the plans to you anyway."; - mes "Maybe you can find a way to get those plans on a different way?"; - mes "I think there are some people in Hurnscald who have their means of getting you every possible item there is\""; - next; - mes "[Hetchel the weaver]"; - mes ""; - mes "Please please please - I need those plans"; - goto L_Close; - -L_Spants_Reply_Cry: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"...\""; - set @spants_state, 1; - callsub S_Update_Spants; - goto L_Close; - - -L_Spants_Steal_Cont: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Have you gotten hold of the plans?\""; - menu - "Yes I have them somewhere here", L_Spants_Steal_Cont2, - "No, not yet", L_Close; - -L_Spants_Steal_Cont2: - if @spants_state < 7 goto L_Spants_No_Item; - set @spants_state, 8; - callsub S_Update_Spants; - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Oh this is miraculous\""; - mes ""; - mes "Hetchel sheds some tears of joy"; - next; - mes "You hand her the crumpled plans Crastur the Ugly gave you."; - next; - mes "[Hetchel the weaver]"; - mes ""; - mes "\"I need to figure out how to do this now... \""; - next; - mes "Hetchel adjusts her glasses and reads carefully"; - next; - mes "She seems to be very busy, maybe you should come back later."; - goto L_Close; - -L_Spants_Make_Cont: - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Yes, I already made a prototype but it cost me a lot of time and effort."; - mes "I can give it to you if you are willing to pay for my expenses though.\""; - menu - "What do you want for those silken pants?", L_Spants_Make_Cont_2, - "No, I am not particularly interested.", L_Close; - -L_Spants_Make_Cont_2: - if(getarraysize(@spants_req_amt) < 3 || getarraysize(@spants_req$) < 3 || getarraysize(@spants_req_hmn$) < 3) - goto L_Spants_Error; - mes "[Hetchel the weaver]"; - mes ""; - mes "\"I need you to bring me " + @spants_req_amt[0] +" "+ @spants_req_hmn$[0] + ", " + @spants_req_amt[1] +" "+ @spants_req_hmn$[1] + " and " + @spants_req_amt[2] +" "+ @spants_req_hmn$[2]; - next; - mes "You will not have to pay for my time, I am so proud to have accomplished this on my own!\""; - menu - "\"I have those items with me\"", L_Spants_Pay, - "\"I am still looking for them\"", L_Close, - "\"What do you need again?\"", L_Spants_Make_Cont_2; - -L_Spants_Pay: - if (countitem(@spants_req$[0]) < @spants_req_amt[0] || countitem(@spants_req$[1]) < @spants_req_amt[1] || countitem(@spants_req$[2]) < @spants_req_amt[2]) - goto L_Spants_No_Item; - getinventorylist; - if (inventorylist_count == 100) goto L_TooMany; - mes "Hetchel takes your items."; - delitem @spants_req$[0], @spants_req_amt[0]; - delitem @spants_req$[1], @spants_req_amt[1]; - delitem @spants_req$[2], @spants_req_amt[2]; - getitem "SilkPants", 1; - set @spants_state, 9; - callsub S_Update_Spants; - next; - mes "[Hetchel the weaver]"; - mes ""; - mes "\"Here are your pants my dear."; - mes "Keep them safe I do not know if I will ever try this again.\""; - getexp @spants_reward, @spants_job_reward; - goto L_Close; - -L_Spants_Error: - mes "Something went wrong in the script, please inform a developer about that"; - close; - -L_main_menu: - mes "[Hetchel]"; - mes "\"I have some silk sheets: double-elbow squares.\""; - menu - "I'm not interested at the moment, maybe later; thanks anyway.", L_Close, - "Can I buy some?", L_Next; -// "Do you have a silk robe I could buy?", L_robe, -// "Goodbye.", L_Close; - -L_Next: - mes "[Hetchel]"; - mes ""; - mes "\"Sure but you need to provide raw materials."; - mes "I'll need " + @SHEET_COCOONS_NR +" silk cocoons per sheet,"; - mes "and also " + @SHEET_ZENY +" GP per sheet for my work.\""; - next; - if (countitem("SilkCocoon") == 0) - goto L_sheet_no_cocoon; - goto L_sheet_menu; - -L_sheet_menu: - menu - "I have what you asked for.", L_Next1, - "Sorry I didn't pay attention enough, what do you need?", L_how_many_cocoons, - "Oops! Sorry, I'll come back soon with them.", L_Close; - -L_Next1: - mes "[Hetchel]"; - mes ""; - mes "\"How many would you like?\""; - input @SheetCount; - if (@SheetCount == 0) - goto L_zero_sheet; - if (countitem("SilkCocoon") < @SheetCount * @SHEET_COCOONS_NR) - goto L_sheet_missing_cocoons; - if (Zeny < @SheetCount * @SHEET_ZENY) - goto L_sheet_missing_Zeny; - getinventorylist; - if (@inventorylist_count == 100 && countitem("SilkSheet") < 1 && countitem("SilkCocoon") > @SheetCount * @SHEET_COCOONS_NR) - goto L_TooMany; - set Zeny, Zeny - @SheetCount * @SHEET_ZENY; - delitem "SilkCocoon", @SheetCount * @SHEET_COCOONS_NR; - getitem "SilkSheet", @SheetCount; - mes "[Hetchel]"; - mes ""; - mes "\"Thank you, I hope the sheets will fit your needs."; - mes "Please greet Lora for me when you see her.\""; - emotion EMOTE_HAPPY; - goto L_Close; - -L_sheet_missing_cocoons: - mes "[Hetchel]"; - mes ""; - mes "\"I'm sorry, but I need " + @SheetCount * @SHEET_COCOONS_NR + ", not " + countitem("SilkCocoon") + ".\""; - goto L_Close; - -L_sheet_missing_Zeny: - mes "[Hetchel]"; - mes ""; - mes "\"No, no no. The way this works is that you give me the GP first and I give you the sheets afterwards."; - mes "You're " + (@SheetCount * @SHEET_ZENY - Zeny) + " GP short, so come back when you can afford the sheets you asked for!\""; - goto L_Close; - -L_how_many_cocoons: - mes "[Hetchel]"; - mes ""; - mes "\"I need an average of " + @SHEET_COCOONS_NR + " cocoons per sheet"; - mes "and also " + @SHEET_ZENY + " GP per sheet for my work.\""; - next; - goto L_sheet_menu; - -L_sheet_no_cocoon: - mes "[Hetchel]"; - mes ""; - mes "\"You don't have any cocoon? I'm sorry I can't do anything for you.\""; - menu - "I'll seek for them.", L_Close, - "Where can I get cocoons?", L_Next2; - -L_Next2: - mes "[Hetchel]"; - mes "\"Silk cocoons come from Silkworms. Silkworms live in the woodland area around Hurnscald."; - mes "Silkworms like especially woods and dark areas. You can go there by ferry.\""; - goto L_Close; - -//L_robe: -// mes "[Hetchel]"; -// mes "\"I am not a seamstress but I have a few silk robes from Lora Tay left."; -// mes "It is not your size as Lora made them for me, but Tondar was kind enough"; -// mes "to cast a spell on it, so that it will fit to you as soon as you wear it."; -// mes "However his prices are not that low.\""; -// next; -// goto L_main_menu; - -L_zero_sheet: - mes "[Hetchel]"; - mes ""; - mes "\"It's the best way to get quickly served!\""; - goto L_Close; - -L_TooMany: - mes "[Hetchel]"; - mes ""; - mes "\"Your bag hasn't room enough. Store some things and come back.\""; - goto L_Close; - -S_Update_Spants: - set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT)); - return; - -L_Close: - set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT)); - set @wg_state, 0; - set @spants_state, 0; - set @spants_minlvl, 0; - set @spants_reward, 0; - set @spants_job_reward, 0; - set @spants_wipe_thingy, ""; - set @SHEET_COCOONS_NR, 0; - set @SHEET_ZENY, 0; - set @SheetCount, 0; - set @wg_state, 0; - close; -} - -068-2.gat,60,83,0|script|HetchelDebug|376 -{ -set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT); -set @spants_state, ((QUEST_WG_state & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); - -mes "Lora Tay Quest State: "+ @wg_state; -mes "Silk Pants Quest State: "+ @spants_state; - -menu - "Set Lora Tay Quest State", L_Lora_Tay, - "Set Silk Pants Quest State", L_Spants, - "Close", L_Close; - -L_Lora_Tay: - mes "Set Lora Tay Visited State (0 - reset , 11 - enough for SilkPants Quest)"; - input @wg_state; - goto L_Close; - -L_Spants: - mes "Set SilkPants Quest State (0 - reset)"; - input @spants_state; - goto L_Close; - -L_Close: - set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT)); - set @wg_state, 0; - set QUEST_WG_state, (QUEST_WG_state & ~(NIBBLE_2_MASK) | (@spants_state << NIBBLE_2_SHIFT)); - set @spants_state, 0; - close; - -OnInit: - if (!debug) - disablenpc "HetchelDebug"; - end; -} diff --git a/world/map/npc/068-2/inya.txt b/world/map/npc/068-2/inya.txt deleted file mode 100644 index 1958478c..00000000 --- a/world/map/npc/068-2/inya.txt +++ /dev/null @@ -1,209 +0,0 @@ -//Gemstones: Diamond (white) , Ruby (red), Emerald (green), Sapphire (blue), Topaz (yellow), Amethyst (purple) -//The power of the gems is important to future balance of these rings. Are they related to stats, tiers of power, schools of magic? - -068-2.gat,29,56,0|shop|#InyaShop|127,SimpleRing:*100000 - -068-2.gat,29,56,0|script|Inya|106 -{ - mes "[Inya]"; - mes "\"I am Inya, a jeweler of fine rings. I sell and make rings.\""; - next; - mes "\"If you have a Simple Ring and a gem, I can set the gem in it for 100,000 gold pieces.\""; - next; - mes "\"Also, if you have a ring with gems on it, I can remove the gems and return the Simple Ring to you for 50,000 gold pieces.\""; - next; - mes "\"So, how can I help you?\""; - menu - "What jewelry do you have for sale?", L_Inya_Shop, - "I have a wedding ring, will that do?", L_Inya_Wedding_Ring, - "I'd like to remove a gem (50000 GP).", L_Inya_Remove_RingGem, - "I'd like to add a gem (100000 GP).", L_Inya_Add_RingGem, - "Not interested.", L_Inya_NotInterested; - -L_Inya_Shop: - close2; - shop "#InyaShop"; - -L_Inya_Wedding_Ring: - mes "[Inya]"; - mes "\"No, sorry. I do not alter wedding rings at this time.\""; - close; - -L_Inya_Remove_RingGem: - mes "[Inya]"; - mes "\"What kind of gem would you like to have removed?\""; - menu - "Diamond.", L_Inya_Remove_Diamond, - "Ruby.", L_Inya_Remove_Ruby, - "Emerald.", L_Inya_Remove_Emerald, - "Sapphire.", L_Inya_Remove_Sapphire, - "Topaz.", L_Inya_Remove_Topaz, - "Amethyst.", L_Inya_Remove_Amethyst, - "I've changed my mind.", L_Inya_NotInterested; - -L_Inya_Add_RingGem: - mes "[Inya]"; - mes "\"What kind of gem would you like to add?\""; - menu - "Diamond.", L_Inya_Add_Diamond, - "Ruby.", L_Inya_Add_Ruby, - "Emerald.", L_Inya_Add_Emerald, - "Sapphire.", L_Inya_Add_Sapphire, - "Topaz.", L_Inya_Add_Topaz, - "Amethyst.", L_Inya_Add_Amethyst, - "I've changed my mind.", L_Inya_NotInterested; - -L_Inya_Remove_Diamond: - if ( (Zeny < 50000) - | (countitem ("DiamondRing") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 50000; - delitem "DiamondRing", 1; - getitem "SimpleRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Remove_Ruby: - if ( (Zeny < 50000) - | (countitem ("RubyRing") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 50000; - delitem "RubyRing", 1; - getitem "SimpleRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Remove_Emerald: - if ( (Zeny < 50000) - | (countitem ("EmeraldRing") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 50000; - delitem "EmeraldRing", 1; - getitem "SimpleRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Remove_Sapphire: - if ( (Zeny < 50000) - | (countitem ("SapphireRing") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 50000; - delitem "SapphireRing", 1; - getitem "SimpleRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Remove_Topaz: - if ( (Zeny < 50000) - | (countitem ("TopazRing") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 50000; - delitem "TopazRing", 1; - getitem "SimpleRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Remove_Amethyst: - if ( (Zeny < 50000) - | (countitem ("AmethystRing") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 50000; - delitem "AmethystRing", 1; - getitem "SimpleRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Add_Diamond: - if ( (Zeny < 100000) - | (countitem ("SimpleRing") < 1) - | (countitem ("Diamond") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 100000; - delitem "SimpleRing", 1; - delitem "Diamond", 1; - getitem "DiamondRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Add_Ruby: - if ( (Zeny < 100000) - | (countitem ("SimpleRing") < 1) - | (countitem ("Ruby") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 100000; - delitem "SimpleRing", 1; - delitem "Ruby", 1; - getitem "RubyRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Add_Emerald: - if ( (Zeny < 100000) - | (countitem ("SimpleRing") < 1) - | (countitem ("Emerald") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 100000; - delitem "SimpleRing", 1; - delitem "Emerald", 1; - getitem "EmeraldRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Add_Sapphire: - if ( (Zeny < 100000) - | (countitem ("SimpleRing") < 1) - | (countitem ("Sapphire") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 100000; - delitem "SimpleRing", 1; - delitem "Sapphire", 1; - getitem "SapphireRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Add_Topaz: - if ( (Zeny < 100000) - | (countitem ("SimpleRing") < 1) - | (countitem ("Topaz") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 100000; - delitem "SimpleRing", 1; - delitem "Topaz", 1; - getitem "TopazRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_Add_Amethyst: - if ( (Zeny < 100000) - | (countitem ("SimpleRing") < 1) - | (countitem ("Amethyst") < 1) ) - goto L_Inya_Not_Enough; - set Zeny, Zeny - 100000; - delitem "SimpleRing", 1; - delitem "Amethyst", 1; - getitem "AmethystRing", 1; - mes "[Inya]"; - mes "\"Here you go.\""; - close; - -L_Inya_NotInterested: - mes "[Inya]"; - mes "\"Come back later and I will try to be of assistance.\""; - close; - -L_Inya_Not_Enough: - mes "[Inya]"; - mes "\"I am sorry, you simply do not seem to have the necessary items for me to help you. Please come back when you do, and I would be more than happy to help you out.\""; - close; -} diff --git a/world/map/npc/068-2/latoy.txt b/world/map/npc/068-2/latoy.txt deleted file mode 100644 index ee28555b..00000000 --- a/world/map/npc/068-2/latoy.txt +++ /dev/null @@ -1,33 +0,0 @@ -// A snobby store that won't sell to the player -// takes part in quest given by 021-2/kylian.txt - -068-2.gat,92,83,0|shop|#LatoyShop|127,DesertShirt:*2000,SilkRobe:*40000,SerfHat:*500,DesertHat:*9600 - -068-2.gat,92,83,0|script|Latoy|106 -{ - set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT; - set @kylian, ((QUEST_NorthTulimshar & NIBBLE_5_MASK) >> NIBBLE_5_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-2/mapflags.txt b/world/map/npc/068-2/mapflags.txt deleted file mode 100644 index 4968bf61..00000000 --- a/world/map/npc/068-2/mapflags.txt +++ /dev/null @@ -1,2 +0,0 @@ -068-2.gat|mapflag|town -068-2.gat|mapflag|resave|001-1,57,71 diff --git a/world/map/npc/069-2/_import.txt b/world/map/npc/069-2/_import.txt deleted file mode 100644 index 250938b3..00000000 --- a/world/map/npc/069-2/_import.txt +++ /dev/null @@ -1,7 +0,0 @@ -// 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/mapflags.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 deleted file mode 100644 index 561eec94..00000000 --- a/world/map/npc/069-2/_mobs.txt +++ /dev/null @@ -1,9 +0,0 @@ -// 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 deleted file mode 100644 index c556dd8e..00000000 --- a/world/map/npc/069-2/_warps.txt +++ /dev/null @@ -1,17 +0,0 @@ -// 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 Out|-1,-1,069-1.gat,90,101 -069-2.gat,55,31|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,98,80 -069-2.gat,86,31|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,98,58 -069-2.gat,117,31|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,90,41 -069-2.gat,24,62|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,44,41 -069-2.gat,55,62|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,35,58 -069-2.gat,86,62|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,35,80 -069-2.gat,117,62|warp|to Tulmishar Castle Out|-1,-1,069-1.gat,43,100 -069-2.gat,45,127|warp|to Tulmishar Castle Out|2,-1,069-1.gat,66,57 -069-2.gat,45,83|warp|to Tulmishar Castle Thr|2,-1,069-2.gat,106,116 -069-2.gat,107,117|warp|to Tulmishar Castle Mai|2,-1,069-2.gat,44,84 -069-2.gat,107,117|warp|to Tulmishar Castle Mai|2,-1,069-2.gat,44,84 -069-2.gat,116,127|warp|to Tulmishar Castle Par|1,-1,069-1.gat,69,42 -069-2.gat,97,127|warp|to Tulmishar Castle Par|1,-1,069-1.gat,64,42 diff --git a/world/map/npc/069-2/mapflags.txt b/world/map/npc/069-2/mapflags.txt deleted file mode 100644 index 7c8e2695..00000000 --- a/world/map/npc/069-2/mapflags.txt +++ /dev/null @@ -1,2 +0,0 @@ -069-2.gat|mapflag|town -069-2.gat|mapflag|resave|001-1,57,71 diff --git a/world/map/npc/069-2/wizards.txt b/world/map/npc/069-2/wizards.txt deleted file mode 100644 index 1d827d18..00000000 --- a/world/map/npc/069-2/wizards.txt +++ /dev/null @@ -1,60 +0,0 @@ -// 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/_import.txt b/world/map/npc/_import.txt index 71a3e3c5..2c9758ca 100644 --- a/world/map/npc/_import.txt +++ b/world/map/npc/_import.txt @@ -8,16 +8,10 @@ import: npc/002-2/_import.txt import: npc/002-3/_import.txt import: npc/002-4/_import.txt import: npc/002-5/_import.txt -import: npc/003-1/_import.txt -import: npc/003-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 @@ -61,17 +55,7 @@ import: npc/019-4/_import.txt import: npc/020-1/_import.txt import: npc/020-2/_import.txt import: npc/020-3/_import.txt -import: npc/021-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 -import: npc/024-4/_import.txt import: npc/025-1/_import.txt import: npc/025-3/_import.txt import: npc/025-4/_import.txt @@ -87,6 +71,7 @@ import: npc/027-8/_import.txt import: npc/028-1/_import.txt import: npc/028-3/_import.txt import: npc/029-1/_import.txt +import: npc/029-2/_import.txt import: npc/029-3/_import.txt import: npc/030-1/_import.txt import: npc/030-2/_import.txt @@ -96,18 +81,12 @@ import: npc/031-1/_import.txt import: npc/031-2/_import.txt import: npc/031-3/_import.txt import: npc/031-4/_import.txt -import: npc/032-1/_import.txt import: npc/032-3/_import.txt import: npc/033-1/_import.txt import: npc/034-1/_import.txt import: npc/034-2/_import.txt import: npc/035-2/_import.txt import: npc/036-2/_import.txt -import: npc/041-1/_import.txt -import: npc/042-1/_import.txt -import: npc/042-2/_import.txt -import: npc/042-3/_import.txt -import: npc/043-1/_import.txt import: npc/043-3/_import.txt import: npc/043-4/_import.txt import: npc/044-1/_import.txt @@ -127,8 +106,4 @@ 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/scripts.conf b/world/map/npc/scripts.conf index af6ea91f..77e9c8a8 100644 --- a/world/map/npc/scripts.conf +++ b/world/map/npc/scripts.conf @@ -24,6 +24,7 @@ npc: npc/functions/default_npc_checks.txt npc: npc/functions/undead_debug.txt npc: npc/functions/headstyles.txt npc: npc/functions/global_event_handler.txt +npc: npc/functions/stat_reset.txt // Item Functions npc: npc/items/magic_gm_top_hat.txt -- cgit v1.2.3-60-g2f50