diff options
Diffstat (limited to 'npc/001-1')
63 files changed, 943 insertions, 4680 deletions
diff --git a/npc/001-1/_import.txt b/npc/001-1/_import.txt index 18f8e363..5333d5d4 100644 --- a/npc/001-1/_import.txt +++ b/npc/001-1/_import.txt @@ -1,45 +1,24 @@ -// Map 001-1: Artis +// Map 001-1: Tulimshar Port // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/001-1/_mobs.txt", "npc/001-1/_warps.txt", -"npc/001-1/artaxe.txt", -"npc/001-1/beuss.txt", -"npc/001-1/calypsan.txt", -"npc/001-1/carmie.txt", -"npc/001-1/chelios.txt", -"npc/001-1/cookiemaster.txt", -"npc/001-1/devis.txt", -"npc/001-1/doors.txt", -"npc/001-1/elmo.txt", -"npc/001-1/enora.txt", -"npc/001-1/eugene.txt", -"npc/001-1/fexil.txt", -"npc/001-1/flags.txt", -"npc/001-1/flyingpiou.txt", -"npc/001-1/harbours.txt", -"npc/001-1/juscare.txt", -"npc/001-1/katja.txt", -"npc/001-1/koga.txt", -"npc/001-1/lucas.txt", -"npc/001-1/manhole.txt", +"npc/001-1/adrian.txt", +"npc/001-1/ched.txt", +"npc/001-1/children.txt", +"npc/001-1/constable.txt", +"npc/001-1/dock.txt", +"npc/001-1/eomie.txt", +"npc/001-1/ferry_master.txt", +"npc/001-1/gate_guards.txt", +"npc/001-1/gossip.txt", +"npc/001-1/guards.txt", +"npc/001-1/inac.txt", "npc/001-1/mapflags.txt", -"npc/001-1/marine.txt", -"npc/001-1/merlin.txt", -"npc/001-1/mouboo.txt", -"npc/001-1/nalkri.txt", -"npc/001-1/panels.txt", -"npc/001-1/pious.txt", -"npc/001-1/qonan.txt", -"npc/001-1/qpid.txt", -"npc/001-1/rowboat.txt", -"npc/001-1/rowboathelper.txt", -"npc/001-1/rumly.txt", -"npc/001-1/salem.txt", -"npc/001-1/shop.txt", -"npc/001-1/sign.txt", -"npc/001-1/sophialla.txt", -"npc/001-1/taree.txt", -"npc/001-1/treeleaf.txt", -"npc/001-1/trees.txt", -"npc/001-1/wateranimation.txt", -"npc/001-1/xilaxa.txt", +"npc/001-1/north_shops.txt", +"npc/001-1/npcs.txt", +"npc/001-1/sewer_east.txt", +"npc/001-1/sewer_north.txt", +"npc/001-1/stat_reset.txt", +"npc/001-1/tinris.txt", +"npc/001-1/tombstones.txt", +"npc/001-1/weellos.txt", diff --git a/npc/001-1/_mobs.txt b/npc/001-1/_mobs.txt index a2b6e5f1..df91a1df 100644 --- a/npc/001-1/_mobs.txt +++ b/npc/001-1/_mobs.txt @@ -1,32 +1,7 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. -// Map 001-1: Artis mobs -001-1,0,0,0,0 monster Piou 1002,2,15000,60000 -001-1,0,0,0,0 monster Piousse 1003,1,15000,150000 -001-1,174,34,11,15 monster Fluffy 1022,6,18000,100000 -001-1,199,48,2,5 monster Fluffy 1022,4,18000,100000 -001-1,174,34,11,15 monster Piou 1002,1,12000,60000 -001-1,35,62,1,4 monster Pikpik 1013,3,40000,20000 -001-1,26,96,3,2 monster Pikpik 1013,1,40000,20000 -001-1,42,137,4,1 monster Pikpik 1013,2,40000,20000 -001-1,45,136,0,0 monster Crocotree 1010,1,420000,240000 -001-1,70,136,0,0 monster Crocotree 1010,1,420000,240000 -001-1,37,126,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,34,130,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,41,129,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,36,77,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,37,79,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,39,73,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,43,70,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,48,71,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,40,67,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,46,65,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,152,26,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,152,32,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,155,37,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,158,29,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,203,51,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,198,50,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,199,55,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,185,65,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,191,63,0,0 monster Manana Tree 1017,1,420000,240000 -001-1,200,66,0,0 monster Manana Tree 1017,1,420000,240000 +// Map 001-1: Tulimshar Port mobs +001-1,32,59,5,5 monster Ratto 1005,8,100000,30000 +001-1,45,100,5,5 monster Ratto 1005,8,100000,30000 +001-1,37,75,4,17 monster Clover Patch 1033,8,100000,30000 +001-1,86,84,32,27 monster Piou 1002,11,100000,30000 +001-1,86,84,32,27 monster Clover Patch 1033,8,100000,30000 diff --git a/npc/001-1/_warps.txt b/npc/001-1/_warps.txt index c084792b..33f9ba6c 100644 --- a/npc/001-1/_warps.txt +++ b/npc/001-1/_warps.txt @@ -1,445 +1,16 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. -// Map 001-1: Artis warps -001-1,51,80,0 script #001-1_51_80_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-4", 48, 40; -close; - -OnUnTouch: - doevent "#001-1_51_80::OnUnTouch"; -} -001-1,51,80,0 script #001-1_51_80 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,70,77,0 script #001-1_70_77_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-2", 38, 38; -close; - -OnUnTouch: - doevent "#001-1_70_77::OnUnTouch"; -} -001-1,70,77,0 script #001-1_70_77 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,51,65,0 script #001-1_51_65_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-0", 30, 34; -close; - -OnUnTouch: - doevent "#001-1_51_65::OnUnTouch"; -} -001-1,51,65,0 script #001-1_51_65 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,55,71,0 script #001-1_55_71_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-0", 37, 45; -close; - -OnUnTouch: - doevent "#001-1_55_71::OnUnTouch"; -} -001-1,55,71,0 script #001-1_55_71 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,168,98,0 script #001-1_168_98_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-16", 32, 35; -close; - -OnUnTouch: - doevent "#001-1_168_98::OnUnTouch"; -} -001-1,168,98,0 script #001-1_168_98 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,194,109,0 warp #001-1_194_109 0,0,001-2-21,20,28 -001-1,100,37,0 warp #001-1_100_37 0,0,001-2-19,32,39 -001-1,104,43,0 warp #001-1_104_43 0,0,001-2-19,41,49 -001-1,134,83,0 warp #001-1_134_83 0,0,001-2-28,60,31 -001-1,118,88,0 script #001-1_118_88_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-28", 29, 41; -close; - -OnUnTouch: - doevent "#001-1_118_88::OnUnTouch"; -} -001-1,118,88,0 script #001-1_118_88 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,182,74,0 script #001-1_182_74_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-18", 39, 35; -close; - -OnUnTouch: - doevent "#001-1_182_74::OnUnTouch"; -} -001-1,182,74,0 script #001-1_182_74 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,163,70,0 script #001-1_163_70_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-26", 28, 42; -close; - -OnUnTouch: - doevent "#001-1_163_70::OnUnTouch"; -} -001-1,163,70,0 script #001-1_163_70 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,132,67,0 script #001-1_132_67_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-15", 34, 45; -close; - -OnUnTouch: - doevent "#001-1_132_67::OnUnTouch"; -} -001-1,132,67,0 script #001-1_132_67 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,101,107,0 script #001-1_101_107_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-27", 35, 34; -close; - -OnUnTouch: - doevent "#001-1_101_107::OnUnTouch"; -} -001-1,101,107,0 script #001-1_101_107 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,89,65,0 script #001-1_89_65_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-7", 36, 45; -close; - -OnUnTouch: - doevent "#001-1_89_65::OnUnTouch"; -} -001-1,89,65,0 script #001-1_89_65 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,57,41,0 warp #001-1_57_41 0,0,001-2-33,34,45 -001-1,142,30,0 script #001-1_142_30_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-12", 34, 35; -close; - -OnUnTouch: - doevent "#001-1_142_30::OnUnTouch"; -} -001-1,142,30,0 script #001-1_142_30 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,128,30,0 script #001-1_128_30_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-1", 37, 40; -close; - -OnUnTouch: - doevent "#001-1_128_30::OnUnTouch"; -} -001-1,128,30,0 script #001-1_128_30 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,104,32,0 script #001-1_104_32_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-19", 41, 30; -close; - -OnUnTouch: - doevent "#001-1_104_32::OnUnTouch"; -} -001-1,104,32,0 script #001-1_104_32 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,107,49,0 script #001-1_107_49_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-20", 33, 34; -close; - -OnUnTouch: - doevent "#001-1_107_49::OnUnTouch"; -} -001-1,107,49,0 script #001-1_107_49 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,148,54,0 script #001-1_148_54_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-11", 46, 45; -close; - -OnUnTouch: - doevent "#001-1_148_54::OnUnTouch"; -} -001-1,148,54,0 script #001-1_148_54 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,135,49,0 script #001-1_135_49_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-10", 51, 44; -close; - -OnUnTouch: - doevent "#001-1_135_49::OnUnTouch"; -} -001-1,135,49,0 script #001-1_135_49 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,118,49,0 script #001-1_118_49_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-10", 27, 44; -close; - -OnUnTouch: - doevent "#001-1_118_49::OnUnTouch"; -} -001-1,118,49,0 script #001-1_118_49 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,49,96,0 script #001-1_49_96_h NPC_HIDDEN,0,0,{ -OnTouch: - warp "001-2-31", 32, 39; -close; - -OnUnTouch: - doevent "#001-1_49_96::OnUnTouch"; -} -001-1,49,96,0 script #001-1_49_96 NPC_ARTIS_DOOR,2,3,{ - close; -OnTouch: - doorTouch; - -OnUnTouch: - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - -001-1,198,61,0 warp #001-1_198_61 0,0,001-3-0,198,59 +// Map 001-1: Tulimshar Port warps +001-1,63,119,0 warp #001-1_63_119 4,0,002-1,63,21 +001-1,103,119,0 warp #001-1_103_119 4,0,002-1,103,21 +001-1,55,71,0 warp #001-1_55_71 0,0,001-2,31,27 +001-1,52,71,0 warp #001-1_52_71 0,0,001-2,28,27 +001-1,49,71,0 warp #001-1_49_71 0,0,001-2,25,27 +001-1,114,99,0 warp #001-1_114_99 0,0,001-2,25,64 +001-1,27,32,0 warp #001-1_27_32 0,0,001-2,28,101 +001-1,37,32,0 warp #001-1_37_32 0,0,001-2,71,101 +001-1,55,34,0 warp #001-1_55_34 1,0,001-2,104,101 +001-1,52,22,0 warp #001-1_52_22 0,0,001-2,95,52 +001-1,57,22,0 warp #001-1_57_22 0,0,001-2,114,52 +001-1,28,23,0 warp #001-1_28_23 0,0,001-2,28,87 +001-1,28,44,0 warp #001-1_28_44 0,0,021-3,29,61 +001-1,59,98,0 warp #001-1_59_98 0,0,001-2,65,25 diff --git a/npc/001-1/adrian.txt b/npc/001-1/adrian.txt new file mode 100755 index 00000000..03ec3802 --- /dev/null +++ b/npc/001-1/adrian.txt @@ -0,0 +1,42 @@ +001-1,113,64,0 script Adrian NPC213,{ + mes "[Adrian]"; + mes "\"Hello. Are you here to pick up some luggage?\""; + if (QL_KYLIAN == 1) + menu + "Yes. Kylian sent me to get his luggage.",L_Get, + "No.",L_No; + menu + "No.",L_No; +L_No: + next; + mes "[Adrian]"; + mes "\"Too bad. I'd like to go get a beer, but I have to wait here until all the luggage is picked up.\""; + mes "He sighs."; + goto L_close; + +L_Get: + next; + mes "[Adrian]"; + mes "\"Wonderful! Please show me your ticket.\""; + mes "He checks the paper Kylian gave you and then gives you a critical look."; + next; + getinventorylist; + if ((checkweight("LeatherSuitcase", 1) == 0) || (@inventorylist_count == 100)) + goto L_Inventory; + mes "[Adrian]"; + mes "\"Alright. Here it is. Good luck carrying that thing.\""; + mes "Adrain hands you a very heavy suitcase."; + getitem "LeatherSuitcase", 1; + QL_KYLIAN = 2; + goto L_close; + +L_Inventory: + mes "[Adrian]"; + mes "\"The suitcase is rather heavy. No offense, but you don't look like you can carry it.\""; + mes "Maybe you should get rid of some of the other stuff you're carrying.\""; + goto L_close; + +L_close: + @inventorylist_count = 0; + close; +} diff --git a/npc/001-1/artaxe.txt b/npc/001-1/artaxe.txt deleted file mode 100644 index f1d63d46..00000000 --- a/npc/001-1/artaxe.txt +++ /dev/null @@ -1,18 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Legion NPC blocking the north road of Artis. - -001-1,90,31,0 script Artaxe NPC_ARTAXE,{ - speech S_LAST_NEXT, - l("Sorry buddy, you can't pass by this way, we're moving some furniture."), - l("Come back later!"); - - closeclientdialog; - close; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/beuss.txt b/npc/001-1/beuss.txt deleted file mode 100644 index fd334392..00000000 --- a/npc/001-1/beuss.txt +++ /dev/null @@ -1,27 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Angry member of the Legion of Aemil. - -001-1,45,48,0 script Beuss NPC_BEUSS,{ - stopnpctimer; - initnpctimer; - .dir = 4; - mesn; - mesq l("You seem pathetically weak. What is such boneless jelly like you doing around here?"); - - goto L_Close; - -L_Close: - close; - -OnTimer10000: - .dir = 2; - stopnpctimer; - end; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/calypsan.txt b/npc/001-1/calypsan.txt deleted file mode 100644 index 46c4b84e..00000000 --- a/npc/001-1/calypsan.txt +++ /dev/null @@ -1,104 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Dye seller, she sells and explain how works dye cards. -// Version: -// 2016.019 "Under Construction". -// Variables: -// ArtisQuests_Fexil -// Quest states: -// 0 -- not started -// 1 -- Lloyd warned about the quest -// 2 -- Fexil explain what he needs -// 3 -- Fexil buy every fur that the pc bring to him - -001-1,47,126,0 script Calypsan#001-1 NPC_CALYPSAN,{ - - function explain_dyes { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Look at your equipment, can you guess what material it is made from?"), - l("Seek a colorant for that material:"), - l("Cotton, Silk, leather, ..."), - l("Zinc-Titanium Oxide, Phthalocyanides, Cadmiums, Lazulite..."), - l("Colorant is not the yeying color. Some wear out from light, others look great but inflict itai-itai, and others become spotty or wash-away."), - l("What yoiis should know:"), - l("1: The type of item yoiis want to dye."), - l("2: What material it is made from."), - l("3: Which colorants can dye it."), - l("4: How many cards your item can contain."), - l("Exemple for yoiis:"), - l("Take an @@ and a @@, yeye obtains a @@.", getitemlink(ArtisTankTop), getitemlink(RedCottonDye), getitemlink(ArtisTankTop, RedCottonDye)), - l("If yoiis wants to see a different use for the cards he can yeye for Resa at the light armor shop for a description of the styling cards."); - } - - function sell_dye { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("For what kind of tissue?"); - .@tissue_type = select(l("Cotton"), l("Silk")); - - closeclientdialog; - switch (.@tissue_type) - { - case 1: - shop "Cotton#Dye001-1"; - break; - case 2: - shop "Silk#Dye001-1"; - break; - default: - consolemes(CONSOLEMES_ERROR, "Calypsan script error, tissue_type is incorrect"); - break; - } - close; - } - - speech S_LAST_NEXT, - l("Yoiis envies a rainbow in the sky?"), - l("It is possible to yeye your cloth with my beautiful dyes."), - l("What does yoiis want today?"); - - .@fexil = getq(ArtisQuests_Fexil); - - do - { - select - rif(.@fexil == 1, l("Have you seen Fexil?")), - menuaction(l("Trade")), - l("How do these dyes work?"), - l("I want to make my own dyes."), - menuaction(l("Quit")); - - switch (@menu) - { - case 1: - setcamnpc "Fexil#001-1"; - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh yeye did, his store is just beside me!"), - l("Yoiis should look there."); - restorecam; - - break; - case 2: - sell_dye; - close; - - case 3: - explain_dyes; - break; - case 4: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Yoiis is not yet ready to make his own dyes."), - l("But in the future I might be able to help you create some of your own."); - break; - } - } while (@menu != 5); - - closeclientdialog; - goodbye; - close; - -OnInit: - .distance = 3; - end; -} - diff --git a/npc/001-1/carmie.txt b/npc/001-1/carmie.txt deleted file mode 100644 index e87e7fe6..00000000 --- a/npc/001-1/carmie.txt +++ /dev/null @@ -1,68 +0,0 @@ -// Evol scripts. -// Authors: -// Alige -// Reid -// Description: -// Carmie, walking NPC of the legion of Aemil on the center part of Artis. -// Variables: -// .@rand = Random number of sentences. - -001-1,86,66,0 script Carmie#001-1 NPC_RAIJIN_FEMALE_LEGION_ARTIS,{ - - legiontalk; - - close; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 89, 68, - "move", 89, 77, - "move", 84, 81, - "dir", LEFT, 0, - "wait", 2, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 89, 85, - "dir", LEFT, 0, - "wait", 1, 0, - "dir", DOWN, 0, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 94, 81, - "dir", RIGHT, 0, - "wait", 2, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", LEFT, 0, - "wait", 1, 0, - "move", 89, 76, - "move", 89, 68, - "dir", LEFT, 0, - "wait", 2, 0, - "dir", DOWN, 0, - "wait", 4, 0, - "dir", RIGHT, 0, - "wait", 2, 0, - "move", 92, 66, - "dir", RIGHT, 0, - "wait", 2, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", LEFT, 0, - "wait", 1, 0, - "move", 86, 66, - "dir", LEFT, 0, - "wait", 2, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", RIGHT, 0, - "wait", 1, 0; - - initialmove; - initnpctimer; - .distance = 5; -} diff --git a/npc/001-1/ched.txt b/npc/001-1/ched.txt new file mode 100755 index 00000000..1c774e9e --- /dev/null +++ b/npc/001-1/ched.txt @@ -0,0 +1,9 @@ + +001-1,43,48,0 script Ched NPC113,{ + mes "[Ched]"; + mes "\"I'm trying to get work on my Alchemy homework, but I'm having some trouble.\""; + mes "\"I'm supposed to combine two potions to create a " + getitemlink("ConcentrationPotion") + ", but I can't seem to figure out which two to combine...\""; + next; + mes "\"Maybe I should go back to practicing '" + get(.invocation$, "detect-magic") + "' until I can make potions properly.\" %%6"; + close; +} diff --git a/npc/001-1/chelios.txt b/npc/001-1/chelios.txt deleted file mode 100644 index 84af2de1..00000000 --- a/npc/001-1/chelios.txt +++ /dev/null @@ -1,135 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Jesusalva -// Description: -// Blacksmith's assistant of Artis -// Variables: -// ArtisQuests_Enora -// Values: -// 0 Default. -// 1 BlackSmith quest delivered. -// 2 Chelios Quest given. -// 3 Chelios Quest done. -// 4 BlackSmith gave the sword. - -001-1,95,109,0 script Chelios NPC_CHELIOS,{ - function give_small_quest; - function more_info; - function quest_completed; - function blacksmith_house; - function explain_weapons; - - speech S_LAST_NEXT, l("Can I be of any help?"); - - do - { - .@enora = getq(ArtisQuests_Enora); - select - rif(.@enora == 1, l("I came to retrieve a package for Enora.")), - rif(.@enora == 3, l("I have your black iron.")), - rif(.@enora >= 2, l("Where is the Merchant Guild?")), - l("What is this building?"), - l("Why some of my weapons have a plus sign near them?"), - menuaction(l("Quit")); - - switch (@menu) - { - case 1: - give_small_quest; - break; - case 2: - quest_completed; - break; - case 3: - more_info; - break; - case 4: - blacksmith_house; - break; - } - } while (@menu != 5); - - closeclientdialog; - goodbye; - close; - - -function give_small_quest { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Her sword... I'm having some trouble finishing it."), - l("You see, Enora asked me to do a black iron sword, unfortunately I ran out of the material needed, and..."), - l("Only Don and the Merchant Guild have that kind of material in stock. It's called black iron."), - l("It's better to deal with the Merchant Guild than the old man, Don has this ability to hammer down your enthusiasm in sparkling fury!"), - l("If Enora wants her sword now, I need to ask for your help."); - - switch (select(l("Let's not keep her waiting."), - l("Not now."))) - { - case 1: - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("I'll be here, come back when you'll be ready."); - - return; - } - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you very much!"), - l("Talk with Lloyd the Banker in the Merchant Guild, it's a big building in the northern side of Artis, at the top of the small hill."); - - setq ArtisQuests_Enora, 2; - - return; -} - -function more_info { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("It's the big building in northern Artis, at the top of a small hill."), - l("Take the east road that goes to the north and follow it until you are on top of the cliff."), - l("That part of the town is called the Gilded Hill, it's also where the Merchant Guild has its headquarters."), //rich hill - l("Lloyd still owes me, but beware of those money-grabbers, or they might sell your own teeth to you!"); - - return; -} - -function quest_completed { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh... Awesome!"), - l("You were gone so I thought you let me down."), - l("Don gave me some black iron... after I asked him nearly ten times."), - l("But thank you anyway! I can refund him now!"), - l("Take the sword, and say hi to Enora for me!"); - - setq ArtisQuests_Enora, 4; - - return; -} - -function blacksmith_house { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Behind me? It's the Blacksmith House, the most renowned throughout Aemil."), - l("There are two shops inside, they are independent from the Merchant Guild of Artis."), - l("Now that I think about it, they are the only shops that are independent in Artis..."), - l("...it might be because of Don... he is the master blacksmith of this place and a model to me!"); - - return; -} - -function explain_weapons { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Weapons do not level up. But the more you use them, the more used to them you become."), - l("As you start to wield them better, you will be able to draw better their full potential."), - l("Your proeficiency with a certain weapon is noted at the side of it. Naturally, you cannot obtain proeficiency by purchasing someone else's weapon."); - mesn; - speech S_LAST_NEXT, - l("By the way, I'll explain you how crafting works when I become less lazy."); - return; -} - -OnInit: - .distance = 4; - end; -} - diff --git a/npc/001-1/children.txt b/npc/001-1/children.txt new file mode 100755 index 00000000..0cbba1f8 --- /dev/null +++ b/npc/001-1/children.txt @@ -0,0 +1,90 @@ + +001-1,102,27,0 script Aisha NPC108,{ + @temp = rand(10); + if(@temp == 1) goto L_1; + if(@temp == 2) goto L_2; + if(@temp == 3) goto L_3; + if(@temp == 4) goto L_4; + if(@temp == 5) goto L_5; + if(@temp == 6) goto L_6; + if(@temp == 7) goto L_7; + if(@temp == 8) goto L_8; + if(@temp == 9) goto L_9; + goto L_1; + +L_1: + mes "[Aisha]"; + mes "\"Maggots are so slimey!\" %%^"; + goto L_close; + +L_2: + mes "[Aisha]"; + mes "\"Want to play ball with me?\""; + goto L_close; + +L_3: + mes "[Aisha]"; + mes "\"There are so many monsters! I hate scorpions!\" %%3"; + goto L_close; + +L_4: + mes "[Aisha]"; + mes "\"When I grow up, I want to be strong enough to kill a scorpion!\" %%="; + goto L_close; + +L_5: + mes "[Aisha]"; + mes "\"Mommy told me that you can sell the things that monsters drop.\""; + goto L_close; + +L_6: + mes "[Aisha]"; + mes "\"Have you tried to eat a roasted maggot? They're sooo yummy! Mommy says they're healthy too!\" %%8"; + goto L_close; + +L_7: + mes "[Aisha]"; + mes "\"I want to be a Doctor when I grow up!\""; + goto L_close; + +L_8: + mes "[Aisha]"; + mes "\"That earthquake was sooo scary! The earth was shaking and everything was breaking down... but now they've rebuilt everything.\""; + goto L_close; + +L_9: + mes "\"I know a very bad word. But I can't say it because monsters will come and get me if I do!\""; + next; + menu + "A bad word?", L_tell, + "Oh. You better keep it to yourself then.", L_close; + +L_tell: + mes "[Aisha]"; + mes "\"I heard my mother say it once, and she made me promise her to never say it. ##BNever##b!\""; + next; + menu + "If I promise to never tell anyone, can you tell me the word?", L_keepword, + "I understand. You don't need to tell me...", L_Giveword, + "Goodbye!", L_close; + +L_keepword: + mes "[Aisha]"; + mes "\"No.\""; + goto L_close; + +L_Giveword: + mes "[Aisha]"; + mes "Aisha looks around as she leans in and hushes you to silence. After a few seconds, she whispers to you:"; + mes "\"I like you, so I'll tell you the bad word. But you can't tell anyone else about it! The bad word is '" + get(.invocation$, "spell-aggravate") + ".'\""; + next; + + mes "[Aisha]"; + mes "Terrified, she looks around once more."; + mes "\"But you can't tell anyone!\" %%>"; + goto L_close; + +L_close: + @temp = 0; + close; +} diff --git a/npc/001-1/constable.txt b/npc/001-1/constable.txt new file mode 100755 index 00000000..36e3c224 --- /dev/null +++ b/npc/001-1/constable.txt @@ -0,0 +1,7 @@ + +001-1,50,74,0 script Constable Perry Graf NPC150,{ + mes "[Constable Perry Graf]"; + mes "\"Hello. Make sure to follow the rules!\""; + callfunc "GameRules"; + close; +} diff --git a/npc/001-1/cookiemaster.txt b/npc/001-1/cookiemaster.txt deleted file mode 100644 index 984c02aa..00000000 --- a/npc/001-1/cookiemaster.txt +++ /dev/null @@ -1,256 +0,0 @@ -// Evol scripts. -// Authors: -// Alige -// Reid -// Description: -// Cookie NPC, beware, if you don't take your cookie, she'll keep it! -// Variables: -// General_Cookies -// Values: -// 0 Default, didn't get a cookie. -// 1 Get a cookie. - -001-1,39,38,0 script Cookie Master NPC_COOKIE_MASTER,{ - if ((countitem(517) == 0) && (getq(General_Cookies) == 1)) - goto L_LostCookie; - if (getq(General_Cookies) == 1) - goto L_GetCookie; - - mesn; - mesq l("Hey! Adventurer! Are you enjoying your life on Aemil?"); - next; - - select - l("Well in fact..."); - - mes ""; - mesn; - mesq l("Shht shht!"); - next; - mesq l("Don't tell me more, I know what you want..."); - next; - mesq l("A cookie!"); - next; - - menu - l("I'd love one!"), -, - l("No thank you, I'm fine. I'll come back later."), L_Bye; - - mes ""; - mesn; - mesq l("Of course you do! Just listen carefully to these words my sweet."); - next; - mesq l("Cookies are a source of life."); - next; - mesq l("Cookies provide you strength, health and cuteness."); - next; - mesq l("Cookies are awesome, so am I."); - - menu - l("Uhm... Your story seems..."), L_StorySeems, - l("Wait... That's not a proper place for a chef, what are you doing there?"), L_Presentation, - l("Exactly! Can I have one now?"), -; - -L_Check: - mes ""; - mesn; - mesq l("Let me check my cookie list..."); - next; - -// Beta3 Contributors. - if (strcharinfo(0) == "4144") goto L_Reward; - if (strcharinfo(0) == "Alige") goto L_Reward; - if (strcharinfo(0) == "enchilado") goto L_Reward; - if (strcharinfo(0) == "hal9000") goto L_Reward; - if (strcharinfo(0) == "Reid") goto L_Reward; - if (strcharinfo(0) == "Socapex") goto L_Reward; - if (strcharinfo(0) == "Kenny690") goto L_Reward; - if (strcharinfo(0) == "Nelson6e65") goto L_Reward; - if (strcharinfo(0) == "Steel Zenn") goto L_Reward; -// Aurora1 Contributors. - - mesq l("I'm sorry but I can't see your name anywhere."); - next; - mesq l("You see, folks around here that get my cookies have the distinction of being..."); - next; - - menu - l("Seriously? It's just a cookie you know... Tell me what I should do to get one."), L_BTaskExpanation, - l("Yes, yes I know... Too bad then. See you soon!"), L_Bye; - -L_StorySeems: - mes ""; - mesn; - mesq l("What about my story?"); - next; - - menu - l("It's interesting and exciting at the same time!"), -, - l("Honestly, it's quite far-fetched according to me."), L_Kick; - - mes ""; - menu - l("Too bad. I'm not hungry enough for these cookies of yours. Maybe I'll come back later."), L_Bye, - l("How can I get one of these cookies?"), -; - - mes ""; - mesn; - mesq l("It looks like you are curious, am I right?"); - next; - mesq l("Well, if you ever do want to join: 'Ye Merry Club Of Thee Bequeathed With Cookies'..."); - next; - -L_BTaskExpanation: - mes ""; - mesn; -L_TaskExpanation: - mesq l("You'll first need to help my friends."); - next; - mesq l("It is them, after all, who have the ultimate decision as to those I can give my cookies to."); - next; - - menu - l("So you're under the control of a dictatorship? That's... reassuring!"), L_Control, - l("Who are these friends?"), L_Friends; - -L_Friends: - mes ""; - mesn; - mesq l("Shht shht!"); - next; - mesq l("Don't say it so loudly, other people could hear us."); - next; - mesq l("My friends are... Well, you know... The creators."); - next; - mesq l("I can't give you a cookie for free. But I can give you this hint for how you may be added to my list."); - next; - mesq l("Now listen to and ponder my words..."); - next; - mesq l("If you see weird things here and there, or things that just shouldn't be, or even in your minds eye, things that you would like to see..."); - next; - mesq l("Simply contact them, by forum or wispers or irc. When you are helpful and kind, they respond in kind. And in time they may surely add you to my cookie list!"); - next; - - mesn "Narrator"; - mesc(l("This Cookie Master rewards people who contribute and develop this world."), 9); - next; - mes col(l("If you want to be rewarded, help us in making this world a better place."), 9); - next; - mesc(l("When you see something that looks more like a bug than a feature, report it on https://forums.themanaworld.org or try to contact a game contributor."), 9); - next; - mesc(l("Any contribution to the game (translations, graphics creation/edition, concepts, coding/scripting, etc...) is rewarded!"), 9); - - mes ""; - mesn; - mesq l("So, do you still want a cookie?"); - next; - - menu - l("I wish I helped your friends, because I'd really, really like a cookie."), -, - l("You tell me. Do I deserve a cookie?"), L_Check; - - mes ""; - mesn; - mesq l("Don't worry, I'm sure you will help them soon enough!"); - next; - - goto L_Bye; - -L_Presentation: - mes ""; - mesn; - mesq l("For a chef? Who said I was a... Oh right, I am."); - next; - mesq l("I was sent here with a task. I can give you a perfect, wonderful, magnificent, superbly well shaped... Cookie!"); - next; - mesq l("But..."); - next; - - goto L_TaskExpanation; - -L_Reward: - mesq l("Yes! @@ is written on my cookie list.", strcharinfo(0)); - next; - mesq l("That's quite surprising... You don't look very helpful."); - next; - mesq l("Anyway, here, have a cookie!"); - - inventoryplace DeliciousCookie, 1; - - setq General_Cookies, 1; - getnameditem DeliciousCookie, strcharinfo(0); - npctalk3 l("You receive a @@!", getitemlink(DeliciousCookie)); - - next; - mesq l("I'm sure you'll appreciate its effect, but be careful, these cookies are rare, and you'll need to help the community again before being able to receive another one."); - next; - - goto L_Bye; - -L_Control: - mes ""; - mesn; - mesq l("C'mon, don't be like that and loosen up! Don't you want to know who's behind all of this?!"); - next; - - menu - l("Why not, this might get interesting."), L_Friends, - l("Fine, tell me, who are these all important friends of yours?"), -, - l("No, and I gotta go, see you."), L_Kick; - - mes ""; - mesn; - mesq l("Don't belittle me, my work is deserving of the highest esteem."); - next; - -L_Kick: - closeclientdialog; - - npctalk3 l("No cookie for you!"); - warp "001-1", 39, 41; - - close; - -L_GetCookie: - mesq l("Hey, I'm not a Keebler Elvis! You won't have another one by stalking me like that!"); - next; - mesq l("If you want another cookie, you know what to do!"); - next; - mesq l("Now, move!"); - next; - - goto L_Bye; - -L_LostCookie: - mesq l("Hey, how was the..."); - next; - mesq l("Wait a minute, where's the cookie I gave you?"); - next; - mesq l("I'm talking about the cookie inside which I put all my love!"); - next; - mesq l("The best, the wonderful, the most choice cookie among all others, the..."); - next; - // Angry emote - mesq l("Grr..."); - next; - mesq l("You're lucky that I'm a generous person, here's another one."); - next; - mesq l("This is the last one. If you use it again out of clumsiness, I will use your soft moist parts in the concoction of my next cookie batch."); - next; - - inventoryplace DeliciousCookie, 1; - getnameditem DeliciousCookie, strcharinfo(0); - - npctalk3 l("You receive a @@!", getitemlink(DeliciousCookie)); - -L_Bye: - closeclientdialog; - - npctalk3 l("See you later!"); - - close; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/devis.txt b/npc/001-1/devis.txt deleted file mode 100644 index d3af5956..00000000 --- a/npc/001-1/devis.txt +++ /dev/null @@ -1,99 +0,0 @@ -// Evol scripts. -// Authors: -// Reid -// Travolta -// Description: -// La Johanne crew member. - -001-1,193,109,0 script Devis#001-1 NPC_DEVIS_ARTIS,{ - - function say_random_greeting { - .@enora = getq(ArtisQuests_Enora); - if (.@enora == 0) - { - speech - l("Enora, from the Legion of Aemil, has been warned that you were aboard."), - l("She is waiting for you on the dock."); - - return; - } - - .@rand = rand(5); - if (.@rand == 0) goodbye; - else if (.@rand == 1) - { - speech S_LAST_NEXT, - l("A sunny and hot day,"), - l("a quiet place,"), - l("a ground!"), - l("What else do you need?"); - } - else if (.@rand == 2) npctalk3 l("A-hoy matey!"); - else if (.@rand == 3) npctalk3 l("We are glad captain Nard has let you join the crew!"); - else if (.@rand == 4) npctalk3 l("Howdy?"); - - return; - } - - function face_to_PC { - getmapxy(.@map$, .@cx, .@cy, 0); - @Devis_old_dir = .dir; - npc_turntoxy(.@cx, .@cy); - - return; - } - - function local_close { - if (@Devis_old_dir > 0) - { - .dir = @Devis_old_dir; - } - npc_resumemove; - - close; - } - - @Devis_old_dir = -1; - - npc_pausemove; - face_to_PC; - say_random_greeting; - local_close; - -OnTimer1000: - dographmovestep; - -OnInit: - .distance = 5; - initmovegraph "start_pos", 193, 109, - "dock_ent", 194, 109, - "dock_right", 192, 114, 195, 115, - "dock_left", 151, 103, 160, 106, - "dock_bot", 161, 119, 163, 127, - "dock_top", 184, 91, 195, 92, - "ship_ent", 19, 28, - "ship_sit", 28, 26, - "dock_mid", 174, 105; - - setmovegraphcmd "start_pos", "dock_mid", 1, "dir 0; wait 2", - "dock_ent", "dock_right", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "dock_ent", "dock_mid", 2, "moveon", - "dock_bot", "dock_left", 1, "dir 6; wait 8", - "dock_bot", "dock_mid", 2, "moveon", - "dock_left", "dock_bot", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "dock_left", "dock_mid", 2, "moveon", - "dock_right", "dock_ent", 1, "warp 001-2-21 ship_ent", - "dock_right", "dock_mid", 2, "moveon", - "dock_top", "dock_mid", 1, "moveon", - "dock_mid", "dock_bot", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "dock_mid", "dock_right", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "dock_mid", "dock_left", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "dock_mid", "dock_top", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "dock_mid", "dock_ent", 2, "warp 001-2-21 ship_ent", - "ship_ent", "ship_sit", 1, "dir 4; sit; wait 14; stand; wait 1", - "ship_sit", "ship_ent", 1, "warp 001-1 dock_ent"; - - firstmove "wait 8", "start_pos"; - initnpctimer; -} - diff --git a/npc/001-1/dock.txt b/npc/001-1/dock.txt new file mode 100755 index 00000000..dc7195e9 --- /dev/null +++ b/npc/001-1/dock.txt @@ -0,0 +1,42 @@ + +001-1,75,70,0 script Tulimshar Koga NPC395,9,4,{ + @npc_distance = 10; + callfunc "PCtoNPCRange"; + if(@npc_check) end; + callfunc "BoardFerry"; + end; + +OnTouch: + addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard"; + end; + +OnBoard: + callfunc "BoardFerry"; + end; +} + +001-1,68,72,0 script Tulimshar Dock NPC400,2,2,{ + @npc_distance = 3; + callfunc "PCtoNPCRange"; + if(@npc_check) end; + callfunc "BoardFerry"; + end; +} + +001-1,70,70,0 script #TulimsharDock NPC32767,{ + end; +OnCommandArrive: + disablenpc "Tulimshar Dock"; + enablenpc "Tulimshar Koga"; + areatimer 0, "001-1", 66, 71, 77, 73, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock + end; + +OnAreaWarp: + callfunc "BoardFerry"; + end; + +OnCommandWarp: + disablenpc "Tulimshar Koga"; + enablenpc "Tulimshar Dock"; + end; +} diff --git a/npc/001-1/doors.txt b/npc/001-1/doors.txt deleted file mode 100644 index c4288328..00000000 --- a/npc/001-1/doors.txt +++ /dev/null @@ -1,61 +0,0 @@ -// Evol scripts. -// Authors: -// 4144 -// Reid -// Description: -// Doors warp and animations in map 001-1 -// - -001-1,57,41,0 script #Warp20 NPC_HIDDEN,0,0,{ -OnTouch: - .@enora = getq(ArtisQuests_Enora); - - if (.@enora < 4) - { - narrator S_LAST_NEXT, - l("The door to the legion building is temporarily closed."); - } - else - { - warp "001-2-33", 34, 46; - } - - closeclientdialog; - close; - -OnUnTouch: - doevent "#Door20::OnUnTouch"; -} - -001-1,57,41,0 script #Door20 NPC_ARTIS_DOOR,2,3,{ - close; - -OnTouch: - .@enora = getq(ArtisQuests_Enora); - .@legion = getq(Artis_Legion_Progress); - .@brotherhood = getq(General_Brotherhood); - if (.@enora < 4) - { - setfakecells 57, 41, 1; - end; - } - if (.@legion == 6 && !.@brotherhood) - addtimer 30, "Sophialla#001-1::OnLegionComplete"; - setfakecells 57, 41, 0; - doorTouch; - -OnUnTouch: - .@enora = getq(ArtisQuests_Enora); - if (.@enora < 4) - { - end; - } - doorUnTouch; - -OnTimer340: - doorTimer; - -OnInit: - doorInit; -} - diff --git a/npc/001-1/elmo.txt b/npc/001-1/elmo.txt deleted file mode 100644 index a8c3fb3d..00000000 --- a/npc/001-1/elmo.txt +++ /dev/null @@ -1,19 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Sailor of Nard's La Johanne ship. - -001-1,185,107,0 script Elmo#001-1 NPC_ELMO_ARTIS,{ - speech - l("Oh hey!"), - l("If you feel bored or anxious, you can always ask some of the people around Artis if they need your help."); - l("It's better than running around in circles doing nothing."); - - close; - -OnInit: - .distance = 2; - end; -} - diff --git a/npc/001-1/enora.txt b/npc/001-1/enora.txt deleted file mode 100644 index d676407f..00000000 --- a/npc/001-1/enora.txt +++ /dev/null @@ -1,461 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Newbie guide for Artis. -// Variables: -// ArtisQuests_Enora -// Values: -// 0 Default. -// 1 BlackSmith quest delivered. -// 2 Chelios Quest given. -// 3 Chelios Quest done. -// 4 BlackSmith gave the sword. -// 5 Light Armor Shop quest delivered. -// 6 Light Armor Shop gave the cloths. -// 7 Market quest delivered. -// 8 Q'Pid merchant. -// 9 Market gave the potion. -// 10 Hill quest delivered. -// 11 Fluffy killed. - -001-1,176,113,0 script Enora#001-1 NPC_HUMAN_FEMALE_NOOB,{ - - function enora_don { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Don is renowned throughout the entire land of Aemil for his blacksmithing skills, and he is here, in Artis."), - l("It's a great honor for us, at the Legion, to hold the security of his business!"), - l("If you search for him you should look in the west of the city, it's the first house just after the left bridge, you can't miss it!"), - l("Chelios, his apprentice, practices outside, mostly."); - - return; - } - - function enora_legion { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("The Legion of Gasaron are a group of warriors who vowed to protect and serve their neighbours."), - l("We hold various training sessions, and also have a task board with a heap of things to do for the city and its surroundings."), - l("It's a good place to earn money, it can also help you to travel throughout the land!"), - l("Each big city hosts a Legion building, Artis' building is located in the north-west."); - - return; - } - - function enora_light_armor { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("The light armor shop is ran by Resa, she is part of the Merchant Guild of Artis."), - l("She is very skilled when it comes to weaving an ordinary piece of cloth into a wonderful work of art!"), - l("Her shop is on the west side of the city, between the Legion building and the library."); - - return; - } - - function enora_market { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("The market is located in the south-east of Artis, it is known as Merchant Guild's exhibit."), - l("You need to be a member of the Merchant Guild to have a chance there."), - l("And I bet you don't know who is in charge of monitoring the security of this place?"); - - switch (select(l("The Legion?"), l("I don't know."))) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You hit the nail on the head, it's the Legion of Gasaron!"), - l("Our main responsibility in the city is to protect the Merchant Guild."); - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Cat got your tongue?"), - l("..."), - l("Your brain liquified to match the level of a piou! It's the Legion of Gasaron."); - break; - } - return; - } - - function enora_hill { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Go north from here until you find the dock warehouse, cross the bridge to the west side of the canal, continue north until you reach another bridge then cross it to the east side of the canal."), - l("You should arrive at a park with a hill nearby."); - - return; - } - - function enora_memories { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("It's so exciting to meet somebody with amnesia!"), - l("Can't you remember anything at all? Or do you have some memories of your past?"), - l("What happens when you try to think about it?"), - l("Does your mind go all fuzzy or does it feel like your head is going to explode??"), - l("Try doing that now!"); - - switch (select(l("Okay, but there won't be any explosions."), - l("Don't get too excited about it..."))) - { - case 1: - narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You concentrate and try to summon old memories from within your mind."), - l("You feel numb and everything around you looks foggy, but you can recall the feeling of the cold hard wood of your raft on a stormy night."), - l("A headache hits you and you lose your concentration."); - - speech S_LAST_NEXT, - l("So? You haven't exploded yet! Are you getting anything?"); - - select(l("Not really. All I got was a headache...")); - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("It's like your memories are locked away in your head! Cool!"); - - break; - case 2: - mes ""; - break; - } - - speech S_LAST_NEXT, - l("Ok, sorry. Back to our fluffies."); - - return; - } - - function enora_reward { - .@exp_reward = getarg(0); - .@zeny_reward = getarg(1); - - quest_xp(.maxLevel, .@exp_reward); - quest_gp(.maxLevel, .@zeny_reward); - - narrator S_LAST_NEXT, - l("You received @@ EXP and @@ E.", .@exp_reward, .@zeny_reward); - - // This is silent (can be caught as a string variable) - faction_addrep("Legion", 10); - return; - } - - function enora_first_quest { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You probably don't have much business in this city as you don't remember who you are."), - l("So I was going to ask if maybe you would be interested in giving me a hand with a few errands."); - - switch (select(l("I guess so. What's in it for me?"), - l("Of course! What do you need?"))) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Some tasks will help you become aquainted with Artis. Trust me."); - break; - case 2: - mes ""; - break; - } - - speech S_LAST_NEXT, - l("I asked Don our blacksmith to prepare a black iron sword for morning, he should be done by now."), - l("Go meet him, and take the package to me, it's an easy task."), - l("You will be able to find Don's house in the west of the city, it's the first house just after the bridge on the left, you can't miss it!"), - l("A young apprentice called Chelios might be waiting outside, speak to him, and return the package to me."); - emotion E_HAPPY; - - setq ArtisQuests_Enora, 1; - - closeclientdialog; - goodbye; - close; - } - - function enora_second_quest { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you for this commission, Chelios is as good as Don when it comes to forging metal."), - l("By the way, did you ever talk with Don?"), - l("If so, I hope that he didn't give you any hard time, sometimes he can get up on the wrong side of the bed he becomes an embittered and grumpy old man..."), - l("Poor Chelios, I don't envy him..."), - l("So, everything went fine?"); - - switch (select(l("Chelios managed to do excellent work."), - l("The old man seemed to be senile."))) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("Fine, let's see his work..."); - narrator S_LAST_NEXT, l("Enora is carefully inspecting the sword."); - speech S_LAST_NEXT, - l("Excellent!"), - l("The detail and craftsmanship that went into this sword can only be accomplished by the most practiced of blacksmiths."); - - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("He may not have all of his wits but keep in mind one thing:"), - l("Don is renowned throughout the entire land for his blacksmith skills, and he is here, in Artis."), - l("It's a great honor for us, at the Legion, to hold the security of his business!"); - - break; - } - - speech S_LAST_NEXT, - l("After this small overview of Artis, what do you think of our city?"), - l("The Legion of Gasaron is in charge of the security of the intramural part of our cities."), - l("The control and administration of the cities passes hands sometimes. You may find the Mana Order or the Brotherhood in charge instead of us at some point!"), - l("But we are quite lucky here, outside of some tipsy travelers there are no big problems around here, it's not like the capital, Esperia."), - l("Now that I think about it, I have another task for you. I asked Resa from the light armor shop to craft me some new clothes, she is a bit far from here, I can't go there because I need to watch the dock."), - l("Her shop is on the west side of the city, between the Legion building and the library."); - - setq ArtisQuests_Enora, 5; - enora_reward(60, 100); - - closeclientdialog; - npctalk3 l("Thank you very much!"); - close; - } - - function enora_third_quest { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Look how splendid this @@ is!", getitemlink(ArtisTankTop, CamelCottonDye)), - l("It's nearly as good as one from Esperia, have you ever been there?"), - l("Ah... Sorry, I forgot, again."), - l("I mean, you forgot... Well."), - l("If you ever find the time, pass by Esperia, it's the greatest city in all of Gasaron!"), - l("You can find the building of the Legion of Gasaron there, like in any other city, but Esperia is important for us as our headquarters are there."); - - do - { - .@q = select(l("Do you still need help?"), - l("What is this \"legion\"?")); - switch (.@q) - { - case 1: - break; - case 2: - enora_legion; - break; - } - } while (.@q == 2); - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh yes, I have one last errand for you, Q'Pid in the market sells potions."), - l("It has been some days now since I asked her for a box of @@s, but she hasn't delivered anything yet.", getitemlink(PiberriesInfusion)), - l("Please try to figure out what went wrong with this order and bring me those potions."), - l("You will be able to find her in the market in the south-west of Artis."); - - setq ArtisQuests_Enora, 7; - enora_reward(40, 125); - - closeclientdialog; - npctalk3 l("Thank you very much!"); - close; - } - - function enora_fourth_quest { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Awesome!"); - - speech S_LAST_NEXT, - l("I have one more task for you. Trozz, another member of the Legion, sent me a letter earlier today."), - l("Some citizens are worried about the growing number of Fluffies on the hill of Artis."), - l("Children play there and can be badly hurt if they get too close to a Fluffy's nest."), - l("It would have been easy for me to handle it but if you do it, you can earn some respect by killing Fluffies instead of their natural predators!"), - l("Besides, I need to be here to watch out for thieves while La Johanne is docked."), - l("You look confident. I will give you my old gear as reward and acknowledgment for your time... and take these potions as well!"); - - set ArtisFluffyKilled, 0; - - inventoryplace TrainingGladius, 3; - getitem TrainingGladius, 1; - getitem2 ArtisTankTop, 1, 1, 0, 0, 5005, 0, 0, 0; - getitem PiberriesInfusion, 5; - setq ArtisQuests_Enora, 10; - enora_reward(80, 175); - - speech S_LAST_NEXT, - l("Do you know where the hill is?"); - - switch (select(l("Yes I do."), - l("Please guide me."))) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Perfect! I will wait for you here."); - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Follow the up-stream and cross the canal twice using the two bridges north from here."), - l("The hill is located on the north-east of Artis."); - break; - } - - closeclientdialog; - npctalk3 l("Thank you very much!"); - close; - } - - function enora_hill_cleaned { - if (getq2(ArtisQuests_Enora) < 9) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh no, you still have @@ Fluffies to kill.", 10 - getq2(ArtisQuests_Enora)); - - return; - } - else if (getq2(ArtisQuests_Enora) < 10) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Only one more Fluffy to kill and it's done!"); - - return; - } else if (getq(ArtisQuests_Enora) == 10) { - inventoryplace TreasureKey, 1; - } - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("I cannot find the words to express my gratitude for your hard work."), - l("Keep the sword and the jacket, you deserved them!"), - l("You now also have access to the Legion building. Good job, you earned it."), - l("We hold various training sessions, and also have a task board with a heap of things to do for the city and its surroundings."), - l("It's a very good place if you want to make some more money."); - emotion E_WINK; - - if (getq(ArtisQuests_Enora) == 10) - { - setq ArtisQuests_Enora, 11; - enora_reward(140, 500); - getitem TreasureKey, 1; - mesn; - mesq l("Also, here is a %s. If you find a Treasure Chest somewhere, you can open it with this!", getitemlink(TreasureKey)); - next; - } - - return; - } - - function enora_quest_complete { - switch (getq(ArtisQuests_Enora)) - { - case 4: - enora_second_quest; - break; - case 6: - enora_third_quest; - break; - case 9: - enora_fourth_quest; - break; - default: - break; - } - - return; - } - - function enora_paid_potions { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Are you sure that these are my potions?"); - - if (askyesno() == ASK_YES) - { - delitem PiberriesInfusion, 5; - enora_fourth_quest; - } - - return; - } - - if (getq(ArtisQuests_Enora) == 0) - { - speech S_LAST_NEXT, - l("Hey! You must be @@.", strcharinfo(0)), - l("Julia told me how they found you in the sea, on a raft with a logo of..."), - l("...I mean log! Made of log!"), - l("I also heard you lost all your memories? That's a shame."), - l("I'm sure you would have some interesting stories to tell!"); - } - else - { - speech S_LAST_NEXT, - l("Hey @@!", strcharinfo(0)), - l("What brings you here today?"); - } - - do - { - .@q = getq(ArtisQuests_Enora); - select - rif(.@q == 0, l("She told me that you had some tasks for me.")), - rif(.@q == 4 || .@q == 6 || .@q == 9, l("I have your package.")), - rif(.@q == 8 && countitem(PiberriesInfusion) >= 5, l("I have your package.")), - rif(.@q >= 10, l("I cleaned up the hill.")), - rif(.@q >= 10, l("How many Fluffies did I kill on the hill?")), - rif(.@q >= 1, l("Who is Don?")), - rif(.@q >= 5, l("Where is the light armor shop?")), - rif(.@q >= 7, l("Where is the market?")), - rif(.@q >= 10, l("Where is the hill?")), - rif(.@q >= 1, l("What is this \"legion\"?")), - l("I wish I could remember something..."), - rif(.@q != 0, l("Nothing.")); - - switch (@menu) - { - case 1: - enora_first_quest; - break; - case 2: - enora_quest_complete; - break; - case 3: - enora_paid_potions; - break; - case 4: - enora_hill_cleaned; - break; - case 5: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You killed @@ Fluffies.", getq2(ArtisQuests_Enora)); - if (getq2(ArtisQuests_Enora) > 8) - { - mesq l("If you continue there will be none left!"); - next; - } - break; - case 6: - enora_don; - case 7: - enora_light_armor; - break; - case 8: - enora_market; - break; - case 9: - enora_hill; - break; - case 10: - enora_legion; - break; - case 11: - enora_memories; - break; - case 12: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Please come back anytime!"); - } - } while (@menu != 12); - - closeclientdialog; - goodbye; - close; - -OnInit: - .distance = 5; - .maxLevel = 20; - end; -} - -function script EnoraKills { - if (getq(ArtisQuests_Enora) == 10 - && killedrid == Fluffy - && strcharinfo(PC_MAP) == "001-1" - && getq2(ArtisQuests_Enora) < 10) - { - setq(ArtisQuests_Enora, 10, getq2(ArtisQuests_Enora) + 1); - } - return; -} - diff --git a/npc/001-1/eomie.txt b/npc/001-1/eomie.txt new file mode 100755 index 00000000..1ab21846 --- /dev/null +++ b/npc/001-1/eomie.txt @@ -0,0 +1,111 @@ +001-1,71,23,0 script Eomie NPC164,{ + @grass_amount = 5; + @water_amount = 2; + @ice_amount = 2; + + @silk_exp = 600; + + if (.@q >= 14) goto L_Done; + if (.@q >= 9) goto L_CastedSpell; + if (.@q == 8) goto L_GetStuff; + + mesn; + mes "\"I maintain this little oasis in the desert.\""; + if (.@q != 7) + goto L_Close; + menu + "I need to learn a spell to use Tinris' magic fertilizer. Can you help me out?",L_Next; + +L_Next: + mesn; + mes "\"Oh? Well, that's a rather difficult task."; + mes "I'd be glad to help you, but unfortunately, I can't. If I were to interrupt the magic I use to keep this alive, it would die.\""; + next; + mes "\"It's unusually hot at the moment – even for this desert area – so it's really out of the question.\""; + menu + "Is there any chance you could help me?",L_Continue; + +L_Continue: + mes "She hesitates."; + .@q = 8; + goto L_GetStuff; + +L_GetStuff: + // .@q == 8 + mesn; + mes "\"I could try to briefly interrupt my magic and then cast the spell on the fertilizer, but I would need to prepare the grass beforehand."; + mes "Bring me " + @grass_amount + " " + getitemlink("GrassSeed") + ", " + @water_amount + " " + getitemlink("BottleOfWater") + ", and " + @ice_amount + " " + getitemlink("IceCube") + ".\""; + menu + "I've got everything.",L_More, + "Where can I get Grass Seeds?",L_Hurnscald, + "How can I get Ice Cubes? We're in the middle of the desert!",L_Mine, + "Ok. I'll go and get them.",L_Close; +L_More: + if ((countitem("GrassSeed") < @grass_amount) || (countitem("BottleOfWater") < @water_amount) || (countitem("IceCube") < @ice_amount)) + goto L_NoItem; + + delitem "GrassSeed", @grass_amount; + delitem "BottleOfWater", @water_amount; + delitem "IceCube", @ice_amount; + .@q = 9; + mesn; + mes "\"Very good!\""; + mes "She takes the ingredients you brought her and uses them to cast a cool mist into the air."; + misceffect sfx_magic_nature; + next; + mesn; + mes "\"That should last long enough to keep the plants alive while I cast the spell on the fertilizer. Besides, I can replant anything that dies with the seeds you brought me.\""; + next; + mes "She takes the fertilizer and casts some invocations. After a minute, she hands the now-glowing substance back to you."; + mesn; + mes "\"That should work now. I'm glad you're taking care of the plants! Not enough people do that nowadays.\" %%1"; + goto L_Close; + +L_Hurnscald: // player asked how to get Grass Seeds + mesn; + mes "\"Squirrels tend to pick up " + getitemlink("GrassSeed") + " as they gather food. You can find them around Hurnscald if you ride the ferry over.\""; + goto L_Close; + +L_Mine: // player asked how to get Ice Cubes + mesn; + mes "\"Quite the quandary – isn't it? Naturally, you can easily find them on the continent of Kaizei, which is far up north and covered with snow most time of the year. But it might be a bit difficult to get there.\""; + next; + mes "\"I heard that Ice Goblins were seen in the caves surrounding Nivalis. Maybe you can find " + getitemlink("IceCube") + " there.\""; + goto L_Close; + +L_CastedSpell: // .@q >= 9 but below 14 + mesn; + mes "\"Thankfully, the grass wasn't damaged. I hope Anwar finds the magic fertilizer to be useful.\""; + if (.@q != 13) + goto L_Close; + menu + "It was. He even created this Silk Headband as a present for you!",L_Present, + "(Mumble something and leave)",L_Close; + +L_Present: + if (countitem("SilkHeadband") < 1) + goto L_NoItem; + delitem "SilkHeadband", 1; + getexp @silk_exp, 0; + .@q = 14; + mesn; + mes "\"Oh, that's so nice of him! Please tell him that I really like it!\""; + mes "She smiles."; + goto L_Close; + +L_Done: // .@q >= 14 + mesn; + mes "\"Hello! I'm happy to see someone like you so dedicated to the environment.\" %%8"; + goto L_Close; + +L_NoItem: + mesn; + mes "\"Where is it?\" %%3"; + goto L_Close; + +L_Close: + @grass_amount = 0; + @water_amount = 0; + @ice_amount = 0; + close; +} diff --git a/npc/001-1/eugene.txt b/npc/001-1/eugene.txt deleted file mode 100644 index 4f1e25fd..00000000 --- a/npc/001-1/eugene.txt +++ /dev/null @@ -1,82 +0,0 @@ -// Evol scripts. -// Authors: -// Reid -// Travolta -// Description: -// Fishman NPC -// Quest variable: -// ArtisQuests_Fishman -// Quest stages: -// 0 - not started -// 1 - Eugene asked for items -// 2 - completed - -001-1,113,120,0 script Eugene NPC_EUGENE,{ - - .BaitID = SmallTentacles; - .BaitCount = 10; - - narrator S_LAST_NEXT, - l("You see a raijin boy, sitting on the edge of the dock."), - l("He's holding a fishing rod, while gazing out at the sea."); - - .@q = getq(ArtisQuests_Fishman); - if (.@q == 1) goto L_CheckItems; - if (.@q == 2) goto L_QuestDone; - - speech S_LAST_BLANK_LINE, - l("Ahoi."), - l("Hey, check out my brand new fishing rod. I bought it just today."), - l("I was so excited, I wanted to try it as soon as possible."), - l("So in a hurry, I forgot to take enough bait for fishing."), - l("Be a friend and bring me @@ @@.", .BaitCount, getitemlink(.BaitID)); - - switch (select(l("I'll be back in no time."), - l("Sorry, I'm doing other things at the moment."))) - { - case 1: - setq ArtisQuests_Fishman, 1; - speech S_FIRST_BLANK_LINE, - l("Thank you. I'll wait here."); - close; - case 2: - speech S_FIRST_BLANK_LINE, - l("But I'm almost out of @@...", getitemlink(.BaitID)); - close; - } - -L_CheckItems: - if (countitem(.BaitID) < .BaitCount) - { - speech - l("Sorry, but you don't have what I need."), - l("I need @@ @@.", .BaitCount, getitemlink(.BaitID)); - close; - } - - speech - l("That's exactly what I needed!"), - l("To thank you, accept my old fishing rod."), - l("It's not as good as my new one, but still very useful."), - l("Just look at that water! There's a whole bunch of fish down there."), - l("Oh, and you will need this book too, it will help you learn the basics of fishing."), - l("You might even get lucky, and get a @@.", getitemlink(GrassCarp)), - l("Have a good time fishing!"); - - delitem .BaitID, .BaitCount; - getitembound FishingRod, 1, IBT_ACCOUNT; - getitem FishingGuideVolI, 1; - setq ArtisQuests_Fishman, 2; - close; - -L_QuestDone: - // Idea for future: Eugene telling fishman jokes. - speech - l("Ahoy, @@!", strcharinfo(0)), - l("Are the fish biting today?"); - close; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/ferry_master.txt b/npc/001-1/ferry_master.txt new file mode 100755 index 00000000..db5c6ec8 --- /dev/null +++ b/npc/001-1/ferry_master.txt @@ -0,0 +1,19 @@ + +001-1,64,75,0 script Ferry Master#tulimshar NPC138,{ + mes "[Ferry Master]"; + mes "\"Hello! Do you need something?\""; + goto L_Main; + +L_Main: + menu + "How do I use the ferry?", L_Explain, + "Nothing, I guess.", L_close; + +L_Explain: + mes "[Ferry Master]"; + callfunc "FerryHelp"; + goto L_Main; + +L_close: + close; +} diff --git a/npc/001-1/fexil.txt b/npc/001-1/fexil.txt deleted file mode 100644 index 1122f051..00000000 --- a/npc/001-1/fexil.txt +++ /dev/null @@ -1,143 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Newbie merchant. -// Variables: -// ArtisQuests_Fexil -// Quest states: -// 0 -- not started -// 1 -- Lloyd warned about the quest -// 2 -- Fexil explain what he needs -// 3 -- Fexil buy every fur that the pc bring to him - -001-1,47,134,0 script Fexil#001-1 NPC_ELVEN_MAN_TRADER,{ - - function fexil_quest { - speech S_LAST_NEXT, - l("You know, the life of the merchant is hard. I really hope that Artis and the Merchant Guild will help me to succeed."), - l("Maybe you too you could help me?"), - l("I want to be the first merchant of this square to sell clothes made from @@s!", getitemlink(FluffyFur)), - l("I will buy all of the fur that you will bring me at a good price, let's say, 15 E piece."), - l("Do we have a deal?"); - - switch (select(l("Ok."), l("I don't want to be part of this joke."))) - { - case 1: - setq ArtisQuests_Fexil, 3; - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Awesome! I will wait for you here."); - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh... Ok, I will be around here if you change your mind."); - break; - } - return; - } - - mesn; - mesq l("Greetings traveler."); - next; - mesq l("I have some clothes and other things for you at a fine price!"); - next; - mesq l("What I sell comes from every corner of Gasaron."); - next; - mesq l("Interested?"); - next; - - if (getq(ArtisQuests_Fexil) == 1) - { - select(l("I have your pass from the Merchant Guild.")); - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh! You saved me, I was too afraid to unpack my stuff without this pass."), - l("Hey, I remember you, we were on the same boat, you are the castaway."); - - switch (select(l("Yes I am."), - l("You're confusing me with someone else."))) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh sure I remember you."), - l("The travel was fine for you? It was terrible for me, I was sea-sick."); - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Ah, I didn't have much sleep, it's possible."); - break; - } - setq ArtisQuests_Fexil, 2; - fexil_quest; - - closeclientdialog; - goodbye; - close; - } - - .@fexil = getq(ArtisQuests_Fexil); - - select - l("OK, let's trade."), - rif(.@fexil == 2, l("Do you still need help?")), - rif(.@fexil > 2 && countitem(FluffyFur) > 0, l("I have some fur for you.")), - l("No. Sorry."); - - switch (@menu) - { - case 1: - closeclientdialog; - shop "Bag#001-1"; - close; - - case 2: - mes ""; - fexil_quest; - break; - - case 3: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Awesome. How many of those do you want to give me?"); - - do - { - input .@amount; - if (.@amount < 1) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Please enter a valid amount."); - continue; - } - if (.@amount > countitem(FluffyFur)) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You don't have enough @@s on you.", getitemlink(FluffyFur)); - continue; - } - - break; - } while (1); - - .@price = 15 * .@amount; - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Deal, I offer you @@ E!", .@price); - - delitem FluffyFur, .@amount; - Zeny += .@price; - - break; - - case 4: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh... Well, I just started to trade... Thus my technique may not be the best."), - l("Anyway, if you ever feel interested, just check my bag!"); - break; - } - - closeclientdialog; - goodbye; - close; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/flags.txt b/npc/001-1/flags.txt deleted file mode 100644 index 5e70c25a..00000000 --- a/npc/001-1/flags.txt +++ /dev/null @@ -1,17 +0,0 @@ -// Evol scripts. -// Author: -// Micksha -// Jesusalva -// Description: -// The flags supposed to mark Rowboat unmounting spots in Artis -// THIS IS A PLACEHOLDER! - -001-1,200,63,0 script Flag#1 NPC_FLAG_L,{ - OnTouch: - narrator - l("You see a suspicious greenish flag. It reminds you of something you seem to have forgotten."); - close; -} - -001-1,27,101,0 duplicate(Flag#1) Flag#2 NPC_FLAG_R -001-1,68,139,0 duplicate(Flag#1) Flag#3 NPC_FLAG_R diff --git a/npc/001-1/flyingpiou.txt b/npc/001-1/flyingpiou.txt deleted file mode 100644 index ea48f4dc..00000000 --- a/npc/001-1/flyingpiou.txt +++ /dev/null @@ -1,160 +0,0 @@ -// Evol scripts. -// Author: -// Travolta -// Description: -// Pious flying around town -// Variables: -// none - -function script ArtisFlyingPiouLogic { - .@tick = gettimetick(1); - .@LastTimeTouched = getvariableofnpc(.LastTimeTouched, strnpcinfo(3)); - if (.@tick > .@LastTimeTouched + 300) - { - .speed = 200; - set getvariableofnpc(.LastPlayerTouched, strnpcinfo(3)), -1; - } - .@rnd = rand(5) - 3; - if (.@rnd > 0) - return execmovecmd("wait " + .@rnd); - return 0; -} - -001-1,53,117,0 script #FlyingPiou1 NPC_FLYING_PIOU,{ - - function TryCatchPiou { - .@agi = readparam(bAgi); - @ArtisQuests_CatchPiouTries += 1; - getmapxy(.@map$, .@x1, .@y1, 1); - getmapxy(.@map$, .@x2, .@y2, 0); - .@distance = distance(.@x1, .@y1, .@x2, .@y2); - .@chance = max(ArtisQuests_CatchPiou_Difficulcy, - 20 + .@distance * 5 - .@agi/10 - - @ArtisQuests_CatchPiouTries); - return rand(.@chance); - } - - .@charid = getcharid(0); - if (.LastPlayerTouched <= 0) - { - .LastPlayerTouched = .@charid; - @ArtisQuests_CatchPiouTries = 0; - } - else if (.LastPlayerTouched != .@charid) - { - message strcharinfo(0), l("Hm, it seems another player is trying to catch the piou, I shouldn't interfere."); - end; - } - - .@q = getq(ArtisQuests_CatchPiou); - if (.@q != 1) - { - mesn "Narrator"; - mesc(l("You scare the piou, but let it go."), 9); - close; - } - - .@tick = gettimetick(1); - if (.@tick < .LastTimeTouched + min(4, ArtisQuests_CatchPiou_Difficulcy - + @ArtisQuests_CatchPiouTries / 3)) - { - message strcharinfo(0), l("Dang, I scared it! More patience, @@, more patience.", strcharinfo(0)); - .LastTimeTouched = .@tick; - specialeffect(33, SELF); - end; - } - - .LastTimeTouched = .@tick; - - .@rnd = TryCatchPiou(); - if (!.@rnd) - { - npcstop; - stopnpctimer; - getmapxy(.@map$, .@x, .@y, 1); - npcwalkto .@x, .@y; - .@trader$ = "Salem#001-1"; - mesn "Narrator"; - mesc(l("You caught the piou, but it's trying to escape from you. You'd better hurry back to Salem."), 9); - set getvariableofnpc(.LastPiouHunter$, .@trader$), strcharinfo(0); - set getvariableofnpc(.PiouEscapedMessage$, .@trader$), l("Oh no, the piou escaped!"); - set getvariableofnpc(.LastPiouHunterID, .@trader$), .@charid; - set getvariableofnpc(.PiouCaught, .@trader$), 1; - donpcevent .@trader$ + "::OnPiouFlee"; - specialeffect(26, SELF); - close2; - disablenpc strnpcinfo(3); - close; - } - else - { - setarray .RandomFailureMessages$[0], l("So close!"), l("It escaped!"), l("Almost got it!"), l("Oh, the little..."); - .@r = rand(getarraysize(.RandomFailureMessages$)); - message strcharinfo(0), .RandomFailureMessages$[.@r]; - .speed = max(140, 200 - 10 * (@ArtisQuests_CatchPiouTries + - ArtisQuests_CatchPiou_Difficulcy)); - specialeffect(33, SELF); - } - end; - -OnHour00: - .LastTimeTouched = 0; - end; - -OnTimer1000: - dographmovestep; - -OnInit: - .distance = 5; - .walkmask = WALK_WATER; - // .debug = 1; - - initmovegraph "market_start", 53, 117, - "fountain", 79, 75, 102, 91, - "river_bank_1", 107, 94, 117, 102, - "river_bank_2", 117, 110, - "chelios_right", 100, 112, 113, 118, - "chelios_left", 80, 95, 93, 111, - "market_right", 74, 114, 83, 121, - "market_center", 50, 113, 66, 121, - "market_left", 36, 120, 42, 128, - "batiment_inside", 48, 138, 65, 106, - "batiment_behind", 33, 90, 41, 103, - "library_front", 42, 82, 63, 90, - "taree_yard", 69, 82, - "taree_behind", 61, 62, 76, 71, - "townhall_behind", 73, 40, 93, 55, - "townhall_right", 99, 55, 106, 60, - "inn_behind", 107, 63, 123, 76 - ; - - setmovegraphcmd "fountain", "river_bank_1", 1, "call ArtisFlyingPiouLogic", - "river_bank_1", "river_bank_2", 1, "call ArtisFlyingPiouLogic", - "river_bank_2", "chelios_right", 2, "call ArtisFlyingPiouLogic", - "chelios_right", "chelios_left", 1, "call ArtisFlyingPiouLogic", - "chelios_left", "fountain", 1, "wait 1; call ArtisFlyingPiouLogic", - "chelios_left", "market_right", 1, "call ArtisFlyingPiouLogic", - "chelios_right", "market_right", 1, "call ArtisFlyingPiouLogic", - "market_right", "market_center", 1, "call ArtisFlyingPiouLogic", - "market_center", "batiment_inside",1, "call ArtisFlyingPiouLogic", - "batiment_inside","library_front", 1, "call ArtisFlyingPiouLogic", - "library_front", "taree_yard", 1, "call ArtisFlyingPiouLogic", - "library_front", "taree_behind", 1, "call ArtisFlyingPiouLogic", - "library_front", "batiment_behind",1, "call ArtisFlyingPiouLogic", - "batiment_behind","market_left", 1, "wait 3; call ArtisFlyingPiouLogic", - "market_left", "market_center", 1, "call ArtisFlyingPiouLogic", - "taree_yard", "fountain", 1, "call ArtisFlyingPiouLogic", - "taree_behind", "townhall_behind",1, "call ArtisFlyingPiouLogic", - "townhall_behind","townhall_right", 1, "call ArtisFlyingPiouLogic", - "townhall_right", "inn_behind", 1, "call ArtisFlyingPiouLogic", - "inn_behind", "fountain", 1, "wait 2; call ArtisFlyingPiouLogic", - "inn_behind", "river_bank_1", 1, "call ArtisFlyingPiouLogic", - "market_start", "batiment_inside",1, "call ArtisFlyingPiouLogic" - ; - - firstmove "speed 200", "market_start"; - initnpctimer; - - .LastPlayerTouched = -1; - end; -} diff --git a/npc/001-1/gate_guards.txt b/npc/001-1/gate_guards.txt new file mode 100755 index 00000000..5908bb77 --- /dev/null +++ b/npc/001-1/gate_guards.txt @@ -0,0 +1,21 @@ +001-1,39,33,0 script Guard#school NPC104,{ + mes "[Guard]"; + mes "\"My presence here is just a formality. The mages inside can easily defend themselves.\""; + close; +} +001-1,56,47,0 script Guard#castle NPC104,{ + mes "[Guard]"; + mes "\"Tulimshar is a resilient city; its citizens have made quite a comeback after the earthquake.\""; + close; +} + +001-1,61,99,0 script Guard#east3 NPC104,{ + mes "[Guard]"; + mes "\"Just north of here is a palace where you can find both the Council of Wizards and the Magic Institute of Tulimshar.\""; + close; +} +001-1,53,72,0 script Guard#govt_out NPC123,{ + mes "[Guard]"; + mes "\"There are government officials inside who can help you form a party, obtain a trade license, or even get married.\""; + close; +} diff --git a/npc/001-1/gossip.txt b/npc/001-1/gossip.txt new file mode 100755 index 00000000..694124a0 --- /dev/null +++ b/npc/001-1/gossip.txt @@ -0,0 +1,57 @@ + +001-1,66,104,0 script Gladys NPC154,{ + mes "[Gladys]"; + mes "\"Hello deary! I hear some of the most fascinating rumors!\""; + next; + mes "\"Would you like me to let you in on the good stuff?\""; + menu + "Tell me about Lt. Dausen.", L_Intro, + "Tell me about Fieri.", L_Cook, + "Tell me about Sarah.", L_Sarah, + "Tell me about Sandra.", L_Sandra, + "Tell me about the Desert Mine.", L_Desert, + "Tell me about the Ferry.", L_Ferry, + "No thanks.", L_No; + +L_No: + mes "[Gladys]"; + mes "\"Very well. Come back later if you want to hear some juicy news!\""; + goto L_close; + +L_Intro: + mes "[Gladys]"; + mes "\"Have you met our lovely guard captain yet? He usually keeps post just outside the gates to keep an eye on things. He likes to talk to new adventurers too.\""; + goto L_close; + +L_Cook: + mes "[Gladys]"; + mes "\"I hear the kitchen at the Magic Institute of Tulimshar is in need of some help.\""; + next; + mes "\"The only thing bigger then a wizard's ego is their waistline. Hehe.\" %%8"; + goto L_close; + +L_Sarah: + mes "[Gladys]"; + mes "\"Do you believe what parents will let their kids do these days?! I heard about this girl in the southeast side of town who does nothing but eat sweets all day! Honestly, what is this world coming to?\""; + goto L_close; + +L_Sandra: + mes "[Gladys]"; + mes "\"The students and wizards at the Magic Institute of Tulimshar are always looking for people to gather the reagents they need for spells as they are far too busy studying to gather the materials themselves.\""; + goto L_close; + +L_Desert: + mes "[Gladys]"; + mes "\"If you're still looking for adventure, I would suggest talking to some of the guards. I hear there's a sizable monster threat outside the city walls!\""; + goto L_close; + +L_Ferry: + mes "[Gladys]"; + mes "\"There's a ferry in the northern part of town that takes travelers to exotic new places!\""; + next; + mes "\"I haven't been on it myself, but I hear it travels all over the world!\""; + goto L_close; + +L_close: + close; +} diff --git a/npc/001-1/guards.txt b/npc/001-1/guards.txt new file mode 100755 index 00000000..8727a9bf --- /dev/null +++ b/npc/001-1/guards.txt @@ -0,0 +1,93 @@ + +001-1,103,99,0 script Ekinu NPC104,{ + mes "[Ekinu the Town Guard]"; + mes "\"What a disaster... I can't believe that we managed to rebuild the town so quickly.\""; + next; + menu "Can you give me any tips?", L_Tip, + "Do you have any information?", L_Info, + "What disaster?", L_disaster; + +L_Tip: + @temp = rand(7); + if(@temp == 1) goto L_1; + if(@temp == 2) goto L_2; + if(@temp == 3) goto L_3; + if(@temp == 4) goto L_4; + if(@temp == 5) goto L_5; + if(@temp == 6) goto L_6; + goto L_0; + +L_1: + mes "[Ekinu the Town Guard]"; + mes "\"Try to carry spare food when on quests or in dungeons – they will come in handy. I always take beer, but don't tell the Sergeant...\""; + goto L_close; + +L_2: + mes "[Ekinu the Town Guard]"; + mes "\"If you ever get lost, check your map to get your bearings and figure out where you need to go.\""; + goto L_close; + +L_3: + mes "[Ekinu the Town Guard]"; + mes "\"When in a dungeon, monsters are more aggressive – and often more powerful – than if they were outside.\""; + goto L_close; + +L_4: + mes "[Ekinu the Town Guard]"; + mes "\"When gambling in casinos, make sure to not bet too much or you might become broke.\""; + goto L_close; + +L_5: + mes "[Ekinu the Town Guard]"; + mes "\"Never underestimate your enemy.\""; + goto L_close; + +L_6: + mes "[Ekinu the Town Guard]"; + mes "\"When fighting more than one enemy, try to focus on one at a time.\""; + goto L_close; + +L_0: + mes "[Ekinu the Town Guard]"; + mes "\"Let me think of something... Oh! Do NOT attack the red or black scorpions unless you're sure you can kill it!\""; + goto L_close; + +L_Info: + mes "[Ekinu the Town Guard]"; + mes "\"Everyone seems to want information... You won't get it – at least not here. I'm not even sure what you mean, to be honest.\""; + goto L_close; + +L_disaster: + mes "[Ekinu the Town Guard]"; + mes "\"What do you mean, 'what disaster?' Weren't you there? That huge volcano ex...rusion... – whatever they call it – and then the earthquake!\""; + next; + mes "[Ekinu the Town Guard]"; + mes "\"Half the town was reduced to rubble! Somehow, no one was seriously injured, so I guess we were lucky...\""; + next; + mes "[Ekinu the Town Guard]"; + mes "\"Well, the mayor rebuilt everything quickly, but I still have no idea where he got all the GP from...\""; + goto L_close; + +L_close: + @temp = 0; + close; +} + +001-1,107,42,0 script Ryan NPC104,{ + if (getskilllv(SKILL_MAGIC)) goto L_message; + + mes "[Ryan the Town Guard]"; + mes "Zzzz... Zzzz..."; + next; + mes "[Ryan the Town Guard]"; + mes "\"Hmmmmmmh...?"; + mes "Oh, what? I wasn't sleeping! I was just resting my eyes!\""; + close; + +L_message: + mes "[Ryan the Town Guard]"; + mes "\" Watch out for Black Scorpions. They are extremely dangerous!\""; + next; + mes "\"Whenever one approaches the town gate, Ekinu has me run around shouting '" + $@SPELL_AGGRAVATE$ + ".' Somehow, this distracts it so Ekinu can kill it.\""; + close; +} diff --git a/npc/001-1/harbours.txt b/npc/001-1/harbours.txt deleted file mode 100644 index f1db3fce..00000000 --- a/npc/001-1/harbours.txt +++ /dev/null @@ -1,84 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Harbour animated tiles. -// Animation: -// Length: 1680 -// Values: -// 2 Hook moving down. -// 4 Hook moving up. -// 6 Hook down. -// 8 Hook up. - -001-1,183,85,0 script #Harbour1 NPC_HARBOUR_WHEEL_BOX,{ - harbourClic; - -OnTimer1670: - harbourTimer; - -OnInit: - .distance = 1; - .alwaysVisible = true; - end; -} - -001-1,183,89,0 script #Harbour2 NPC_HARBOUR_WHEEL,{ - harbourClic; - -OnTimer1670: - harbourTimer; - -OnInit: - .distance = 1; - .alwaysVisible = true; - end; -} - -001-1,198,115,0 script #Harbour3 NPC_HARBOUR_WHEEL_BOX,{ - harbourClic; - -OnTimer1670: - harbourTimer; - -OnInit: - .distance = 1; - .alwaysVisible = true; - end; -} - -001-1,175,119,0 script #Harbour4 NPC_HARBOUR_WHEEL_BOX,{ - harbourClic; - -OnTimer1670: - harbourTimer; - -OnInit: - .distance = 1; - .alwaysVisible = true; - end; -} - -001-1,198,92,0 script #Harbour5 NPC_HARBOUR_WHEEL_BOX,{ - harbourClic; - -OnTimer1670: - harbourTimer; - -OnInit: - .distance = 1; - .alwaysVisible = true; - end; -} - -001-1,151,117,0 script #Harbour6 NPC_HARBOUR_WHEEL,{ - harbourClic; - -OnTimer1670: - harbourTimer; - -OnInit: - .distance = 1; - .alwaysVisible = true; - end; -} diff --git a/npc/001-1/inac.txt b/npc/001-1/inac.txt new file mode 100755 index 00000000..56392535 --- /dev/null +++ b/npc/001-1/inac.txt @@ -0,0 +1,15 @@ + +001-1,58,81,0 script Inac NPC156,{ + @halloween_npc_id = $@halloween_npc_inac; + callfunc "TrickOrTreat"; + + mes "[Inac]"; + mes "\"This cities water system is amazing. It was built centuries ago after the cataclysm that turned Tonori into this desert.\""; + next; + mes "[Inac]"; + mes "\"They say that not much maintenance is needed, even though it's so old.\""; + next; + mes "[Inac]"; + mes "\"They also say monsters have moved into the underground tunnels that bring and distribute water.\""; + close; +} diff --git a/npc/001-1/juscare.txt b/npc/001-1/juscare.txt deleted file mode 100644 index b0d6a98e..00000000 --- a/npc/001-1/juscare.txt +++ /dev/null @@ -1,92 +0,0 @@ -// Evol scripts. -// Authors: -// Reid -// Travolta -// Description: -// Juscare, walking NPC of the Legion of Aemil on the right part of the Agora of Artis. - -001-1,118,92,0 script Juscare#001-1 NPC_HUMAN_MALE_LEGION_ARTIS,{ - - function shouldTurn { - .@tree = findmovegraphlabel("inn_tree"); - .@table = findmovegraphlabel("inter_inn_fav_table"); - if (.movepos == .@tree || .movepos == .@table) - return 0; - return 1; - } - - function localClose { - if (@Juscar_old_dir > 0) - .dir = @Juscar_old_dir; - npc_resumemove; - close; - } - - npc_pausemove; - @Juscar_old_dir = -1; - if (shouldTurn()) - { - getmapxy(.@map$, .@cx, .@cy, 0); - @Juscar_old_dir = .dir; - npc_turntoxy(.@cx, .@cy); - } - - villagertalk(); - - localClose; - -OnTimer1000: - dographmovestep; - -OnInit: - .distance = 4; - // .debug = 1; - initmovegraph - "inn_front", 112, 90, 119, 93, - "inn_tree", 108, 82, - "fountain", 87, 85, 91, 86, - "chelios", 93, 109, - "chelios_road", 89, 107, - "chelios", 93, 109, - "to_market", 76, 119, - "market", 60, 115, 65, 121, - "fishing_spot", 109, 127, - "river_bank", 113, 105, - "eugene", 112, 115, - "inn_door", 118, 89, - "inn_doorstep", 118, 88, - "inter_inn_doorstep", 29, 43, - "inter_inn_2tables", 38, 31, - "inter_inn_fav_table", 51, 33; - - // this is not very obvious stuff - setmovegraphcmd - "inn_front", "inn_door", 1, 0x1, "flags_0 2; dir 4; call open_door #001-1_118_88", - "inn_front", "inn_tree", 2, "dir 2; wait 1; sit; wait 1; emote 106; wait 20; stand; wait 1", - "inn_front", "river_bank",1, "flags_0 8; flags_1 4", - "river_bank", "eugene", 1, 0x4, "moveon", - "eugene", "fishing_spot", 1, 0x4, "wait 7", - "fishing_spot", "chelios", 1, 0x4, "dir 6; wait 1; emote 103; wait 10", - "inn_tree", "inn_door", 1, "flags_1 1; flags_0 2; dir 4; call open_door #001-1_118_88", - "inn_tree", "fountain", 2, "dir 4; wait 1; emote 122; wait 10; dir 0; wait 1", - "fountain", "chelios_road", "moveon", - "chelios_road", "chelios", "dir 6; wait 1; emote 103; wait 7", - "chelios", "eugene", "flags_1 28; flags_0 4", - "chelios", "to_market", 2, 0x20, "flags_1 20; flags_0 10", - "to_market", "market", 1, 0x20, "flags_1 10; flags_0 20; wait 20", - "market", "to_market", "moveon", - "to_market", "chelios", 1, 0x10, "flags_0 10; dir 6; wait 3", - "fishing_spot", "eugene", 1, 0x8, "moveon", - "eugene", "river_bank",1, 0x8, "moveon", - "river_bank", "inn_front", 1, 0x8, "dir 0; wait 5", - "inn_door", "inn_doorstep",1, 0x1, "warp 001-2-28 inter_inn_doorstep; call close_door #001-1_118_88", - "inter_inn_doorstep", "inter_inn_2tables", 1, 0x1, "moveon", - "inter_inn_2tables", "inter_inn_fav_table", 1, 0x1, "flags_1 2; flags_0 1; dir 6; wait 1; sit; wait 15; stand; wait 1", - "inter_inn_fav_table", "inter_inn_2tables", 1, 0x2, "moveon", - "inter_inn_2tables", "inter_inn_doorstep", 1, 0x2, "call open_door #001-1_118_88; warp 001-1 inn_doorstep", - "inn_doorstep", "inn_door", 1, 0x2, "call close_door #001-1_118_88", - "inn_door", "inn_front", 1, 0x2, "flags_1 1; flags_0 2; wait 10"; - - firstmove "wait 4", "inn_front"; - initnpctimer; -} diff --git a/npc/001-1/katja.txt b/npc/001-1/katja.txt deleted file mode 100644 index 3a3008cb..00000000 --- a/npc/001-1/katja.txt +++ /dev/null @@ -1,128 +0,0 @@ -// Evol scripts. -// Authors: -// Reid -// Travolta -// Description: -// Little girl playing around the hill on top of the port. -// She wants you to find her brother. -// Variables: -// ArtisQuests_LazyBrother = 19 -- quest var -// LazyBrother_TreesLeft = 15 -- how many trees left to search -// LazyBrother_TreeSearched[15] -- whether given tree was searched -// LazyBrother_TreeWithBrother -- the number of tree where he's hiding -// Quest states: -// 0 - quest not started -// 1 - Katja asked help, searching the trees -// 2 - Bobo is found, "bad" ending -// 3 - player decided to tell Katja where her brother is -// 4 - "good" ending, player helped Katja - -001-1,164,44,0 script Katja#001-1 NPC_RAIJIN_GIRL,{ - - function QuestReminder { - setcam 5920, 960; - mesq l("Remember, you have to find my brother on the hill east of here."); - next; - mesq l("He is probably hiding up one of the trees. Go close to each tree and look up, otherwise you won't notice him."); - next; - restorecam; - } - - .@q = getq(ArtisQuests_LazyBrother); - mesn; - mesq l("Hey"); - next; - switch(.@q) - { - case 0: - mesq l("You look nice, do you want to help me?"); - break; - case 1: - mesq l("Hi, how is it going?"); - next; - select l("Remind me, what should I do?"); - mes ""; - mesn; - QuestReminder; - close; - case 2: - mesq l("I still didn't find my brother..."); - close; - case 3: - mesq l("Did you find my brother?"); - next; - select(l("Yes, and he promised to be home soon.")); - mes ""; - mesn; - mesq l("Oh thank you so much!"); - next; - mesq l("Please take this @@ for your help.", getitemlink(Aquada)); // Need a different reward. - setq ArtisQuests_LazyBrother, 4; - getitem Aquada, 1; - getexp 500, 0; - close; - case 4: - mesq l("Thank you again for your help!"); - close; - } - next; - - switch (select(l("Of course!"), - l("What kind of help do you need?"), - l("I don't have much time right now."))) - { - case 1: - mes ""; - mesn; - mesq l("Great!"); - emotion E_JOY; - next; - break; - case 2: - mes ""; - mesn; - break; - case 3: - mes ""; - mesn; - mesq l("Okay, I'll be here, if you change your mind."); - emotion E_SAD; - close; - } - -L_Story: - mesq l("Mommy sent me to find my brother Bobo."); - next; - mesq l("He said he is going to climb the highest hill in Artis, which is not far from here."); - next; - mesq l("Our mommy doesn't allow us to go there, because it's dangerous. But he doesn't listen!"); - next; - mesq l("Can you please go there and find him? He is probably hiding in one of those trees, like always."); - next; - mesq l("Because of the dense foliage, you need to go up close to the trees so you don't miss him."); - next; - - switch (select(l("I will find him, don't worry!"), - l("Highest hill in Artis you say? Sounds dangerous, I might fall off."))) - { - case 1: - mes ""; - mesn; - mesq l("Thank you!"); - mes ""; - QuestReminder; - setq ArtisQuests_LazyBrother, 1; - LazyBrother_TreesLeft = 15; - close; - case 2: - mes ""; - mesn; - mesq l("Aw, what will I do now?"); - close; - } - -OnInit: - .distance = 4; - end; -} - diff --git a/npc/001-1/koga.txt b/npc/001-1/koga.txt deleted file mode 100644 index 794909f1..00000000 --- a/npc/001-1/koga.txt +++ /dev/null @@ -1,45 +0,0 @@ -// Evol scripts. -// Author: -// Micksha -// Description: -// The Koga in Artis, only accessable via Rowboat. -// THIS IS A PLACEHOLDER! - -/*001-1,225,59,0 script Koga#001-1 NPC_LA_MARINE,{ - .@q=getq(General_Narrator); - speech - l("Ah, whom did you bring here?"), - l("Isn't that the one Nard found on a raft in the sea, with the sign of the Legion on it?"); - next; - mesc l("Travel to woodlands?"); - if (askyesno() == ASK_YES) - { - speech - l("I hope they know what they are doing. So, come on board. I am looking forward to go back to Woodland, haven't been there for a while."); - next; - closeclientdialog; - setpcblock(PCBLOCK_MOVE, false); - setmount 0; - if (.@q == 1) { - warp "000-0-1", 26, 28; - close; - } - warp "008-1-1", 33, 63; - dispbottom l("After a tiring, yet fast, travel by Koga, you arrive at @@.", l("Woodlands")); - } - else - { - // Return you to beach - setpcblock(PCBLOCK_MOVE, false); - setmount 0; - slide 200, 62; - } - - close; - -OnInit: - .distance = 6; - //.alwaysVisible = true; - end; -}*/ - diff --git a/npc/001-1/lucas.txt b/npc/001-1/lucas.txt deleted file mode 100644 index 558889d2..00000000 --- a/npc/001-1/lucas.txt +++ /dev/null @@ -1,18 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Legion member. - -001-1,59,44,0 script Lucas#001-1 NPC_LUCAS,{ - - villagertalk(); - - closeclientdialog; - close; - -OnInit: - .distance = 3; - end; -} - diff --git a/npc/001-1/manhole.txt b/npc/001-1/manhole.txt deleted file mode 100644 index 086f9070..00000000 --- a/npc/001-1/manhole.txt +++ /dev/null @@ -1,88 +0,0 @@ -// Evol scripts. -// Author: -// Jesusalva -// Reid -// Description: -// A manhole near Mona's house. -// Variable: -// ArtisQuests_MonaDad -// Quest states: -// 0 - Quest not started -// 1 - Mona explained that her dad was missing - -001-1,152,52,0 script #manhole1-001-1 NPC_NO_SPRITE,{ - - .@i=manhole_interact("001-3-0"); - closeclientdialog(); - if (.@i == -1) { - slide_or_warp("001-3-0", 152, 56); - } else if (.@i == TrainingArrow || .@i == WoodenBow) { - npctalk3 l("(You hear a faint sound in distance, but can't say what sound it was.)"); - } - close; - -OnInit: - .distance = 1; - end; -} - -001-1,196,35,0 script #manhole2-001-1 NPC_NO_SPRITE,{ - - .@i=manhole_interact("001-3-0"); - closeclientdialog(); - if (.@i == -1) { - slide_or_warp("001-3-0", 196, 36); - } else if (.@i == TrainingArrow || .@i == WoodenBow) { - npctalk3 l("???: Hey! Is someone there? Please, help, it's so dark down here!"); - } - close; - -OnInit: - .distance = 1; - end; -} - -001-1,146,123,0 script #manhole3-001-1 NPC_NO_SPRITE,{ - - .@i=manhole_interact("001-3-0"); - closeclientdialog(); - if (.@i == -1) { - // Not a fan of calling strong players as weak, so take STR in account - // If you have enough STR, you get an Easter Egg about the engine :) - if (readparam(bStr) < 50) { - mesc l("The lid is sealed shut, and you are too weak to open it."); - } else { - mesc l("Even with your Hercules strength, this lid is hopelessly struck."); - } - } else if (.@i == TrainingArrow || .@i == WoodenBow) { - // This is the wrong lid for Mundane Quest - npctalk3 l("..."); - } - close; - -OnInit: - .distance = 1; - end; -} - -// This lid can only be used to leave -001-1,86,131,0 script #manhole4-001-1 NPC_NO_SPRITE,{ - - .@i=manhole_interact("001-3-0"); - closeclientdialog(); - if (.@i == -1) { - mesc l("Strangely enough, this lid can only be open from inside."); - } else if (.@i == TrainingArrow || .@i == WoodenBow) { - // This is the wrong lid for Mundane Quest - npctalk3 l("..."); - } - close; - -OnInit: - .distance = 1; - end; -} - -// To quickly create more sewer mouths we can use: -//001-1,86,131,0 duplicate(#manhole3-001-1) #manhole4-001-1 NPC_NO_SPRITE - diff --git a/npc/001-1/mapflags.txt b/npc/001-1/mapflags.txt index 3e529501..4285d7f7 100644..100755 --- a/npc/001-1/mapflags.txt +++ b/npc/001-1/mapflags.txt @@ -1 +1,2 @@ -001-1 mapflag town +//001-1 mapflag town +//001-1 mapflag resave 001-1,60,105 diff --git a/npc/001-1/marine.txt b/npc/001-1/marine.txt deleted file mode 100644 index b9cd93f9..00000000 --- a/npc/001-1/marine.txt +++ /dev/null @@ -1,17 +0,0 @@ -// Moubootaur Legends scripts. -// Authors: -// Jesusalva -// Description: -// This script controls access to Ships, fixing variables. - -// Use NPC_LA_MARINE if needed -001-1,204,85,0 script Gema IV#A NPC_HIDDEN,0,0,{ - end; - -OnTouch: - EnterTown("Artis"); - - warp "marine@"+LOCATION$, 42, 26; - closedialog; - close; -} diff --git a/npc/001-1/merlin.txt b/npc/001-1/merlin.txt deleted file mode 100644 index a96e404d..00000000 --- a/npc/001-1/merlin.txt +++ /dev/null @@ -1,24 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Fishmonger NPC - -001-1,73,128,0 script Merlin NPC_MERLIN,2,2,{ - -OnTouch: - switch(rand(6)) - { - case 0: npctalkonce(l("Fish, come and see my fish!")); break; - case 1: npctalkonce(l("They are fresh, they are good!")); break; - case 2: npctalkonce(l("Fresh from the sea and cheap!")); break; - case 3: npctalkonce(l("Come, come and see!")); break; - case 4: npctalkonce(l("They are fresh!")); break; - default: npctalkonce(l("Fish is good for the brain!")); - } - end; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/mouboo.txt b/npc/001-1/mouboo.txt deleted file mode 100644 index bdc4d517..00000000 --- a/npc/001-1/mouboo.txt +++ /dev/null @@ -1,61 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Mouboo on Taree's fence. - -001-1,67,79,4 script Mouboo#Artis0 NPC_MOUBOO,{ - - moubootalk(); - close; - -OnTimer2000: - moubootimer; - -OnInit: - .distance = 2; - .speed = 600; - mouboograph; -} - -001-1,67,80,4 script Mouboo#Artis1 NPC_MOUBOO,{ - - moubootalk(); - close; - -OnTimer2000: - moubootimer; - -OnInit: - .distance = 2; - .speed = 600; - mouboograph; -} - -001-1,67,81,4 script Mouboo#Artis2 NPC_MOUBOO,{ - - moubootalk(); - close; - -OnTimer2000: - moubootimer; - -OnInit: - .distance = 2; - .speed = 600; - mouboograph; -} - -001-1,67,82,4 script Mouboo#Artis3 NPC_MOUBOO,{ - - moubootalk(); - close; - -OnTimer2000: - moubootimer; - -OnInit: - .distance = 2; - .speed = 600; - mouboograph; -} diff --git a/npc/001-1/nalkri.txt b/npc/001-1/nalkri.txt deleted file mode 100644 index e155a8a8..00000000 --- a/npc/001-1/nalkri.txt +++ /dev/null @@ -1,59 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Nalkri, walking NPC of the Legion of Aemil on the west part of Artis. - -001-1,35,84,0 script Nalkri#001-1 NPC_DEMON_MALE_LEGION_ARTIS,{ - npctalk3 l("Stay clear."); - close; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 56, 84, - "move", 60, 93, - "move", 68, 98, - "dir", DOWN, 0, - "wait", 1, 0, - "move", 68, 100, - "dir", RIGHT, 0, - "wait", 1, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", LEFT, 0, - "wait", 1, 0, - "dir", UP, 0, - "move", 67, 98, - "dir", RIGHT, 0, - "wait", 2, 0, - "move", 51, 101, - "dir", LEFT, 0, - "wait", 1, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", RIGHT, 0, - "wait", 1, 0, - "dir", UP, 0, - "move", 48, 100, - "dir", RIGHT, 0, - "wait", 1, 0, - "dir", DOWN, 0, - "wait", 1, 0, - "dir", LEFT, 0, - "wait", 1, 0, - "dir", RIGHT, 0, - "move", 55, 96, - "move", 43, 88, - "move", 35, 84, - "dir", LEFT, 0, - "wait", 1, 0, - "dir", DOWN, 0, - "wait", 4, 0, - "dir", RIGHT, 0, - "wait", 1, 0; - - initialmove; - initnpctimer; -} diff --git a/npc/001-1/north_shops.txt b/npc/001-1/north_shops.txt new file mode 100755 index 00000000..88d4c306 --- /dev/null +++ b/npc/001-1/north_shops.txt @@ -0,0 +1,6 @@ +001-1,106,105,0 shop Neko NPC101,3006:10,501:25,502:35,533:55,539:87,562:250 +001-1,111,108,0 shop Inar NPC108,1202:5,656:100,586:500,735:500,546:1000,724:500,723:2400 +001-1,48,79,0 script Well NPC400,{ + callfunc "WaterBottle"; + end; +} diff --git a/npc/001-1/npcs.txt b/npc/001-1/npcs.txt new file mode 100755 index 00000000..4d65a5ba --- /dev/null +++ b/npc/001-1/npcs.txt @@ -0,0 +1,70 @@ +001-1,49,82,0 script Cyndala NPC210,{ + @npcname$ = "Cyndala"; + + mes "[" + @npcname$ + "]"; + mes "\"I used to visit the beach, but then the green slimes went crazy. I heard they ate a bunch of pirates that robbed some of Tulimshar's gold ships.\""; + next; + mes "\"Good riddance!\""; + @npcname$ = ""; + close; +} +001-1,100,79,0 script Marikel NPC211,{ + @npcname$ = "Marikel"; + + mes "[" + @npcname$ + "]"; + mes "\"Working on the docks can be hard nowadays.\""; + next; + mes "\"At least it pays well.\""; + menu + "Why does it pay well?",L_Marikel_1, + "Pfft! Working on the docks is for the birds.",L_Marikel_2; + +L_Marikel_1: + mes "[" + @npcname$ + "]"; + mes "\"Tulimshar is the wealthiest and most powerful city in the world!\""; + close; + +L_Marikel_2: + mes "[" + @npcname$ + "]"; + mes "\"Yeah, killing monsters may pay well, but I'd need more hazard pay than a tower mason to hunt monsters.\""; + next; + mes "\"I'll just play safe and stick to putting our stock away. Be careful, the monsters outside the city can be dangerous.\""; + next; + mes "\"The Sandstorm mine, just South of Tulimshar, is blocked from most but miners, soldiers and seasoned monster slayers.\""; + close; +} + +001-1,105,53,0 script Joelin NPC212,{ + @npcname$ = "Joelin"; + + mes "[" + @npcname$ + "]"; + mes "\"My ship's to set sail soon. We'll tour around the Acean Isles, then back around to Argaes, then here in Tonori.\""; + next; + mes "\"Tulimshar's Fleets also are sending exploration teams to build a dock in Nivalis on Kaizei, which I'm not really hoping for. It's cold up there!\""; + close; +} + +001-1,107,53,0 script Harper NPC213,{ + @npcname$ = "Harper"; + + mes "[" + @npcname$ + "]"; + mes "\"My captain knows an awlful lot about the world's continents.\""; + close; +} +001-1,75,99,0 script Swezanne NPC206,{ + @npcname$ = "Swezanne"; + + mes "[" + @npcname$ + "]"; + mes "\"Just through over this bridge is the bazaar. I go to the Bazaar and shop at Neko's.\""; + close; +} +001-1,92,107,0 script Michel NPC215,{ + @npcname$ = "Michel"; + + mes "[" + @npcname$ + "]"; + mes "\"Elanore is a magician in Southern Tulimshar that helps young adventurers by healing their battle wounds. When they are experienced enough, she stops healing them.\""; + next; + mes "\"You can find her by going out the south gate and to the east.\""; + @npcname$ = ""; + close; +} diff --git a/npc/001-1/panels.txt b/npc/001-1/panels.txt deleted file mode 100644 index 19d1fb11..00000000 --- a/npc/001-1/panels.txt +++ /dev/null @@ -1,57 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Panels to give advice and some random information to players. - -001-1,180,25,0 script #ArtisPanel1 NPC_NO_SPRITE,{ - narrator S_LAST_NEXT, - l("You step on something, a panel half overgrown by moss, it has writing on it..."); - - mesq l("Don't fall!"); - next; - mesq l("You've reached the highest natural place of Artis, enjoy the view."); - next; - - closeclientdialog; - close; - -OnInit: - .distance = 2; - end; -} - -001-1,95,51,0 script #ArtisPanel2 NPC_NO_SPRITE,{ - narrator S_LAST_NEXT, - l("You step on something, a shaky and fragile panel with barely visible inscriptions on it..."); - - mesq l("Beware of falling stones from the cliff!"); - next; - mesq l("The other part of this sign has been crushed by a rock."); - next; - - closeclientdialog; - close; - -OnInit: - .distance = 2; - end; -} - -001-1,103,66,0 script #ArtisPanel3 NPC_NO_SPRITE,{ - narrator S_LAST_NEXT, - l("You step on something, a panel with a bitten corner and clear inscriptions on it..."); - - mesq l("Warning! Dangerous fish, do not fall into the lake!"); - next; - narrator S_LAST_NEXT, - l("Somebody tried to stroke the word \"fish\" and tried to replace it with \"sharkes\"."); - - closeclientdialog; - close; - -OnInit: - .distance = 2; - end; -} - diff --git a/npc/001-1/pious.txt b/npc/001-1/pious.txt deleted file mode 100644 index 35e65048..00000000 --- a/npc/001-1/pious.txt +++ /dev/null @@ -1,15 +0,0 @@ -// Evol scripts. -// Author: -// Travolta -// Description: -// Pious on Market -// Variables: -// none - -001-1,55,119,0 script #MarketPiou1 NPC_MARKET_PIOU,{ - end; - -OnInit: - .distance = 2; - end; -} diff --git a/npc/001-1/qonan.txt b/npc/001-1/qonan.txt deleted file mode 100644 index f00a2cf3..00000000 --- a/npc/001-1/qonan.txt +++ /dev/null @@ -1,113 +0,0 @@ -// Evol scripts. -// Authors: -// Reid -// Travolta -// Description: -// Sailor of Nard's La Johanne ship. -// ArtisQuests_QOnan -- quest variable: -// 0 - not started -// 1 - Q'Onan asked to find Chest -// 2 - Chest found, heading back to Q'Onan -// 3 - Quest completed - -001-1,186,107,0 script Q'Onan#001-1 NPC_QONAN,{ - - .@q = getq(ArtisQuests_QOnan); - if (.@q == 1) goto L_QuestGiven; - if (.@q == 2) goto L_ItemFound; - if (.@q == 3) goto L_QuestDone; - - speech S_LAST_BLANK_LINE, - l("We haven't met, right?"), - l("My name is Q'Onan, I'm a member of Nard's crew."), - l("I have a lot of work here, so I don't even have time to go to the town."), - l("Could you do a small favor for me?"); - - switch (select(l("Go on."), l("I don't have the time sorry."))) - { - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("No problem, see you next time."); - closeclientdialog; - close; - } - - speech S_FIRST_BLANK_LINE | S_LAST_BLANK_LINE, - l("Before I joined Nard, I used to be a thief."), - l("I'm not proud of it, but I had to steal money from others to keep on living."), - l("Anyway, the last time I stole something I was almost caught."), - l("I robbed a nobleman, took a chest full of coins."), - l("But my luck left me, because as soon as I left his house, the guards started chasing me."), - l("It was at night, so I could barely escape. I ran to Artis hill."), - l("I was afraid to get busted, so I decided to get rid of the evidence."), - l("I buried the chest somewhere on that hill. It was dark, so I don't remember where to dig exactly."), - l("I'm afraid to go there myself, but if you take the risk, you can have half of the loot."), - l("So, what do you say?"); - - select - l("I like money! Consider it done."), - l("Too risky, I might end up in jail. Do it yourself."); - - switch(@menu) - { - case 1: - setq ArtisQuests_QOnan, 1; - getrandompoint(178,26,182,29); - npcdebug "Chest buriad at (" + .move__rand_x + "," + .move__rand_y + ")"; - shovel_addquest("001-1", .move__rand_x, .move__rand_y, "QOnanFoundItem"); - speech S_FIRST_BLANK_LINE | S_LAST_BLANK_LINE, - l("Alright, you will need this shovel."), - l("You should check on the highest part of the cliff, I was hiding there."), - l("I hope to see you soon."); - getitem IronShovel, 1; - // For questlog - setq2 ArtisQuests_QOnan, .move__rand_x+any(-1,1); - setq3 ArtisQuests_QOnan, .move__rand_y+any(-1,1); - close; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_BLANK_LINE, - l("Come on, don't be a coward!"), - l("Anyway, let me know if you change your mind."); - close; - } - -L_QuestGiven: - speech S_LAST_NEXT, l("I asked you to do me a favor, did you forget?"); - select l("What should I do, again?"); - speech S_FIRST_BLANK_LINE, - l("Please find the small chest, buried somewhere on Artis hill."), - l("You should check on the highest part of the cliff, I was hiding there."), - l("Bring it to me, and you will get your reward."); - close; - -L_ItemFound: - speech - l("After all this time, it was still there!"), - l("We are very lucky, my friend."), - l("Let me open it with my key."), - l("Like I promised, here is your share."), - l("I can finally pay off my debts."); - - Zeny += 1800; - setq ArtisQuests_QOnan, 3; - close; - -L_QuestDone: - speech l("Howdy, partner in crime?"); - close; - -OnInit: - .distance = 2; - .debug = 1; - end; -} - -function script QOnanFoundItem { - setq ArtisQuests_QOnan, 2, 0, 0; - // getitem SmallChest, 1; - narrator S_FIRST_BLANK_LINE, - l("You found a small chest, surprisingly heavy for it's size."), - l("It's probably full of coins, but no matter how hard you try to open it, you can't."), - l("Better take it back to Q'Onan."); - return; -} diff --git a/npc/001-1/qpid.txt b/npc/001-1/qpid.txt deleted file mode 100644 index 5976c9cf..00000000 --- a/npc/001-1/qpid.txt +++ /dev/null @@ -1,169 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Potion seller, she is part of the Enora's noob quests. - -001-1,65,116,0 script Q'Pid#001-1 NPC_QPID,{ - - function riddle_enigma { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Ok fine, you have up to 3 tries, here is the riddle:"), - l("What is growing and shrinking at the same time?"); - narrator S_LAST_NEXT, - l("You need to type the answer of this riddle in the NPC window."), - l("The answer is a single word, without conjugation."), - l("You can also answer in your native language or in English."); - - do - { - input .@answer$; - .@i++; - - if (riddlevalidation(.@answer$, "life", l("life"))) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh..."), - l("You seem more cultivated than you look."); - - if (getq(ArtisQuests_Enora) == 7) - { - setq(ArtisQuests_Enora, 9); - speech S_LAST_NEXT | S_NO_NPC_NAME, - l("Fine, take these potions, I will replenish them in the next couple hours anyway."); - } - - break; - } - else if (.@i < 3) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Too bad, try again."); - } - else - { - if (getq(ArtisQuests_Enora) == 7) - { - setq(ArtisQuests_Enora, 8); - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You failed!"), - l("Ivan is the one you should look for now."), - l("He is in a small house between the dock's warehouse and the dojo."), - l("Follow the canal to the north-east and you will find it."), - l("And get out of here, I'm not a map!"); - } - else - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You failed!"); - } - - break; - } - } while (true); - - return; - } - - function enora_quest { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("She wants? What if I don't want?"), - l("I'm not a pawn of the Legion, I don't have to obey you!"), - l("Oh and guess what! I'm almost out of potions anyway."); - - switch (select(l("And where can I find these potions?"), - l("You bored me, see you later."))) - { - case 1: - break; - case 2: - return; - } - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You don't seem to be from the Legion, let's do a game."), - l("If you find the correct answer, I will give you these potions..."), - l("But if you fail, you will have to get them from the alchemist."), - l("Deal?"); - - if (askyesno() == ASK_YES) - { - riddle_enigma; - } - return; - } - - function alchemist_information { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Do? I don't do them."), - l("I'm sure that you already knew the answer, didn't you?"), - l("You tried to embarrass me, am I right?!"), - l("It's Ivan... I'm sure that he sent you to annoy me..."), - l("I'm just a merchant, I trade and make deals, yes \"excuse\" me if I'm not as skilled as that stupid alchemist."), - l("But rare are those that receive grants from the Legion itself. For anybody else only a hard work can pay your bills!"); - emotion E_UPSET; - - switch (select(l("Sorry I didn't mean to bother you."), - l("You are just sitting on the shadow of your store."))) - { - case 1: - mes ""; - mesn; - break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("You are honest, I like it."); - break; - } - mesq l("Is that all you had to say?"); - next; - - return; - } - - speech S_LAST_NEXT, - l("What?"); - - do - { - .@enora = getq(ArtisQuests_Enora); - - select - rif(.@enora == 7, l("Enora wants her potions.")), - menuaction(l("Trade")), - rif(.@enora > 7, l("What was your riddle?")), - l("How do you do your potions?"), - l("What are you reading?"), - menuaction(l("Quit")); - - switch (@menu) - { - case 1: - enora_quest; - break; - case 2: - closeclientdialog; - shop "Store#Potion001-1"; - close; - case 3: - riddle_enigma; - break; - case 4: - alchemist_information; - break; - case 5: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("It's a poem, about poems... Why are you asking that?"), - l("Because I am a Kralog I can't read such things? That's rubbish."), - l("I borrowed it from the library, you should try to cultivate yourself more instead of insinuate things about people you don't know!"); - break; - } - } while (@menu != 6); - - closeclientdialog; - goodbye; - close; - -OnInit: - .distance = 3; - end; -} diff --git a/npc/001-1/rowboat.txt b/npc/001-1/rowboat.txt deleted file mode 100644 index ba07a1b0..00000000 --- a/npc/001-1/rowboat.txt +++ /dev/null @@ -1,69 +0,0 @@ -// Evol scripts. -// Author: -// Micksha, Toams -// Description: -// The rowboat, picking up the player on small beach in order to bring it to Koga. - -001-1,192,25,0 script #Rowboat NPC_ROWBOAT_STAND_WE,{ - if (.caller != getcharid(3)) { - mesn; - mesq l("Oh, hello. I am just observing the whales."); - next; - mesn; - mesq l("Nobody told me anything about you, unfortunately."); - close; - } - - speech S_LAST_BLANK_LINE | S_LAST_NEXT, - l("Oh, hi."), - l("In case you don't have a commendatory letter from you-know-whom, I am just sitting here and observe the whales."), - l("Perhaps, and only perhaps, if you bring me the latter, I can bring you to a ship that will perhaps, and only perhaps, be able to bring you to Woodland."), - l("Do you have this commendatory letter?"); - closeclientdialog(); - if (askyesno() == ASK_YES) { - if (getq(General_Brotherhood) >= 2) - { - //slide 227, 62; - //slide 204, 62; - PC_DEST$="Argaes"; - @timer_navio_running = 1; - addtimer 210000, "#MarineShip::OnEvent"; // This route is 30s slower - warp "marine-2", 40, 32; - dispbottom l("You're smuggled aboard the Legion expedition. ACT NATURALLY!"); - .caller=0; - .clocks=gettimetick(2); - movenpc("#Rowboat", 192, 25); - //setmount 1; - } - else - { - npctalk3 l("You're lying, aren't you? I heard nothing from you-know-whom!"); - } - close; - } - -OnMoveToBeach: - startnpctimer; - initialmove; -end; - -OnTimer1000: - getmapxy(.@map$, .@cx, .@cy, 1); - if (.@cx == 192 && .@cy == 25) stopnpctimer; - else domovestep; - -OnInit: - .distance = 3; - .speed = 175; - .caller = 0; - .clocks = 0; - - initpath "move", 202, 27, - "move", 213, 58, - "move", 203, 64, - "wait", 15, 0, - "move", 213, 58, - "move", 202, 27, - "move", 192, 25; - initnpctimer; -} diff --git a/npc/001-1/rowboathelper.txt b/npc/001-1/rowboathelper.txt deleted file mode 100644 index d7809bf0..00000000 --- a/npc/001-1/rowboathelper.txt +++ /dev/null @@ -1,141 +0,0 @@ -// Evol scripts. -// Author: -// Toams -// Description: -// helper scripts for rowboat usage -// Notes: -// Curious Hole bypass the cutscenes - -// calling the Rowboat -001-1,200,60,0 script Curious Hole NPC_NO_SPRITE,{ - - .@q = getq(General_Narrator); - - mesc l("You see a curious hole behind some rocks."); - next; - mesn strcharinfo(0); - mesq l("Hey, anyone there?"); - next; - mesc l("..."); - next; - if (.@q < 2) - { - mesc l("Altough you can't get rid of the feeling someone is listening on the other side, you don't get any replies."); - close; - } - else - { - narrator(S_LAST_BLANK_LINE | S_LAST_NEXT, - l("Suddenly you remember the strange phrase Mona overheard Sophialla saying"), - l("Maybe you should try this phrase?")); - if (askyesno() == ASK_YES) - { - mesn strcharinfo(0); - mesc l("Sagratha is great."); - next; - - if (getvariableofnpc(.caller, "#Rowboat")) { - // Can you use it, or is it in grace time? - if (getvariableofnpc(.clocks, "#Rowboat") > gettimetick(2)) { - mesn; - mesq l("Please be patient. Someone else is using the rowboat right now."); - close; - } - // Rowboat already there, so change owner - mesn; - mesq l("Hello, a rowboat is already on the beach. You can use it."); - set(getvariableofnpc(.caller, "#Rowboat"), getcharid(3)); - set(getvariableofnpc(.clocks, "#Rowboat"), gettimetick(2)+15); - close; - } - // Rowboat is at hideout, send it to you - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Hello, a rowboat is on his way to the beach. Please wait for a while for it to arrive."); - - set(getvariableofnpc(.caller, "#Rowboat"), getcharid(3)); - set(getvariableofnpc(.clocks, "#Rowboat"), gettimetick(2)+30); - doevent("#Rowboat::OnMoveToBeach"); - close; - } - else - close; - } - -OnInit: - .distance = 1; -} - -// UNUSED -//unmounting the rowboat at eastern beach -001-1,202,62,0 script unmountrowboateast NPC_HIDDEN,1,1,{ - - function UnMount { - narrator(S_LAST_BLANK_LINE | S_LAST_NEXT, - l("Do you want to leave the boat?")); - if (askyesno() == ASK_YES) - { - slide_or_warp("001-1", 199, 62); - setmount 0; - close; - } -} - -OnTouch: - UnMount; - end; - -OnInit: - .distance = 1; -} - - -//unmounting the rowboat at southern beach -001-1,68,143,0 script unmountrowboatsouth NPC_HIDDEN,1,1,{ - - function UnMount { - narrator(S_LAST_BLANK_LINE | S_LAST_NEXT, - l("Do you want to leave the boat?")); - if (askyesno() == ASK_YES) - { - slide_or_warp("001-1", 68, 138); - setmount 0; - close; - } -} - -OnTouch: - UnMount; - end; - -OnInit: - .distance = 1; -} - - -//unmounting the rowboat at western beach -001-1,25,101,0 script unmountrowboatwest NPC_HIDDEN,1,1,{ - - function UnMount { - narrator(S_LAST_BLANK_LINE | S_LAST_NEXT, - l("Do you want to leave the boat?")); - if (askyesno() == ASK_YES) - { - slide_or_warp("001-1", 27, 101); - setmount 0; - close; - } -} - -OnTouch: - UnMount; - end; - -OnInit: - .distance = 1; -} - -function script ForcedUnmount { - setmount 0; - return; -} - diff --git a/npc/001-1/rumly.txt b/npc/001-1/rumly.txt deleted file mode 100644 index 6cc625ff..00000000 --- a/npc/001-1/rumly.txt +++ /dev/null @@ -1,225 +0,0 @@ -// Evol scripts. -// Author: -// Vasily_Makarov -// Description: -// Stat resetter. -// Variables: -// General_Rumly -// Values: -// 0 Player hasn't met Rumly -// 1 Last time player has told that he will never come back -// 2 Last time player has told that he will come back later -// 3 Player has already reset his stat -// Others: -// .@visited - Rumly actual variable -// .@wasSP - free status points before reset - -001-1,35,125,0 script Rumly#001-1 NPC_RUMLY,{ - - setnpcdir "Rumly#001-1", 2; - stopnpctimer; - initnpctimer; - - speech S_LAST_NEXT, - l("Hey you, do you have any @@s?", getitemlink(Plushroom)); - -L_Menu: - .@visited = getq(General_Rumly); - .@plush_count = lognbaselvl(1, 10); - - select - l("Plushrooms you say?"), - l("Who are you?"), - rif(.@visited > 0, l("Can you reset my stats please?")), - l("You are weird, I have to go sorry."); - - switch (@menu) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Wind and grass is nice and cool, so juicy sweet..."), - l("Our only wish to eat a plush, so juicy sweet..."); - goto L_Menu; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Why are you asking? And who are you too? I've never seen you around before..."), - l("Wait, are you one of those from the Legion of Gasaron? I didn't do anything wrong, I promise!"), - l("I... I just like to eat the purple and delightful... And natural, and..."); - - switch (select(l("Chill out I won't say anything."), - l("Yes I am and you are going to face justice!"))) - { - case 1: break; - case 2: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("No! No, no, my precious plushrooms! Don’t take me to them, they wants my precious."); - goto L_Quit; - } - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("I won't forget it, I swear on my precious plushrooms!"), - l("There is an unknown side effect to these plushrooms, they can free you from your past mistakes."), - l("You can use it to clear your stats, to start freshly if you see what I mean..."), - l("Bring me some of these plushrooms and I will show you how it works!"), - l("Although the more powerful you are, the more plushrooms you will need."); - - select - l("Sounds good!"), - rif(countitem(Plushroom) >= .@plush_count, l("I think I have enough plushrooms on me.")), - l("We will talk about it later."), - l("My stats are too good, I won't need it."); - - switch (@menu) - { - case 1: - if (.@visited < 2) - { - setq General_Rumly, 2; - } - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Great! Can't wait for some tasty mushrooms!"); - - goto L_Menu; - case 2: - goto L_ResetStats; - case 3: - goto L_Later; - case 4: - goto L_Never; - } - - case 3: - goto L_ResetStats; - case 4: - if (.@visited < 2) goto L_Quit; - - .@rand = rand(2); - - if (.@rand) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("See you! And come back with the plushrooms!"); - } - else - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh noes!"), - l("A rabbit!"), - l("He has a guns!"), - l("*Bang bang*"); - narrator S_LAST_NEXT, - l("Rumly is hiding behind the tree."); - } - - goto L_Quit; - } - -L_ResetStats: - if (.@visited == 1) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Changed your mind, uh?"), - l("Very good."), - l("Status point reset can't be undone. Do you really want this?"), - l("Are you sure about this?"); - } - else - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Are you sure about this?"); - } - -L_ConfirmReset: - switch (select(l("Yes, I am sure."), - l("I need to think about it..."), - l("I won't need it, thank you."))) - { - case 1: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Let me just have a quick look at you. Hm... I will need @@ @@s to reset your stats.", .@plush_count, getitemlink(Plushroom)); - - select - rif(countitem(Plushroom) >= .@plush_count, l("Here, take as many as you need, I have plenty!")), - rif(countitem(Plushroom) > 0 && countitem(Plushroom) < .@plush_count, l("I don't have enough plushrooms...")), - rif(countitem(Plushroom) == 0, l("Oh no, I don't have any plushroom on me right now.")), - l("I have to go, sorry."); - - if (@menu > 1) - { - goto L_Later; - } - - delitem Plushroom, .@plush_count; - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you."), - l("Now stand still... It should not take much time..."); - - .@wasSP = StatusPoint; - resetstatus; - if (.@visited < 3) - { - setq General_Rumly, 3; - } - if (StatusPoint == .@wasSP) - { - speech S_LAST_NEXT, - l("It seems that you have no status points to reset!"), - l("But the plushroom you brought was really awesome you know."), - l("Come back when you will really need me. And bring more plushrooms with you!"); - } - else - { - speech S_LAST_NEXT, - l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP), - l("Spend it wisely this time."), - l("But you are welcome to reset your stats again if you bring me some more plushrooms!"); - } - goto L_Quit; - - case 2: - goto L_Later; - case 3: - goto L_Never; - } - -L_Later: - if (.@visited < 2) - { - setq General_Rumly, 2; - } - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Come back soon, and bring @@s!", getitemlink(Plushroom)); - - goto L_Quit; - -L_Never: - if (.@visited < 2) - { - setq General_Rumly, 1; - } - - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("I am sure that you will change your mind."); - - goto L_Quit; - -L_Quit: - setnpcdir "Rumly#001-1", 4; - stopnpctimer; - initnpctimer; - - goodbye; - -OnTimer1800: - stopnpctimer; - - if (getnpcdir("Rumly#001-1") == 2) setnpcdir "Rumly#001-1", 6; - if (getnpcdir("Rumly#001-1") == 4) setnpcdir "Rumly#001-1", 8; - - end; - -OnInit: - end; -} diff --git a/npc/001-1/salem.txt b/npc/001-1/salem.txt deleted file mode 100644 index 913db476..00000000 --- a/npc/001-1/salem.txt +++ /dev/null @@ -1,219 +0,0 @@ -// Evol scripts. -// Author: -// Travolta -// Description: -// Trader on the market. One of his pious escaped and -// flies around the town. -// Variables: -// ArtisQuests_CatchPiou -- quest variable -// Quest states: -// 0 -- not started -// 1 -- trader asked to catch piou -// 2 -- quest finished -// Note: this script is ugly like hell - -001-1,57,118,0 script Salem#001-1 NPC_SALEM,{ - - function BuyPiou { - .@price = getarg(0); - mesq l("The piou costs @@ E.", .@price); - next; - select - l("Alright, I'll take one."), - l("I changed my mind."); - - mes ""; - mesn; - if (@menu == 2) - return 4; - if (Zeny < .@price) - { - mesq l("Don't you try to cheat an old merchant! You don't have enough money, you need @@ E.", .@price); - next; - - return 1; - } - if (!checkweight(PiouEgg, 1)) - { - mesq l("You can't carry another @@? What a shame.", PiouEgg); - next; - - return 2; - } - getinventorylist; - if (.@inventorylist_count >= 100) - { - mesq l("You don't have enough room in your backpack for a @@. Go stow some of your junk and come back.", PiouEgg); - next; - - return 3; - } - Zeny -= .@price; - getitem PiouEgg, 1; - ArtisQuests_PiousBought += 1; - mesq l("You take good care of your piou. Remember to feed it every day."); - - return 0; - } - -// if (2 == select("[debug]continue quest:[debug] start over")) -// { -// debugmes "Starting quest CatchPiou over"; -// setq ArtisQuests_CatchPiou, 0; -// } - - .@q = getq(ArtisQuests_CatchPiou); - @ArtisQuests_PiouPrice = 30000; - - if (.@q == 1) - { - if (.PiouCaught) - { - speech - l("Look who is back..."), - l("And with my piou. That's wonderful. I can only imagine how hard that little bugger was to catch!"), - l("Great, and as I promised, I give you a 90% discount on the @@ of your choice.", getitemlink(PiouEgg)); - next; - - @ArtisQuests_PiouPrice = 3000; - ArtisQuests_PiouDiscount = 1; - donpcevent strnpcinfo(3) + "::OnPiouFlee"; - setq ArtisQuests_CatchPiou, 2; - .@q = getq(ArtisQuests_CatchPiou); - - .LastPiouHunter$ = ""; - ArtisQuests_CatchPiou_Difficulcy = 0; - .@BoughtPiou = BuyPiou(@ArtisQuests_PiouPrice); - if (.@BoughtPiou == 0) - ArtisQuests_PiouDiscount = 0; - else if (.@BoughtPiou == 4) - speech S_FIRST_BLANK_LINE, l("See you next time!"); - - close; - } - else - { - speech - l("Look who is back..."), - l("So, where is my piou? You should not keep an old man waiting. Go and catch it like you said you would."); - next; - goto L_SalemMenuShop; - } - } - - speech S_LAST_NEXT, - l("Good day, my friend, come closer, come closer!"); - l("Just look at my goods for sale! Fresh fruits and vegetables were shipped only this morning. And for reasonable price, of course."); - -L_SalemMenuShop: - .@fexil = getq(ArtisQuests_Fexil); - - select - l("What about those pious? They look so cute."), - l("Let's trade."), - rif(.@q != 0, l("I'd like to buy a piou.")), - rif(.@fexil == 1, l("I'm looking for somebody named Fexil.")), - menuaction(l("Quit")); - - switch (@menu) - { - case 1: - goto L_AboutPious; - break; - case 2: - closeclientdialog; - shop "Store#General001-1"; - close; - case 3: - if (.@q == 2 && ArtisQuests_PiouDiscount) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("You still have a 90% discount on one piou."); - @ArtisQuests_PiouPrice = 3000; - } - if (!BuyPiou(@ArtisQuests_PiouPrice)) - ArtisQuests_PiouDiscount = 0; - break; - case 4: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("I think that I've seen this weakling wandering around the beach south from here this morning."); - break; - } - - closeclientdialog; - goodbye; - close; - -L_AboutPious: - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Ah, the locals like keeping them as pets."), - l("With proper training, a piou can become a good friend and faithful companion in your adventures."); - - if (getq(ArtisQuests_CatchPiou) >= 2) - { - goto L_SalemMenuShop; - } - - mesq l("Their price is usually high, but you know what? I have a bargain offer for you."); - next; - mesq l("These little pious here can't fly. At least that's what I thought."); - next; - mesq l("One of these little boogers started flying early, and escaped from me."); - next; - mesq l("It's still too young to fly too far away, so it just circles nearby."); - next; - mesq l("But I can't leave to catch it, so I'm asking you."); - next; - mesq l("If you catch the escaped piou and bring it back, I will give you a 90% discount on a piou."); - next; - - select - rif(.@q == 0, l("Sounds like a good deal to me. I'll do it.")), - rif(.@q == 1, l("I'm on my way! I will bring it back to you.")), - l("I don't really have time to go chasing pious, let me just buy one at the regular price (30000 E)."), - l("I don't want to buy a piou right now."); - - mes ""; - mesn; - - switch (@menu) - { - case 1: - goto L_QuestInfo; - case 3: - BuyPiou @ArtisQuests_PiouPrice; - } - closeclientdialog; - goodbye; - close; - -L_QuestInfo: - mesq l("The little piou is flying nearby, all you need is to catch it and bring back to me."); - next; - setq ArtisQuests_CatchPiou, 1; - ArtisQuests_CatchPiou_Difficulcy = 2; - mesq l("Good luck!"); - close; - -OnPiouFlee: - sleep 120000; - if (!.PiouCaught) - end; - .PiouCaught = 0; - .@piou$ = "#FlyingPiou1"; - if (getstrlen(.LastPiouHunter$) > 0) - { - message .LastPiouHunter$, .PiouEscapedMessage$; - .LastPiouHunter$ = ""; - } - // debugmes "The piou escaped from " + .LastPiouHunter$; - sleep 60000; - enablenpc .@piou$; - movenpc .@piou$, 53, 117; - donpcevent .@piou$ + "::OnInit"; - end; - -OnInit: - .distance = 5; - end; -} diff --git a/npc/001-1/sewer_east.txt b/npc/001-1/sewer_east.txt new file mode 100755 index 00000000..1311b536 --- /dev/null +++ b/npc/001-1/sewer_east.txt @@ -0,0 +1,15 @@ + +001-1,117,110,0 script #tulimsharsewer2 NPC45,0,0,{ + mes "Descend into the sewers?"; + next; + menu + "Yes.", L_Sewer, + "Nevermind.", L_close; + +L_Sewer: + warp "021-3",143,129; + goto L_close; + +L_close: + close; +} diff --git a/npc/001-1/sewer_north.txt b/npc/001-1/sewer_north.txt new file mode 100755 index 00000000..6a77a9b4 --- /dev/null +++ b/npc/001-1/sewer_north.txt @@ -0,0 +1,15 @@ + +001-1,58,83,0 script #tulimsharsewer1 NPC45,0,0,{ + mes "Descend into the sewers?"; + next; + menu + "Yes.", L_Sewer, + "Nevermind.", L_close; + +L_Sewer: + warp "021-3",57,100; + goto L_close; + +L_close: + close; +} diff --git a/npc/001-1/shop.txt b/npc/001-1/shop.txt deleted file mode 100644 index f33ee4ac..00000000 --- a/npc/001-1/shop.txt +++ /dev/null @@ -1,298 +0,0 @@ -// Evol scripts. -// Authors: -// 4144 -// Reid -// Description: -// Market shops. - -001-1,46,135,0 trader Bag#001-1 NPC_SHOP_BAG,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem PiouLegs, -1, 15; - sellitem Bread, -1, 15; - sellitem Croconut, -1, 50; - sellitem Aquada, -1, 50; - sellitem Armbands, -1, 20; - sellitem LousyMoccasins, -1, 20; - sellitem PiouSlayer, -1, 15; - - .distance = 3; - end; - -OnClock0000: - restoreshopitem PiouLegs, 15; - restoreshopitem Bread, 15; - restoreshopitem Croconut, 50; - restoreshopitem Aquada, 50; - restoreshopitem Armbands, 20; - restoreshopitem LousyMoccasins, 20; - restoreshopitem PiouSlayer, 15; -} - -001-1,46,125,0 trader Cotton#Dye001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem BlackCottonDye, -1, 10; - sellitem SilverCottonDye, -1, 10; - sellitem CamelCottonDye, -1, 10; - sellitem BrownCottonDye, -1, 10; - sellitem OrangeCottonDye, -1, 10; - sellitem DarkRedCottonDye, -1, 10; - sellitem RedCottonDye, -1, 10; - sellitem FuschiaCottonDye, -1, 10; - sellitem PinkCottonDye, -1, 10; - sellitem MauveCottonDye, -1, 10; - sellitem PurpleCottonDye, -1, 10; - sellitem NavyBlueCottonDye, -1, 10; - sellitem BlueGrayCottonDye, -1, 10; - sellitem BlueCottonDye, -1, 10; - sellitem TealCottonDye, -1, 10; - sellitem GreenCottonDye, -1, 10; - sellitem LimeCottonDye, -1, 10; - sellitem KhakiCottonDye, -1, 10; - sellitem YellowCottonDye, -1, 10; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem BlackCottonDye, 10; - restoreshopitem SilverCottonDye, 10; - restoreshopitem CamelCottonDye, 10; - restoreshopitem BrownCottonDye, 10; - restoreshopitem OrangeCottonDye, 10; - restoreshopitem DarkRedCottonDye, 10; - restoreshopitem RedCottonDye, 10; - restoreshopitem FuschiaCottonDye, 10; - restoreshopitem PinkCottonDye, 10; - restoreshopitem MauveCottonDye, 10; - restoreshopitem PurpleCottonDye, 10; - restoreshopitem NavyBlueCottonDye, 10; - restoreshopitem BlueGrayCottonDye, 10; - restoreshopitem BlueCottonDye, 10; - restoreshopitem TealCottonDye, 10; - restoreshopitem GreenCottonDye, 10; - restoreshopitem LimeCottonDye, 10; - restoreshopitem KhakiCottonDye, 10; - restoreshopitem YellowCottonDye, 10; -} - -001-1,48,125,0 trader Silk#Dye001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem PitchBlackSilkDye, -1, 7; - sellitem ChocolateSilkDye, -1, 7; - sellitem CrimsonSilkDye, -1, 7; - sellitem TomatoSilkDye, -1, 7; - sellitem GoldenrodSilkDye, -1, 7; - sellitem SunflowerSilkDye, -1, 7; - sellitem OliveSilkDye, -1, 7; - sellitem SeaGreenSilkDye, -1, 7; - sellitem MintSilkDye, -1, 7; - sellitem MidnightBlueSilkDye, -1, 7; - sellitem SlatBlueSilkDye, -1, 7; - sellitem OrchidSilkDye, -1, 7; - sellitem PinkiePinkSilkDye, -1, 7; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem PitchBlackSilkDye, -1, 7; - restoreshopitem ChocolateSilkDye, -1, 7; - restoreshopitem CrimsonSilkDye, -1, 7; - restoreshopitem TomatoSilkDye, -1, 7; - restoreshopitem GoldenrodSilkDye, -1, 7; - restoreshopitem SunflowerSilkDye, -1, 7; - restoreshopitem OliveSilkDye, -1, 7; - restoreshopitem SeaGreenSilkDye, -1, 7; - restoreshopitem MintSilkDye, -1, 7; - restoreshopitem MidnightBlueSilkDye, -1, 7; - restoreshopitem SlatBlueSilkDye, -1, 7; - restoreshopitem OrchidSilkDye, -1, 7; - restoreshopitem PinkiePinkSilkDye, -1, 7; -} - -001-1,64,114,0 trader Store#Aquada001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem Aquada, -1, 50; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem Aquada, 20; -OnClock0800: - restoreshopitem Aquada, 20; -OnClock1600: - restoreshopitem Aquada, 20; -} - -001-1,72,126,0 trader Store#SeaStore001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem Aquada, -1, 10; - sellitem UrchinMeat, -1, 20; - sellitem SmallTentacles, -1, 30; - sellitem Tentacles, -1, 15; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem Aquada, 3; - restoreshopitem UrchinMeat, 12; - restoreshopitem SmallTentacles, 4; -OnClock0800: - restoreshopitem Aquada, 6; - restoreshopitem UrchinMeat, 8; - restoreshopitem Tentacles, 8; - restoreshopitem SmallTentacles, 2; -OnClock1600: - restoreshopitem Aquada, 5; - restoreshopitem UrchinMeat, 10; - restoreshopitem SmallTentacles, 7; -} - -001-1,72,129,0 trader Store#FishStore001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem CommonCarp, -1, 8; - sellitem GrassCarp, -1, 7; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem CommonCarp, 3; - restoreshopitem GrassCarp, 2; -OnClock0800: - restoreshopitem CommonCarp, 2; - restoreshopitem GrassCarp, 3; -OnClock1600: - restoreshopitem CommonCarp, 3; - restoreshopitem GrassCarp, 4; -} - -001-1,48,116,0 trader Store#Manana001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem Manana, -1, 60; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem Manana, 20; -OnClock0800: - restoreshopitem Manana, 15; -OnClock1600: - restoreshopitem Manana, 20; -} - -001-1,53,123,0 trader Store#Various001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem Manana, -1, 30; -// Add soft drinks. - - .distance = 4; - end; - -OnClock0000: - restoreshopitem Manana, 10; -OnClock0800: - restoreshopitem Manana, 15; -OnClock1600: - restoreshopitem Manana, 6; -} - -001-1,67,116,0 trader Store#Potion001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem PiberriesInfusion, -1, 200; - sellitem FatesPotion, -1, 100; - sellitem ClothoLiquor, -1, 50; - sellitem LachesisBrew, -1, 30; - sellitem AtroposMixture, -1, 10; - sellitem ElixirOfLife, -1, 1; - - .distance = 4; - end; - -OnClock0000: - restoreshopitem PiberriesInfusion, 150; - restoreshopitem FatesPotion, 80; - restoreshopitem ClothoLiquor, 40; - restoreshopitem LachesisBrew, 20; - restoreshopitem AtroposMixture, 7; - restoreshopitem ElixirOfLife, 1; -OnClock1200: - restoreshopitem PiberriesInfusion, 80; - restoreshopitem FatesPotion, 40; - restoreshopitem ClothoLiquor, 20; - restoreshopitem LachesisBrew, 10; - restoreshopitem AtroposMixture, 4; -} - -001-1,58,119,0 trader Store#General001-1 NPC_NO_SPRITE,{ - -OnInit: - tradertype(NST_MARKET); - - sellitem Manana, -1, 100; - sellitem Carrot, -1, 80; - sellitem Aquada, -1, 50; - sellitem Plushroom, -1, 100; - sellitem Curshroom, -1, 80; - sellitem Piberries, -1, 150; - sellitem PiouEgg, -1, 25; -// Add soft drinks. - - .distance = 4; - end; - -OnClock0000: - restoreshopitem Manana, 50; - restoreshopitem Carrot, 40; - restoreshopitem Aquada, 30; - restoreshopitem Plushroom, 40; - restoreshopitem Curshroom, 30; - restoreshopitem Piberries, 40; - restoreshopitem PiouEgg, 10; -OnClock0800: - restoreshopitem Manana, 30; - restoreshopitem Carrot, 30; - restoreshopitem Aquada, 30; - restoreshopitem Plushroom, 40; - restoreshopitem Curshroom, 30; - restoreshopitem Piberries, 70; - restoreshopitem PiouEgg, 10; -OnClock1600: - restoreshopitem Manana, 40; - restoreshopitem Carrot, 40; - restoreshopitem Aquada, 20; - restoreshopitem Plushroom, 20; - restoreshopitem Curshroom, 20; - restoreshopitem Piberries, 30; - restoreshopitem PiouEgg, 5; -} diff --git a/npc/001-1/sign.txt b/npc/001-1/sign.txt deleted file mode 100644 index ecd115be..00000000 --- a/npc/001-1/sign.txt +++ /dev/null @@ -1,168 +0,0 @@ -// Evol scripts. -// Authors: -// Ablu -// Reid -// Description: -// Sign pillars aside Artis houses. - -001-1,73,119,0 script Sign#001-1-s-market NPC_NO_SPRITE,{ - npctalkonce l("Market Place"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,48,122,0 script Sign#001-1-s-marketright NPC_NO_SPRITE,{ - npctalkonce l("Market Place"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,57,88,0 script Sign#001-1-s-marketdir NPC_NO_SPRITE,{ - npctalkonce l("↓ Market Place"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,55,86,0 script Sign#001-1-s-exit-l-dir NPC_NO_SPRITE,{ - npctalkonce l("← Exit"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,59,85,0 script Sign#001-1-s-legiondir NPC_NO_SPRITE,{ - npctalkonce l("↑ Legion"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,57,80,0 script Sign#001-1-s-library NPC_NO_SPRITE,{ - npctalkonce l("Library"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,57,71,0 script Sign#001-1-s-lightarmor NPC_NO_SPRITE,{ - npctalkonce l("Light Armor Shop"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,53,56,0 script Sign#001-1-s-legion NPC_OFFSET_NO_SPRITE,{ - npctalkonce l("Legion of Aemil"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,60,56,0 script Sign#001-1-s-legionright NPC_OFFSET_NO_SPRITE,{ - npctalkonce l("Legion of Aemil"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,91,66,0 script Sign#001-1-s-cityhall NPC_NO_SPRITE,{ - npctalkonce l("City Hall"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,95,111,0 script Sign#001-1-s-blacksmith NPC_NO_SPRITE,{ - npctalkonce l("Blacksmith"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,115,88,0 script Sign#001-1-s-inn NPC_NO_SPRITE,{ - npctalkonce l("Inn"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,134,85,0 script Sign#001-1-s-innright NPC_OFFSET_NO_SPRITE,{ - npctalkonce l("Inn"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,118,36,0 script Sign#001-1-s-merchantg NPC_NO_SPRITE,{ - npctalkonce l("Merchant Guild"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,171,48,0 script Sign#001-1-s-hill NPC_OFFSET_NO_SPRITE,{ - npctalkonce l("Hill & Cliff"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,161,72,0 script Sign#001-1-s-alchemist NPC_NO_SPRITE,{ - npctalkonce l("Alchemist's Laboratory"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,175,76,0 script Sign#001-1-s-warehouse NPC_NO_SPRITE,{ - npctalkonce l("Docks Warehouse"); - close; - -OnInit: - .distance = 1; - end; -} - -001-1,47,97,0 script Sign#001-1-s-barber NPC_NO_SPRITE,{ - npctalkonce l("Barber"); - close; - -OnInit: - .distance = 1; - end; -} diff --git a/npc/001-1/sophialla.txt b/npc/001-1/sophialla.txt deleted file mode 100644 index f44ef218..00000000 --- a/npc/001-1/sophialla.txt +++ /dev/null @@ -1,88 +0,0 @@ -// Evol scripts. -// Author: -// Micksha -// Description: -// Sophialla, the connection between Artis and the Brotherhood in Hurns. -// THIS IS A PLACEHOLDER! - -001-1,73,40,0 script Sophialla#001-1 NPC_SOPHIALLA,{ - .@q=getq(General_Brotherhood); - if (!.@q) - { - speech - l("Hello."), - l("Can't you see I am reading? Please go, please."); - // Please go, please? What? - close; - } - speech - l("Hello."), - l("Can't you see I am reading? If you need something, tell me the secret password."); - // TODO: Use a token to know password or whatever - // PS. "Sagratha" is not a typo. - select - l("Sorry to disturb you."), - rif(getq(ArtisQuests_MonaDad) == 3, l("Sagratha is great.")), - l("I don't know the password"); - mes ""; - if (@menu == 2) - { - speech - l("If you visit the sewers again... You'll find secret passages..."), - l("Look for the hideout, but tell no one about this. Then, say the password again."); - compareandsetq General_Brotherhood, 1, 2; - } - else if (@menu == 3) - { - mesn; - mesq l("If I just told you, it would not be a password anymore, right?"); - next; - mesn; - mesq l("I'm afraid you'll need to figure that out on your own."); - next; - mesn; - mesq l("This password is very secret. I don't think you would learn it even if you rescued someone missing for weeks."); - // Extra hint (TODO: Logic is crappy) - if (@sophiahalla_needhelp) { - next; - mesn; - mesq l("Actually, there is an ex-legion member whose daughter used to play nearby... How was she called? Mona I think?"); - next; - mesn; - mesq l("...Ah! Nevermind, I was talking to myself."); - } - @sophiahalla_needhelp=true; - next; - mesc l("%s sighs.", .name$); - } - - speech - l("If you don't know it, just go, please."); - close; - -OnLegionComplete: - restorecam; - mesn "???"; - mesc l("A strange voice seems to be calling out your name."); - next; - // NOTE: Sophialla is more than 15 tiles of distance from player - // Server refuses to send client data about where she is and that makes - // setcamnpc fail. This is why I set .alwaysVisible attribute to true. - // Note: you can work around with coordinates, but she won't be drawn. - setcamnpc "Sophialla#001-1"; - mesn; - mesq l("Hey. ppst. I have something important to tell you."); - next; - mesn; - mesq l("I just can't remember what. But come talk to me later once devs becomes less lazy."); - setq General_Brotherhood, 1; - next; - restorecam; - closeclientdialog; - close; - -OnInit: - .distance = 2; - .alwaysVisible = true; - end; -} diff --git a/npc/001-1/stat_reset.txt b/npc/001-1/stat_reset.txt new file mode 100755 index 00000000..ab326064 --- /dev/null +++ b/npc/001-1/stat_reset.txt @@ -0,0 +1,6 @@ + +001-1,117,105,0 script Malivox NPC103,{ + @npcname$ = "Malivox"; + callfunc "StatReset"; + close; +} diff --git a/npc/001-1/taree.txt b/npc/001-1/taree.txt deleted file mode 100644 index 676a855a..00000000 --- a/npc/001-1/taree.txt +++ /dev/null @@ -1,20 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Mouboo farmer. - -001-1,68,79,0 script Taree NPC_ELVEN_MAN_MOUBOO_SHOP,{ - mesn; - mesq l("Moo!"); - - goto L_Close; - -L_Close: - close; - -OnInit: - .distance = 3; - end; -} - diff --git a/npc/001-1/tinris.txt b/npc/001-1/tinris.txt new file mode 100755 index 00000000..2f5fcc0f --- /dev/null +++ b/npc/001-1/tinris.txt @@ -0,0 +1,186 @@ +001-1,69,29,0 script Tinris NPC160,{ + @cake_exp = 50; + @sweater_exp = 400; + + @slime_amount1 = 6; + @slime_amount2 = 4; + @bugleg_amount1 = 4; + @bugleg_amount2 = 5; + @stinger_amount1 = 3; + @stinger_amount2 = 2; + @ash_amount1 = 1; + @ash_amount2 = 2; + @cactusp_amount = 1; + + if (.@q >= 12) goto L_Done; + if (.@q == 11) goto L_GiveGift; + if (.@q == 9) goto L_FertilizerDone; + if (.@q >= 7) goto L_Eomie; + if (.@q == 6) goto L_SecondTry; + if (.@q >= 4) goto L_FirstTryDone; + if (.@q == 3) goto L_FirstTry; + if (.@q == 2) goto L_Annual; + + mesn; + mes "\"This is a magic school. I'm a student here and focus on ways to magically enhance growth of plants."; + mes "That topic is very important in a desert area.\""; + if (.@q != 1) + goto L_Close; + menu + "The farmer Anwar sent me to ask for exactly that! Can you give me something for his field?",L_Next; + +L_Next: + mesn; + mes "\"Well... in principle yes. I can try to prepare something for him. But...\""; + next; + mes "\"The thing is, my girlfriend and I have our anniversary today. And the teachers won't let me leave the campus to get something for her!"; + mes "Please go to the bakery and buy a Chocolate Cake for me. She loves Chocolate Cakes.\""; + next; + mes "\"When I have a present for her I can focus on creating some magic fertilizer.\""; + .@q = 2; + goto L_Close; + +L_Annual: // .@q == 2 + mesn; + mes "\"Hello, did you get the Chocolate Cake for my girlfriend? After that I can focus on creating some magic fertilizer for you.\""; + menu + "Fresh from the bakery!",L_FreshFrom, + "I didn't get it yet.",L_Close; + +L_FreshFrom: + if (countitem("ChocolateCake") < 1) + goto L_NoItem; + delitem "ChocolateCake", 1; + getexp @cake_exp, 0; + .@q = 3; + mesn; + mes "\"Oh, thank you! You saved me!"; + mes "All right, now we can start with the magic fertilizer.\""; + next; + goto L_FirstTry; + +L_FirstTry: + // .@q == 3 + mesn; + mes "\"You need to bring me some ingredients."; + mes "The ingredients are " + @slime_amount1 + " Maggot Slimes, " + @bugleg_amount1 + " Bug Legs, " + @stinger_amount1 + " Scorpion Stingers and " + @ash_amount1 + " Piles of Ash.\""; + menu + "I have it.",L_Continue, + "Ok, I'll go and get it.",L_Close; + +L_Continue: + if ((countitem("MaggotSlime") < @slime_amount1) || (countitem("BugLeg") < @bugleg_amount1) || (countitem("ScorpionStinger") < @stinger_amount1) || (countitem("PileOfAsh") < @ash_amount1)) + goto L_NoItem; + delitem "MaggotSlime", @slime_amount1; + delitem "BugLeg", @bugleg_amount1; + delitem "ScorpionStinger", @stinger_amount1; + delitem "PileOfAsh", @ash_amount1; + .@q = 4; + mes "Tinris takes the things and starts to mix them together while mumbling some invocations."; + misceffect sfx_magic_nature; + next; + mesn; + mes "\"Ok. This should do it. But I'm not sure. I'm still researching this topic."; + mes "Here, bring this to Anwar.\""; + mes "He gives you a bottle with the magic fertilizer. You put it away in a separate pocket, so it doesn't get mixed with your inventory."; + goto L_Close; + +L_FirstTryDone: // .@q >= 4 but below 6 + mesn; + mes "\"Bring the fertilizer to Anwar and let me know if it worked.\""; + if (.@q != 5) + goto L_Close; + menu + "I did, the plants went brown and shriveled.",L_More; + +L_More: + .@q = 6; + goto L_SecondTry; + +L_SecondTry: + // .@q == 6 + mesn; + mes "\"Oh no! All right, we need to do another try."; + mes "Bring me " + @slime_amount2 + " Maggot Slimes, " + @bugleg_amount2 + " Bug Legs, " + @stinger_amount2 + " Scorpion Stingers, " + @ash_amount2 + " Piles of Ash and " + @cactusp_amount + " Cactus Potion.\""; + menu + "Here it is.",L_HereItIs, + "Ok, I'll go and get it.",L_Close; + +L_HereItIs: + if ((countitem("MaggotSlime") < @slime_amount2) || (countitem("BugLeg") < @bugleg_amount2) || (countitem("ScorpionStinger") < @stinger_amount2) || (countitem("PileOfAsh") < @ash_amount2) || (countitem("CactusPotion") < @cactusp_amount)) + goto L_NoItem; + delitem "MaggotSlime", @slime_amount2; + delitem "BugLeg", @bugleg_amount2; + delitem "ScorpionStinger", @stinger_amount2; + delitem "PileOfAsh", @ash_amount2; + delitem "CactusPotion", @cactusp_amount; + .@q = 7; + mes "Tinris takes the things and starts to mix and mumble again."; + misceffect sfx_magic_nature; + next; + mes "It takes quite a while."; + next; + mes "He looks rather stressed while working on the mixture."; + next; + mes "He sighs."; + mesn; + mes "\"Mh, I think the mixture itself is good. But I can't get the spells right. Maybe you should ask Professor Eomie to cast it; she's a genius with nature magic.\""; + mes "He gives you the bottle with the magic fertilizer."; + goto L_Close; + +L_Eomie: + // .@q >= 7 but below 9 + mesn; + mes "\"I did the best I could, but it seems I'm not experienced enough to cast the spells correctly. Better ask Professor Eomie for help.\""; + goto L_Close; + +L_FertilizerDone: + // .@q == 9 + mesn; + mes "\"I heard Eomie cast the spell? I really hope it'll work this time. Bring the magic fertilizer to Anwar now.\""; + goto L_Close; + +L_GiveGift: + // .@q == 11 + mesn; + mes "\"Ah, did Anwar try the new fertilizer?\""; + menu + "Yes, it works great and he asked me to give you this Green V-Neck Sweater he made.",L_ItWorksGreat, + "Not yet.",L_Close; + +L_ItWorksGreat: + if (countitem("GreenVNeckSweater") < 1) + goto L_NoItem; + delitem "GreenVNeckSweater", 1; + getexp @sweater_exp, 0; + .@q = 12; + mesn; + mes "\"Hey, that's really nice. Tell him my thanks.\""; + goto L_Close; + +L_Done: + // .@q >= 12 + mesn; + mes "\"My girlfriend was delighted with the Chocolate Cake and Professor Eomie was happy with my work on the magic fertilizer.\""; + mes "He twinkles."; + mesn; + mes "\"We're a good team.\""; + goto L_Close; + +L_NoItem: + mesn; + mes "\"You don't have it!\""; + goto L_Close; + +L_Close: + @slime_amount1 = 0; + @slime_amount2 = 0; + @bugleg_amount1 = 0; + @bugleg_amount2 = 0; + @stinger_amount1 = 0; + @stinger_amount2 = 0; + @ash_amount1 = 0; + @ash_amount2 = 0; + @cactusp_amount = 0; + close; +} diff --git a/npc/001-1/tombstones.txt b/npc/001-1/tombstones.txt new file mode 100755 index 00000000..ce7a9ae8 --- /dev/null +++ b/npc/001-1/tombstones.txt @@ -0,0 +1,65 @@ + +001-1,56,103,0 script RIP#1 NPC400,{ + + mes "~ wushin ~"; + mes "\"Tonori swallowed him whole.\""; + close; +} + +001-1,57,103,0 script RIP#2 NPC400,{ + + mes "~ Nard ~"; + mes "\"Crushed by a loom.\""; + close; +} + +001-1,58,103,0 script RIP#3 NPC400,{ + + mes "~ tux9th ~"; + mes "\"Eaten by bugs.\""; + close; +} + +001-1,59,103,0 script RIP#4 NPC400,{ + + mes "~ o11c ~"; + mes "\"He asked for it, so they gave it to him.\""; + close; +} + +001-1,60,103,0 script RIP#5 NPC400,{ + + mes "~ " + strcharinfo(0) + " ~"; + mes "The epitath is blank and the grave freshly dug."; + close; +} +001-1,56,106,0 script RIP#6 NPC400,{ + + mes "~ Cassy ~"; + mes "\"Eaten by trolls.\""; + close; +} + +001-1,57,106,0 script RIP#7 NPC400,{ + mes "~ George ~"; + mes "\"Eaten by snakes.\""; + close; +} + +001-1,58,106,0 script RIP#8 NPC400,{ + mes "~ Kieron ~"; + mes "\"He was right; monsters were in the cave.\""; + close; +} + +001-1,59,106,0 script RIP#9 NPC400,{ + mes "~ William ~"; + mes "\"Kieron was definitely right.\""; + close; +} + +001-1,60,106,0 script RIP#10 NPC400,{ + mes "~ Tyer ~"; + mes "\"An experiement went wrong.\""; + close; +} diff --git a/npc/001-1/treeleaf.txt b/npc/001-1/treeleaf.txt deleted file mode 100644 index dd1280a6..00000000 --- a/npc/001-1/treeleaf.txt +++ /dev/null @@ -1,22 +0,0 @@ -// Evol scripts. -// Authors: -// Ablu -// Reid -// Description: -// Falling tree leaf - -001-1,39,54,4 script #treeleaf0 NPC_TREE_LEAF,{ - .dir = 2; - stopnpctimer; - initnpctimer; - close; - -OnTimer2800: - .dir = 4; - stopnpctimer; - end; - -OnInit: - .distance = 1; - end; -} diff --git a/npc/001-1/trees.txt b/npc/001-1/trees.txt deleted file mode 100644 index 8e090218..00000000 --- a/npc/001-1/trees.txt +++ /dev/null @@ -1,220 +0,0 @@ -// Evol scripts. -// Author: -// Travolta -// Description: -// Invisible tree NPCs for "Lazy Brother" quest -// Variables: -// ArtisQuests_LazyBrother = 19 -- quest var -// LazyBrother_TreesLeft = 15 -- how many trees left to search -// LazyBrother_TreeSearched[15] -- whether given tree was searched -// LazyBrother_TreeWithBrother -- the number of tree where he's hiding -// Quest states: -// 0 - quest not started -// 1 - Katja asked help, searching the trees -// 2 - Bobo is found, "bad" ending -// 3 - player decided to tell Katja where her brother is -// 4 - "good" ending, player helped Katja - -function script LazyBrotherTreeFunc { - .@q = getq(ArtisQuests_LazyBrother); - if (.@q == 0 || .@q >= 2) - return; - .@TreeNum = getarg(0); - if (LazyBrother_TreeWithBrother == .@TreeNum) - goto L_FoundHim; - if (LazyBrother_TreeWithBrother > 0) - { - mes l("You search the tree but don't find anybody."); - close2; - return; - } - if (LazyBrother_TreeSearched[.@TreeNum] == 1) - { - mes l("You already looked here."); - close2; - return; - } - else - { - LazyBrother_TreeSearched[.@TreeNum] = 1; - } - .@found = rand(1, LazyBrother_TreesLeft--); - if (.@found == 1) - { - mes l("You found him!"); - LazyBrother_TreeWithBrother = .@TreeNum; - next; - } - else - { - mes l("You search the tree but don't find anybody."); - close2; - return; - } - -L_FoundHim: - mes l("You notice a young boy sitting on one of the highest branches of the tree."); - next; - mes l("He is eating an apple, thoroughly enjoying it."); - next; - select(l("Hey there, are you Bobo, Katja's brother?")); - mes ""; - mesn "Bobo"; - mesq l("Yes, it's me. It's such a fine view from here!"); - next; - select(l("Your sister sent me to find you. Your mother is worried.")); - mes ""; - mesn "Bobo"; - mesq l("Oh, nooooo... If I go home now, my mum will give me chores."); - next; - mesq l("But if you tell my sister, that you didn't find me, I can stay here all day, eating apples and enjoying the view."); - next; - mesq l("I will give you my pocket money if you do."); - next; - switch (select(l("A small lie is really just a fib, and I could really use some cash..."), - l("I will not lie to a little girl! And your mother needs your help."))) - { - case 1: - mes ""; - mesn "Bobo"; - mesq l("Here you go."); - next; - mesn "Narrator"; - mes l("Somehow you don't feel good about your deed."); - // Karma -= 2; - setq ArtisQuests_LazyBrother, 2; - Zeny += 100; - getexp 500, 0; - break; - case 2: - mes ""; - mesn "Bobo"; - mesq l("Okay... Tell my sister I'll go home soon."); - setq ArtisQuests_LazyBrother, 3; - break; - } - LazyBrother_TreesLeft = 0; - LazyBrother_TreeWithBrother = 0; - cleararray LazyBrother_TreeSearched,0,15; - close; -} - -001-1,179,30,0 script #ArtisTree1 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(1); - end; -OnInit: - .distance = 1; - end; -} - -001-1,177,29,0 script #ArtisTree2 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(2); - end; -OnInit: - .distance = 1; - end; -} - -001-1,183,28,0 script #ArtisTree3 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(3); - end; -OnInit: - .distance = 1; - end; -} - -001-1,182,25,0 script #ArtisTree4 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(4); - end; -OnInit: - .distance = 1; - end; -} - -001-1,187,26,0 script #ArtisTree5 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(5); - end; -OnInit: - .distance = 1; - end; -} - -001-1,189,28,0 script #ArtisTree6 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(6); - end; -OnInit: - .distance = 1; - end; -} - -001-1,184,30,0 script #ArtisTree7 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(7); - end; -OnInit: - .distance = 1; - end; -} - -001-1,189,31,0 script #ArtisTree8 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(8); - end; -OnInit: - .distance = 1; - end; -} - -001-1,191,30,0 script #ArtisTree9 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(9); - end; -OnInit: - .distance = 1; - end; -} - -001-1,191,33,0 script #ArtisTree10 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(10); - end; -OnInit: - .distance = 1; - end; -} - -001-1,187,34,0 script #ArtisTree11 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(11); - end; -OnInit: - .distance = 1; - end; -} - -001-1,185,35,0 script #ArtisTree12 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(12); - end; -OnInit: - .distance = 1; - end; -} - -001-1,182,34,0 script #ArtisTree13 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(13); - end; -OnInit: - .distance = 1; - end; -} - -001-1,180,33,0 script #ArtisTree14 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(14); - end; -OnInit: - .distance = 1; - end; -} - -001-1,181,32,0 script #ArtisTree15 NPC_KATJA_TREE,{ - LazyBrotherTreeFunc(15); - end; -OnInit: - .distance = 1; - end; -} diff --git a/npc/001-1/wateranimation.txt b/npc/001-1/wateranimation.txt deleted file mode 100644 index eb9acc9d..00000000 --- a/npc/001-1/wateranimation.txt +++ /dev/null @@ -1,23 +0,0 @@ -// Evol scripts. -// Author: -// gumi -// Reid -// Description: -// Water animations, splash, fishes, etc... - -001-1,116,123,0 duplicate(#fish_basic) #water_animation0 NPC_WATER_SPLASH -001-1,119,102,0 duplicate(#fish_basic) #water_animation1 NPC_WATER_SPLASH -001-1,167,82,0 duplicate(#fish_basic) #water_animation2 NPC_WATER_SPLASH -001-1,167,40,0 duplicate(#fish_basic) #water_animation3 NPC_WATER_SPLASH -001-1,104,127,0 duplicate(#fish_basic) #water_animation4 NPC_WATER_SPLASH -001-1,166,123,0 duplicate(#fish_basic) #water_animation5 NPC_WATER_SPLASH -001-1,181,119,0 duplicate(#fish_basic) #water_animation6 NPC_WATER_SPLASH -001-1,202,114,0 duplicate(#fish_basic) #water_animation7 NPC_WATER_SPLASH -001-1,187,86,0 duplicate(#fish_basic) #water_animation8 NPC_WATER_SPLASH -001-1,32,57,0 duplicate(#fish_basic) #water_animation9 NPC_WATER_SPLASH -001-1,40,144,0 duplicate(#fish_basic) #water_animation10 NPC_WATER_SPLASH -001-1,58,131,0 duplicate(#fish_basic) #water_animation11 NPC_WATER_SPLASH -001-1,76,137,0 duplicate(#fish_basic) #water_animation12 NPC_WATER_SPLASH -001-1,109,132,0 duplicate(#fish_basic) #water_animation13 NPC_WATER_SPLASH -001-1,141,93,0 duplicate(#fish_basic) #water_animation14 NPC_WATER_SPLASH -001-1,168,57,0 duplicate(#fish_basic) #water_animation15 NPC_WATER_SPLASH diff --git a/npc/001-1/weellos.txt b/npc/001-1/weellos.txt new file mode 100755 index 00000000..b083b889 --- /dev/null +++ b/npc/001-1/weellos.txt @@ -0,0 +1,31 @@ +001-1,55,25,0 script Weellos NPC103,{ + @halloween_npc_id = $@halloween_npc_weellos; + callfunc "TrickOrTreat"; + + QUEST_NorthTulimshar = QUEST_NorthTulimshar | $@knowWeellosNT; + + if (isin("001-1", 48, 20, 61, 28)) goto L_In; + + mes "[Weellos]"; + mes "\"This is a very historic building – in fact, it's one of the oldest in the area.\""; + next; + mes "\"It's also the current seat of both the Council of Wizards and the Magic Institute of Tulimshar.\""; + next; + mes "\"Due to its historical significance, part of it has been turned into a museum.\""; + goto L_BeforeClose; + +L_In: + mes "[Weellos]"; + mes "\"What did you think? Isn't the building intriguing?\""; + goto L_BeforeClose; + +L_BeforeClose: + if (QL_KYLIAN != 4) + goto L_close; + next; + mes "You wonder if Kylian would be interested in seeing this historic landmark..."; + goto L_close; + +L_close: + close; +} diff --git a/npc/001-1/xilaxa.txt b/npc/001-1/xilaxa.txt deleted file mode 100644 index e1e66e91..00000000 --- a/npc/001-1/xilaxa.txt +++ /dev/null @@ -1,50 +0,0 @@ -// Evol scripts. -// Author: -// Reid -// Description: -// Moon, main NPC for the urchin quest. - -001-1,52,44,0 script Xilaxa#001-1 NPC_UKAR_MALE_LEGION_ARTIS,{ - - npc_pausemove(); - getmapxy(.@map$, .@cx, .@cy, 0); - npc_turntoxy(.@cx, .@cy); - npctalkonce("Hello."); - npc_resumemove(); - close; - -OnTimer1000: - dographmovestep; - -OnInit: - .distance = 5; - initmovegraph "mid", 54, 43, 60, 46, - "left", 47, 50, 52, 55, - "right", 62, 50, 67, 55; - - setmovegraphcmd "mid", "left", 1, "dir 0; wait 4", - "mid", "left", 4, "dir 2; wait 3; dir 0; wait 2; dir 6; wait 1; dir 0", - "mid", "left", 2, "dir 4; wait 5; dir 0; wait 2", - "mid", "left", 3, "dir 6; wait 1; dir 0; wait 3; dir 2; wait 3; dir 0", - "mid", "left", 1, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - "mid", "right", 3, "dir 0; wait 4", - "mid", "right", 4, "dir 2; wait 3; dir 0; wait 2; dir 6; wait 1; dir 0", - "mid", "right", 2, "dir 4; wait 5; dir 0; wait 2", - "mid", "right", 1, "dir 6; wait 1; dir 0; wait 3; dir 2; wait 3; dir 0", - "mid", "right", 2, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - - "left", "mid", 2, "dir 0; wait 4", - "left", "mid", 1, "dir 2; wait 3; dir 0; wait 2; dir 6; wait 1; dir 0", - "left", "mid", 3, "dir 4; wait 5; dir 0; wait 2", - "left", "mid", 2, "dir 6; wait 1; dir 0; wait 3; dir 2; wait 3; dir 0", - "left", "mid", 3, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5", - - "right", "mid", 3, "dir 0; wait 4", - "right", "mid", 2, "dir 2; wait 3; dir 0; wait 2; dir 6; wait 1; dir 0", - "right", "mid", 1, "dir 4; wait 5; dir 0; wait 2", - "right", "mid", 1, "dir 6; wait 1; dir 0; wait 3; dir 2; wait 3; dir 0", - "right", "mid", 2, "dir 0; wait 1; dir 2; wait 1; dir 0; wait 1; dir 6; wait 5"; - - firstmove "wait 5", "mid"; - initnpctimer; -} |