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();
        }
Beispiel #2
0
        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();
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        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();
        }
Beispiel #9
0
        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();
        }
Beispiel #11
0
        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();
        }
Beispiel #12
0
        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();
        }
Beispiel #13
0
        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();
        }