public async Task PlayerWalkOnMe(Player p, SocketCommandContext _context) { if (!used) { var random = r.NextDouble(); if (random < activationProb) { if (!p.immuneToTraps && r.NextDouble() < killProb) { await JDR.Kill(p); } if (p.immuneToTraps) { await _context.Channel.SendMessageAsync(p.user.Username + " a utilisé sa capacité spéciale pour survivre à un piège, elle est désormais désactivée"); p.immuneToTraps = false; } else { await _context.Channel.SendMessageAsync(p.user.Username + " a activé le piège mais a survécu!"); Desactivate(); } } else { await _context.Channel.SendMessageAsync(p.user.Username + " a esquivé le piège!!"); } } }
public async Task UseAbility(SocketCommandContext context, Ability ab, Player target) { if (JDR.hasStarted) { if (ab.isAvailable) { // On regarde si la capacité spéciale est utilisée sur le joueur même switch (ab.identifier) { case Ability.ID.ShowFBICard: target.votePower = 2; await JDR._context.Channel.SendMessageAsync(context.Message.Author.Mention + "A sorti sa carte FBI!\nSon vote compte désormais pour double"); break; case Ability.ID.PrepareSurvival: target.immuneToTraps = true; await JDR._context.Channel.SendMessageAsync(context.Message.Author.Mention + "s'est immunisé au prochain piège !"); break; case Ability.ID.RevealTrap: break; // Dans le cas où l'on utilise la capacité sur un autre joueur case Ability.ID.ShootSomeone: await context.Channel.SendMessageAsync(context.Message.Author.Mention + "a tué " + target.user.Username); await JDR.Kill(target); break; default: Console.WriteLine("erreur d'ID d'ability fonction Use()"); break; } // Si l'usage est unique, on ne peut utiliser qu'une fois la compétence if (ab.usageMode == UsageType.Single) { ab.isAvailable = false; } } } }