+ coolDown = hitCoolDown;\r
+ int startX = Coordinates.X;\r
+ int startY = Coordinates.Y;\r
+ if (Motion.Direction == Direction.Down || Motion.Direction == Direction.LowerLeft || Motion.Direction == Direction.LowerRight)\r
+ {\r
+ startY = Coordinates.Y + 1;\r
+ }\r
+ else if (Motion.Direction == Direction.Up || Motion.Direction == Direction.UpperLeft || Motion.Direction == Direction.UpperRight)\r
+ {\r
+ startY = Coordinates.Y - 1;\r
+ }\r
+ if (Motion.Direction == Direction.Right || Motion.Direction == Direction.LowerRight || Motion.Direction == Direction.UpperRight)\r
+ {\r
+ startX = Coordinates.X + 1;\r
+ }\r
+ else if (Motion.Direction == Direction.Left || Motion.Direction == Direction.LowerLeft || Motion.Direction == Direction.UpperLeft)\r
+ {\r
+ startX = Coordinates.X - 1;\r
+ }\r
+ //Attack a monster\r
+ if (!Game.IsCellOpen(new Point(startX, startY)))\r
+ {\r
+ IEntity toKill = Game.GetEntityAtCoordinates(new Point(startX, startY));\r
+ //See if it is a monster\r
+ if (toKill is IMonster)\r
+ {\r
+ IMonster hitMonster = (IMonster)toKill;\r
+ hitMonster.causeDamageTo(this.Damage);\r
+ if (hitMonster.Health > 0)\r
+ {\r
+ this.Score += Game.State.HitMonsterScore;\r
+ Console.WriteLine(this.Score);\r
+ }\r
+ else\r
+ {\r
+ this.Score += Game.State.KillMonsterScore;\r
+ Console.WriteLine(this.Score);\r
+ //Remove dead monsters\r
+ Game.State.Entities.Remove(toKill);\r
+ }\r
+ }\r
+ }\r