public override void Run(Game_Server.Player client, ushort linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); if (client.ProfessionType != ProfessionType.Warrior) { AddText("Warriors do not share their secrets of battle with others. I shall not teach you."); AddOption("I see.", 255); AddFinish(); Send(); return; } switch (linkback) { #region Initial Options case 0: AddText("To be a good Warrior, you must know your weapon, your armor be a 2nd"); AddText(" skin, and use your shild to ward off your enemy! Remember, fortune favors"); AddText(" the brave, and you must keep your head, even in the darkest hours. So, what"); AddText(" can I do for you?"); AddOption("I want to get promoted.", 1); AddOption("Learn class skills.", 3); AddOption("Okay. I see.", 255); break; #endregion #region Promotion case 1: switch (client.ProfessionLevel) { case 0: AddText("The single requirement of becoming a Warrior is a minimum level of 15."); AddText(" Would you like to proceed?"); AddOption("Yes, please.", 2); AddOption("No.", 255); break; case 1: AddText("You may become a Brass Warrior at level 40. Do you want to continue?"); AddOption("Yes, I do.", 2); AddOption("No.", 255); break; case 2: AddText("You may promote to Silver Warrior at level 70."); AddText(" I will require one Emerald, I hear they are dropped by"); AddText(" monsters in the desert. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 3: AddText("You may promote to Gold Warrior at level 100."); AddText(" I will require one Meteor. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 4: AddText("You may promote to Warrior Master at level 110."); AddText(" I will require one Moon Box. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 5: AddText("You are a true Warrior. I cannot promote you anymore!"); AddOption("I see.", 255); break; } break; case 2: switch (client.ProfessionLevel) { case 0: //level 15 if (client.Level >= 15) { AddText("You have been promoted! I have taught you XP skills as a reward!"); client.CombatManager.LearnNewSkill(SkillID.Accuracy); client.CombatManager.LearnNewSkill(SkillID.Shield); client.CombatManager.LearnNewSkill(SkillID.Superman); client.CombatManager.LearnNewSkill(SkillID.Roar); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You are not level 15, I will not promote you yet."); AddOption("I'll work harder.", 255); } break; case 1: //level 40 if (client.Level >= 40 && client.Strength >= 80 && client.Agility >= 25 && client.Vitality >= 20) { AddText("You have been promoted!"); if (client.RebornCount == 1) { AddText("I've given you a special item to help commemorate the occasion!"); client.CreateItem(410077); //poison blade - need to add stat } client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 40) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Strength needs to be 80, Agility needs to have a minimum of 25, Vitality as a minimum of 20"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 40, I will not promote you yet."); AddOption("I'll work harder.", 255); } } break; case 2: //level 70 if (client.Level >= 70 && client.HasItem(Constants.EMERALD_ID) && client.Strength >= 140 && client.Agility >= 45 && client.Vitality >= 32) { client.DeleteItem(Constants.EMERALD_ID); AddText("You have been promoted!"); client.CreateItem(Constants.METEOR_ID); //meteor client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 70) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Strength needs to be 140, Agility needs to have a minimum of 45, Vitality as a minimum of 32"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 70 and bring me an Emerald in order to be promoted! "); AddOption("I'll work harder.", 255); } } break; case 3: //level 100 if (client.Level >= 100 && client.HasItem(Constants.METEOR_ID) && client.Strength >= 205 && client.Agility >= 60 && client.Vitality >= 42) { client.DeleteItem(Constants.METEOR_ID); AddText("You have been promoted!"); switch (client.RebornCount) { case 0: client.CreateItem(700031); //normal rainbow gem break; default: client.CreateItem(130087, 0, 0, 0, 255); //unique 1 sock armor break; } client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 100) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Strength needs to be 205, Agility needs to have a minimum of 60, Vitality as a minimum of 42"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 100 and bring me an Meteor in order to be promoted! "); AddOption("I'll work harder.", 255); } } break; case 4: //level 110 if (client.Level >= 110 && client.HasItem(Constants.MOONBOX_ID) && client.Strength >= 225 && client.Agility >= 65 && client.Vitality >= 47) { client.DeleteItem(Constants.MOONBOX_ID); client.CreateItem(Constants.DRAGONBALL_ID); AddText("You have been promoted!"); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 110) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Strength needs to be 225, Agility needs to have a minimum of 65, Vitality as a minimum of 47"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 110 and bring me an Moon Box in order to be promoted! "); AddOption("I'll work harder.", 255); } } break; } break; #endregion #region Learn Skills case 3: AddText("What skill would you like to learn?"); AddOption("XP Skills", 4); AddOption("Dash", 5); AddOption("Nothing.", 255); break; case 4: if (client.Level >= 15) { AddText("You have learned your XP skills successfully"); client.CombatManager.LearnNewSkill(SkillID.Accuracy); client.CombatManager.LearnNewSkill(SkillID.Shield); client.CombatManager.LearnNewSkill(SkillID.Superman); client.CombatManager.LearnNewSkill(SkillID.Roar); } else { AddText("You must be at least level 15 to learn these skills!"); } AddOption("Thanks", 255); break; case 5: if (client.Level >= 63) { AddText("You have learned Dash successfully"); client.CombatManager.LearnNewSkill(SkillID.Dash); } else { AddText("You must be at least level 63 to learn this skill!"); } AddOption("Thanks", 255); break; #endregion } AddFinish(); Send(); }
public override void Run(Game_Server.Player client, ushort linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); if (client.ProfessionType != ProfessionType.Trojan) { AddText("Trojans do not share their secrets of battle with others. I shall not teach you."); AddOption("I see.", 255); AddFinish(); Send(); return; } switch (linkback) { #region Initial Options case 0: AddText("Trojans can wield dual weapons, and fearlessly take on anyone in melee"); AddText(" combat! Whatever the cost, always remember that courage is the foundation"); AddText(" of victory! So, what can I do for you?"); AddOption("I would like to get promoted.", 1); AddOption("I wish to learn skills.", 3); AddOption("Nothing.", 255); break; #endregion #region Promotion case 1: switch (client.ProfessionLevel) { case 0: AddText("The single requirement of becoming a Trojan is a minimum level of 15."); AddText(" Would you like to proceed?"); AddOption("Yes, please.", 2); AddOption("No.", 255); break; case 1: AddText("You may become a Veteran Trojan at level 40. Do you want to continue?"); AddOption("Yes, I do.", 2); AddOption("No.", 255); break; case 2: AddText("You may promote to Tiger Trojan at level 70."); AddText(" I will require one Emerald, I hear they are dropped by"); AddText(" monsters in the desert. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 3: AddText("You may promote to Tiger Trojan at level 100."); AddText(" I will require one Meteor. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 4: AddText("You may promote to Tiger Trojan at level 110."); AddText(" I will require one Moon Box. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 5: AddText("You are a true Trojan. I cannot promote you anymore!"); AddOption("I see.", 255); break; } break; case 2: switch (client.ProfessionLevel) { case 0: //level 15 if (client.Level >= 15) { AddText("You have been promoted! I have taught you XP skills as a reward!"); client.CombatManager.LearnNewSkill(SkillID.Accuracy); client.CombatManager.LearnNewSkill(SkillID.Cyclone); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You are not level 15, I will not promote you yet."); AddOption("I'll work harder.", 255); } break; case 1: //level 40 if (client.Level >= 40 && client.Strength >= 60 && client.Agility >= 25 && client.Vitality >= 25) { AddText("You have been promoted!"); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You must be level 40, I will not promote you yet."); AddOption("I'll work harder.", 255); } break; case 2: //level 70 if (client.Level >= 70 && client.HasItem(Constants.EMERALD_ID) && client.Strength >= 110 && client.Agility >= 42 && client.Vitality >= 45) { client.DeleteItem(Constants.EMERALD_ID); AddText("You have been promoted!"); client.CreateItem(Constants.METEOR_ID); //meteor client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You must be level 70 and bring me an Emerald in order to be promoted!"); AddOption("I'll work harder.", 255); } break; case 3: //level 100 if (client.Level >= 100 && client.HasItem(Constants.METEOR_ID) && client.Strength >= 110 && client.Agility >= 42 && client.Vitality >= 45) { client.DeleteItem(Constants.METEOR_ID); AddText("You have been promoted!"); switch (client.RebornCount) { case 0: client.CreateItem(700031); //normal rainbow gem break; default: client.CreateItem(130087, 0, 0, 0, 255); //unique 1 sock armor break; } client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You must be level 100 and have a Meteor in order to be promoted!"); AddOption("I'll work harder.", 255); } break; case 4: //level 110 if (client.Level >= 110 && client.HasItem(Constants.MOONBOX_ID) && client.Strength >= 170 && client.Agility >= 65 && client.Vitality >= 100) { client.DeleteItem(Constants.MOONBOX_ID); client.CreateItem(Constants.DRAGONBALL_ID); AddText("You have been promoted!"); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You must be level 110 and have a Moon Box in order to be promoted!"); AddOption("I'll work harder.", 255); } break; } break; #endregion #region Learn Skills case 3: AddText("What skill would you like to learn?"); AddOption("XP Skills", 4); AddOption("Hercules", 5); AddOption("Spirit Healing", 6); AddOption("Robot", 7); AddOption("Nothing.", 255); break; case 4: if (client.Level >= 15) { AddText("You have learned Cyclone and Accuracy successfully"); client.CombatManager.LearnNewSkill(SkillID.Cyclone); client.CombatManager.LearnNewSkill(SkillID.Accuracy); } else { AddText("You must be at least level 15 to learn these skills!"); } AddOption("Thanks", 255); break; case 5: if (client.Level >= 40) { AddText("You have learned Hercules successfully"); client.CombatManager.LearnNewSkill(SkillID.Hercules); } else { AddText("You must be at least level 40 to learn this skill!"); } AddOption("Thanks", 255); break; case 6: if (client.Level >= 40) { AddText("You have learned Spirit Healing successfully"); client.CombatManager.LearnNewSkill(SkillID.SpiritHealing); } else { AddText("You must be at least level 40 to learn this skill!"); } AddOption("Thanks", 255); break; case 7: if (client.Level >= 40) { AddText("You have learned Robot successfully"); client.CombatManager.LearnNewSkill(SkillID.Robot); } else { AddText("You must be at least level 40 to learn this skill!"); } AddOption("Thanks", 255); break; #endregion } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: if (_client.Tasks.ContainsKey(TaskType.UnknownMan) && DateTime.Now < _client.Tasks[TaskType.UnknownMan].Expires) { AddText("I need some time to recover. Come see me tomorrow"); AddOption("I shall", 255); } else if (_client.HasItem(722185)) { AddText("Is that wine for me? I'm so very thirsty!"); AddOption("Here you go.", 2); AddOption("No! Get away from me", 255); } else { AddText("Hey, you there! Please take pity on a homeless old man! I am so hungry but can`t even afford a bowl of noodles. Could you help "); AddText("me out here? The gods always smile on kindness, you know!"); AddOption("Here are 100 silvers. Take care.", 1); AddOption("No way. I don`t do charity.", 255); } break; case 1: AddText("Thank you so much stranger! The only thing that could improve this meal is some wine to wash it down. "); AddText("Can you bring me some DrunkCelestial wine please?"); AddOption("I'll get it", 255); break; case 2: if (_client.HasItem(722185)) { _client.DeleteItem(722185); AddText("Ahhhh... that hit the spot. Your generosity is legendary! "); AddText("Would you like this old man to help you unlock the secret of the DragonBalls?"); AddOption("Teach me please", 3); AddOption("No thanks", 255); } break; case 3: { var cost = _client.Level > 99 ? 2 : 1; AddText("I will require " + cost + " DragonBalls to help you unlock infinite power. This is your last chance to leave"); AddOption("Do it", 4); AddOption("Maybe later", 255); break; } case 4: { var cost = _client.Level > 99 ? 2 : 1; if (_client.Tasks.ContainsKey(TaskType.UnknownMan) && DateTime.Now < _client.Tasks[TaskType.UnknownMan].Expires) { AddText("I need some time to recover. Come see me tomorrow"); AddOption("I shall", 255); } else if (_client.HasItem(Constants.DRAGONBALL_ID, cost)) { if (!_client.Tasks.ContainsKey(TaskType.UnknownMan)) { _client.Tasks.TryAdd(TaskType.UnknownMan, new Task(_client.UID, TaskType.UnknownMan, DateTime.Now.AddHours(12))); } else { _client.Tasks[TaskType.UnknownMan].Expires = DateTime.Now.AddHours(12); } for (var i = 0; i < cost; i++) { _client.DeleteItem(Constants.DRAGONBALL_ID); } _client.GainExpBall(6000); AddText("It is done! I need some time to recover before you come see me again."); AddOption("Thank you", 255); } else { AddText("You do not have the " + cost + " DragonBalls I require. Come back when you have them"); AddOption("Yes sir", 255); break; } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: { AddText("Hello! I can always succeed in upgrading item quality. But I`ll ask for a few more dragon balls than Artisan Wind. I can also upgrade item levels. How can I help you?"); AddOption("Upgrade Quality", 1); AddOption("Upgrade Level", 2); AddOption("No thanks", 255); break; } case 1: { AddText("What item would you like me to upgrade the quality of?"); AddOption("Helmet/Earrings/TaoCap ", 11); AddOption("Necklace/Bag ", 12); AddOption("Ring/Bracelet ", 16); AddOption("Weapon", 14); AddOption("Shield ", 15); AddOption("Armor ", 13); AddOption("Boots ", 18); AddOption("I changed my mind. ", 255); break; } case 2: { AddText("What item would you like me to upgrade the level of?"); AddOption("Helmet/Earrings/TaoCap ", 31); AddOption("Necklace/Bag ", 32); AddOption("Ring/Bracelet ", 36); AddOption("Weapon", 34); AddOption("Shield ", 35); AddOption("Armor ", 33); AddOption("Boots ", 38); AddOption("I changed my mind. ", 255); break; } case 11: case 12: case 13: case 14: case 15: case 16: case 18: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 10)); if (equipment == null) { AddText("There must be some mistake., You must be wearing an item before you may upgrade it!"); AddOption("Nevermind", 255); } else if (equipment.StaticID == equipment.GetNextItemQuality()) { AddText("There must be some mistake. This item cannot be upgraded further!"); AddOption("Nevermind", 255); } else { var dbCost = 1 + 100 / equipment.ChanceToUpgradeQuality(); AddText("It will take " + dbCost + " DragonBalls to upgrade the quality of this item."); AddOption("Upgrade it", (byte)(_linkback % 10 + 20)); AddOption("Never mind", 255); } break; } case 21: case 22: case 23: case 24: case 25: case 26: case 28: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 10)); if (equipment == null) { AddText("There must be some mistake., You must be wearing an item before you may upgrade it!"); AddOption("Nevermind", 255); } else if (equipment.StaticID == equipment.GetNextItemQuality()) { AddText("There must be some mistake. This item cannot be upgraded!"); AddOption("Nevermind", 255); } else { var dbCost = 1 + 100 / equipment.ChanceToUpgradeQuality(); if (!_client.HasItem(Constants.DRAGONBALL_ID, dbCost)) { AddText("You do not have the required " + dbCost + " DragonBalls to upgrade quality!"); AddOption("Sorry", 255); } else { for (var i = 0; i < dbCost; i++) { _client.DeleteItem(Constants.DRAGONBALL_ID); } equipment.ChangeItemID(equipment.GetNextItemQuality()); if (Common.PercentSuccess(Constants.SOCKET_RATE * 2)) { if (equipment.Gem1 == 0) { equipment.Gem1 = 255; Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, "As a very lucky player, " + _client.Name + " has added the first socket to his/her " + equipment.BaseItem.Name)); } else if (equipment.Gem2 == 0) { equipment.Gem2 = 255; Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, "As a very lucky player, " + _client.Name + " has added the second socket to his/her " + equipment.BaseItem.Name)); } } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment, ItemInfoAction.Update)); _client.Recalculate(); AddText("The quality has been upgraded! Enjoy your new item."); AddOption("Thanks!", 255); } } break; } case 31: case 32: case 33: case 34: case 35: case 36: case 38: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 10)); if (equipment == null) { AddText("There must be some mistake., You must be wearing an item before you may upgrade it!"); AddOption("Nevermind", 255); } else if (equipment.StaticID == equipment.GetNextItemLevel() || equipment.BaseItem.LevelReq >= 120) { AddText("There must be some mistake. I cannot upgrade this item further."); AddOption("Nevermind", 255); } else { var metCost = 1 + 100 / equipment.ChanceToUpgradeLevel(); if (metCost > 40) { metCost = 40; } AddText("It will take " + metCost + " Meteors to upgrade the level of this item."); AddOption("Upgrade it", (byte)(_linkback % 10 + 40)); AddOption("Never mind", 255); } break; } case 41: case 42: case 43: case 44: case 45: case 46: case 48: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 10)); if (equipment == null) { AddText("There must be some mistake., You must be wearing an item before you may upgrade it!"); AddOption("Nevermind", 255); } else if (equipment.StaticID == equipment.GetNextItemLevel() || equipment.BaseItem.LevelReq >= 120) { AddText("There must be some mistake. I cannot upgrade this item further."); AddOption("Nevermind", 255); } else if (_client.Level < equipment.GetDBItemByStaticID(equipment.GetNextItemLevel()).LevelReq) { AddText("You are too low level to wear the upgraded item!"); AddOption("Oops", 255); } else { var metCost = 1 + 100 / equipment.ChanceToUpgradeLevel(); if (metCost > 40) { metCost = 40; } if (!_client.HasItem(Constants.METEOR_ID, (int)metCost)) { AddText("You do not have the required " + metCost + " Meteors to upgrade this item's level!"); AddOption("Sorry", 255); } else { for (var i = 0; i < metCost; i++) { _client.DeleteItem(Constants.METEOR_ID); } equipment.ChangeItemID(equipment.GetNextItemLevel()); if (Common.PercentSuccess(Constants.SOCKET_RATE)) { if (equipment.Gem1 == 0) { equipment.Gem1 = 255; Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, "As a very lucky player, " + _client.Name + " has added the first socket to his/her " + equipment.BaseItem.Name)); } else if (equipment.Gem2 == 0) { equipment.Gem2 = 255; Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, "As a very lucky player, " + _client.Name + " has added the second socket to his/her " + equipment.BaseItem.Name)); } } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment, ItemInfoAction.Update)); _client.Recalculate(); AddText("The level has been upgraded! Enjoy your new item."); AddOption("Thanks!", 255); } } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player client, ushort linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); if (client.ProfessionType != ProfessionType.Taoist && client.ProfessionType != ProfessionType.FireTaoist && client.ProfessionType != ProfessionType.WaterTaoist) { AddText("The taoists` secrets are not to be trained to outsiders. Train elsewhere, master conqueror."); AddOption("I see.", 255); AddFinish(); Send(); return; } switch (linkback) { #region Initial Options case 0: AddText("Most of the Taoists are little concerned with anything outside the pursuit of "); AddText("advanced spiritual powers. You are gifted in harnessing your inner power, "); AddText("but remember, the roots of success lie in thoroughness and attention to detail."); AddOption("I want to get promoted.", 1); AddOption("Learn basic skills.", 5); //Handles basic taoist skills if (client.ProfessionLevel >= 2) //Handles class specific skills { AddOption("Learn advanced skills.", 6); } AddOption("Okay. I see.", 255); break; #endregion #region Promotion case 1: switch (client.ProfessionLevel) { case 0: AddText("The single requirement of becoming an Taoist is a minimum level of 15."); AddText(" Would you like to proceed?"); AddOption("Yes, please.", 2); AddOption("No.", 255); break; case 1: AddText("A decision stands before you! Become an all powerful fire taoist or a merciful water taoist?"); AddOption("Water Taoist", 3); AddOption("Fire Taoist", 4); AddOption("No.", 255); break; case 2: if (client.ProfessionType == ProfessionType.FireTaoist) { AddText("You may promote to become a Fire Wizard at level 70."); } else { AddText("You may promote to become a Water Wizard at level 70."); } AddText(" I will require one Emerald, I hear they are dropped by"); AddText(" monsters in the desert. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 3: if (client.ProfessionType == ProfessionType.FireTaoist) { AddText("You may promote to become a Fire Master at level 100.."); } else { AddText("You may promote to become a Water Master at level 100."); } AddText(" I will require one Meteor. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 4: if (client.ProfessionType == ProfessionType.FireTaoist) { AddText("You may promote to become a Fire Saint at level 100.."); } else { AddText("You may promote to become a Water Saint at level 100."); } AddText(" I will require one Moon Box. Are you ready for promotion?"); AddOption("I'm ready!", 2); AddOption("I'm not sure...", 255); break; case 5: AddText("You are a true Archer. I cannot promote you anymore!"); AddOption("I see.", 255); break; } break; case 2: switch (client.ProfessionLevel) { case 0: //level 15 if (client.Level >= 15) { AddText("You have been promoted! I have taught you an XP skill as a reward!"); client.CombatManager.AddOrUpdateSkill(SkillID.Thunder, 0); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { AddText("You are not level 15, I will not promote you yet."); AddOption("I'll work harder.", 255); } break; case 1: //level 40 if (client.Level >= 40 && client.Agility >= 25 && client.Vitality >= 22 && client.Spirit >= 80) { AddText("You have been promoted!"); if (client.RebornCount == 1) { AddText("I've given you a special item to help commemorate the occasion!"); client.CreateItem(410077); //poison blade - need to add stat } if (isFire) { client.Character.Profession = 142; } else { client.Character.Profession = 132; } client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 40) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Agility needs to be 25, Vitality needs to have a minimum of 22, Spirit as a minimum of 80"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 40, I will not promote you yet."); AddOption("I'll work harder.", 255); } } break; case 2: //level 70 if (client.Level >= 70 && client.HasItem(Constants.EMERALD_ID) && client.Agility >= 45 && client.Vitality >= 32 && client.Spirit >= 140) { client.DeleteItem(Constants.EMERALD_ID); client.CreateItem(Constants.METEOR_ID); AddText("You have been promoted!"); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 70) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Agility needs to be 45, Vitality needs to have a minimum of 32, Spirit as a minimum of 140"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 70 and bring me an Emerald in order to be promoted! "); AddOption("I'll work harder.", 255); } } break; case 3: //level 100 if (client.Level >= 100 && client.HasItem(Constants.METEOR_ID) && client.Agility >= 60 && client.Vitality >= 42 && client.Spirit >= 205) { client.DeleteItem(Constants.METEOR_ID); AddText("You have been promoted!"); switch (client.RebornCount) { case 0: client.CreateItem(700031); //normal rainbow gem break; default: client.CreateItem(130087, 0, 0, 0, 255); //unique 1 sock armor break; } client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 100) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Agility needs to be 60, Vitality needs to have a minimum of 42, Spirit as a minimum of 205"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 100 and bring me an Meteor in order to be promoted! "); AddOption("I'll work harder.", 255); } } break; case 4: //level 110 if (client.Level >= 110 && client.HasItem(Constants.MOONBOX_ID) && client.Agility >= 65 && client.Vitality >= 47 && client.Spirit >= 225) { client.DeleteItem(Constants.MOONBOX_ID); client.CreateItem(Constants.DRAGONBALL_ID); AddText("You have been promoted!"); client.Character.Profession++; client.Send(new UpdatePacket(client.UID, UpdateType.Profession, client.Character.Profession)); client.Recalculate(); AddOption("Thank you!", 255); } else { if (client.Level >= 110) { AddText("It seems that you have forgot to set your stats after a reborn has been done. your Agility needs to be 65, Agility needs to have a minimum of 47, Vitality as a minimum of 225"); AddOption("How foolish of me, I'll set my stats first.", 255); break; } else { AddText("You must be level 110 and bring me an Moon Box in order to be promoted! "); AddOption("I'll work harder.", 255); } } break; } break; case 3: case 4: isFire = linkback == 4; goto case 2; #endregion #region Learn Skills case 5: AddText("What skill would you like to learn?"); AddOption("Basic Spells", 10); AddOption("Xp Skills", 11); AddOption("Fire", 12); AddOption("Meditation", 13); AddOption("Nothing.", 255); break; case 6: if (client.ProfessionType == ProfessionType.FireTaoist) { AddText("What skill would you like to learn?"); AddOption("Fire Ring", 14); AddOption("Fire Meteor", 15); AddOption("Fire Circle", 16); AddOption("Tornado", 17); } else if (client.ProfessionType == ProfessionType.WaterTaoist) { AddText("What skill would you like to learn?"); AddOption("Healing Rain", 18); AddOption("Star of Accuracy", 19); AddOption("Magic Shield", 20); AddOption("Stigma", 21); AddOption("More skills", 30); } else { AddText("What! You don't belong here. I can only teach these skills to advanced students."); } AddOption("Nevermind", 255); break; case 30: if (client.ProfessionType == ProfessionType.WaterTaoist) { AddOption("Invisibility", 22); AddOption("Pray", 23); AddOption("Advanced Cure", 24); AddOption("Nectar", 25); AddOption("Previous skills", 6); } else { AddText("What! You don't belong here. I can only teach these skills to advanced students."); } AddOption("Nevermind", 255); break; #region Basic Skills case 10: client.CombatManager.LearnNewSkill(SkillID.Cure); client.CombatManager.LearnNewSkill(SkillID.Thunder); AddText("Learned all basic spells."); AddOption("Thanks", 255); break; case 11: if (client.Level >= 15) { client.CombatManager.LearnNewSkill(SkillID.Lightning); if (client.Level >= 40) { client.CombatManager.LearnNewSkill(SkillID.Volcano); if (client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.Revive); } if (client.Level >= 70) { client.CombatManager.LearnNewSkill(SkillID.SpeedLightning); } } AddText("Learned all available XP skills"); } else { AddText("You must be at least level 15 to learn XP skills"); } AddOption("Thanks", 255); break; case 12: if (client.Level >= 40 && client.CombatManager.KnowsSkillLevel(SkillID.Thunder, 4)) { client.CombatManager.LearnNewSkill(SkillID.Fire); AddText("You have learned Fire successfully"); } else { AddText("You must be at least level 40 with level 4 Thunder to learn this skill"); } AddOption("Thanks", 255); break; case 13: if (client.Level >= 44) { client.CombatManager.LearnNewSkill(SkillID.Meditation); AddText("You have learned Meditation successfully"); } else { AddText("You must be at least level 44 to learn this skill"); } AddOption("Thanks", 255); break; #endregion #region Fire Skills case 14: if (client.Level >= 55 && client.ProfessionType == ProfessionType.FireTaoist) { client.CombatManager.LearnNewSkill(SkillID.FireRing); AddText("You have learned Fire Ring successfully"); } else { AddText("You must be at least level 55 to learn this skill"); } AddOption("Thanks", 255); break; case 15: if (client.Level >= 52 && client.ProfessionType == ProfessionType.FireTaoist) { client.CombatManager.LearnNewSkill(SkillID.FireMeteor); AddText("You have learned Fire Meteor successfully"); } else { AddText("You must be at least level 52 to learn this skill"); } AddOption("Thanks", 255); break; case 16: if (client.Level >= 65 && client.ProfessionType == ProfessionType.FireTaoist) { client.CombatManager.LearnNewSkill(SkillID.FireCircle); AddText("You have learned Fire Circle successfully"); } else { AddText("You must be at least level 65 to learn this skill"); } AddOption("Thanks", 255); break; case 17: if (client.Level >= 90 && client.ProfessionType == ProfessionType.FireTaoist && client.CombatManager.KnowsSkillLevel(SkillID.Fire, 3)) { client.CombatManager.LearnNewSkill(SkillID.Tornado); AddText("You have learned Tornado successfully"); } else { AddText("You must be at least level 90 with level 3 Fire to learn this skill"); } AddOption("Thanks", 255); break; #endregion #region Water Skills case 18: if (client.Level >= 40 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.HealingRain); AddText("You have learned Healing Rain successfully"); } else { AddText("You must be at least level 40 to learn this skill"); } AddOption("Thanks", 255); break; case 19: if (client.Level >= 45 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.StarOfAccuracy); AddText("You have learned Star of Accuracy successfully"); } else { AddText("You must be at least level 45 to learn this skill"); } AddOption("Thanks", 255); break; case 20: if (client.Level >= 50 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.MagicShield); AddText("You have learned Magic Shield successfully"); } else { AddText("You must be at least level 50 to learn this skill"); } AddOption("Thanks", 255); break; case 21: if (client.Level >= 55 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.Stigma); AddText("You have learned Stigma successfully"); } else { AddText("You must be at least level 55 to learn this skill"); } AddOption("Thanks", 255); break; case 22: if (client.Level >= 60 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.Invisiblity); AddText("You have learned Invisibility successfully"); } else { AddText("You must be at least level 60 to learn this skill"); } AddOption("Thanks", 255); break; case 23: if (client.Level >= 70 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.Pray); AddText("You have learned Pray successfully"); } else { AddText("You must be at least level 70 to learn this skill"); } AddOption("Thanks", 255); break; case 24: if (client.Level >= 81 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.AdvancedCure); AddText("You have learned Advanced Cure successfully"); } else { AddText("You must be at least level 81 to learn this skill"); } AddOption("Thanks", 255); break; case 25: if (client.Level >= 94 && client.ProfessionType == ProfessionType.WaterTaoist) { client.CombatManager.LearnNewSkill(SkillID.Nectar); AddText("You have learned Nectar successfully"); } else { AddText("You must be at least level 94 to learn this skill"); } AddOption("Thanks", 255); break; #endregion #endregion } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: AddText("A good set of equipment can help you a lot in future battles.Is there something I can do for you?"); AddOption("Enchant HP to my gears.", 1); AddOption("Composing Upgrade.", 2); AddOption("Nothing right now, thanks.", 255); break; case 1: _client.Send(GeneralActionPacket.Create(_client.UID, Enum.DataAction.OpenCustom, 1091)); break; case 2: AddText("There are two ways of composing from +1 to +9 with +n stones or +n items and from +9 to +12 with DragonBalls."); AddText("Whitch one would you want?"); AddOption("Compose +1 to +9.", 3); AddOption("Compose +9 to +12.", 4); AddOption("How does composing +9 to +12 works?", 5); AddOption("Thanks.", 255); break; case 3: _client.Send(GeneralActionPacket.Create(_client.UID, Enum.DataAction.OpenWindow, 1)); break; case 4: AddText("What a glorious day! I belive it's the best weather to refine equipment in. Do you need my help with anything?"); AddOption("Compose +9 Equipment to +10.", 6); AddOption("Compose +10 Equipment to +11.", 7); AddOption("Compose +11 Equipment to +12.", 8); AddOption("Nothing right now, thanks.", 255); break; case 5: AddText("If you have any +9 items, you may use DragonBalls to refine it and upgrade its bonus level up to +12."); AddOption("Are there any limits to equipment refining?", 9); AddOption("How many DragonBalls would I need?", 17); break; case 9: AddText("When your level reaches 130, I can help you upgrade the bonus level of your equiment and weapons."); AddText("However, there are limitations.Only right-Handed weapons can be refined. Whereas, there are no limits to equipment refining."); AddOption("Thanks. I never knew.", 255); break; case 17: AddText("12 DragonBalls are required for refining +9 items to +10, "); AddText("25 DragonBalls are required for refining +10 items to +11, "); AddText("4 DBScrolls are required for refining +11 items to +12,"); AddOption("Got it, thanks.", 255); break; #region +9 to +10 case 6: AddText("Choose the equipment you want to upgrade from +9 to +10 from the list below. "); AddOption("Helmet/Earrings/TaoCap ", 11); AddOption("Ring/Bracelet ", 16); AddOption("Necklace/Bag ", 12); AddOption("Boots ", 18); AddOption("Armor ", 13); AddOption("Shield ", 15); AddOption("Weapon ", 14); AddOption("I changed my mind. ", 255); break; case 11: case 12: case 13: case 14: case 15: case 16: case 18: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 10)); if (equipment == null) { AddText("There must be some mistake.... You must be wearing the items in order to refine it!"); } else if (equipment.Plus != 9) { AddText("It seems that your items is not +9, in this case i can not help you."); } else if (!_client.HasItem(1088000, 12)) { AddText("There must be some mistake. You do not have the 12 DragonBalls required to refine this item!"); } else { for (var i = 0; i < 12; i++) { _client.DeleteItem(1088000); } equipment.Plus++; _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, _client.Name + " upgraded his " + equipment.BaseItem.Name + " to +10 . Congratulations!")); _client.Save(); } AddOption("Nevermind", 255); break; } #endregion #region +10 to +11 case 7: AddText("Choose the equipment you want to upgrade from +10 to +11 from the list below. "); AddOption("Helmet/Earrings/TaoCap ", 21); AddOption("Ring/Bracelet ", 26); AddOption("Necklace/Bag ", 22); AddOption("Boots ", 28); AddOption("Armor ", 23); AddOption("Shield ", 25); AddOption("Weapon ", 24); AddOption("I changed my mind. ", 255); break; case 21: case 22: case 23: case 24: case 25: case 26: case 28: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 20)); if (equipment == null) { AddText("There must be some mistake.... You must be wearing the items in order to refine it!"); } else if (equipment.Plus != 10) { AddText("It seems that your items is not +10, in this case I can not help you."); } else if (!_client.HasItem(1088000, 25)) { AddText("There must be some mistake. You do not have the 25 DragonBalls required to refine this item!"); } else { for (var i = 0; i < 25; i++) { _client.DeleteItem(1088000); } equipment.Plus++; _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, _client.Name + " upgraded his " + equipment.BaseItem.Name + " to +11 . Congratulations!")); _client.Save(); } AddOption("Nevermind", 255); break; } #endregion #region +11 to +12 case 8: AddText("Choose the equipment you want to upgrade from +11 to +12 from the list below. "); AddOption("Helmet/Earrings/TaoCap ", 31); AddOption("Ring/Bracelet ", 36); AddOption("Necklace/Bag ", 32); AddOption("Boots ", 38); AddOption("Armor ", 33); AddOption("Shield ", 35); AddOption("Weapon ", 34); AddOption("I changed my mind. ", 255); break; case 31: case 32: case 33: case 34: case 35: case 36: case 38: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 30)); if (equipment == null) { AddText("There must be some mistake.... You must be wearing the items in order to refine it!"); } else if (equipment.Plus != 11) { AddText("It seems that your items is not +11, in this case I can not help you."); } else if (!_client.HasItem(720028, 4)) { AddText("There must be some mistake. You do not have the 4 DBScrolls required to refine this item!"); } else { for (var i = 0; i < 4; i++) { _client.DeleteItem(720028); } equipment.Plus++; _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, _client.Name + " upgraded his " + equipment.BaseItem.Name + " to +12 . Congratulations!")); _client.Save(); } AddOption("Nevermind", 255); break; } #endregion } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: if (_client.RebornCount == 1) { if (_client.ProfessionLevel == 5 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { AddText("Even bold adventurers eventually grow tired of their journeys. I help these heroes by offering them life anew."); AddOption("I wish to reborn.", 1); AddOption("I'm not tired!", 255); } else { AddText("Hello young one! I help people seek the ultimate goal of rebirth. "); AddText("You are not yet experienced enough to undertake this adventure. Please come back later."); AddOption("I will.", 255); } } else if (_client.RebornCount == 2) { AddText("I have helped you as much as I can. Even heroes have their limits."); AddOption("Thanks", 255); } break; case 1: if (_client.RebornCount == 1 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { AddText("By accepting the gift of rebirth, you will start your life again. "); AddText("You can unlock great strength as well as new skills in the process! "); AddText("Are you sure you're ready to give up your current life? "); AddOption("I'm ready.", 2); AddOption("Not yet!", 255); } else { AddText("Ooh my! Lets not get ahead of ourselves. You are not yet ready for your second rebirth."); AddOption("Sorry.", 255); } break; case 2: if (_client.HasItem(Constants.EXEMPTION_TOKEN_ID)) { AddText("You can choose to either receive a gem of great power or bless your equipment for even greater strength. Which would you like?"); AddOption("Blessed Rebirth", 3); AddOption("Gem Rebirth", 5); AddOption("I'm not sure...", 255); } else { AddText("Your second rebirth requires the unlocking of great power. Please make sure you have a ExemptionToken before coming to me."); AddOption("Sorry.", 255); } break; case 3: case 4: isBlessedRebirth = _linkback == 3; AddText("What profession would you like in your new life?"); AddOption("Trojan", 11); AddOption("Warrior", 12); AddOption("Water Taoist", 13); AddOption("Fire Taoist", 14); AddOption("Archer", 15); AddOption("I'm not sure...", 255); break; case 5: AddText("What type of gem would you like?"); AddOption("Phoenix Gem", 20); AddOption("Dragon Gem", 21); AddOption("Fury Gem", 22); AddOption("Rainbow Gem", 23); AddOption("More Options", 6); AddOption("I'm not sure...", 255); break; case 6: AddText("What type of gem would you like?"); AddOption("Kylin Gem", 24); AddOption("Violet Gem", 25); AddOption("Moon Gem", 26); AddOption("Previous Options", 5); AddOption("I'm not sure...", 255); break; case 20: case 21: case 22: case 23: case 24: case 25: case 26: baseGemRequest = (byte)(_linkback % 10); _linkback = 4; goto case 4; case 11: case 12: case 13: case 14: case 15: if (_client.ProfessionLevel == 5 && _client.RebornCount == 1 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { if (_client.HasItem(Constants.EXEMPTION_TOKEN_ID)) { _client.DeleteItem(Constants.EXEMPTION_TOKEN_ID); if (isBlessedRebirth) //Bless random item. { Structures.ConquerItem item; for (var tries = 0; tries < 50; tries++) { var loc = (ItemLocation)(Common.Random.Next(10)); item = _client.Equipment.GetItemBySlot(loc); if (item != null && item.Bless == 0) { item.Bless = 1; break; } } } else //Give Super Gem { _client.CreateItem((uint)(BASE_GEM_ID + baseGemRequest * 10)); } var path = (uint)_client.ProfessionType % 10 * 10 + (uint)_linkback % 10; if (_client.ProfessionType == ProfessionType.Archer) { path = 50 + (uint)_linkback % 10; } foreach (var pathData in Database.ServerDatabase.Context.RebornPaths.GetRebornByPath(path)) { if (pathData.IsForget) { _client.CombatManager.TryRemoveSkill(pathData.SkillId); } else { _client.CombatManager.AddOrUpdateSkill(pathData.SkillId, 0); } } foreach (var skill in _client.CombatManager.skills.Values) { skill.Database.PreviousLevel = skill.Database.Level; skill.Database.Level = 0; skill.Database.Experience = 0; skill.Save(); skill.Send(_client); } _client.Character.Profession2 = _client.Character.Profession; switch (_linkback % 10) { case 1: _client.Character.Profession = 11; break; case 2: _client.Character.Profession = 21; break; case 3: _client.Character.Profession = 132; break; case 4: _client.Character.Profession = 142; break; case 5: _client.Character.Profession = 41; break; } #region Down Level Items for (ItemLocation location = ItemLocation.Helmet; location < ItemLocation.Garment; location++) { Structures.ConquerItem item; item = _client.Equipment.GetItemBySlot(location); if (item != null) { item.DownLevelItem(); _client.Send(ItemInformationPacket.Create(item, ItemInfoAction.Update)); } } #endregion #region Set Bonus Stats _client.Character.Strength = 0; _client.Character.Vitality = 8; _client.Character.Agility = 2; _client.Character.Spirit = 0; switch (_client.Level) { case 110: case 111: _client.ExtraStats = 20; break; case 112: case 113: _client.ExtraStats = 21; break; case 114: case 115: _client.ExtraStats = 23; break; case 116: case 117: _client.ExtraStats = 26; break; case 118: case 119: _client.ExtraStats = 30; break; case 120: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 35 : 20); break; case 121: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 35 : 21); break; case 122: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 41 : 23); break; case 123: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 41 : 26); break; case 124: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 48 : 30); break; case 125: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 48 : 35); break; case 126: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 56 : 41); break; case 127: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 56 : 48); break; case 128: _client.ExtraStats = (ushort)(_client.ProfessionType == ProfessionType.WaterTaoist ? 65 : 56); break; case 129: _client.ExtraStats = 65; break; case 130: _client.ExtraStats = 75; break; } #endregion _client.RebornCount = 2; _client.Send(new UpdatePacket(_client.UID, UpdateType.Profession, _client.Character.Profession)); _client.Send(new UpdatePacket(_client.UID, UpdateType.Reborn, _client.RebornCount)); _client.SpawnPacket.RebornCount = 2; _client.SendToScreen(_client.SpawnPacket, true); _client.SetLevel(15); _client.Experience = 0; _client.Recalculate(true); _client.CombatManager.LearnNewSkill(SkillID.Bless); Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, _client.Name + " has been achieved second rebirth. Congratulations!")); _client.Save(); } else { AddText("Your second rebirth requires the unlocking of great power. Please make sure you have a ExemptionToken before coming to me."); AddOption("Sorry.", 255); } } else { AddText("Lets not get ahead of ourselves! You are not ready to be reborn a second time!"); AddOption("Sorry.", 255); } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: if (_client.HasItem(721010) && _client.HasItem(721011) && _client.HasItem(721012) && _client.HasItem(721013) && _client.HasItem(721014) && _client.HasItem(721015)) { AddText("Wow. I can't believe you were able to obtain all six tokens. I will use these tokens to teleport you "); AddText("to the life tatic where you can help some poor soul. When you teleport, the tokens will be formed into a soul jade."); AddText("Give this jade to a any of LonelyGhost so save the ghosts soul. You will recieve a moonbox for your kindness. Are you ready?"); AddOption("Yes teleport me", 3); AddOption("Not yet.", 255); } else { AddText("Hello " + _client.Name + ". My name is Maggie. I tried to conquer these tatics many years ago and was killed. "); AddText("I chose to gaurd the entrance in the afterlife to stop others from following in my footsteps. If you chose to "); AddText("ignore my warning, I will send you in. I cannot control what tatic I send you to unless you have all tokens."); AddOption("Tokens?", 1); AddOption("This is too dangerous, I must leave at once.", 255); } break; case 1: AddText("There are six different tokens you must gain from killing monsters. The monsters in each tatic will drop a different "); AddText("token. Once you have all six, I can can channel them for you and teleport you to the life tatic where you can help save "); AddText("some poor souls. I should warn you, there is one more tatic you can be sent to called the Death Tatic. Like the name suggests, "); AddText("if you get sent their, you will die. Good luck adventurer."); AddOption("Send me to a tatic", 2); AddOption("This is too dangerous, I must leave at once.", 255); break; case 2: if (Common.PercentSuccess(5.0)) { //death tatic _client.ChangeMap(1049, 211, 156); } else { //get random number between 0 and 100 int taticNum = Common.Random.Next(0, 101); //Send to a tatic based off random number if (taticNum < 17) { _client.ChangeMap(1043, 211, 156); } else if (taticNum < 33) { _client.ChangeMap(1044, 211, 156); } else if (taticNum < 49) { _client.ChangeMap(1045, 211, 156); } else if (taticNum < 65) { _client.ChangeMap(1046, 211, 156); } else if (taticNum < 81) { _client.ChangeMap(1047, 211, 156); } else { _client.ChangeMap(1048, 211, 156); } } break; case 3: if (_client.HasItem(721010) && _client.HasItem(721011) && _client.HasItem(721012) && _client.HasItem(721013) && _client.HasItem(721014) && _client.HasItem(721015)) { //remove the 6 tokens _client.DeleteItem(721010); _client.DeleteItem(721011); _client.DeleteItem(721012); _client.DeleteItem(721013); _client.DeleteItem(721014); _client.DeleteItem(721015); //give player soul jade _client.CreateItem(721072); //teleport player to last map _client.ChangeMap(1050, 211, 156); } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: { if (!_client.Tasks.ContainsKey(TaskType.Lottery)) { _client.Tasks.TryAdd(TaskType.Lottery, new Task(_client.UID, TaskType.Lottery, DateTime.Now.AddHours(24))); } if (_client.Tasks[TaskType.Lottery].Count >= 10) { AddText("I'm afraid you already played the lottery 10 times today"); AddOption("i was just getting started!", 255); break; } else if (!_client.HasItem(710212)) { AddText("Sorry i can't help you unless you buy a ticket!"); AddOption("No thanks", 255); } else { _client.Tasks[TaskType.Lottery].Count++; _client.DeleteItem(710212); var ItemInfo = Common.QurryLotteryItem(); var item = ItemInfo.Item1; item.SetOwner(_client); if (_client.AddItem(item)) { _client.Send(ItemInformationPacket.Create(item)); } else { _client.SendMessage("Error adding item"); } string pre = ""; switch (ItemInfo.Item3) { case LotteryItemType.Elite1Socket: pre = " Elite 1 socket "; break; case LotteryItemType.Elite2Socket: pre = " Elite 2 socket "; break; case LotteryItemType.ElitePlus8: pre = " Elite +8 "; break; case LotteryItemType.Super1Socket: pre = " Super 1 socket "; break; case LotteryItemType.SuperNoSocket: pre = " Super "; break; } PlayerManager.SendToServer(new TalkPacket(ChatType.GM, _client.Name + " was so lucky and won a/an " + pre + ItemInfo.Item2 + " in the lottery")); } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: AddText("The DragonBall is really a precious item.You can use it to reallot your attribute points after you have been reborned."); AddText("After reborning at 70 or above you can reallot your attribute points freely."); AddText(" Well, if you have a DragonBall, I can help you do that."); AddOption("Please help me.", 1); AddOption("Definitely.", 255); break; case 1: if (_client.RebornCount < 1) { AddText("Please come back when you have been reborned at least once in your lifetime?"); AddOption("I see.", 255); break; } if (_client.Level < 70) { AddText("You must be level 70 or above to be able to reallot attribute points!"); AddOption("Thanks. I see.", 255); break; } if (!_client.HasItem(1088000)) { AddText("Sorry, but you must pay one DragonBall come back when you have one!"); AddOption("I see!", 255); break; } else if (hasAgreed) { stats = (uint)(_client.Character.Strength + _client.Character.Vitality + _client.Character.Agility + _client.Character.Spirit + _client.ExtraStats); _client.DeleteItem(1088000); _client.Strength = 0; _client.Vitality = 8; _client.Agility = 2; _client.Spirit = 0; _client.ExtraStats = (ushort)(stats - 10); _client.Recalculate(true); _client.Save(); AddText("There you go, allot them as you wish!"); AddOption("I see!", 255); } else { hasAgreed = true; AddText("Are you sure you want to reallot your attribute points?"); AddOption("Yes.", (byte)_linkback); AddOption("No thanks.", 255); } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: AddText("A good set of equipment can help you a lot in future battles.I can help you by upgrading blessed attribute."); AddText("Keep in mind that each upgrade costs TortoiseGems witch are rare and expensive."); AddOption("Upgrade blessed attribute.", 1); AddOption("Nothing right now, thanks.", 255); break; case 1: { AddText("I see, upgrading an items blessed attribute will help you receive less damage. "); AddText("What item would you like me upgrade?"); AddOption("Helmet/Earrings/TaoCap ", 11); AddOption("Necklace/Bag ", 12); AddOption("Ring/Bracelet ", 16); AddOption("Right Weapon ", 14); AddOption("Shield/Left Weapon ", 15); AddOption("Armor ", 13); AddOption("Boots ", 18); AddOption("I changed my mind. ", 255); break; } case 11: case 12: case 13: case 14: case 15: case 16: case 18: { var equipment = _client.Equipment.GetItemBySlot((Enum.ItemLocation)(_linkback % 10)); if (equipment == null) { AddText("There must be some mistake. You must be wearing an item before you may upgrade it!"); AddOption("Nevermind", 255); break; } cost = equipment.Bless; if (equipment.Bless == 0) { AddText("Your item must be blessed in order to upgrade this attribute!"); AddOption("Nevermind", 255); break; } if (equipment.Bless == 7) { AddText("Your item has maximum bless attribute!"); AddOption("Nevermind", 255); break; } if (hasAgreed && !_client.HasItem(700073, (uint)cost)) { AddText("To upgrade this item you need to pay " + cost + " Super TortoiseGems witch you don't have!"); AddOption("I see.", 255); } else if (hasAgreed && _client.HasItem(700073, (uint)cost)) { equipment.Bless += 2; for (var i = 0; i < cost; i++) { _client.DeleteItem(700073); } _client.Send(ItemInformationPacket.Create(equipment, Enum.ItemInfoAction.Update)); equipment.Save(); Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.System, "Congratulations you have upgraded you items blessed attribute!")); } else { hasAgreed = true; AddText("To upgrade this item you need to pay " + cost + " Super TortoiseGems! Are you sure?"); AddOption("Yes.", (byte)_linkback); AddOption("No thanks.", 255); } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: if (_client.RebornCount != 0 && _client.Character.SecondQuest > 0 && _client.RebornCount < 2 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { if (_client.Character.SecondQuest > 0 && _client.RebornCount < 2 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { AddText("Even bold adventurers eventually grow tired of their journeys. I help these heroes by offering them life anew."); AddOption("I wish to reborn.", 1); AddOption("I'm not tired!", 255); break; } else { AddText("Hello young one! I help people seek the ultimate goal of rebirth. "); AddText("You are not yet experienced enough to undertake this adventure. "); AddOption("I will.", 255); } break; } else { if (_client.RebornCount != 0 && _client.Character.SecondQuest == 0) { AddText("I cannot do the rebirth ritual if you do not open the gates of hell. Go talk to alex he will show you how.."); AddOption("Okay Thanks", 255); break; } else { AddText("I have helped you as much as I can. Even heroes have their limits."); AddOption("Thanks", 255); break; } } case 1: if (_client.RebornCount < 2 && _client.Character.SecondQuest > 0 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { AddText("By accepting the gift of rebirth, you will start your life again. "); AddText("You can unlock great strength as well as new skills in the process! "); AddText("Are you sure you're ready to give up your current life? "); AddOption("I'm ready.", 2); AddOption("Not yet!", 255); break; } else { AddText("Ooh my! Lets not get ahead of ourselves. You are not yet ready to become reborn."); AddOption("Sorry.", 255); } break; case 2: if (_client.HasItem(Constants.EXEMPTION_TOKEN_ID)) { AddText("Are you sure you want to get second reborn and unlock new powers?"); AddOption("Yeah.", 5); AddOption("I'm not sure...", 255); break; } else { AddText("Rebirth requires the unlocking of great power. Please make sure you have a ExemptionToken before coming to me."); AddOption("Sorry.", 255); } break; case 5: AddText("What profession would you like in your new life?"); AddOption("Trojan", 11); AddOption("Warrior", 12); AddOption("Water Taoist", 13); AddOption("Fire Taoist", 14); AddOption("Archer", 15); AddOption("I'm not sure...", 255); break; case 11: case 12: case 13: case 14: case 15: if (_client.RebornCount < 2 && _client.Character.SecondQuest > 0 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { if (_client.HasItem(Constants.EXEMPTION_TOKEN_ID)) { _client.DeleteItem(Constants.EXEMPTION_TOKEN_ID); var path = (((uint)_client.Character.Profession1 - 5) / 10) * 100 + (((uint)_client.Character.Profession - 5)) + (uint)_linkback % 10; foreach (var pathData in Database.ServerDatabase.Context.RebornPaths.GetRebornByPath(path)) { if (pathData.IsForget) { _client.CombatManager.TryRemoveSkill(pathData.SkillId); } else { _client.CombatManager.AddOrUpdateSkill(pathData.SkillId, 0); } } foreach (var skill in _client.CombatManager.skills.Values) { skill.Database.PreviousLevel = skill.Database.Level; skill.Database.Level = 0; skill.Database.Experience = 0; skill.Save(); skill.Send(_client); } _client.CombatManager.AddOrUpdateSkill(9876, 0); _client.Character.Profession2 = _client.Character.Profession; switch (_linkback % 10) { case 1: _client.Character.Profession = 11; break; case 2: _client.Character.Profession = 21; break; case 3: _client.Character.Profession = 132; break; case 4: _client.Character.Profession = 142; break; case 5: _client.Character.Profession = 41; break; } _client.RebornCount = 2; _client.Send(new UpdatePacket(_client.UID, UpdateType.Profession, _client.Character.Profession)); _client.Send(new UpdatePacket(_client.UID, UpdateType.Reborn, _client.RebornCount)); _client.SpawnPacket.RebornCount = 1; _client.SendToScreen(_client.SpawnPacket, true); #region Down Level Items for (ItemLocation location = ItemLocation.Helmet; location < ItemLocation.Garment; location++) { Structures.ConquerItem item; item = _client.Equipment.GetItemBySlot(location); if (item != null) { item.DownLevelItem(); _client.Send(ItemInformationPacket.Create(item, ItemInfoAction.Update)); } } #endregion #region Set Bonus Stats _client.Character.Strength = 0; _client.Character.Vitality = 8; _client.Character.Agility = 2; _client.Character.Spirit = 0; switch (_client.Level) { case 120: _client.ExtraStats = (ushort)(20 + _client.ExtraStats); break; case 121: _client.ExtraStats = (ushort)(21 + _client.ExtraStats); break; case 122: _client.ExtraStats = (ushort)(23 + _client.ExtraStats); break; case 123: _client.ExtraStats = (ushort)(26 + _client.ExtraStats); break; case 124: _client.ExtraStats = (ushort)(30 + _client.ExtraStats); break; case 125: _client.ExtraStats = (ushort)(35 + _client.ExtraStats); break; case 126: _client.ExtraStats = (ushort)(41 + _client.ExtraStats); break; case 127: _client.ExtraStats = (ushort)(48 + _client.ExtraStats); break; case 128: _client.ExtraStats = (ushort)(56 + _client.ExtraStats); break; case 129: _client.ExtraStats = (ushort)(65 + _client.ExtraStats); break; case 130: _client.ExtraStats = (ushort)(75 + _client.ExtraStats); break; } #endregion if (_client.Level > 120) { _client.Character.PreviousLevel = _client.Level; } _client.SetLevel(15); _client.Experience = 0; _client.Recalculate(true); Managers.PlayerManager.SendToServer(new TalkPacket(ChatType.GM, _client.Name + " has been reborned successfully. Congratulations!")); _client.Save(); } else { AddText("Rebirth requires the unlocking of great power. Please make sure you have a ExemptionToken before coming to me."); AddOption("Sorry.", 255); } } else { AddText("Lets not get ahead of ourselves! You are not ready to achieve second rebirth. Please come back later."); AddOption("Sorry.", 255); } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: if (_client.HasItem(721002)) { AddText("Thanks a lot. Please kindly give this meteor to Minner. I hope she can understand me and wish her happy all her life."); AddOption("I hope so.", 255); } else { AddText("It is so hot. It would be very nice If I have a bottle of wine. Can you give me some wine?"); AddOption("I have a bottle of Amrita.", 1); AddOption("I do not have either.", 255); } break; case 1: if (_client.HasItem(1000030) && _client.HasItem(1088001) && _client.HasItem(721001)) { AddText("Thank you. You are very kind. I often have no food and water when I travel around. Where did you get this guardian star?"); AddOption("It is from Minner.", 2); AddOption("I picked it on the road.", 7); } else { AddText("I cannot take your Amrita. There is little water in the vast desert. You may feel thirsty and need it later. And I need a meteor too."); AddOption("See you then.", 255); } break; case 2: AddText("So she sent you to look for me. I have left so long. She must be heartbroken."); AddOption("Why did you leave her?", 3); break; case 3: AddText("We love each other deeply. I wish I could stay with her, but my life dream is to travel around. I cannot give her a warm home."); AddOption("You are right.", 4); AddOption("I like it very much.", 255); break; case 4: AddText("What a nice meteor you have. I have promised Minner that I shall give her a meteor. Would you please give your meteor to me."); AddOption("Here you are.", 5); break; case 5: AddText("Thanks. I shall engrave my love on this meteor. Please kindly give it to Minner. She will understand why I leave her."); AddOption("I shall give it to her.", 6); AddOption("Do not touch my meteor.", 255); break; case 6: if (_client.HasItem(1000030) && _client.HasItem(1088001) && _client.HasItem(721001)) { _client.DeleteItem(721001); _client.DeleteItem(1088001); _client.CreateItem(721002); AddText("Thanks a lot. Please kindly give this meteor to Minner. I hope she can understand me and wish her happy all her life."); AddOption("I hope so.", 255); } else { AddText("You don't have the items I need!"); AddOption("Sorry.", 255); } break; case 7: AddText("I must have hurt her a lot. She used to carry this bag wherever she goes. I hope she can forget me and be happy all her life."); AddOption("I got to go. Bye.", 255); break; } AddFinish(); Send(); }