public override void Use(BattleGladiator player, BattleGladiator target) { int damage = player.Strength - target.Defense; if (damage < 0) { damage = 0; } target.Health -= damage; Console.WriteLine($"{player.Name} attacks {target.Name} for {damage}dmg"); }
public override void Use(BattleGladiator player, BattleGladiator target) { //if buff exist renew (remove and add it again) if (player.Buffs.Exists(x => x.Name == "Guarded")) { var buff = player.Buffs.Find(x => x.Name == "Guarded"); buff.DeActivate(player); player.Buffs.Remove(buff); player.AddBuff(new Guarded()); player.Buffs.Find(x => x.Name == "Guarded").Activate(player); } else { player.AddBuff(new Guarded()); player.Buffs.Find(x => x.Name == "Guarded").Activate(player); } Console.WriteLine($"{player.Name} raises his guard"); }
public static GameReturn GetReturnMessage(BattleGladiator gladiator, int turnCount) { var result = new GameReturn() { MailType = "gamereturn", GOneHealth = gladiator.Health.ToString(), GTwoHealth = gladiator.Health.ToString(), //Turn = "gladiatorOne", TurnCount = turnCount.ToString(), Winner = "None", Buffs = new List<string>() }; foreach (Buff buff in gladiator.Buffs) { result.Buffs.Add(buff.Name.ToLower()); } return result; }
public static GameStart GetStartMessage(BattleGladiator player, BattleGladiator enemy, PID turn) { var result = new GameStart() { MailType = "gamestart", PlayerName = player.Name, PlayerHealth = player.Health.ToString(), PlayerSkills = new List<string>(), EnemyName = enemy.Name, EnemyHealth = enemy.Health.ToString(), Turn = turn.ToString() }; foreach (Skill skill in player.Skills) { result.PlayerSkills.Add(skill.Name.ToLower()); } return result; }
public static ActorMeth GameManager(PID pid) { BattleGladiator gladiatorOne = new BattleGladiator(); gladiatorOne.Name = "gladiatorOne"; BattleGladiator gladiatorTwo = new BattleGladiator(); gladiatorTwo.Name = "gladiatorTwo"; int turnCount = 0; PID parent = pid; PID playerOne = new PID(); PID playerTwo = new PID(); bool isFinished = false; ActorMeth behaviour = (rt, self, _, msg) => { GameReturn pOneMsg = new GameReturn(); GameReturn pTwoMsg = new GameReturn(); switch (msg.mtype) { case Symbol.Init: playerOne = msg.content[0]; playerTwo = msg.content[1]; var startOneMsg = GameManagerService.GetStartMessage(gladiatorOne, gladiatorTwo, playerOne); GameManagerService.SendStartMessage(rt.GetWebSocket(playerOne), startOneMsg); var startTwoMsg = GameManagerService.GetStartMessage(gladiatorTwo, gladiatorOne, playerOne); GameManagerService.SendStartMessage(rt.GetWebSocket(playerTwo), startTwoMsg); break; case Symbol.GameAction: GameAction gAction = msg.content; var skills = new SkillRepository(); if ((turnCount & 1) == 0) // gladiator a { if (new PID(long.Parse(gAction.PId)).ToString() == playerOne.ToString()) { skills.UseSkill(gAction.Action, gladiatorOne, gladiatorTwo); //deactive then remove buff if the turns == zero if (gladiatorOne.Buffs.Count > 0) { foreach (Buff buff in gladiatorOne.Buffs) { buff.Turns--; if (buff.Turns <= 0) { buff.DeActivate(gladiatorOne); } } gladiatorOne.Buffs.RemoveAll(x => x.Turns <= 0); } } else { //send back msg to sync? } } else if ((turnCount & 1) != 0) // gladiator b { if (new PID(long.Parse(gAction.PId)).ToString() == playerTwo.ToString()) { skills.UseSkill(gAction.Action, gladiatorTwo, gladiatorOne); if (gladiatorTwo.Buffs.Count > 0) { foreach (Buff buff in gladiatorTwo.Buffs) { buff.Turns--; if (buff.Turns <= 0) { buff.DeActivate(gladiatorTwo); } } gladiatorTwo.Buffs.RemoveAll(x => x.Turns <= 0); } } else { //send back msg to sync? } } turnCount++; //send synced userdata back to user pOneMsg = GameManagerService.GetReturnMessage(gladiatorOne, turnCount); pTwoMsg = GameManagerService.GetReturnMessage(gladiatorTwo, turnCount); if ((turnCount & 1) == 0) { pOneMsg.Turn = playerOne.ToString(); pTwoMsg.Turn = playerOne.ToString(); pOneMsg.GOneHealth = gladiatorOne.Health.ToString(); pTwoMsg.GOneHealth = gladiatorTwo.Health.ToString(); pOneMsg.GTwoHealth = gladiatorTwo.Health.ToString(); pTwoMsg.GTwoHealth = gladiatorOne.Health.ToString(); } else if ((turnCount & 1) != 0) { pOneMsg.Turn = playerTwo.ToString(); pTwoMsg.Turn = playerTwo.ToString(); pOneMsg.GOneHealth = gladiatorOne.Health.ToString(); pTwoMsg.GOneHealth = gladiatorTwo.Health.ToString(); pOneMsg.GTwoHealth = gladiatorTwo.Health.ToString(); pTwoMsg.GTwoHealth = gladiatorOne.Health.ToString(); } if (!isFinished) { if (gladiatorOne.Health <= 0) { pOneMsg.Winner = gladiatorTwo.Name; pTwoMsg.Winner = gladiatorTwo.Name; isFinished = true; } if (gladiatorTwo.Health <= 0) { pOneMsg.Winner = gladiatorOne.Name; pTwoMsg.Winner = gladiatorOne.Name; isFinished = true; } } GameManagerService.SendReturnMessage(rt.GetWebSocket(playerOne), pOneMsg); GameManagerService.SendReturnMessage(rt.GetWebSocket(playerTwo), pTwoMsg); if (isFinished) { PID[] players = new PID[] { playerOne, playerTwo }; rt.Send(parent, new Mail(Symbol.Killed, players)); rt.Die(); } break; default: break; } return(null); }; return(behaviour); }
public void UseSkill(string skillName, BattleGladiator player, BattleGladiator target) { Skills[skillName].Use(player, target); }
public override void DeActivate(BattleGladiator player) { player.Defense -= (originalDefense / 2); }
public override void Activate(BattleGladiator player) { originalDefense = player.Defense; player.Defense += (originalDefense / 2); }