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); }
//Кастуем хил 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)); } }
//Кастуем усиление 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)); } }
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); }
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); }
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); } }
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); } }
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); } }
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); } }
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); }
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); } }
//Атата игроку 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); }
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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
//Создаем магию 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); } }
//Нашел лут! 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); }
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); } }
//Кастуем урон 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); } }
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); }
//Получаем урон 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; } }
//Странные странности 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); }
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); } }
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); } }
//Используем заклинание 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); } }
//Стартуем удар 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); }
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); }