prontera,150,150,4 script Bard 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 ( Class != Job_Bard ) // Checks to see if you are bard or not. { mes .npcname$; mes "Sorry but you need to be a Bard to talk to me."; close; } if ( !BQTalked ) // 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."; BQTalked++; close; } else if ( BQTalked ) // 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!"; BQuest1++; .@size = getarraysize(.ItemList); for ( .@i = 1; .@i <= .@size; .@i++ ) { delitem .ItemList[.@i], .ItemAm[.@i]; } } close; OnInit: .npcname$ = "[Bard Quest]"; setarray .ItemList[1],501,502,503; setarray .ItemAm[1],1,2,3; end; }