|
@@ -2,50 +2,38 @@ using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
|
using MafiaTelegramBot.Game.GameRooms;
|
|
|
using MafiaTelegramBot.Resources;
|
|
|
-using Telegram.Bot.Types;
|
|
|
|
|
|
namespace MafiaTelegramBot.Game.GameRoles
|
|
|
{
|
|
|
public class DoctorRole : GameRoom.Role
|
|
|
{
|
|
|
public override Roles RoleKey => Roles.Doctor;
|
|
|
- private bool _haveTargets = true;
|
|
|
public override async Task NightAction()
|
|
|
{
|
|
|
- var targets = Room.Players.Values.Where(p => p.IsAlive && p.CanBeHealed).ToList();
|
|
|
- Message message;
|
|
|
- if (targets.Count == 0)
|
|
|
- {
|
|
|
- message = await Room.PlayersCh.SendTo(Player.Id, strings.nothing_to_heal);
|
|
|
- _haveTargets = false;
|
|
|
- }
|
|
|
- else message = await Room.PlayersCh.SendTo(Player.Id, strings.choose_player_to_heal,
|
|
|
- Keyboard.NightChooseTargetKeyboard(targets, Player.Id));
|
|
|
+ NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.CanBeHealed).ToList();
|
|
|
+ var message = await Room.PlayersCh.SendTo(Player.Id, strings.choose_player_to_heal,
|
|
|
+ Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
|
|
|
MessageId = message.MessageId;
|
|
|
}
|
|
|
|
|
|
public override async Task ApplyNightActionResult()
|
|
|
{
|
|
|
- if (NightTargetId == -1 && _haveTargets)
|
|
|
- await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.you_have_not_choosen_target);
|
|
|
- else
|
|
|
+ if (NightTargetId == -1)
|
|
|
{
|
|
|
- var target = Room.Players[NightTargetId];
|
|
|
- target.CanBeHealed = false;
|
|
|
- NightTargetId = -1;
|
|
|
- if (!target.IsAlive) target.IsAlive = true;
|
|
|
+ NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
|
|
|
+ await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
|
|
|
}
|
|
|
+ var target = Room.Players[NightTargetId];
|
|
|
+ target.CanBeHealed = false;
|
|
|
+ NightTargetId = -1;
|
|
|
+ if (!target.IsAlive) target.IsAlive = true;
|
|
|
}
|
|
|
|
|
|
public override async Task SetNightTarget(long userId)
|
|
|
{
|
|
|
- if (userId == -1) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_skip_vote);
|
|
|
- else
|
|
|
- {
|
|
|
- NightTargetId = userId;var target = Room.Players[userId];
|
|
|
- if(userId == Player.Id) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_heal_yourself);
|
|
|
- else await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
|
|
|
- }
|
|
|
+ NightTargetId = userId;
|
|
|
+ if(userId == Player.Id) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_heal_yourself);
|
|
|
+ else await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
|
|
|
}
|
|
|
|
|
|
public DoctorRole(GameRoom room, Player player) : base(room, player) { }
|