Beispiel #1
0
        public static async Task Registration(SocketCommandContext Context)
        {
            if (Context.Channel.Name != "регистрационная-палата")
            {
                await Loging.Log("Регистрация проходит исключительно в регистрационной палате!", Context.Channel);

                return;
            }

            if (Exeptioner.ValidMe(Context, false))
            {
                await Loging.Log("Вы уже являетесть членом этого города!", Context.Channel);

                return;
            }

            Person pi = new Person(Context.User.Id.ToString(), Context.User.Username.ToString());

            pi.lastRoom = Context.Channel.Id.ToString();
            persons.Add(pi.name, pi);

            string message = Context.User.Username.ToString() + " теперь полноправный член города!";

            await Loging.Log(message, Context.Channel);
        }
Beispiel #2
0
        //Кастуем хил
        private static async Task CastHeal(Person player, Magic magic, SocketCommandContext Context, string target)
        {
            //Если нет цели
            if (target == string.Empty)
            {
                player.p_Mana -= magic.cost;

                await player.GetHeal(magic.value, true);

                await Task.Run(() => Loging.Log(Context.User.Username + " подлечил себя способностью" + magic.name + " на " + magic.value + " и " + magic.effect, Context.Channel));
            }
            else
            {
                var pTarget = Exeptioner.ValidPlayer(target, Context) ? PersonService.persons[target] : null;

                if (pTarget == null)
                {
                    return;
                }

                player.p_Mana -= magic.cost;

                await pTarget.GetHeal(magic.value, true);

                await Task.Run(() => Loging.Log(Context.User.Username + " подлечил " + pTarget.name + " способностью " + magic.name + " на " + magic.value + " и " + magic.effect, Context.Channel));
            }
        }
Beispiel #3
0
        //Кастуем усиление
        private static async Task CastPowerUp(Person player, Magic magic, SocketCommandContext Context, string target)
        {
            //Если нет цели
            if (target == string.Empty)
            {
                player.p_Mana -= magic.cost;

                await player.ApplyStat(0, 0, magic.value, magic.value, magic.value);

                player.buffs.Add(new Buff(Buff.buffType.PowerUp, magic.value));

                await Task.Run(() => Loging.Log(Context.User.Username + " кастанул " + magic.name + " на себя и " + magic.effect + " усилив себя на " + magic.value, Context.Channel));
            }
            else
            {
                var pTarget = Exeptioner.ValidPlayer(target, Context) ? PersonService.persons[target] : null;

                if (pTarget == null)
                {
                    return;
                }

                player.p_Mana -= magic.cost;

                await pTarget.ApplyStat(magic.value, magic.value, magic.value);

                pTarget.buffs.Add(new Buff(Buff.buffType.PowerUp, magic.value));

                await Task.Run(() => Loging.Log(Context.User.Username + " кастанул " + magic.name + " на " + pTarget.name + " и тот " + magic.effect + " усилив на " + magic.value, Context.Channel));
            }
        }
Beispiel #4
0
        public static async Task MakeShop(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            if (Context.Channel.Name != "рынок")
            {
                await Loging.Log("Товар можно купить только на рынке!", Context.Channel);

                return;
            }
            string all = string.Empty;

            for (int i = 0; i < items.Count; i++)
            {
                all += "[" + i + "] | " + "Название : " + items[i].name + " | Цена : " + items[i].cost + "\n";
            }

            if (all == string.Empty)
            {
                all = "На рынке нет товаров!";
            }

            await Loging.Log(all, Context.Channel);
        }
Beispiel #5
0
        public async Task GetExp(int exp)
        {
            var chanel = KingdomRun.client.GetChannel(ulong.Parse(lastRoom)) as IMessageChannel;

            p_Exp += exp;

            if (p_Exp > p_Exp_Need)
            {
                int piceExp = p_Exp - p_Exp_Need;
                p_Exp = 0;
                p_Level++;
                p_Attack  += 5;
                p_Defence += 2;
                p_Exp_Need = 20 * p_Level;

                await Loging.Log(name + " теперь " + p_Level + " уровня!", chanel);

                await ApplyStat(0, 0, 1, 1, 1);
                await GetExp(piceExp);

                return;
            }

            await Loging.Log(name + " получил " + exp + " опыта!", chanel);
        }
