prontera,150,151,4 script Bard 1_M_BARD,{ mes .npcname$; if ( BQComplete ) // If completed. { mes ("You completed the Bard Quest."); close(); } if ( !BQuest1 || !BQuest2 || !BQuest3 || !BQuest4 ) { // Checks to see if you haven't completed all 4 quests yet. mes ("Please help me. Not really me, my friend. I know where you can find them. \r"); mes ("Once you complete all 4 of their tasks, seek me again."); next; mes .npcname$; mes ("Locations:"); .@size = 4; for ( .@i = 1; .@i <= .@size; .@i++ ) { mes (""+.@i+") "+$q_loc$[.@i]+""); } close(); } mes ("Wow you seemed to have gathered all of the Music Scores!"); next(); if ( Weight >= MaxWeight/2 ) { mes .npcname$; mes ("Uh oh, it seems like you have too much weight, please store some items to recieve my reward."); close(); } mes .npcname$; mes ("I'll take those Music Scores off of ya!"); mes ("Here's a little something for helping me out."); close2(); .@size = getarraysize ( .SheetsID ); for ( .@i = 1; .@i < .@size; .@i++ ) { delitem (.SheetsID[.@i], 1); // Deletes the 4 Music Scores. } getitem (501, 1); // Gets reward. BQComplete++; // Completes the Quest. end(); OnInit: .npcname$ = "[Bard]"; setarray .SheetsID[1],6343,6340,6342,6341; end(); } prontera,150,150,4 script Quest1 1_M_BARD,{ if ( BQuest1 ) // Checks to see if quest is finished or not. { mes .npcname$; mes ("You have already fulfilled my request! Thanks a ton."); close(); } if ( !BQStart1 ) // Checks to see if you've never talked to the NPC before. { mes ("Hello "+strcharinfo(0)+"."); mes ("I was wondering if you are willing to help me locate some items."); mes ("It's all for a greater purpose."); next(); mes .npcname$; mes ("Here's what we need:"); .@size = getarraysize( .ItemList ); // gets array size of the Item List. for ( .@i = 1; .@i <= .@size; .@i++ ) // loops { mes (""+getitemname( .ItemList[.@i] )+" x "+.ItemAm[.@i]+"."); } next(); mes .npcname$; mes ("Come talk to me again if you wish to see the list of items or if you have gathered them all."); BQStart1++; close(); } else if ( BQStart1 ) // Checks to see if you've already talked to the NPC already. { .@size = getarraysize( .ItemList ); for ( .@i = 1; .@i <= .@size; .@i++ ) { if( countitem( .ItemList[.@i] ) < .ItemAm[.@i] ) // Output what you need and what you have in your inventory. { mes .npcname$; mes ("Sorry but you have "+getitemname(.ItemList[.@i])+" x "+countitem(.ItemList[.@i])+"."); mes ("You need "+getitemname(.ItemList[.@i])+" x "+.ItemAm[.@i]+"."); close(); } } mes .npcname$; mes ("You have all the items!"); close2(); BQuest1++; .@size = getarraysize( .ItemList ); for ( .@i = 1; .@i <= .@size; .@i++ ) { delitem (.ItemList[.@i], .ItemAm[.@i]); } end(); } end(); OnInit: .npcname$ = "[Quest1]"; setarray .ItemList[1],501,502,503; setarray .ItemAm[1],1,2,3; getmapxy ( .@map$,.@x,.@y,1 ); $q_loc$[1] = .@map$+"|"+.@x+"|"+.@y; end(); } prontera,150,152,4 script Quest2 1_M_BARD,{ if ( BQuest2 ) { mes .npcname$; mes ("You fulfilled my requests, thanks a ton "+strcharinfo(0)+"!"); close(); } if ( !BQStart2 ) { BQStart2++; mes .npcname$; mes ("Hey there "+strcharinfo(0)+"."); mes ("There's something I gotta tell ya'."); next(); mes .npcname$; mes ("I would like it if you could possibly kill 10 of any of the following monsters for me."); mes ("Come back if you ever want to see the list of monsters again!"); next(); MobListing: for ( .@i = 1; .@i <= getarraysize(.MobID); .@i++ ) { mes (""+strmobinfo(1,.MobID[.@i])+""); } close(); } else mes .npcname$; mes ("Here's the list of the mobs again."); callsub ("MobListing"); end(); OnNPCKillEvent: if ( BQuest2 ) { // Checks if the quest is finished. end(); } if ( !BQStart2 ) { // Checks if you have talked to the NPC first to initiate the KillEvent. end(); } .@killedRID = killedrid; .@size = getarraysize( .MobID ); for ( .@i = 1; .@i <= .@size; .@i++ ) { if ( .@killedRID == .MobID[.@i] ) { BQMobCount++; dispbottom ("[Bard Quest] Obtained ("+BQMobCount+")/("+.BQMaxMob+") Mob kills."); } } if ( BQMobCount >= .BQMaxMob ) { sleep2 (1000); dispbottom ("[Bard Quest] Mob Kill Completed."); BQuest2++; end(); } end(); OnInit: .npcname$ = "[Bard Quest 2]"; setarray .MobID[1],1002,1004,1005; .BQMaxMob = 10; getmapxy( .@map$,.@x,.@y,1 ); $q_loc$[2] = .@map$+"|"+.@x+"|"+.@y; end(); } prontera,150,153,4 script Quest3 1_M_BARD,{ if ( BQuest3 ) { mes .npcname$; mes ("You've already fulfilled my request, thanks a ton "+strcharinfo(0)+"!"); close(); } if (!BQStart3 ) { mes .npcname$; mes ("Hello "+strcharinfo(0)+"."); mes ("I'll help you get that Bard Hat if you can answer a couple questions!"); next(); mes .npcname$; .@QSize = getarraysize( .QList$ ); for ( .@i = 1; .@i < .@QSize; .@i++ ) { mes (""+.@i+") "+.QList$[.@i]); } next(); mes .npcname$; mes ("Come and talk to me again when you feel you're prepared to answer my riddles."); BQStart3++; close(); } mes .npcname$; mes ("So are you prepared to answer my riddles?"); next(); switch(select("Yes please.","No thanks.")) { case 1: .@QSize = getarraysize( .QList$ ); for ( .@i = 1; .@i < .@QSize; .@i++) { mes .npcname$; mes (""+.@i+") "+.QList$[.@i]); input .@input$; if ( .@input$ != .AList$[.@i]) { mes ("Seem's like you put in a wrong answer for that question."); mes ("Better luck next time."); close(); } next(); } mes .npcname$; mes ("Wow you got all of them correct!"); mes ("I guess I don't have the oldest tricks in the book!"); emotion(e_sad); BQuest3++; close(); case 2: close(); } OnInit: .npcname$ = "[ Bard Quest 3 ]"; setarray .QList$[1] ,"How much is 1+1" ,"How much is 2+2" ,"How many fingers am I holding up?" ,"What's my name?" ,"What is our maintown?"; setarray .AList$[1] ,"2" ,"4" ,"5" ,""+strnpcinfo(1)+"" ,"Prontera|prontera"; getmapxy( .@map$,.@x,.@y,1 ); $q_loc$[3] = .@map$+"|"+.@x+"|"+.@y; end(); } prontera,150,154,4 script Quest4 1_M_BARD,{ end(); OnInit: getmapxy( .@map$,.@x,.@y,1 ); $q_loc$[4] = .@map$+"|"+.@x+"|"+.@y; end(); }