public void Attack(Transform[] _list) { list = _list; state = AnimState.Attack; SkillAttackDto = null; animatorManage.SetInt("state", (int)state); }
void Skill(UserToken token, SkillAttackDTO skillAttackDto) { skillAttackDto.userId = userCache.GetUserId(token); USER user = userCache.GetUserById(userCache.GetUserId(token)); if (user.Mp < skillAttackDto.skillDto.mp) { skillAttackDto = null; } if (skillAttackDto != null) { UserDTO userDto = (UserDTO)GetRoleModel(skillAttackDto.userId); userDto.mp -= skillAttackDto.skillDto.mp; if (userDto.mp <= 0) { userDto.mp = 0; } user.Mp -= skillAttackDto.skillDto.mp; if (user.Mp <= 0) { user.Mp = 0; } Brocast(MapProtocol.Skill_BRO, skillAttackDto); } }
public void OnClick() { Info info = GameData.play.GetComponent <Info>(); if (info.state == AnimState.Die || info.state == AnimState.Control) { return; } if (type == Type.Attack) { NetIO.Instance.Write(Protocol.Map, SceneManager.GetActiveScene().buildIndex, MapProtocol.Attack_CREQ, GetEmeny(dis, range)); } else if (type == Type.Skill) { if (GameData.UserDto.mp >= SkillDto.mp) { SkillAttackDTO skillAttackDto = new SkillAttackDTO(); skillAttackDto.targetsId = GetEmeny(dis, range); skillAttackDto.skillDto = SkillDto; NetIO.Instance.Write(Protocol.Map, SceneManager.GetActiveScene().buildIndex, MapProtocol.Skill_CREQ, skillAttackDto); } else { WarrningManager.warringList.Add(new WarringModel("能量不足", null, 2)); } } else if (type == Type.Inventory) { switch (InventoryItemDto.inventory.infoType) { case InfoType.Hp: if (GameData.UserDto.hp == GameData.UserDto.maxHp) { WarrningManager.warringList.Add(new WarringModel("你已经很健康了!", null, 2)); return; } break; case InfoType.Mp: if (GameData.UserDto.mp == GameData.UserDto.maxMp) { WarrningManager.warringList.Add(new WarringModel("你的能量很充足呀!", null, 2)); return; } break; } if (InventoryItemDto.id > 0 && InventoryItemDto != null && isCold == false) { NetIO.Instance.Write(Protocol.Map, SceneManager.GetActiveScene().buildIndex, MapProtocol.UseInventory_CREQ, InventoryItemDto.id); SetCold(); } else { WarrningManager.warringList.Add(new WarringModel("正在冷却中...", null, 2)); } } }
public async Task <ServiceResponse <AttackResultDTO> > SkillAttack(SkillAttackDTO request) { var response = new ServiceResponse <AttackResultDTO>(); try { var c = await _context.Characters .Include(c => c.CharacterSkills).ThenInclude(cs => cs.Skills) .FirstOrDefaultAsync(c => c.Id == request.AttackerId); if (c == null) { throw new System.Exception("Attacking character not found"); } var enemy = await _context.Characters .FirstOrDefaultAsync(c => c.Id == request.EnemyId); if (enemy == null) { throw new System.Exception("Enemy character not found"); } var cSkill = c.CharacterSkills.FirstOrDefault(cs => cs.Skills.Id == request.SkillId); if (cSkill == null) { throw new Exception($"Skill not found on character {c.Name}"); } int dmg = SkillsAttackDamage(c, enemy, cSkill); if (enemy.HitPoints <= 0) { response.Message = $"{enemy.Name} has been defeated"; } _context.Characters.Update(enemy); await _context.SaveChangesAsync(); response.Data = new AttackResultDTO { Attacker = c.Name, AttackerHP = c.HitPoints, Enemy = enemy.Name, EnemyHp = enemy.HitPoints, Damage = dmg }; } catch (System.Exception ex) { response.Success = false; response.Message = ex.Message; } return(response); }
public async Task <ServiceResponse <AttackResultDTO> > SkillAttack(SkillAttackDTO skillAttackDTO) { ServiceResponse <AttackResultDTO> serviceResponse = new ServiceResponse <AttackResultDTO>(); try { Character CharacterAttacker = await _dataContext.Characters .Include(x => x.skills) .FirstOrDefaultAsync(x => x.Id == skillAttackDTO.AttackerId); Character CharacterDefender = await _dataContext.Characters .Include(x => x.skills) .FirstOrDefaultAsync(x => x.Id == skillAttackDTO.DefenderId); Skill skill = CharacterAttacker.skills.FirstOrDefault(x => x.Id == skillAttackDTO.SkillId); if (skill == null) { serviceResponse.Message = $"{CharacterAttacker.Name} doesn't have that skill."; serviceResponse.Success = false; return(serviceResponse); } int damage = skill.Damage + (new Random().Next(CharacterAttacker.Intelligence * 2)); damage -= new Random().Next(CharacterDefender.Defense); ProcessFight(damage, CharacterAttacker, CharacterDefender, serviceResponse); _dataContext.Characters.Update(CharacterAttacker); _dataContext.Characters.Update(CharacterDefender); await _dataContext.SaveChangesAsync(); serviceResponse.Data = new AttackResultDTO { Attacker = CharacterAttacker.Name, Defender = CharacterDefender.Name, AttackerHP = CharacterAttacker.HitPoints, DefenderHP = CharacterDefender.HitPoints, Damage = damage }; } catch (Exception ex) { serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
public void Skill(Transform[] _list, SkillAttackDTO skillAttackDto) { list = _list; this.SkillAttackDto = skillAttackDto; switch (skillAttackDto.skillDto.SkillModelDto.aniname) { case AnimState.Skill1: state = AnimState.Skill1; break; case AnimState.Skill2: state = AnimState.Skill2; break; case AnimState.Skill3: state = AnimState.Skill3; break; } animatorManage.SetInt("state", (int)state); }
void SkillBro(SkillAttackDTO skillAttackDto) { if (skillAttackDto == null) { WarrningManager.warringList.Add(new WarringModel("能量不足", null, 2)); return; } int userId = skillAttackDto.userId; if (userId == GameData.UserDto.id) { GameData.SetHpMp(0, -skillAttackDto.skillDto.mp); GameData.play.transform.Find("infoUi").GetComponent <CameraFacingBillboard>().SetInfo(GameData.UserDto.name, (float)GameData.UserDto.hp / GameData.UserDto.maxHp, (float)GameData.UserDto.mp / GameData.UserDto.maxMp); CanvasManage._instance.shortcuts[skillAttackDto.skillDto.shortcutId - 1].SetCold();//进入冷却 } else { GameObject model = idToGameObjectDic[userId]; UserDTO userDto = (UserDTO)IdToUserDtoDic[userId]; userDto.mp -= skillAttackDto.skillDto.mp; if (userDto.mp <= 0) { userDto.mp = 0; } model.transform.Find("infoUi").GetComponent <CameraFacingBillboard>().SetInfo(userDto.name, (float)userDto.hp / userDto.maxHp, (float)userDto.mp / userDto.maxMp); } int[] targetsId = skillAttackDto.targetsId; List <Transform> targets = new List <Transform>(); for (int i = 0; i < targetsId.Length; i++) { targets.Add(idToGameObjectDic[targetsId[i]].transform); } idToGameObjectDic[userId].GetComponent <Info>().Skill(targets.ToArray(), skillAttackDto); }
public async Task <IActionResult> SkillAttack(SkillAttackDTO request) { return(Ok(await _service.SkillAttack(request))); }
private void Skill(UserToken token, SkillAttackDTO skillAttackDTO) { skillAttackDTO.userId = GetUserId(token); brocast(FightProtocol.SKILL_BRO, skillAttackDTO); }