Beispiel #6
0
        public static async Task GetMagic(string text, SocketCommandContext Context)
        {
            try
            {
                string[] skillText = text.Split(",");

                if (skillText.Length > 1)
                {
                }
                else
                {
                    var player = Exeptioner.ValidMe(Context)? PersonService.persons[Context.User.Username] : null;

                    if (player == null)
                    {
                        return;
                    }

                    var magic = MagicService.magics[skillText[0]];

                    player.skills.Add(magic.name, magic);

                    await Loging.Log(player.name + " изучил " + magic.name, Context.Channel);
                }
            }
            catch
            {
                await Loging.Log("Нет такой магии!", Context.Channel);
            }
        }
Beispiel #7
0
        public static async Task UseAction(SocketCommandContext Context, string text)
        {
            string[] newText = text.Split(",");



            try
            {
                var a = actions[newText[0]];
                if (newText.Length > 1)
                {
                    if (newText[1][0] == ' ')
                    {
                        newText[1] = newText[1].Substring(1);
                    }

                    //var p = Exeptioner.ValidPlayer(newText[1], Context) ? PersonService.persons[newText[1]] : null;

                    //if (p != null)
                    await Task.Run(() => Loging.Log(Context.User.Username + " предложил " + newText[1] + " " + a.name, Context.Channel));
                }
                else
                {
                    await Task.Run(() => Loging.Log(Context.User.Username + " решил " + a.name + " после чего " + a.effect, Context.Channel));
                }

                return;
            }
            catch
            {
                await Loging.Log("Не то ты говоришь", Context.Channel);
            }
        }
Beispiel #8
0
        public static async Task ShowMySkills(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            string inv = string.Empty;

            var invent = persons[Context.User.Username].skills;

            foreach (KeyValuePair <string, Skill> kp in invent)
            {
                inv += "Название : " + kp.Value.name + "\n" +
                       "Стоимость маны : " + kp.Value.cost + "\n";
            }

            if (inv == string.Empty)
            {
                await Loging.Log("Вы ничего не знаете! Иди учись!", Context.Channel);
            }
            else
            {
                await Loging.Log("Ваши способности :\n" + inv, Context.Channel);
            }
        }
Beispiel #9
0
        public static async Task GiveItem(string text, SocketCommandContext Context)
        {
            string[] textArray = text.Split(",");



            if (!Exeptioner.ValidMe(Context) || !Exeptioner.ValidPlayer(textArray[1], Context))
            {
                return;
            }


            try
            {
                if (textArray[1][0] == ' ')
                {
                    textArray[1] = textArray[1].Substring(1);
                }

                var i  = PersonService.persons[Context.User.Username].items[textArray[0]];
                var p2 = PersonService.persons[textArray[1]].items.TryAdd(text, i);

                PersonService.persons[Context.User.Username].items.Remove(textArray[0]);

                await Loging.Log(Context.User.Username + " передал " + i.name + " " + textArray[1], Context.Channel);
            }
            catch
            {
                await Loging.Log("Так ничего не получится", Context.Channel);
            }
        }
Beispiel #10
0
        public static async Task BackToHome(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            var player = persons[Context.User.Username];

            if (player.way == -1)
            {
                await Loging.Log("Ты уже дома!", Context.Channel);

                return;
            }

            if (player.fight)
            {
                await Loging.Log("Ты в бою!", Context.Channel);

                return;
            }

            TravelService.lockWay[player.way] = false;

            player.way = -1;

            await Loging.Log("Возвращаемся домой!", Context.Channel);
        }
Beispiel #11
0
        public static async Task ShowMyItems(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            string inv = string.Empty;

            var invent = persons[Context.User.Username].items;

            foreach (KeyValuePair <string, Item> kp in invent)
            {
                inv += kp.Key + " : " + kp.Value.count + " шт.\n";
            }

            if (inv == string.Empty)
            {
                await Loging.Log("В вашем инвентаре ничего нет", Context.Channel);
            }
            else
            {
                await Loging.Log("Ваш инвентарь :\n" + inv, Context.Channel);
            }
        }
