static bool DamageTarget(gamebook.Scenario SC, int TX, int TY, int MOS, AttackRequest AR, int DMG, ref AttackReport Rep) { //{Do DMG damage to whatever happens to be sitting at map} //{location TX,TY.} //{MOS is the Margin Of Success} //M: texmodel.Model; bool exparrot = false; if (SC.gb.mog.IsSet(TX, TY)) { //{It's a model. Do something appropriate to it.} texmodel.Model M = texmodel.FindModelXY(SC.gb.mlist, TX, TY); switch (M.kind) { case critters.MKIND_Critter: exparrot = DamageCritter(SC, critters.LocateCritter(M, SC.CList), MOS, AR, DMG, ref Rep); break; case dcchars.MKIND_Character: exparrot = DamagePC(SC, MOS, AR.ATT, DMG); break; } } return(exparrot); }
public async Task <IActionResult> AttackShip([FromBody] AttackRequest request) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else { var result = await battleshipService.AttackShip(request); if (result) { return(Ok(response.Message)); } else { return(BadRequest(response.Message)); } } } catch (System.Exception ex) { logger.LogError(ex.Message, ex.StackTrace); return(StatusCode(500, "Internal server error")); } }
public AttackResult Check(AttackRequest request) { var result = new AttackResult(); foreach (var fua in _fileUploads) { var webRequest = new WebPageRequest(); webRequest.Address = request.URL + fua.FilePath; webRequest.Method = fua.HTTPVerb; webRequest.RequestBody = fua.Body; webRequest.Log = true; WebPageLoader.Load(webRequest); int responseCode = 0; int.TryParse(webRequest.Response.Code, out responseCode); if (fua.SuccessResponseHTTPCode.Contains(responseCode)) { result.Success = true; result.Results.Enqueue("CVE-2017-12615 success: " + webRequest.Address); } } return(result); }
public AttackResult Check(AttackRequest request) { var sResult = new AttackResult(); WebPageRequest webRequest = new WebPageRequest(request.URL.Trim('/')); webRequest.Log = true; webRequest.LogDir = request.LogDir; foreach (var attack in _headers) { webRequest.Headers = attack.AttackHeaderCollection; WebPageLoader.Load(webRequest); foreach (var headerFP in attack.FingerPrintHeaders.AllKeys) { var header = webRequest.Response.Headers.Get(headerFP); if (header != null) { if (attack.FingerPrintHeaders[headerFP] == webRequest.Response.Headers[headerFP]) { sResult.Success = true; sResult.Results.Enqueue("URL: " + request.URL + " ::: Header=" + headerFP); } } } } return(sResult); }
public AttackResult Check(AttackRequest request) { var result = new AttackResult(); WebPageRequest webRequest = new WebPageRequest(request.URL); WebPageLoader.Load(webRequest); List <string> links = new List <string>(); if (!String.IsNullOrEmpty(webRequest.Response.Body)) { links = LinkFinder.Parse(webRequest.Response.Body, request.URL); } //Do javascript files too, expand library to check load/ajax/etc foreach (var link in links) { var testLink = link.Remove(0, 5); foreach (var fp in _fingerprints) { if (testLink.Contains(fp)) { result.Success = true; result.Results.Enqueue("Possible SSRF: " + link); } } } return(result); }
public IActionResult Attack([FromBody] AttackRequest request) { // Note: If the position with a ship on it has been attacked before, // Error response will be returned. Logger.Info("Attack request received."); var board = _boardsManager.GetBoard(request.BoardId); if (board == null) { Logger.Error($"The board [{request.BoardId}] can't be found."); return(CreateErrorResponse(StatusCodes.Status400BadRequest, $"The board {request.BoardId} doesn't exist")); } var coordinate = new Coordinate(request.Position.X.Value, request.Position.Y.Value); var attacked = board.WasAttacked(coordinate); if (attacked) { Logger.Error($"The position {request.Position} has been attached before."); return(CreateErrorResponse(StatusCodes.Status400BadRequest, $"The position {request.Position} has been attacked before.")); } var hit = board.Attack(coordinate); Logger.Info($"A ship is hit: {hit}"); return(new JsonResult(new HitResponse() { Hit = hit }) { StatusCode = StatusCodes.Status200OK }); }
public async Task MissedTheBattleship() { var createShipRequest = new CreateShipRequest { BoardId = 1, StartAt = new Lib.Position { X = 0, Y = 1 }, Length = 5, Orientation = Lib.Orientation.Horizontal }; var createShipResponse = await _client.PostAsync($"/api/ships", Helpers.GetHttpRequestContent(createShipRequest)); createShipResponse.EnsureSuccessStatusCode(); var attackRequest = new AttackRequest() { AttackAt = new Position() { X = 6, Y = 6 }, BoardId = 1 }; var attackResponse = await _client.PutAsync($"/api/ships/attack", Helpers.GetHttpRequestContent(attackRequest)); attackResponse.EnsureSuccessStatusCode(); var attackModel = await Helpers.GetHttpResponseContent <AttackResponse>(attackResponse); attackModel.Should().NotBeNull(); attackModel.IsHit.Should().BeFalse(); }
public static AttackReport ProcessAttack(gamebook.Scenario SC, AttackRequest AR) { //{We have a filled-out AttackRequest structure. Process it.} AttackReport Rep; if (AR.ATT.Contains(spells.AA_LineAttack)) { Rep = LineAttack(SC, AR); } else if (AR.ATT.Contains(spells.AA_BlastAttack)) { Rep = BlastAttack(SC, AR); } else if (AR.ATT.Contains(spells.AA_SmokeAttack)) { Rep = SmokeAttack(SC, AR); } else { Rep = DirectFire(SC, AR); } if (AR.Attacker.kind == dcchars.MKIND_Character && Rep.XPV > 0) { gamebook.DoleExperience(SC, Rep.XPV); } return(Rep); }
public async Task AttackShip_ShouldReturn_SuccessfulAttack(string hpos, string vpos, string orientation, string length) { //Arrange await _battleshipService.CreateBoard(); var request = new ShipAddRequest { HorizontalStartingPoint = hpos, VerticalStartingPoint = vpos, Orientation = "vertical", Length = length }; //Add Ships. var resultAddShip = await _battleshipService.AddShip(request); var attackRequest = new AttackRequest { HorizontalPosition = hpos, VerticalPosition = vpos, }; //Act var result = await _battleshipService.AttackShip(attackRequest); var remainingLength = _battleshipBoardGame.Ships[0].ShipPosition.Where(x => x.Hit == false).Count(); Assert.IsTrue(result); Assert.That(remainingLength == (Convert.ToInt32(length) - 1)); }
public AttackOutcome AttackOpponent(Guid boardId, AttackRequest attackRequest) { _setupValidationService.ValidateCoordinatePlacement(attackRequest.Coordinate); var attackCoordinate = attackRequest.Coordinate; var board = _boardRepository.Find(boardId); if (board == null) { throw new BadRequestException($"Board ID '{boardId}' was not found."); } var ships = board.Ships; foreach (var ship in ships) { var shipCoordinates = CoordinateHelper.GetCoordinates(ship.TopLeftCoordinate, ship.ShipLength, ship.Alignment); var conflictWithExistingShip = shipCoordinates.FirstOrDefault(a => a.Equals(attackCoordinate)); if (conflictWithExistingShip != null) { ship.SuccessfulHits.Add(attackCoordinate); return(AttackOutcome.Hit); } } return(AttackOutcome.Miss); }
public void CreateSyncRequest() { playerSyncRequest = new GameObject("PlayerSyncRequest"); playerSyncRequest.AddComponent <MoveRequest>().SetLocalPlayer(currentRoleGameObject.transform, currentRoleGameObject.GetComponent <PlayerMove>()).SetRemotePlayer(remoteRoleGameObject.transform); shootRequest = playerSyncRequest.AddComponent <ShootRequest>(); shootRequest.playerMng = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); }
public override Task <Empty> Attack(AttackRequest request, ServerCallContext context) { return(mCreationService.ExecuteOrder(request.WarriorID, async orders => { await orders.Attack(Guid.Parse(request.TargetID.Value)); return new Empty(); })); }
public void GameOver() { GameObject.Destroy(currentRoleGameObject); GameObject.Destroy(playerSyncRequest); GameObject.Destroy(remoteRoleGameObject); shootRequest = null; attackRequest = null; }
//游戏结束销毁对象 public void GameOver() { GameObject.Destroy(currentRoleGameObject); GameObject.Destroy(playerSyncRequest); GameObject.Destroy(enemyRoleGameObject); roleDataDic.Clear(); shootRequest = null; attackRequest = null; }
public async Task <IActionResult> Attack(Guid boardId, AttackRequest attackRequest) { var boardTask = _boardService.GetBoard(boardId); var shipId = _shipService.GetShipByBoardId(boardId); var resultTask = _attackService.AttackShip(boardId, shipId, attackRequest); var response = await resultTask; return(Ok(response.ToString())); }
public void DoAttack(DinoBehaviour target) { var request = new AttackRequest() { Attacker = _entityId, Damage = attrsWriter.Data.Power }; cmdSender.SendAttackCommand(target._entityId, request, OnDoAttack); }
public ActionResult <AttackResult> AttackOpponent(Guid boardId, [FromBody] AttackRequest placeShipRequest) { var attackOutcome = _gameplayService.AttackOpponent(boardId, placeShipRequest); var attackResult = new AttackResult() { Outcome = attackOutcome }; return(Ok(attackResult)); }
public virtual AttackRequest GetRequest() { if (visibleObjectsPrioritiser.GetBestTargetInSight() == null) { return(null); } AttackRequest request = new AttackRequest(1.0f, this, visibleObjectsPrioritiser.GetBestTargetInSight()); return(request); }
public AttackResult Check(AttackRequest request) { var result = new AttackResult(); foreach (var leak in _leaky) { FindLeak(request.URL, leak, result); } return(result); }
public AttackResult Check(AttackRequest request) { var result = new AttackResult(); CheckFingerprints(result, request.Body, _defaultPageFingerPrints, " - Default Page found"); CheckFingerprints(result, request.Body, _indexOfFingerPrints, " - Directory Traversal found"); CheckFingerprints(result, request.Body, _serviceFingerPrints, " - Service Page found"); CheckFingerprints(result, request.Body, _subDomainFingerPrints, " - Subdomain takeover found"); return(result); }
/// <summary> /// 创建同步请求对象,将用于同步操作的脚本都放置到该游戏物体上 /// </summary> public void CreateSyncRequest() { playerSyncRequest = new GameObject("PlayerSyncRequest"); //在场景中创建游戏物体 MoveRequest moveRequest = playerSyncRequest.AddComponent <MoveRequest>(); //添加移动同步请求对象 moveRequest.SetLocalPlayer(currentRoleGo.transform, currentRoleGo.GetComponent <PlayerMove>()); //告知移动同步对象,本地角色的位置信息 moveRequest.SetRemotePlayer(remoteRoleGo.transform); //设置敌对角色,用于接收到同步信息以后直接控制敌对角色移动 shootRequest = playerSyncRequest.AddComponent <ShootRequest>(); //添加同步箭矢射击的请求对象 shootRequest.playerManager = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); //添加造成伤害的请求对象 }
public AttackResult Check(AttackRequest request) { var result = new AttackResult(); foreach (var vuln in _vulnerableFiles) { FindFile(request.URL, vuln, result); } return(result); }
public void CreatSyncRequest() { playerSyncReuest = new GameObject("playerSyncRequest"); //设置本地客户端及另一个客户端的Obj playerSyncReuest.AddComponent <MoveRequest>() .SetLocalPlayer(currentRoleObj.transform, currentRoleObj.GetComponent <PlayerMove>()) .SetRemotePlayer(remoteRoleObj.transform); shootRequest = playerSyncReuest.AddComponent <ShootRequest>(); shootRequest.playerManager = this; attackReuest = playerSyncReuest.AddComponent <AttackRequest>(); }
public void GivenANonExistingGame_WhenAttacked_ThenReturnNotFound(Guid gameId) { var request = new AttackRequest { XCoordinate = 1, YCoordinate = 0 }; var result = _controller.Attack(gameId, request) as NotFoundObjectResult; result.Should().NotBeNull(); _mockGameRegistry.Verify(x => x.GetGame(gameId), Times.Once); }
public void CreateSyncRequest() //創造同步 //把這個當成雙方同步的橋樑 { playerSyncRequest = new GameObject("PlayerSyncRequest"); //創造一個GameObject playerSyncRequest.AddComponent <MoveRequest>().SetLocalPlayer(currentRoleGameObject.transform, currentRoleGameObject.GetComponent <PlayerMove>()) .SetRemotePlayer(remoteRoleGameObject.transform); //給這個GameObje這個添加MoveRequest(同步移動的請求)並設置本地端角色(設置位置跟移動腳本) //也要設置遠端的角色(設置位置) //再來添加攻擊請求(負責叫後端扣受攻擊玩家的血)跟射擊請求(負責箭) shootRequest = playerSyncRequest.AddComponent <ShootRequest>(); shootRequest.playerMng = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); }
private void CreateSyncRequest() { GameObject playerSyncRequest = new GameObject("PlayerSyncRequest"); moveRequest = playerSyncRequest.AddComponent <MoveRequest>(); moveRequest.PlayerManager = this; useSkillRequest = playerSyncRequest.AddComponent <UseSkillRequest>(); useSkillRequest.PlayerManager = this; useItemRequest = playerSyncRequest.AddComponent <UseItemRequest>(); useItemRequest.PlayerManager = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); attackRequest.PlayerManager = this; }
public void GameOver() { //private GameObject currentRoleGameObject; //private GameObject playerSyncRequest; //private GameObject remoteRoleGameObject; //private ShootRequest shootRequest; //private AttackRequest attackRequest; GameObject.Destroy(currentRoleGameObject); GameObject.Destroy(playerSyncRequest); GameObject.Destroy(remoteRoleGameObject); shootRequest = null; attackRequest = null; }
public void GameOver() //遊戲結束,由PlayerMng執行函式,因為遊戲結束後要摧毀某些跟Player有關的物件 { //private GameObject currentRoleGameObject; //private GameObject playerSyncRequest; //private GameObject remoteRoleGameObject; //private ShootRequest shootRequest; //private AttackRequest attackRequest; GameObject.Destroy(currentRoleGameObject); //本地端現有物件 GameObject.Destroy(playerSyncRequest); //同步的橋樑 GameObject.Destroy(remoteRoleGameObject); //遠端物件 shootRequest = null; attackRequest = null; }
public async Task AttackShip_ShouldReturn_SinkShip(string hpos, string vpos, string orientation, string length) { //Arrange await _battleshipService.CreateBoard(); var request = new ShipAddRequest { HorizontalStartingPoint = hpos, VerticalStartingPoint = vpos, Orientation = "vertical", Length = length }; //Add Ships var resultAddShip = await _battleshipService.AddShip(request); AttackRequest attackRequest = new AttackRequest(); bool attackResult = false; if (orientation == "vertical") { //Attack Ship : Attempt#1 attackRequest = new AttackRequest { HorizontalPosition = hpos, VerticalPosition = vpos, }; //Act attackResult = await _battleshipService.AttackShip(attackRequest); //Attack Ship : Attempt#2 var newVPos = Convert.ToInt32(vpos); attackRequest = new AttackRequest { HorizontalPosition = hpos, VerticalPosition = (++newVPos).ToString(), }; //Act attackResult = await _battleshipService.AttackShip(attackRequest); } //Assert Assert.IsTrue(attackResult); Assert.That(_response.Message == ResponseMessages.ATTACK_SUNK_SHIP); }
public async Task AddShip_OnSuccessfulAttack_ShouldReturn_NotAdded(string hpos, string vpos, string orientation, string length) { //Arrange await _battleshipService.CreateBoard(); var request = new ShipAddRequest { HorizontalStartingPoint = hpos, VerticalStartingPoint = vpos, Orientation = "vertical", Length = length }; //Add Ships. var resultAddShip = await _battleshipService.AddShip(request); var attackRequest = new AttackRequest { HorizontalPosition = hpos, VerticalPosition = vpos, }; //Act var result = await _battleshipService.AttackShip(attackRequest); var remainingLength = _battleshipBoardGame.Ships[0].ShipPosition.Where(x => x.Hit == false).Count(); //Assert if the attack was successful Assert.IsTrue(result); Assert.That(remainingLength == (Convert.ToInt32(length) - 1)); //Add ship request = new ShipAddRequest { HorizontalStartingPoint = hpos, VerticalStartingPoint = vpos, Orientation = "vertical", Length = length }; //Add Ships. resultAddShip = await _battleshipService.AddShip(request); Assert.IsFalse(resultAddShip); Assert.That(_response.Message == ResponseMessages.SHIP_OVERLAPPING); }
public void registerAttackRequest(AttackRequest newRequest) { pendingAttacks.Enqueue(newRequest); }