From dcc5bb5bf5a82e208a39c4595cb008d50966513c Mon Sep 17 00:00:00 2001 From: jesusalva Date: Thu, 8 Mar 2018 06:21:50 -0300 Subject: Fix all newlines, we should use UNIX endline, not Windows, DOS or Mac. --- npc/003-1/lieutenantdausen.txt | 818 ++++++++++++++++++++--------------------- npc/005-1/ayasha.txt | 620 +++++++++++++++---------------- npc/005-3/barrel.txt | 358 +++++++++--------- npc/functions/mobpoint.txt | 50 +-- 4 files changed, 923 insertions(+), 923 deletions(-) diff --git a/npc/003-1/lieutenantdausen.txt b/npc/003-1/lieutenantdausen.txt index 91570ca43..d15136ad4 100644 --- a/npc/003-1/lieutenantdausen.txt +++ b/npc/003-1/lieutenantdausen.txt @@ -1,409 +1,409 @@ -// TMW2 scripts. -// Authors: -// Saulc -// Description: -// Help Tulimshar guards -// Quest variable: -// TulimsharQuests_Guards -// Quest stages: -// 0 - not started -// 1 - Lieutenant Dausen asked for help Tulimshar guards -// 2 - completed - - -003-1,111,84,0 script Lieutenant Dausen NPC_PLAYER,{ - // This NPC is broken, so this code disables it - mesn; - mesq l("Greetings, citzen. I am @@, chief of the Tulimshar guards.", .name$); - close; - - - function quest_waterForGuard - { - setq TulimsharQuest_WaterForGuard, 1; - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Good luck !"); - close; - } - - .@has = getq(TulimsharQuest_WaterForGuard); - if (.@has == 0) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Hello can you help me?"); - do - { - select - l("Yes"), - menuaction(l("Quit")); - - switch (@menu) - { - case 1: - quest_waterForGuard; - break; - } - } while (@menu != 2); - } - else if (.@has == 1) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Not yet. Get level 255 and I'll reward you!"); - } - else if (.@has == 2) - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you, there is your reward"); - narrator("You receive 30 exp."); - getexp 30, 0; - setq TulimsharQuest_WaterForGuard, 3; - } - else - { - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Thank you for your help."); - } - - closedialog; - goodbye; - close; - -OnInit: - .sex = G_MALE; - .distance = 3; - end; -} - - -003-1,98,100,0 script Guard Philip NPC_GUARD1,{ - legiontalk; - if (getq(TulimsharQuest_WaterForGuard) == 1) - { - //CheckGuard(); // FIXME This is not Hide And Seek - } - end; - -OnTimer1000: - domovestep; - -OnInit: - - // Check items.xml for info about this - .@npcId = getnpcid(0, "Lieutenant Dausen"); - setunitdata(.@npcId, UDT_HEADTOP, 2906); - setunitdata(.@npcId, UDT_HEADMIDDLE, 1304); - setunitdata(.@npcId, UDT_HEADBOTTOM, 2201); - setunitdata(.@npcId, UDT_SHIELD, 1800); // TODO FIXME: Display Boots - setunitdata(.@npcId, UDT_WEAPON, 3504); - setunitdata(.@npcId, UDT_HAIRSTYLE, 7); - setunitdata(.@npcId, UDT_HAIRCOLOR, 17); - - initpath "move", 98, 104, - "dir", DOWN, 0, - "wait", 60, 0, - "move", 84, 100, - "dir", DOWN, 0, - "wait", 45, 0, - "move", 93, 110, - "dir", DOWN, 0, - "wait", 70, 0, - "move", 101, 106, - "dir", RIGHT, 0, - "wait", 12, 0, - "move", 98, 104, - "dir", DOWN, 0, - "wait", 68, 0, - "move", 93, 110, - "dir", DOWN, 0, - "wait", 90, 0, - "move", 111, 109, - "dir", DOWN, 0, - "wait", 11, 0; - initialmove; - initnpctimer; - .distance = 5; -} -003-1,98,121,0 script Guard Defou NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,102,121,0 script Guard Avou NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,58,158,0 script Guard Benji NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,62,158,0 script Guard Valou NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,71,138,0 script Guard Nutelo NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,58,128,0 script Guard Moustacha NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,58,100,0 script Guard Popaul NPC_GUARD1,{ - legiontalk; - end; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 58, 100, - "dir", DOWN, 0, - "wait", 100, 0, - "move", 62, 100, - "dir", DOWN, 0, - "wait", 35, 0, - "move", 62, 93, - "dir", DOWN, 0, - "wait", 48, 0, - "move", 58, 104, - "dir", DOWN, 0, - "wait", 55, 0, - "move", 54, 102, - "dir", RIGHT, 0, - "wait", 82, 0; - - initialmove; - initnpctimer; - .distance = 5; -} -003-1,51,73,0 script Guard Yen NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-2,41,37,0 script Guard Yuna NPC_GUARD2,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,54,52,0 script Guard Maxim NPC_GUARD1,{ - legiontalk; - end; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 54, 52, - "dir", DOWN, 0, - "wait", 85, 0, - "move", 54, 45, - "dir", DOWN, 0, - "wait", 70, 0, - "move", 67, 30, - "dir", LEFT, 0, - "wait", 11, 0, - "move", 49, 46, - "dir", DOWN, 0, - "wait", 55, 0, - "move", 31, 41, - "dir", LEFT, 0, - "wait", 6, 0, - "move", 35, 36, - "dir", UP, 0, - "wait", 9, 0, - "move", 49, 52, - "dir", DOWN, 0, - "wait", 70, 0; - initialmove; - initnpctimer; - .distance = 5; - -} -003-1,50,36,0 script Guard Totor NPC_GUARD1,{ - legiontalk; - end; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 50, 36, - "dir", DOWN, 0, - "wait", 45, 0, - "move", 50, 39, - "dir", DOWN, 0, - "wait", 35, 0, - "move", 35, 40, - "dir", UP, 0, - "wait", 1, 0, - "move", 33, 34, - "dir", DOWN, 0, - "wait", 12, 0; - initialmove; - initnpctimer; - .distance = 5; -} -003-1,53,36,0 script Guard Roukin NPC_GUARD1,{ - legiontalk; - end; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 53, 36, - "dir", DOWN, 0, - "wait", 60, 0, - "move", 56, 59, - "dir", DOWN, 0, - "wait", 1, 0, - "move", 61, 76, - "dir", RIGHT, 0, - "wait", 5, 0, - "move", 61, 105, - "dir", RIGHT, 0, - "wait", 8, 0, - "move", 59, 129, - "dir", LEFT, 0, - "wait", 4, 0, - "move", 60, 103, - "dir", UP, 0, - "wait", 1, 0, - "move", 56, 82, - "dir", LEFT, 0, - "wait", 7, 0, - "move", 56, 59, - "dir", UP, 0, - "wait", 1, 0, - "move", 53, 39, - "dir", DOWN, 0, - "wait", 25, 0; - initialmove; - initnpctimer; - .distance = 5; -} -003-1,35,34,0 script Guard Falko NPC_GUARD1,{ - legiontalk; - end; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 35, 34, - "dir", DOWN, 0, - "wait", 60, 0, - "move", 51, 38, - "dir", DOWN, 0, - "wait", 10, 0; - initialmove; - initnpctimer; - .distance = 5; -} -003-3,39,37,0 script Guard Malindax NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,111,101,0 script Guard Froma NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -003-1,102,80,0 script Guard Tetric NPC_GUARD1,{ - legiontalk; - end; - -OnTimer1000: - domovestep; - -OnInit: - initpath "move", 110, 84, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 110, 101, - "dir", RIGHT, 0, - "wait", 0, 0, - "move", 99, 121, - "dir", LEFT, 0, - "wait", 1, 0, - "move", 89, 136, - "dir", DOWN, 0, - "wait", 1, 0, - "move", 65, 152, - "dir", DOWN, 0, - "wait", 1, 0, - "move", 71, 139, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 59, 128, - "dir", LEFT, 0, - "wait", 1, 0, - "move", 47, 79, - "dir", LEFT, 0, - "wait", 1, 0, - "move", 80, 73, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 53, 52, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 52, 37, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 35, 35, - "dir", RIGHT, 0, - "wait", 1, 0, - "move", 62, 105, - "dir", DOWN, 0, - "wait", 1, 0; - initialmove; - initnpctimer; - .distance = 5; -} -003-1,107,80,0 script Guard Biscop NPC_GUARD1,{ - legiontalk; - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} - - +// TMW2 scripts. +// Authors: +// Saulc +// Description: +// Help Tulimshar guards +// Quest variable: +// TulimsharQuests_Guards +// Quest stages: +// 0 - not started +// 1 - Lieutenant Dausen asked for help Tulimshar guards +// 2 - completed + + +003-1,111,84,0 script Lieutenant Dausen NPC_PLAYER,{ + // This NPC is broken, so this code disables it + mesn; + mesq l("Greetings, citzen. I am @@, chief of the Tulimshar guards.", .name$); + close; + + + function quest_waterForGuard + { + setq TulimsharQuest_WaterForGuard, 1; + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Good luck !"); + close; + } + + .@has = getq(TulimsharQuest_WaterForGuard); + if (.@has == 0) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Hello can you help me?"); + do + { + select + l("Yes"), + menuaction(l("Quit")); + + switch (@menu) + { + case 1: + quest_waterForGuard; + break; + } + } while (@menu != 2); + } + else if (.@has == 1) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Not yet. Get level 255 and I'll reward you!"); + } + else if (.@has == 2) + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Thank you, there is your reward"); + narrator("You receive 30 exp."); + getexp 30, 0; + setq TulimsharQuest_WaterForGuard, 3; + } + else + { + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Thank you for your help."); + } + + closedialog; + goodbye; + close; + +OnInit: + .sex = G_MALE; + .distance = 3; + end; +} + + +003-1,98,100,0 script Guard Philip NPC_GUARD1,{ + legiontalk; + if (getq(TulimsharQuest_WaterForGuard) == 1) + { + //CheckGuard(); // FIXME This is not Hide And Seek + } + end; + +OnTimer1000: + domovestep; + +OnInit: + + // Check items.xml for info about this + .@npcId = getnpcid(0, "Lieutenant Dausen"); + setunitdata(.@npcId, UDT_HEADTOP, 2906); + setunitdata(.@npcId, UDT_HEADMIDDLE, 1304); + setunitdata(.@npcId, UDT_HEADBOTTOM, 2201); + setunitdata(.@npcId, UDT_SHIELD, 1800); // TODO FIXME: Display Boots + setunitdata(.@npcId, UDT_WEAPON, 3504); + setunitdata(.@npcId, UDT_HAIRSTYLE, 7); + setunitdata(.@npcId, UDT_HAIRCOLOR, 17); + + initpath "move", 98, 104, + "dir", DOWN, 0, + "wait", 60, 0, + "move", 84, 100, + "dir", DOWN, 0, + "wait", 45, 0, + "move", 93, 110, + "dir", DOWN, 0, + "wait", 70, 0, + "move", 101, 106, + "dir", RIGHT, 0, + "wait", 12, 0, + "move", 98, 104, + "dir", DOWN, 0, + "wait", 68, 0, + "move", 93, 110, + "dir", DOWN, 0, + "wait", 90, 0, + "move", 111, 109, + "dir", DOWN, 0, + "wait", 11, 0; + initialmove; + initnpctimer; + .distance = 5; +} +003-1,98,121,0 script Guard Defou NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,102,121,0 script Guard Avou NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,58,158,0 script Guard Benji NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,62,158,0 script Guard Valou NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,71,138,0 script Guard Nutelo NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,58,128,0 script Guard Moustacha NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,58,100,0 script Guard Popaul NPC_GUARD1,{ + legiontalk; + end; + +OnTimer1000: + domovestep; + +OnInit: + initpath "move", 58, 100, + "dir", DOWN, 0, + "wait", 100, 0, + "move", 62, 100, + "dir", DOWN, 0, + "wait", 35, 0, + "move", 62, 93, + "dir", DOWN, 0, + "wait", 48, 0, + "move", 58, 104, + "dir", DOWN, 0, + "wait", 55, 0, + "move", 54, 102, + "dir", RIGHT, 0, + "wait", 82, 0; + + initialmove; + initnpctimer; + .distance = 5; +} +003-1,51,73,0 script Guard Yen NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-2,41,37,0 script Guard Yuna NPC_GUARD2,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,54,52,0 script Guard Maxim NPC_GUARD1,{ + legiontalk; + end; + +OnTimer1000: + domovestep; + +OnInit: + initpath "move", 54, 52, + "dir", DOWN, 0, + "wait", 85, 0, + "move", 54, 45, + "dir", DOWN, 0, + "wait", 70, 0, + "move", 67, 30, + "dir", LEFT, 0, + "wait", 11, 0, + "move", 49, 46, + "dir", DOWN, 0, + "wait", 55, 0, + "move", 31, 41, + "dir", LEFT, 0, + "wait", 6, 0, + "move", 35, 36, + "dir", UP, 0, + "wait", 9, 0, + "move", 49, 52, + "dir", DOWN, 0, + "wait", 70, 0; + initialmove; + initnpctimer; + .distance = 5; + +} +003-1,50,36,0 script Guard Totor NPC_GUARD1,{ + legiontalk; + end; + +OnTimer1000: + domovestep; + +OnInit: + initpath "move", 50, 36, + "dir", DOWN, 0, + "wait", 45, 0, + "move", 50, 39, + "dir", DOWN, 0, + "wait", 35, 0, + "move", 35, 40, + "dir", UP, 0, + "wait", 1, 0, + "move", 33, 34, + "dir", DOWN, 0, + "wait", 12, 0; + initialmove; + initnpctimer; + .distance = 5; +} +003-1,53,36,0 script Guard Roukin NPC_GUARD1,{ + legiontalk; + end; + +OnTimer1000: + domovestep; + +OnInit: + initpath "move", 53, 36, + "dir", DOWN, 0, + "wait", 60, 0, + "move", 56, 59, + "dir", DOWN, 0, + "wait", 1, 0, + "move", 61, 76, + "dir", RIGHT, 0, + "wait", 5, 0, + "move", 61, 105, + "dir", RIGHT, 0, + "wait", 8, 0, + "move", 59, 129, + "dir", LEFT, 0, + "wait", 4, 0, + "move", 60, 103, + "dir", UP, 0, + "wait", 1, 0, + "move", 56, 82, + "dir", LEFT, 0, + "wait", 7, 0, + "move", 56, 59, + "dir", UP, 0, + "wait", 1, 0, + "move", 53, 39, + "dir", DOWN, 0, + "wait", 25, 0; + initialmove; + initnpctimer; + .distance = 5; +} +003-1,35,34,0 script Guard Falko NPC_GUARD1,{ + legiontalk; + end; + +OnTimer1000: + domovestep; + +OnInit: + initpath "move", 35, 34, + "dir", DOWN, 0, + "wait", 60, 0, + "move", 51, 38, + "dir", DOWN, 0, + "wait", 10, 0; + initialmove; + initnpctimer; + .distance = 5; +} +003-3,39,37,0 script Guard Malindax NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,111,101,0 script Guard Froma NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +003-1,102,80,0 script Guard Tetric NPC_GUARD1,{ + legiontalk; + end; + +OnTimer1000: + domovestep; + +OnInit: + initpath "move", 110, 84, + "dir", RIGHT, 0, + "wait", 1, 0, + "move", 110, 101, + "dir", RIGHT, 0, + "wait", 0, 0, + "move", 99, 121, + "dir", LEFT, 0, + "wait", 1, 0, + "move", 89, 136, + "dir", DOWN, 0, + "wait", 1, 0, + "move", 65, 152, + "dir", DOWN, 0, + "wait", 1, 0, + "move", 71, 139, + "dir", RIGHT, 0, + "wait", 1, 0, + "move", 59, 128, + "dir", LEFT, 0, + "wait", 1, 0, + "move", 47, 79, + "dir", LEFT, 0, + "wait", 1, 0, + "move", 80, 73, + "dir", RIGHT, 0, + "wait", 1, 0, + "move", 53, 52, + "dir", RIGHT, 0, + "wait", 1, 0, + "move", 52, 37, + "dir", RIGHT, 0, + "wait", 1, 0, + "move", 35, 35, + "dir", RIGHT, 0, + "wait", 1, 0, + "move", 62, 105, + "dir", DOWN, 0, + "wait", 1, 0; + initialmove; + initnpctimer; + .distance = 5; +} +003-1,107,80,0 script Guard Biscop NPC_GUARD1,{ + legiontalk; + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} + + diff --git a/npc/005-1/ayasha.txt b/npc/005-1/ayasha.txt index ea51a54be..0c7b49aa6 100644 --- a/npc/005-1/ayasha.txt +++ b/npc/005-1/ayasha.txt @@ -1,310 +1,310 @@ -// Author: -// Crazyfefe -// Jesusalva -// Description: -// Ayasha takes care of the children of Candor Village, and is in charge of protecting them. -// The kids sometimes go play outside of city walls, and this makes her upset. -// Even if no attack happened in Candor for a while. -// Variables: -// CandorQuest_HAS -// 0: Not met -// 1: Already met -// 2: Quest ongoing -// 3: Found all kids -// 4: Reward given - -005-1,52,81,0 script Ayasha NPC_HUMAN_FEMALE_NOOB,{ - showavatar NPC_HUMAN_FEMALE_NOOB; // this is handled by avatars.xml - - function quest_findAllKids - { - setq CandorQuest_HAS, 2; - mesn; - mesq l("Good luck!"); - close; - } - - .@has = getq(CandorQuest_HAS); - if (.@has == 0) - { - speech S_LAST_NEXT, - l("Ah, the kids are playing hide and seek, but I am afraid they went too far. A monster attack could start anytime, after all."), - l("I am currently very worried with them. They're just children! They don't know how to fight!"), - l("Could you perhaps help me to find all kids?"); - do - { - select - l("Yes!"), - l("I can't, sorry."); - - setq CandorQuest_HAS, 1; - switch (@menu) - { - case 1: - quest_findAllKids; - break; - } - } while (@menu != 2); - } - else if (.@has == 1) - { - mesn; - mesq l("Even if the city has not been attacked on the last few years, I can't help but be concerned while the kids are playing hide and seek."), - next; - mesq l("Could you perhaps help me to find all kids?"); - next; - - do - { - select - l("Yes!"), - l("I can't, sorry."); - - switch (@menu) - { - case 1: - quest_findAllKids; - break; - } - } while (@menu != 2); - } - else if (.@has == 2) - { - mesn; - mesq l("You still haven't found all of them yet."); - close; - } - else if (.@has == 3) - { - speech S_LAST_NEXT, - l("Thank you, here is your reward and... some pocket money."); - narrator("You receive 30 exp and 50 GP."); - getexp 30, 0; - Zeny = (Zeny + 50); - setq CandorQuest_HAS, 4; - close; - } - else - { - mesn; - mesq l("Thank you for your help."); - if (BaseLevel >= 24 && gettimetick(2) > .RENT_TIME) goto L_Sword; - close; - } - - //closedialog; - //goodbye; - close; - -L_Sword: - menu - l("The children are safe, could you rent me your sword?"), L_Rent, - l("You're welcome!"), -; - close; - -L_Rent: - // This code is equivalent to: speech S_FIRST_BLANK_LINE | S_LAST_NEXT - mes ""; - mesn; - mesq l("Ah, I guess you want to fight at the cave north of me..."); - next; - mesq l("The children are safe, aren't they...?"); - next; - mesq l("I can rent it to you for 500 GP, during 15 minutes. Deal?"); - next; - menu - rif(Zeny >= 500 && gettimetick(2) > .RENT_TIME, l("Deal!")), L_DoRent, - l("Maybe later."), -; - close; - -L_DoRent: - if (gettimetick(2) <= .RENT_TIME) mesq l("Sorry, you was taking too long to decide and I've rented my sword to somebody else."); - if (gettimetick(2) <= .RENT_TIME) close; - .RENT_TIME=gettimetick(2)+(15*60); - set Zeny, Zeny - 500; - // Here must use item ID - rentitem 3518, (15*60); - mes ""; - mesn; - mesq l("Here it is. Take care with it!"); - close; - -OnInit: - .sex = G_FEMALE; - .distance = 5; - .RENT_TIME=0; // TODO: This could easily be a $GLOBAL_VARIABLE - end; -} - - -function script CheckEnfant { - @kids_count = 0; - @count_tmp = 0; - if (debug) - npctalk3 l("Hello, I am K-@@, of the @@ order.", @kids, $@KidsBits[@kids]); - if (STARTAREA & $@KidsBits[@kids]) - goto L_Already; - STARTAREA = STARTAREA | $@KidsBits[@kids]; - - goto L_Loop; - -L_KidsTally: - if (debug) - npctalk3 l("You found @@ out of @@ kids.", @kids_count, @count_tmp); - if (@kids_count == 6) - { - message strcharinfo(0), "That must have been the last kid."; - setq CandorQuest_HAS, 3; - } - speech S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("Oh! You found me. Good job!"); - narrator("You receive 5 exp."); - getexp 5,0; - close; - return; - -L_Loop: - while (@count_tmp < 6) { - if (STARTAREA & $@KidsBits[@count_tmp]) - @kids_count = (@kids_count + 1); - @count_tmp = (@count_tmp + 1); - } - goto L_KidsTally; - -L_Already: - mesn; - mesq l("Thanks for playing with us! Can you find my friends?"); - close; - - return; -} -005-1,69,90,0 script Charda NPC_CHILD8,{ - @kids = 0; - if (getq(CandorQuest_HAS) == 2) - { - CheckEnfant(); - } else { - mes l("The kid is not paying attention to you."); - close; - } - end; -OnInit: - // This works at same var from KidsBits. We start counting from 10, then. - setarray $@KidsBits, (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15); - .sex = G_OTHER; - .distance = 1; - end; -} -005-1,23,84,0 script Faris NPC_CHILD7,{ - @kids = 1; - if (getq(CandorQuest_HAS) == 2) - { - CheckEnfant(); - } else { - mes l("The kid is not paying attention to you."); - close; - } - end; -OnInit: - .sex = G_MALE; - .distance = 1; - end; -} -005-1,84,21,0 script Ghada NPC_CHILD5,{ - @kids = 2; - if (getq(CandorQuest_HAS) == 2) - { - CheckEnfant(); - } else { - mes l("The kid is not paying attention to you."); - close; - } - end; -OnInit: - .sex = G_MALE; - .distance = 1; - end; -} -005-1,38,58,0 script Latif NPC_HUMAN_M_ARTIS,{ - @kids = 3; - if (getq(CandorQuest_HAS) == 2) - { - CheckEnfant(); - } else { - mes l("The kid is not paying attention to you."); - close; - } - end; -OnInit: - .sex = G_MALE; - .distance = 1; - end; -} -005-1,18,43,0 script Rasin NPC_CHILD3,{ - @kids = 4; - if (getq(CandorQuest_HAS) == 2) - { - CheckEnfant(); - } else { - mes l("The kid is not paying attention to you."); - close; - } - end; -OnInit: - .sex = G_MALE; - .distance = 1; - end; -} -005-1,38,65,0 script Lilly NPC_CHILD6,{ - @kids = 5; - if (getq(CandorQuest_HAS) == 2) - { - CheckEnfant(); - } else { - mes l("The kid is not paying attention to you."); - close; - } - end; -OnInit: - .sex = G_MALE; - .distance = 1; - end; -} - -005-1,53,81,0 script AyashaDebug NPC_MONA,{ - showavatar NPC_MONA; // this is handled by avatars.xml - mesn; - mesq l("Reset?"); - next; - menu - l("Yes."), L_Reset, - l("Test"), L_Charda, - - l("No."), L_Close; - -L_Reset: - setq CandorQuest_HAS, 0; - STARTAREA = STARTAREA &~ (1 << 10); - STARTAREA = STARTAREA &~ (1 << 11); - STARTAREA = STARTAREA &~ (1 << 12); - STARTAREA = STARTAREA &~ (1 << 13); - STARTAREA = STARTAREA &~ (1 << 14); - STARTAREA = STARTAREA &~ (1 << 15); - mes l("Reset!"); - goto L_Close; - -L_Charda: - STARTAREA = STARTAREA &~ (1 << 10); - mes l("Charda clean!"); - goto L_Close; - -L_Close: - //showavatar; // Use this to hide the showavatar - close; - -// Use @shownpc to enable AyashaDebug -OnInit: - if (!debug) - disablenpc .name$; - end; -} +// Author: +// Crazyfefe +// Jesusalva +// Description: +// Ayasha takes care of the children of Candor Village, and is in charge of protecting them. +// The kids sometimes go play outside of city walls, and this makes her upset. +// Even if no attack happened in Candor for a while. +// Variables: +// CandorQuest_HAS +// 0: Not met +// 1: Already met +// 2: Quest ongoing +// 3: Found all kids +// 4: Reward given + +005-1,52,81,0 script Ayasha NPC_HUMAN_FEMALE_NOOB,{ + showavatar NPC_HUMAN_FEMALE_NOOB; // this is handled by avatars.xml + + function quest_findAllKids + { + setq CandorQuest_HAS, 2; + mesn; + mesq l("Good luck!"); + close; + } + + .@has = getq(CandorQuest_HAS); + if (.@has == 0) + { + speech S_LAST_NEXT, + l("Ah, the kids are playing hide and seek, but I am afraid they went too far. A monster attack could start anytime, after all."), + l("I am currently very worried with them. They're just children! They don't know how to fight!"), + l("Could you perhaps help me to find all kids?"); + do + { + select + l("Yes!"), + l("I can't, sorry."); + + setq CandorQuest_HAS, 1; + switch (@menu) + { + case 1: + quest_findAllKids; + break; + } + } while (@menu != 2); + } + else if (.@has == 1) + { + mesn; + mesq l("Even if the city has not been attacked on the last few years, I can't help but be concerned while the kids are playing hide and seek."), + next; + mesq l("Could you perhaps help me to find all kids?"); + next; + + do + { + select + l("Yes!"), + l("I can't, sorry."); + + switch (@menu) + { + case 1: + quest_findAllKids; + break; + } + } while (@menu != 2); + } + else if (.@has == 2) + { + mesn; + mesq l("You still haven't found all of them yet."); + close; + } + else if (.@has == 3) + { + speech S_LAST_NEXT, + l("Thank you, here is your reward and... some pocket money."); + narrator("You receive 30 exp and 50 GP."); + getexp 30, 0; + Zeny = (Zeny + 50); + setq CandorQuest_HAS, 4; + close; + } + else + { + mesn; + mesq l("Thank you for your help."); + if (BaseLevel >= 24 && gettimetick(2) > .RENT_TIME) goto L_Sword; + close; + } + + //closedialog; + //goodbye; + close; + +L_Sword: + menu + l("The children are safe, could you rent me your sword?"), L_Rent, + l("You're welcome!"), -; + close; + +L_Rent: + // This code is equivalent to: speech S_FIRST_BLANK_LINE | S_LAST_NEXT + mes ""; + mesn; + mesq l("Ah, I guess you want to fight at the cave north of me..."); + next; + mesq l("The children are safe, aren't they...?"); + next; + mesq l("I can rent it to you for 500 GP, during 15 minutes. Deal?"); + next; + menu + rif(Zeny >= 500 && gettimetick(2) > .RENT_TIME, l("Deal!")), L_DoRent, + l("Maybe later."), -; + close; + +L_DoRent: + if (gettimetick(2) <= .RENT_TIME) mesq l("Sorry, you was taking too long to decide and I've rented my sword to somebody else."); + if (gettimetick(2) <= .RENT_TIME) close; + .RENT_TIME=gettimetick(2)+(15*60); + set Zeny, Zeny - 500; + // Here must use item ID + rentitem 3518, (15*60); + mes ""; + mesn; + mesq l("Here it is. Take care with it!"); + close; + +OnInit: + .sex = G_FEMALE; + .distance = 5; + .RENT_TIME=0; // TODO: This could easily be a $GLOBAL_VARIABLE + end; +} + + +function script CheckEnfant { + @kids_count = 0; + @count_tmp = 0; + if (debug) + npctalk3 l("Hello, I am K-@@, of the @@ order.", @kids, $@KidsBits[@kids]); + if (STARTAREA & $@KidsBits[@kids]) + goto L_Already; + STARTAREA = STARTAREA | $@KidsBits[@kids]; + + goto L_Loop; + +L_KidsTally: + if (debug) + npctalk3 l("You found @@ out of @@ kids.", @kids_count, @count_tmp); + if (@kids_count == 6) + { + message strcharinfo(0), "That must have been the last kid."; + setq CandorQuest_HAS, 3; + } + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Oh! You found me. Good job!"); + narrator("You receive 5 exp."); + getexp 5,0; + close; + return; + +L_Loop: + while (@count_tmp < 6) { + if (STARTAREA & $@KidsBits[@count_tmp]) + @kids_count = (@kids_count + 1); + @count_tmp = (@count_tmp + 1); + } + goto L_KidsTally; + +L_Already: + mesn; + mesq l("Thanks for playing with us! Can you find my friends?"); + close; + + return; +} +005-1,69,90,0 script Charda NPC_CHILD8,{ + @kids = 0; + if (getq(CandorQuest_HAS) == 2) + { + CheckEnfant(); + } else { + mes l("The kid is not paying attention to you."); + close; + } + end; +OnInit: + // This works at same var from KidsBits. We start counting from 10, then. + setarray $@KidsBits, (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15); + .sex = G_OTHER; + .distance = 1; + end; +} +005-1,23,84,0 script Faris NPC_CHILD7,{ + @kids = 1; + if (getq(CandorQuest_HAS) == 2) + { + CheckEnfant(); + } else { + mes l("The kid is not paying attention to you."); + close; + } + end; +OnInit: + .sex = G_MALE; + .distance = 1; + end; +} +005-1,84,21,0 script Ghada NPC_CHILD5,{ + @kids = 2; + if (getq(CandorQuest_HAS) == 2) + { + CheckEnfant(); + } else { + mes l("The kid is not paying attention to you."); + close; + } + end; +OnInit: + .sex = G_MALE; + .distance = 1; + end; +} +005-1,38,58,0 script Latif NPC_HUMAN_M_ARTIS,{ + @kids = 3; + if (getq(CandorQuest_HAS) == 2) + { + CheckEnfant(); + } else { + mes l("The kid is not paying attention to you."); + close; + } + end; +OnInit: + .sex = G_MALE; + .distance = 1; + end; +} +005-1,18,43,0 script Rasin NPC_CHILD3,{ + @kids = 4; + if (getq(CandorQuest_HAS) == 2) + { + CheckEnfant(); + } else { + mes l("The kid is not paying attention to you."); + close; + } + end; +OnInit: + .sex = G_MALE; + .distance = 1; + end; +} +005-1,38,65,0 script Lilly NPC_CHILD6,{ + @kids = 5; + if (getq(CandorQuest_HAS) == 2) + { + CheckEnfant(); + } else { + mes l("The kid is not paying attention to you."); + close; + } + end; +OnInit: + .sex = G_MALE; + .distance = 1; + end; +} + +005-1,53,81,0 script AyashaDebug NPC_MONA,{ + showavatar NPC_MONA; // this is handled by avatars.xml + mesn; + mesq l("Reset?"); + next; + menu + l("Yes."), L_Reset, + l("Test"), L_Charda, + + l("No."), L_Close; + +L_Reset: + setq CandorQuest_HAS, 0; + STARTAREA = STARTAREA &~ (1 << 10); + STARTAREA = STARTAREA &~ (1 << 11); + STARTAREA = STARTAREA &~ (1 << 12); + STARTAREA = STARTAREA &~ (1 << 13); + STARTAREA = STARTAREA &~ (1 << 14); + STARTAREA = STARTAREA &~ (1 << 15); + mes l("Reset!"); + goto L_Close; + +L_Charda: + STARTAREA = STARTAREA &~ (1 << 10); + mes l("Charda clean!"); + goto L_Close; + +L_Close: + //showavatar; // Use this to hide the showavatar + close; + +// Use @shownpc to enable AyashaDebug +OnInit: + if (!debug) + disablenpc .name$; + end; +} diff --git a/npc/005-3/barrel.txt b/npc/005-3/barrel.txt index 47f0c2956..dcba8b4c7 100644 --- a/npc/005-3/barrel.txt +++ b/npc/005-3/barrel.txt @@ -1,179 +1,179 @@ -// TMW-2 script. -// Author: -// Crazyfefe -// Jesusalva -// Description: -// Barrels -// Variables: -// CandorQuest_Barrel -// Values: -// 0 Default. -// 1 Quest Found. -// 2 Quest Accepted. -// 3 Bomb Defused. -// 4 Quest Completed. - -// TODO FIXME: KNOWN BUG -// It is a known bug that using .questCheck and .questState is ABSOLUTELY WRONG -// A NPC variable affects the whole server, lasting until server restart. -// Therefore, by using "." variables, it will only work at localhosts. -// TODO FIXME: KNOWN BUG - -function script CheckBarrel { - @barrel_count = 0; - @count_tmp = 0; - if (debug) - npctalk3 l("Hello, I am B-@@, of the @@ order.", @barrel, $@BarrelBits[@barrel]); - if (STARTAREA & $@BarrelBits[@barrel]) - goto L_Empty; - STARTAREA = STARTAREA | $@BarrelBits[@barrel]; - - goto L_Loop; - -L_BarrelTally: - areamonster "005-3", 24, 34, 45, 42, "House Maggot", 1084, 1, "Trainer::OnKillHouseMaggot"; - if (@barrel_count == 8) - { - message strcharinfo(0), "You found the bug bomb."; - specialeffect(14); - specialeffect(51); - killmonsterall("005-3"); - setq CandorQuest_Barrel, 3; - } - @rand = rand(6); - if (@rand == 0) - getitem Coal,1; - else if (@rand == 1) - getitem PinkAntenna,1; - else if (@rand == 2) - getitem CoinBag,1; - else if (@rand == 3) - getitem Croconut,1; - else if (@rand == 4) - getitem Bread,1; - else if (@rand == 5) - getitem TolchiArrow,6; - return; - -L_Loop: - while (@count_tmp < 8) { - @count_tmp = (@count_tmp + 1); - if (STARTAREA & $@BarrelBits[@count_tmp]) - @barrel_count = (@barrel_count + 1); - } - goto L_BarrelTally; - -L_Empty: - message strcharinfo(0), "You've already searched this barrel."; - return; - -} - -005-3,24,36,0 script Barrel#1 NPC_NO_SPRITE,{ - @barrel = 1; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - // Remember: array start at zero, but barrels count start at 1. "Fixing" may break barrel 8! - setarray $@BarrelBits, (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7), (1 << 8), (1 << 9); - .sex = G_OTHER; - .distance = 1; - end; -} - -005-3,24,39,0 script Barrel#2 NPC_NO_SPRITE,{ - @barrel = 2; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} - -005-3,29,37,0 script Barrel#3 NPC_NO_SPRITE,{ - @barrel = 3; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -005-3,35,34,0 script Barrel#4 NPC_NO_SPRITE,{ - @barrel = 4; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -005-3,38,34,0 script Barrel#5 NPC_NO_SPRITE,{ - @barrel = 5; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -005-3,44,40,0 script Barrel#6 NPC_NO_SPRITE,{ - @barrel = 6; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -005-3,38,41,0 script Barrel#7 NPC_NO_SPRITE,{ - @barrel = 7; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} -005-3,29,41,0 script Barrel#8 NPC_NO_SPRITE,{ - @barrel = 8; - .@q = getq(CandorQuest_Barrel); - if (.@q == 2) - { - CheckBarrel(); - } - end; -OnInit: - .sex = G_OTHER; - .distance = 1; - end; -} +// TMW-2 script. +// Author: +// Crazyfefe +// Jesusalva +// Description: +// Barrels +// Variables: +// CandorQuest_Barrel +// Values: +// 0 Default. +// 1 Quest Found. +// 2 Quest Accepted. +// 3 Bomb Defused. +// 4 Quest Completed. + +// TODO FIXME: KNOWN BUG +// It is a known bug that using .questCheck and .questState is ABSOLUTELY WRONG +// A NPC variable affects the whole server, lasting until server restart. +// Therefore, by using "." variables, it will only work at localhosts. +// TODO FIXME: KNOWN BUG + +function script CheckBarrel { + @barrel_count = 0; + @count_tmp = 0; + if (debug) + npctalk3 l("Hello, I am B-@@, of the @@ order.", @barrel, $@BarrelBits[@barrel]); + if (STARTAREA & $@BarrelBits[@barrel]) + goto L_Empty; + STARTAREA = STARTAREA | $@BarrelBits[@barrel]; + + goto L_Loop; + +L_BarrelTally: + areamonster "005-3", 24, 34, 45, 42, "House Maggot", 1084, 1, "Trainer::OnKillHouseMaggot"; + if (@barrel_count == 8) + { + message strcharinfo(0), "You found the bug bomb."; + specialeffect(14); + specialeffect(51); + killmonsterall("005-3"); + setq CandorQuest_Barrel, 3; + } + @rand = rand(6); + if (@rand == 0) + getitem Coal,1; + else if (@rand == 1) + getitem PinkAntenna,1; + else if (@rand == 2) + getitem CoinBag,1; + else if (@rand == 3) + getitem Croconut,1; + else if (@rand == 4) + getitem Bread,1; + else if (@rand == 5) + getitem TolchiArrow,6; + return; + +L_Loop: + while (@count_tmp < 8) { + @count_tmp = (@count_tmp + 1); + if (STARTAREA & $@BarrelBits[@count_tmp]) + @barrel_count = (@barrel_count + 1); + } + goto L_BarrelTally; + +L_Empty: + message strcharinfo(0), "You've already searched this barrel."; + return; + +} + +005-3,24,36,0 script Barrel#1 NPC_NO_SPRITE,{ + @barrel = 1; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + // Remember: array start at zero, but barrels count start at 1. "Fixing" may break barrel 8! + setarray $@BarrelBits, (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7), (1 << 8), (1 << 9); + .sex = G_OTHER; + .distance = 1; + end; +} + +005-3,24,39,0 script Barrel#2 NPC_NO_SPRITE,{ + @barrel = 2; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} + +005-3,29,37,0 script Barrel#3 NPC_NO_SPRITE,{ + @barrel = 3; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +005-3,35,34,0 script Barrel#4 NPC_NO_SPRITE,{ + @barrel = 4; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +005-3,38,34,0 script Barrel#5 NPC_NO_SPRITE,{ + @barrel = 5; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +005-3,44,40,0 script Barrel#6 NPC_NO_SPRITE,{ + @barrel = 6; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +005-3,38,41,0 script Barrel#7 NPC_NO_SPRITE,{ + @barrel = 7; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +005-3,29,41,0 script Barrel#8 NPC_NO_SPRITE,{ + @barrel = 8; + .@q = getq(CandorQuest_Barrel); + if (.@q == 2) + { + CheckBarrel(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} diff --git a/npc/functions/mobpoint.txt b/npc/functions/mobpoint.txt index 8853c080c..a9d69af05 100644 --- a/npc/functions/mobpoint.txt +++ b/npc/functions/mobpoint.txt @@ -1,25 +1,25 @@ -// TMW2 Scripts -// Author: Crazyfefe -// Jesusalva -// Desc: Mob Points for Aidan & Ishi. You will gain MONSTER-LEVEL mob points. - -function script mobpoint { - if (!MPQUEST) goto L_Return; - //if (killedrid < 1002) goto L_Return; - - Mobpt = Mobpt + strmobinfo(3,killedrid); - - -L_Return: - //set @value, 0; - return; - -} - -000-0,0,0,0 script #mobptsys NPC_HIDDEN,{ - end; - -OnNPCKillEvent: - callfunc "mobpoint"; - end; -} +// TMW2 Scripts +// Author: Crazyfefe +// Jesusalva +// Desc: Mob Points for Aidan & Ishi. You will gain MONSTER-LEVEL mob points. + +function script mobpoint { + if (!MPQUEST) goto L_Return; + //if (killedrid < 1002) goto L_Return; + + Mobpt = Mobpt + strmobinfo(3,killedrid); + + +L_Return: + //set @value, 0; + return; + +} + +000-0,0,0,0 script #mobptsys NPC_HIDDEN,{ + end; + +OnNPCKillEvent: + callfunc "mobpoint"; + end; +} -- cgit v1.2.3-70-g09d2