public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: AddText("The fate brings lover together. I hope that all can get married and live happily with their lover. What can I do for you?"); AddOption("I would like to get married please.", 1); AddOption("Just passing by.", 255); break; case 1: if (_client.Spouse == "None") { _client.Send(GeneralActionPacket.Create(_client.UID, Enum.DataAction.OpenCustom, 1067)); } else { AddText("I am sorry i cannot allow more than one marriage..."); AddOption("I see", 255); } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: _client.Send(OfflineInfoPacket.Create(_client)); break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: AddText("Hi, I can offer you a variety of hairstyles. Would you like to make a payment of 500 silvers to change your hairstyle?"); AddOption("Yes, Nostalgic styles.", 1); AddOption("Just passing by.", 255); break; case 1: AddText("Please choose a desired HairStyle below:"); AddOption("~Nostalgic 1~", 11); AddOption("~Nostalgic 2~", 12); AddOption("~Nostalgic 3~", 13); AddOption("~Nostalgic 4~", 14); AddOption("~Nostalgic 5~", 15); AddOption("~Nostalgic 6~", 16); AddOption("~Nostalgic 7~", 17); AddOption("Not interested.", 255); break; case 11: case 12: case 13: case 14: case 15: case 16: case 17: { if (_client.Money >= 500) { _client.Money -= 500; _client.Hair = (ushort)((Math.Floor((decimal)(_client.Hair / 100)) * 100) + _linkback); _client.Send(new UpdatePacket(_client.UID, UpdateType.Hair, _client.Hair)); AddText("There you go, your 'Nostalgic' hairstyle as requested."); AddOption("Thank you.", 255); } else { AddText("Please come back when you have 500 Silvers."); AddOption("I see.", 255); } } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: AddText("Sometimes, you may feel lonely. Yeah, you do need someone to be with you. I can understand that. Now answer me, have you ever "); AddText("fallen in love with someone?"); AddOption("Maybe, what should I do?", 1); AddOption("Never.", 255); break; case 1: if (_client.Spouse != Constants.DEFAULT_MATE) { AddText("It seems you've already found your true love. Be sure to cherish them daily"); AddOption("I will.", 255); } else { AddText("Marriage is not a decision to be taken lightly and means spending your life with your lover. Are you positive you've found your mate?"); AddOption("Positive!", 2); AddOption("Maybe not...", 255); } break; case 2: if (_client.Spouse == Constants.DEFAULT_MATE) { AddText("By sending this flower to your lover you are giving yourself to them. They may chose to accept or reject your offer."); AddOption("Thank you.", 255); var p = Packets.Game.GeneralActionPacket.Create(_client.UID, Enum.DataAction.OpenCustom, 1067); //p.Data2Low = _client.X; //p.Data2High = _client.Y; _client.Send(p); } break; } AddFinish(); Send(); }
public override void Run(Game_Server.Player client, ushort linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (linkback) { #region Initial Options case 0: if (client.ProfessionType == ProfessionType.Taoist && client.RebornCount == 0 || client.ProfessionType == ProfessionType.FireTaoist && client.RebornCount == 0 || client.ProfessionType == ProfessionType.WaterTaoist && client.RebornCount == 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); } else if (client.ProfessionType == ProfessionType.Taoist && client.RebornCount == 0 || client.ProfessionType == ProfessionType.FireTaoist && client.RebornCount == 0 || client.ProfessionType == ProfessionType.WaterTaoist && client.RebornCount == 1) { 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("Reborn skills", 60); AddOption("Okay. I see.", 255); } else if (client.ProfessionType != ProfessionType.Taoist && client.ProfessionType != ProfessionType.FireTaoist && client.ProfessionType != ProfessionType.WaterTaoist && client.RebornCount >= 1) { AddText("I can help you learn the skills you need after you have been reborn."); AddOption("Reborn skills.", 60); } else if (client.ProfessionType != ProfessionType.Taoist && client.ProfessionType != ProfessionType.FireTaoist && client.ProfessionType != ProfessionType.WaterTaoist && client.RebornCount == 0) { AddText("The taoists` secrets are not to be trained to outsiders. Train elsewhere, master conqueror."); AddOption("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 { 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 { 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 { 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.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 { AddText("You must be level 110 and have a 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 #region Reborn Skills #region SummonGuard case 60: AddText("In order to learn Summon Guard, you will need to bring me a Rate 10 Gold Ore."); AddOption("Summon Guard", 70); break; case 70: if (client.RebornCount >= 1) { if (client.HasItem(1072059)) { if (client.CombatManager.KnowsSkill(SkillID.SummonGuard)) { AddText("You already know Summon Guard."); AddOption("I see", 255); } else { client.CombatManager.LearnNewSkill(SkillID.SummonGuard); client.DeleteItem(1072059); AddText("You have learned Summon Guard."); AddOption("Thanks", 255); } } else { AddText("Sorry, you do not have a Rate 10 Gold Ore."); AddOption("I see", 255); } } break; #endregion #endregion #endregion } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: { if (_client.Inventory.Count < 39) { 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); break; } else { if (_client.HasItem(710212)) { var ItemInfo = Common.QurryLotteryItem(); var ItemID = ItemInfo.Item1; var ItemName = ItemInfo.Item3; ItemID.SetOwner(_client); if (_client.HasItem(710212) && _client.AddItem(ItemID)) { _client.Tasks[TaskType.Lottery].Count++; _client.DeleteItem(710212); _client.Send(ItemInformationPacket.Create(ItemID)); } else { _client.SendMessage("Error adding item"); } _client.Save(); 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")); } } } else { AddText("I'm afraid your Inventory is full, please free some space.."); AddOption("Thank you i will", 255); break; } break; } } AddFinish(); Send(); _client.Save(); }
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: AddText("I am the master of all colors. What equipment would you like to dye today?"); AddOption("Helmet", 1); AddOption("Armor", 2); AddOption("Shield", 3); AddOption("Nevermind", 255); break; case 1: { ConquerItem equipment; if (_client.TryGetEquipmentByLocation(ItemLocation.Helmet, out equipment) && equipment.EquipmentSort == 1) { AddText("What color would you like?"); AddOption("White", 13); AddOption("Blue", 14); AddOption("Red", 15); AddOption("Purple", 16); AddOption("Yellow", 17); AddOption("Nevermind", 255); } else { AddText("You are not wearing a helmet. I don't do hair!"); AddOption("Sorry", 255); } } break; case 2: { ConquerItem equipment; if (_client.TryGetEquipmentByLocation(ItemLocation.Armor, out equipment) && equipment.EquipmentSort == 3) { AddText("What color would you like?"); AddOption("White", 33); AddOption("Blue", 34); AddOption("Red", 35); AddOption("Purple", 36); AddOption("Yellow", 37); AddOption("Nevermind", 255); } else { AddText("You are not wearing armor. I don't do tattoos!"); AddOption("Sorry", 255); } break; } case 3: { ConquerItem equipment; if (_client.TryGetEquipmentByLocation(ItemLocation.WeaponL, out equipment) && equipment.EquipmentType == 900) { AddText("What color would you like?"); AddOption("White", 43); AddOption("Blue", 44); AddOption("Red", 45); AddOption("Purple", 46); AddOption("Yellow", 47); AddOption("Nevermind", 255); } else { AddText("You are not wearing a Shield."); AddOption("Sorry", 255); } break; } case 13: case 14: case 15: case 16: case 17: { ConquerItem equipment; if (_client.TryGetEquipmentByLocation(ItemLocation.Helmet, out equipment) && equipment.EquipmentSort == 1) { equipment.Color = (byte)(_linkback % 10); equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment, ItemInfoAction.Update)); _client.SendToScreen(SpawnEntityPacket.Create(_client)); } else { AddText("You are not wearing a helmet. I don't do hair!"); AddOption("Sorry", 255); } break; } case 33: case 34: case 35: case 36: case 37: { ConquerItem equipment; if (_client.TryGetEquipmentByLocation(ItemLocation.Armor, out equipment) && equipment.EquipmentSort == 3) { equipment.Color = (byte)(_linkback % 10); equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment, ItemInfoAction.Update)); _client.SendToScreen(SpawnEntityPacket.Create(_client)); } else { AddText("You are not wearing armor. I don't do tattoos!"); AddOption("Sorry", 255); } break; } case 43: case 44: case 45: case 46: case 47: { ConquerItem equipment; if (_client.TryGetEquipmentByLocation(ItemLocation.WeaponL, out equipment) && equipment.EquipmentType == 900) { equipment.Color = (byte)(_linkback % 10); equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment, ItemInfoAction.Update)); _client.SendToScreen(SpawnEntityPacket.Create(_client)); } else { AddText("You are not wearing a Shield."); AddOption("Sorry", 255); } break; } } 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!"); 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 60, Agility needs to have a minimum of 25, Vitality as a minimum of 25"); 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 >= 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 { 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 110, Agility needs to have a minimum of 42, Vitality as a minimum of 45"); 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 >= 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 { 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 110, Agility needs to have a minimum of 42, Vitality as a minimum of 45"); 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 >= 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 { 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 170, Agility needs to have a minimum of 65, Vitality as a minimum of 100"); 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("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.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("You do not have a lottery ticket! I cannot help you unless you have one."); AddText("You can buy one from LadyLuck in the Market."); 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; } /*AddText("Here is some info about the item. "); * AddText("Character: " + _client.Name + " - Item1: " + ItemInfo.Item1 + " - Item2: " + ItemInfo.Item2 + " - Item3: " + ItemInfo.Item3 + " "); * AddText("Just item: " + item + " - UniqueID: " + item.UniqueID); * AddOption("Close window", 255);*/ 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) { _client.Send(GeneralActionPacket.Create(_client.UID, Enum.DataAction.OpenWindow, 4)); }
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!"); 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 >= 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 { 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 { 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 >= 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 { 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("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(); switch (_linkback) { case 0: { AddText("Hello, did you noticed that MagicArtisan can only level items up to 120?"); AddText("I can upgrade it above 120 up to 130 ,but it costs 1 DragonBall Scroll for each upgrade."); AddOption("Yes, I want.", 2); AddOption("No. I like it this way.", 255); break; } case 2: { AddText("It costs 1 DragonBall Scroll for any item above level 110.Are you really sure you want to do that?! "); AddOption("Yeah, upgrade it! ", 3); AddOption("No. I like it this way.", 255); break; } case 3: { AddText("Each upgrade requires 1 DragonBall Scroll and there is no turning back! "); AddText("What item would you like me to 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); } else if (!_client.HasItem(Constants.DB_SCROLL_ID)) { AddText("There must be some mistake. You must pay an DragonBall Scroll before you may upgrade it!"); AddOption("Nevermind", 255); } else if (equipment.EquipmentLevel <= 110) { AddText("There must be some mistake. Your item is not above level 110!"); AddOption("Nevermind", 255); } else if (equipment.GetNextItemLevel() == equipment.StaticID) { AddText("There must be some mistake. Your item can't be upgraded anymore !"); AddOption("Nevermind", 255); } else if (_client.Level < equipment.GetDBItemByStaticID(equipment.GetNextItemLevel()).LevelReq) { AddText("There must be some mistake. You are not high level enough to wear the item after upgrade!"); AddOption("Nevermind", 255); } else { equipment.ChangeItemID(equipment.GetNextItemLevel()); _client.DeleteItem(Constants.DB_SCROLL_ID); _client.Send(ItemInformationPacket.Create(equipment, Enum.ItemInfoAction.Update)); equipment.Save(); } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: { AddText("Hello , did you knew that an socketed equipment is better than one without sockets?"); AddText("I can try to socket like Twin City Artisan but without leveling up"); AddOption("Try Socket my weapon 1 time (1 Meteor)", 1); AddOption("Try Socket my weapon 10 times (1 Meteor Scroll)", 2); AddOption("Try Socket my weapon (All Meteors)", 3); AddOption("Try Socket my weapon (All Meteor Scrolls)", 4); AddOption("No. I like it this way.", 255); break; } case 1: { var equipment = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR); if (equipment == null) { AddText("There must be some mistake. You must be wearing a weapon before I can help you socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 > 0) { AddText("There must be some mistake. Your weapon already has the maximum number of sockets!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(Constants.METEOR_ID, 1)) { AddText("There must be some mistake. You do not have 1 Meteor required to socket this item!"); AddOption("Nevermind", 255); } else { _client.DeleteItem(Constants.METEOR_ID); if (Common.PercentSuccess(Constants.SOCKET_UPGRADE)) { if (equipment.Gem1 == 0) { equipment.Gem1 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } else if (equipment.Gem2 == 0) { equipment.Gem2 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); } } break; } case 2: { var equipment = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR); if (equipment == null) { AddText("There must be some mistake. You must be wearing a weapon before I can help you socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 > 0) { AddText("There must be some mistake. Your weapon already has the maximum number of sockets!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(Constants.METEOR_SCROLL_ID, 1)) { AddText("There must be some mistake. You do not have 1 Meteor Scroll required to socket this item!"); AddOption("Nevermind", 255); } else { _client.DeleteItem(Constants.METEOR_SCROLL_ID); for (int i = 0; i < 10; i++) { if (Common.PercentSuccess(Constants.SOCKET_UPGRADE)) { if (equipment.Gem1 == 0) { equipment.Gem1 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } else if (equipment.Gem2 == 0) { equipment.Gem2 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); } } } break; } case 3: { var equipment = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR); if (equipment == null) { AddText("There must be some mistake. You must be wearing a weapon before I can help you socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 > 0) { AddText("There must be some mistake. Your weapon already has the maximum number of sockets!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(Constants.METEOR_ID, 1)) { AddText("There must be some mistake. You do not have 1 Meteor required to socket this item!"); AddOption("Nevermind", 255); } else { while (_client.DeleteItem(Constants.METEOR_ID)) { if (Common.PercentSuccess(Constants.SOCKET_UPGRADE)) { if (equipment.Gem1 == 0) { equipment.Gem1 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } else if (equipment.Gem2 == 0) { equipment.Gem2 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); } } } break; } case 4: { var equipment = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR); if (equipment == null) { AddText("There must be some mistake. You must be wearing a weapon before I can help you socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 > 0) { AddText("There must be some mistake. Your weapon already has the maximum number of sockets!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(Constants.METEOR_SCROLL_ID, 1)) { AddText("There must be some mistake. You do not have 1 Meteor Scroll required to socket this item!"); AddOption("Nevermind", 255); } else { while (_client.DeleteItem(Constants.METEOR_SCROLL_ID)) { for (int i = 0; i < 10; i++) { if (Common.PercentSuccess(Constants.SOCKET_UPGRADE)) { if (equipment.Gem1 == 0) { equipment.Gem1 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } else if (equipment.Gem2 == 0) { equipment.Gem2 = 255; _client.SendMessage("You have successfully socketed your " + equipment.BaseItem.Name, ChatType.System); } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); } } } } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player client, ushort linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); if (client.ProfessionType != ProfessionType.Archer) { AddText("Archers 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("Mercilessly fight your way to the top, my friend, because Archers are destined "); AddText("for greatness! Your swift mind will give you the ability to attack from afar, at a "); AddText("pace unmatched by any of your peers. So, what 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 an Archer 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 Eagle Archer 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 Archer 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 Dragon Archer 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 Archer 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 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 XP skills as a reward!"); client.CombatManager.LearnNewSkill(SkillID.Fly); 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 >= 25 && client.Agility >= 90 && client.Vitality >= 12) { 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 >= 45 && client.Agility >= 150 && client.Vitality >= 2) { 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 { 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 >= 60 && client.Agility >= 215 && client.Vitality >= 32) { 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 >= 68 && client.Agility >= 235 && client.Vitality >= 34) { 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("The Archer's Skills are numerous, varied and powerful. Which would you like to learn?"); AddOption("Fly", 4); AddOption("Scatter", 5); AddOption("Rapid Fire", 6); AddOption("Intensify", 7); AddOption("Other Skills", 8); AddOption("Nothing.", 255); break; case 8: AddText("The Archer's Skills are numerous, varied and powerful. Which would you like to learn?"); AddOption("Advanced Fly", 9); AddOption("Arrow Rain", 10); AddOption("Previous Skills", 3); AddOption("Nothing.", 255); break; case 4: if (client.Level >= 15) { AddText("You have learned Fly successfully"); client.CombatManager.LearnNewSkill(SkillID.Fly); } else { AddText("You must be at least level 15 to learn this skill!"); } AddOption("Thanks", 255); break; case 5: if (client.Level >= 23) { AddText("You have learned Scatter successfully"); client.CombatManager.LearnNewSkill(SkillID.Scatter); } else { AddText("You must be at least level 23 to learn this skill!"); } AddOption("Thanks", 255); break; case 6: if (client.Level >= 46) { AddText("You have learned Rapid Fire successfully"); client.CombatManager.LearnNewSkill(SkillID.RapidFire); } else { AddText("You must be at least level 46 to learn this skill!"); } AddOption("Thanks", 255); break; case 7: if (client.Level >= 71) { AddText("You have learned Intensify successfully"); client.CombatManager.LearnNewSkill(SkillID.Intensify); } else { AddText("You must be at least level 71 to learn this skill!"); } AddOption("Thanks", 255); break; case 9: if (client.Level >= 70) { AddText("You have learned Advanced Fly successfully"); client.CombatManager.LearnNewSkill(SkillID.AdvancedFly); } else { AddText("You must be at least level 70 to learn this skill!"); } AddOption("Thanks", 255); break; case 10: if (client.Level >= 70) { AddText("You have learned Arrow Rain successfully"); client.CombatManager.LearnNewSkill(SkillID.ArrowRain); } else { AddText("You must be at least level 70 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: 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, 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, 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: { 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, (uint)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, (uint)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(); switch (_linkback) { case 0: { AddText("Hello, I can upgrade your items past level 120 for the cost of 1 DragonBall."); AddText("The upgrade is guaranteed to work!"); AddOption("Yes, Let's do it!", 2); AddOption("Maybe later.", 255); break; } case 2: { AddText("Each upgrade requires 1 DragonBall and there is no turning back! "); AddText("What item would you like me to 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); } else if (!_client.HasItem(1088000)) { AddText("There must be some mistake. You must pay an DragonBall before you may upgrade it!"); AddOption("Nevermind", 255); } else if (equipment.EquipmentLevel <= 0) { AddText("There must be some mistake."); AddOption("Nevermind", 255); } else if (equipment.GetNextItemLevel() == equipment.StaticID) { AddText("There must be some mistake. Your item can't be upgraded anymore !"); AddOption("Nevermind", 255); } else if (_client.Level < equipment.GetDBItemByStaticID(equipment.GetNextItemLevel()).LevelReq) { AddText("There must be some mistake. You are not high level enough to wear the item after upgrade!"); AddOption("Nevermind", 255); } else { equipment.ChangeItemID(equipment.GetNextItemLevel()); _client.DeleteItem(1088000); _client.Send(ItemInformationPacket.Create(equipment, Enum.ItemInfoAction.Update)); equipment.Save(); } break; } } AddFinish(); Send(); }
public override void Run(Game_Server.Player _client, ushort _linkback) { Responses = new List <NpcDialogPacket>(); AddAvatar(); switch (_linkback) { case 0: { AddText("Hello , did you knew that an socketed equipment is better than one without sockets?"); AddText("It costs DragonBalls or ToughDrills/StarDrills depending on the item."); AddOption("Socket my weapon", 1); AddOption("Socket my gears", 2); AddOption("No. I like it this way.", 255); break; } case 1: { var equipment = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR); if (equipment == null) { AddText("There must be some mistake. You must be wearing a weapon before I can help you socket it!"); } else if (equipment.Gem2 > 0) { AddText("There must be some mistake. Your weapon already has the maximum number of sockets!"); } else { var cost = (uint)(equipment.Gem1 == 0 ? 1 : 5); AddText("It will cost " + cost + " DragonBall(s) to socket this weapon. Are you positive you wish to continue?"); AddOption("I'm Sure!", 10); } AddOption("Nevermind", 255); break; } case 2: { AddText("It costs 12 DragonBalls for the first socket and 7 StarDrills for second.If you consider yourself lucky try ToughDrill! "); AddOption("Make the first socket ", 3); AddOption("Make the second socket ", 4); AddOption("No. I like it this way.", 255); break; } case 3: { AddText("The first socket requires 12 DragonBalls and there is no turning back! "); AddText("What item would you like me to socket?"); AddOption("Helmet/Earrings/TaoCap ", 11); AddOption("Necklace/Bag ", 12); AddOption("Ring/Bracelet ", 16); AddOption("Shield ", 15); AddOption("Armor ", 13); AddOption("Boots ", 18); AddOption("I changed my mind. ", 255); break; } case 4: { AddText("Opening the second socket is a delicate matter. I can guarentee an upgrade by using 7 StarDrills "); AddText("or you can try your luck using a ToughDrill."); AddOption("Use ToughDrill", 5); AddOption("Use 7 StarDrills", 6); AddOption("No. I like it this way.", 255); break; } case 5: { AddText("There is no guarentee this upgrade will be a success. Each attempt will require a ToughDrill. "); AddText("What item would you like to try to socket?"); AddOption("Helmet/Earrings/TaoCap ", 21); AddOption("Necklace/Bag ", 22); AddOption("Ring/Bracelet ", 26); AddOption("Shield ", 25); AddOption("Armor ", 23); AddOption("Boots ", 28); AddOption("I changed my mind. ", 255); break; } case 6: { AddText("This upgrade is guarenteed to work but requires 7 StarDrills. "); AddText("What item would you like to try to socket?"); AddOption("Helmet/Earrings/TaoCap ", 31); AddOption("Necklace/Bag ", 32); AddOption("Ring/Bracelet ", 36); AddOption("Shield ", 35); AddOption("Armor ", 33); AddOption("Boots ", 38); AddOption("I changed my mind. ", 255); break; } case 10: { var equipment = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR); if (equipment == null) { AddText("There must be some mistake. You must be wearing a weapon before I can help you socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 > 0) { AddText("There must be some mistake. Your weapon already has the maximum number of sockets!"); AddOption("Nevermind", 255); } else { var cost = equipment.Gem1 == 0 ? 1 : 5; if (_client.HasItem(Constants.DRAGONBALL_ID, (uint)cost)) { if (cost == 1) { equipment.Gem1 = 255; } else { equipment.Gem2 = 255; } for (var i = 0; i < cost; i++) { _client.DeleteItem(Constants.DRAGONBALL_ID); } equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); AddOption("Thanks!", 255); } else { AddText("There must be some mistake. Your do not have the " + cost + " DragonBall(s) required"); AddOption("Nevermind", 255); } } break; } case 11: case 12: case 13: 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 socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem1 != 0) { AddText("There must be some mistake. This item already has a socket!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(Constants.DRAGONBALL_ID, 12)) { AddText("There must be some mistake. You do not have the 12 DragonBalls required to socket this item!"); AddOption("Nevermind", 255); } else { for (var i = 0; i < 12; i++) { _client.DeleteItem(Constants.DRAGONBALL_ID); } equipment.Gem1 = 255; equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); AddOption("Thanks!", 255); } break; } case 21: case 22: case 23: 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 socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem1 == 0) { AddText("There must be some mistake. You must open the first socket before you may attempt the second!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 != 0) { AddText("There must be some mistake. This item already has two sockets!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(1200005)) { AddText("There must be some mistake. You do not have a ToughDrill!"); AddOption("Nevermind", 255); } else { _client.DeleteItem(1200005); if (Common.PercentSuccess(12)) { equipment.Gem2 = 255; equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); AddOption("Thanks!", 255); } else { _client.CreateItem(1200006); AddText("I was not able to open the second socket for you. I will give you a StarDrill for future use."); AddOption("Damn...", 255); } } break; } case 31: case 32: case 33: 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 socket it!"); AddOption("Nevermind", 255); } else if (equipment.Gem1 == 0) { AddText("There must be some mistake. You must open the first socket before you may attempt the second!"); AddOption("Nevermind", 255); } else if (equipment.Gem2 != 0) { AddText("There must be some mistake. This item already has two sockets!"); AddOption("Nevermind", 255); } else if (!_client.HasItem(1200006, 7)) { AddText("There must be some mistake. You do not have the required 7 StarDrills!"); AddOption("Nevermind", 255); } else { for (var i = 0; i < 7; i++) { _client.DeleteItem(1200006); } equipment.Gem2 = 255; equipment.Save(); _client.Send(ItemInformationPacket.Create(equipment)); AddText("It is done! Please enjoy your new equipment."); AddOption("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) { 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 { AddText("I have helped you as much as I can. Even heroes have their limits."); AddOption("Thanks", 255); } break; case 1: if (_client.RebornCount == 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); } 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.CELESTIAL_STONE_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("Rebirth requires the unlocking of great power. Please make sure you have a CelestialStone 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 == 0 && _client.Level >= (_client.ProfessionType == Enum.ProfessionType.WaterTaoist ? 110 : 120)) { if (_client.HasItem(Constants.CELESTIAL_STONE_ID)) { _client.DeleteItem(Constants.CELESTIAL_STONE_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.Profession1 = _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 = 1; _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); _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 CelestialStone before coming to me."); AddOption("Sorry.", 255); } } else { AddText("Lets not get ahead of ourselves! You are not ready to achieve 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.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(); }