Beispiel #12
0
        //Атата игроку
        private static async Task SetEnemy(SocketCommandContext Context, int indxChanel)
        {
            Person player = Exeptioner.ValidMe(Context) ? PersonService.persons[Context.User.Username] : null;

            if (player == null)
            {
                return;
            }

            if (player.fight != false)
            {
                return;
            }

            Random rand = new Random();

            Mob mob = new Mob("Враг", rand.Next(player.p_Level - 2 < 1 ?1: player.p_Level - 2, player.p_Level + 3));

            mob.room = ulong.Parse(player.lastRoom);

            await Loging.Log("Тебе повстречался : \n" +
                             "Имя : " + mob.name + "\n" +
                             "Уровень : " + mob.level + "\n" +
                             "Здоровье : " + mob.hp + "\n" +
                             "Атака : " + mob.damage, Context.Channel);

            enemys[indxChanel] = mob;

            player.fight = true;

            await AttackEnemy(Context);
        }
Beispiel #13
0
        public static async Task SetRang(string text, SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            if (Context.Channel.Name != "замок")
            {
                await Loging.Log("Назначение титула проводится исключительно в замке!", Context.Channel);

                return;
            }

            string[] rang = text.Split(",");

            try
            {
                var person = persons[rang[1]];
                person.p_Titul = rang[0];

                await Loging.Log(person.name + " теперь имеет титул " + rang[0], Context.Channel);
            }
            catch
            {
                await Loging.Log("Нет такого челика!", Context.Channel);
            }
        }
Beispiel #14
0
        public static async Task ShowMyStats(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            string text = string.Empty;

            try
            {
                var pi = persons[Context.User.Username];

                text = "Имя : " + pi.name + "\n" +
                       "Титул : " + pi.p_Titul + "\n" +
                       "Класс : " + pi.p_Class + "\n" +
                       "Здоровье : " + pi.p_Hp + "/" + pi.p_MaxHP + "\n" +
                       "Мана : " + pi.p_Mana + "/" + pi.p_MaxMana + "\n" +
                       "Уровень : " + pi.p_Level + "\n" +
                       "Опыт : " + pi.p_Exp + "/" + pi.p_Exp_Need + "\n" +
                       "Урон : " + pi.m_Attack + "\n" +
                       "Защита : " + pi.m_Defence + "\n" +
                       "Ловкость : " + pi.m_Agility + "\n" +
                       "Сила : " + pi.m_Strength + "\n" +
                       "Интелект : " + pi.m_Intelegence + "\n" +
                       "Золото : " + pi.money + "\n";

                await Loging.Log(text, Context.Channel);
            }
            catch
            {
                await Loging.Log("Вы не являетесь членом города Замарград", Context.Channel);
            }
        }
Beispiel #15
0
        public static async Task GetPower(string text, SocketCommandContext Context)
        {
            try
            {
                string[] skillText = text.Split(",");

                if (skillText.Length > 1)
                {
                }
                else
                {
                    var player = Exeptioner.ValidMe(Context) ? PersonService.persons[Context.User.Username] : null;

                    if (player == null)
                    {
                        return;
                    }

                    var power = PowerService.powers[skillText[0]];

                    player.skills.Add(power.name, power);

                    await Loging.Log(player.name + " изучил " + power.name, Context.Channel);
                }
            }
            catch
            {
                await Loging.Log("Нет такого усиления!", Context.Channel);
            }
        }
Beispiel #16
0
        public static async Task CreateAction(string text, SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            string[] textArray = text.Split(",");

            //if (!Exeptioner.ValidMe(Context)) return;

            try
            {
                string name = textArray[0];
                if (name[0] == ' ')
                {
                    name = name.Substring(1);
                }

                string effect = textArray[1];
                if (effect[0] == ' ')
                {
                    effect = effect.Substring(1);
                }

                actions.Add(name, new Action(name, effect));

                await Loging.Log("Теперь ты можешь " + name, Context.Channel);
            }
            catch
            {
                await Loging.Log("Не то ты говоришь", Context.Channel);
            }
        }
