You could use this, this is my own archer promo npc... sorta.
I just made it sprechen englisch and I added the req'd mats for promo and where to get them. ;-;
It gives you 8,000 cps when you promote.
It's clean, it's english, and it's friendly.
It will tell you what you need to promote and where+how to get the ores.
PHP Code:
#region ArcherGod
case 400:
{
if (GC.MyChar.Job >= 40 && GC.MyChar.Job <= 45 && Control == 0)
{
GC.AddSend(Packets.NPCSay("Hello " + GC.MyChar.Name + ", I have been appointed to be your instructer.\nAre you ready for your for training?"));
GC.AddSend(Packets.NPCLink("Yes, I am ready for my promotion.", 1));
GC.AddSend(Packets.NPCLink("Teach me new skills master.", 2));
GC.AddSend(Packets.NPCLink("No, I just like talking to you.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
#region Promote
else if (GC.MyChar.Job >= 40 && GC.MyChar.Job <= 45)
{
if (GC.MyChar.Job <= 44 && (Control == 1 || Control == 10))
{
if (Control == 1)
{
GC.AddSend(Packets.NPCSay("You need to be level " + GC.MyChar.LevReqForPromote + " to promote to " + ((Game.Character.JobName)(GC.MyChar.Job + 1)).ToString() + "\n"));
if (GC.MyChar.Job == 41)
GC.AddSend(Packets.NPCSay("You will not be able to progress in the promotion without 5 Euxenite Ores\nPlease be sure you have one in your inventory before continuing\n"));
if (GC.MyChar.Job == 42)
GC.AddSend(Packets.NPCSay("You will not be able to progress in the promotion without a Emerald\nPlease be sure you have one in your inventory before continuing\n"));
else if (GC.MyChar.Job == 43)
GC.AddSend(Packets.NPCSay("You will not be able to progress in the promotion without a Meteor\nPlease be sure you have one in your inventory before continuing\n"));
else if (GC.MyChar.Job == 44)
GC.AddSend(Packets.NPCSay("You will not be able to progress in the promotion without a MoonBox\nPlease be sure you have one in your inventory before continuing\n"));
GC.AddSend(Packets.NPCSay("You will get 8,000 CPs on completion of your promotion."));
GC.AddSend(Packets.NPCLink("I'm ready, Promote me.", 10));
GC.AddSend(Packets.NPCLink("Forget it.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
else if (Control == 10)
{
if (GC.MyChar.Level >= GC.MyChar.LevReqForPromote)
{
byte Need = 1;
uint ID = GC.MyChar.PromoteItems;
if (ID == 1072031) Need = 5;
if (GC.MyChar.InventoryContains(ID, Need) || ID == 1)
{
for (byte i = 0; i < Need; i++)
GC.MyChar.RemoveItem(GC.MyChar.NextItem(ID));
GC.MyChar.Job++;
GC.MyChar.CPs += 8000;
GC.AddSend(Packets.NPCSay("Congratulations! You are now a " + ((Game.Character.JobName)GC.MyChar.Job).ToString() + "\nI have given you what I promised also.\n8,000 CPs."));
GC.AddSend(Packets.NPCLink("Thank you.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
else
{
GC.AddSend(Packets.NPCSay("You must bring me "));
if (GC.MyChar.Job == 41)
GC.AddSend(Packets.NPCSay("5 Euxenite Ores before you can continue with your promotion."));
else if (GC.MyChar.Job == 42)
GC.AddSend(Packets.NPCSay("a Emerald before you can continue with your promotion."));
else if (GC.MyChar.Job == 43)
GC.AddSend(Packets.NPCSay("a Meteor before you can continue with your promotion."));
else if (GC.MyChar.Job == 44)
GC.AddSend(Packets.NPCSay("a MoonBox before you can continue with your promotion."));
if (GC.MyChar.Job == 41)
GC.AddSend(Packets.NPCLink("Where can I find the ores?", 96));
GC.AddSend(Packets.NPCLink("Alright.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
}
else
{
GC.AddSend(Packets.NPCSay("You are not qualified for the promotion yet.\nYour level is too low."));
GC.AddSend(Packets.NPCLink("I see.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
}
}
else if (Control == 1 || Control == 10)
{
GC.AddSend(Packets.NPCSay("You have already been promoted to ArcherMaster.\nYou cannot be promoted any further."));
GC.AddSend(Packets.NPCLink("I see.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
else if (Control == 96)
{
GC.AddSend(Packets.NPCSay("Grab a Pick Axe from the Storekeeper in Twin City.\nThen head to the Mine Cave.\nTalk to the Twin City Conductress to get there. "));
GC.AddSend(Packets.NPCLink("Thanks,", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
#endregion
#region Skill
else if (Control == 2)
{
GC.AddSend(Packets.NPCSay("What would you like to learn my apprentice?"));
ArrayList Skills = (ArrayList)Database.SkillForLearning[(byte)4];
if (Skills.Count < 8)
{
for (byte i = 0; i < Skills.Count; i++)
GC.AddSend(Packets.NPCLink(((Extra.SkillIDs)(((SkillLearn)Skills[i]).ID)).ToString() + "(Lv " + ((SkillLearn)Skills[i]).LevelReq.ToString() + " )", (byte)(20 + i)));
}
else
{
for (byte i = 0; i < 7; i++)
GC.AddSend(Packets.NPCLink(((Extra.SkillIDs)(((SkillLearn)Skills[i]).ID)).ToString() + "(Lv " + ((SkillLearn)Skills[i]).LevelReq.ToString() + " )", (byte)(20 + i)));
GC.AddSend(Packets.NPCLink("Next", 100));
}
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
else if (Control == 100)
{
GC.AddSend(Packets.NPCSay("What would you like to learn my apprentice?"));
ArrayList Skills = (ArrayList)Database.SkillForLearning[(byte)4];
for (byte i = 7; i < Skills.Count; i++)
GC.AddSend(Packets.NPCLink(((Extra.SkillIDs)(((SkillLearn)Skills[i]).ID)).ToString() + "(Lv " + ((SkillLearn)Skills[i]).LevelReq.ToString() + " )", (byte)(20 + i)));
GC.AddSend(Packets.NPCLink("Previous", 2));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
else if (Control >= 20 && Control <= 34)
{
ArrayList Skills = (ArrayList)Database.SkillForLearning[(byte)4];
SkillLearn S = (SkillLearn)Skills[(byte)(Control - 20)];
if (GC.MyChar.Level >= S.LevelReq)
GC.MyChar.NewSkill(S.ToSkill());
else
{
GC.AddSend(Packets.NPCSay("Your level does not satisfy the requirement of the skill."));
GC.AddSend(Packets.NPCLink("I see.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
}
}
#endregion
else
{
GC.AddSend(Packets.NPCSay("Hello " + GC.MyChar.Name + ", I am the Archer instructor. \nI teach thoes who have chosen to be a Archer.\nBut you're not a Archer, therfor I cannot train you.\nGo find your trainer. He or she is around he somewhere."));
GC.AddSend(Packets.NPCLink("Alright.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
break;
}
#endregion