Beispiel #17
0
        public static bool ValidMe(SocketCommandContext Context, bool talk = true)
        {
            try
            {
                var p = PersonService.persons[Context.User.Username];

                if (p.ghost && Context.Channel.Name != "духи")
                {
                    Task.Run(() => Loging.Log("Дух " + Context.User.Username + " яростно машет руками и пытается что-то сделать.", Context.Channel));
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            catch
            {
                if (talk)
                {
                    Task.Run(() => Loging.Log("Ты не зарегестрирован в городе", Context.Channel));
                }
                return(false);
            }
        }
Beispiel #18
0
        public static async Task ShowMyBaffs(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            string inv = string.Empty;

            var invent = persons[Context.User.Username].buffs;

            foreach (Buff kp in invent)
            {
                inv += "Тип : " + kp.type + "\n" +
                       "Значение : " + kp.value + "\n" +
                       "Осталось времени сек : " + kp.time + "\n";
            }

            if (inv == string.Empty)
            {
                await Loging.Log("На вас нет бафов!", Context.Channel);
            }
            else
            {
                await Loging.Log("Бафы на вас :\n" + inv, Context.Channel);
            }
        }
Beispiel #19
0
        //Создаем магию
        public static async Task CreateMagic(string text, SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            string[] textArray = text.Split(",");

            if (Context.Channel.Name != "школа-магических-исскуств")
            {
                await Loging.Log("Магию можно создавать только в школе магических исскуств", Context.Channel);

                return;
            }

            try
            {
                string type = textArray[0];

                string name = textArray[1];
                if (name[0] == ' ')
                {
                    name = name.Substring(1);
                }

                int value = int.Parse(textArray[2]);

                string effect = textArray[3];
                if (effect[0] == ' ')
                {
                    effect = effect.Substring(1);
                }

                switch (type)
                {
                case "лечение":
                    magics.Add(name, new Magic(Magic.magicType.Heal, name, value, effect));
                    break;

                case "урон":
                    magics.Add(name, new Magic(Magic.magicType.Damage, name, value, effect));
                    break;

                case "усиление":
                    magics.Add(name, new Magic(Magic.magicType.PowerUp, name, value, effect));
                    break;

                default:
                    break;
                }
                await Loging.Log("Заклинание " + name + " готово", Context.Channel);
            }
            catch
            {
                await Loging.Log("Не то ты говоришь", Context.Channel);
            }
        }
Beispiel #20
0
        //Нашел лут!
        private static async Task FindLoot(Person player, SocketCommandContext Context)
        {
            Random rand = new Random();

            int exp = rand.Next(20, 50);

            await player.GetExp(exp);

            await Loging.Log("Ты нашел мешочек с " + exp + " опыта!", Context.Channel);
        }
Beispiel #21
0
 private static async Task LogPower(SocketCommandContext Context, Power power, Person player, Person target = null)
 {
     if (target != null)
     {
         await Loging.Log(player.name + " использовал усиление " + power.name + " повысив " + power.type + " на " + power.value + " у игрока" + target.name + " и он " + power.effect, Context.Channel);
     }
     else
     {
         await Loging.Log(player.name + " использовал усиление " + power.name + " повысив " + power.type + " на " + power.value + " и он " + power.effect, Context.Channel);
     }
 }
Beispiel #22
0
        //Кастуем урон
        private static async Task CastDamage(Person player, Magic magic, SocketCommandContext Context)
        {
            if (player.fight == false)
            {
                await Task.Run(() => Loging.Log(Context.User.Username + " кастанул " + magic.name + " в воздух и вокруг теперь " + magic.effect, Context.Channel));
            }
            else
            {
                player.p_Mana -= magic.cost;

                await TravelService.SetAttack(player, magic);
            }
        }
Beispiel #23
0
        public async Task Resurrection()
        {
            var chanel = KingdomRun.client.GetChannel(ulong.Parse(lastRoom)) as IMessageChannel;

            await Task.Run(() =>
            {
                p_Hp   = p_MaxHP;
                p_Mana = p_MaxMana;
                ghost  = false;
            });

            await Loging.Log(name + " снова в теле!", chanel);
        }
Beispiel #24
0
        //Получаем урон
        public async Task GetDamage(Person hero, Magic magic = null)
        {
            var chanel = KingdomRun.client.GetChannel(room) as IMessageChannel;

            if (heroes.TryAdd(hero.name, hero))
            {
                heroes.Add(hero.name, hero);
            }

            //Если это не магия
            if (magic == null)
            {
                Random rand = new Random();

                float damag = rand.Next(hero.m_Attack - 10, hero.m_Attack + 10);

                damag = damage - (defence * 0.75f);

                hp = (int)(hp - damag);

                await Loging.Log(name + " получил " + hero.m_Attack + " урона. Осталось " + hp + " здоровья!", chanel);
            }
            else//если все таки магия
            {
                hp = (int)(hp - magic.value);

                await Loging.Log(name + " получил " + magic.value + " урона. Осталось " + hp + " здоровья!", chanel);

                await Loging.Log(name + " теперь " + magic.effect, chanel);
            }

            //Если враг побежден
            if (hp <= 0)
            {
                await Loging.Log(name + " побежден!", chanel);

                float splitExp = exp / heroes.Count;

                //распределяем опыт между игроками
                foreach (KeyValuePair <string, Person> p in heroes)
                {
                    p.Value.fight = false;

                    await p.Value.GetExp((int)splitExp);
                }

                await TravelService.CheckEnemys();

                return;
            }
        }
Beispiel #25
0
        //Странные странности
        private static async Task Nothing(Person player, SocketCommandContext Context)
        {
            Random rand = new Random();

            string[] somthing =
            {
                "Птицы пролетели мимо тебя.\n Что бы это могло значить?",
                "Солнце светит ярче чем обычно.",
                "Запах в воздухе как после дождя.",
                "Чувствуется опасность.",
                "Деревья шумят под действием ветра.",
                "Облака сгущяются",
                "В дали что бежит.\n Слишком далеко.\n Не разглядеть."
            };

            await Loging.Log(somthing[rand.Next(0, somthing.Length)], Context.Channel);
        }
Beispiel #26
0
        public static async Task GiveMoney(string text, SocketCommandContext Context)
        {
            try
            {
                string[] moneyText = text.Split(",");

                if (!Exeptioner.ValidMe(Context))
                {
                    return;
                }

                if (!Exeptioner.ValidPlayer(moneyText[1], Context))
                {
                    return;
                }

                var player = persons[Context.User.Username];

                var comrad = persons[moneyText[1]];

                int result = 1;

                if (!int.TryParse(moneyText[0], out result))
                {
                    await Loging.Log("Так ничего не получится", Context.Channel);

                    return;
                }

                if (player.money - int.Parse(moneyText[0]) < 0)
                {
                    await Loging.Log("У тебя нет столько денег", Context.Channel);

                    return;
                }
                else
                {
                    player.money -= int.Parse(moneyText[0]);
                    comrad.money += int.Parse(moneyText[0]);
                }
            }
            catch
            {
                await Loging.Log("Так ничего не получится", Context.Channel);
            }
        }
Beispiel #27
0
        public static bool ValidPlayer(string name, SocketCommandContext Context)
        {
            try
            {
                if (name[0] == ' ')
                {
                    name = name.Substring(1);
                }

                var p = PersonService.persons[name];
                return(true);
            }catch
            {
                Task.Run(() => Loging.Log("Нет такого челика", Context.Channel));
                return(false);
            }
        }
Beispiel #28
0
        //Используем заклинание
        public static async Task UsePower(SocketCommandContext Context, string text)
        {
            string[] newText = text.Split(",");

            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            try
            {
                var player = PersonService.persons[Context.User.Username];

                var power = player.skills[newText[0]] as Power;

                if (player.p_Mana - power.cost < 0)
                {
                    await Loging.Log("Не хватает маны!", Context.Channel);

                    return;
                }

                switch (power.type)
                {
                case Power.powerType.Урон:
                    await ApplyDamage(player, power, Context, newText.Length > 1?newText[1] : string.Empty);

                    break;

                case Power.powerType.Защита:
                    await ApplyDefence(player, power, Context, newText.Length > 1?newText[1] : string.Empty);

                    break;

                case Power.powerType.Характеристики:
                    await ApplyPowerUp(player, power, Context, newText.Length > 1?newText[1] : string.Empty);

                    break;
                }
            }
            catch
            {
                await Loging.Log("Не то ты говоришь", Context.Channel);
            }
        }
Beispiel #29
0
        //Стартуем удар
        public static async Task AttackEnemy(SocketCommandContext Context)
        {
            if (!Exeptioner.ValidMe(Context))
            {
                return;
            }

            var player = PersonService.persons[Context.User.Username];

            if (player.fight == false)
            {
                await Loging.Log("Врагов нет по близости!", Context.Channel);

                return;
            }

            await SetAttack(player);
        }
Beispiel #30
0
        public static async Task ClearAll(SocketCommandContext Context)
        {
            for (int i = 0; i < TravelService.lockWay.Length; i++)
            {
                TravelService.lockWay[i] = false;
                TravelService.enemys[i]  = null;
            }

            foreach (Person p in PersonService.persons.Values)
            {
                p.way    = -1;
                p.fight  = false;
                p.p_Hp   = p.p_MaxHP;
                p.p_Mana = p.p_MaxMana;
            }

            await Loging.Log("Мир чист", Context.Channel);
        }