public void Check() { try { var battleMgrBase = BattleMgrBase.GetIns(); if (battleMgrBase != null) { var player = battleMgrBase.GetBattlePlayer(true); if (!ReferenceEquals(_playerBase, player)) { if (player != null) { player.Emotion.OnPlay += ProcessPlayer; } _playerBase = player; } var oppo = battleMgrBase.GetBattlePlayer(false); if (!ReferenceEquals(_oppoBase, oppo)) { if (oppo != null) { oppo.Emotion.OnPlay += ProcessOppo; } _oppoBase = oppo; } } } catch (Exception e) { //ignore } }
public void UpdateButtonUI() { if (AButton == null) return; BattlePlayerBase player = BattlePlayerBase.LocalAuthority; AButton.button.interactable = (player.IsAlive && player.CanPlayAbility && RemainingCooldown <= 0); AButton.UpdateCooldown(RemainingCooldown, cooldown + 1); }
public void OnBattlePlayerSpawned(BattlePlayerBase player) { if (player == LocalAuthority) { for (int i = 0; i < player.Abilities.Count; i++) { player.Abilities[i].SetButton(abilityButtons[i]); } } if (isServer) { playersReady++; } }
private void OnMouseDown() { BattlePlayerBase localPlayer = BattlePlayerBase.LocalAuthority; if (localPlayer.IsAlive && IsAlive) { if (localPlayer.IsValidTarget(this)) { if (localPlayer.SelectedAbility != null) { localPlayer.OnAbilityTargetChosen(this); } else { localPlayer.CmdAttack(gameObject); } } } }
// Start is called before the first frame update void Start() { animator = GetComponent <Animator>(); velocity = new Vector3(0, 0, 0); rb = GetComponent <Rigidbody2D>(); if (playernum == PersistentPlayer.localAuthority.playerNum) { localAuthority = true; Camera cam = SwitchMazeManager.GetInstance().cam; cam.transform.parent = gameObject.transform; cam.transform.localPosition = new Vector3(0, 0, -10f); DPad.Instance.Setup(this); } BattlePlayerBase player = players.Where(x => x.playerNum == playernum).First(); SetAnimator(player.characterType); }
private IEnumerator ExecuteEnemyPhase() { yield return(new WaitForSeconds(0.5f)); //get attack damage directed at each player List <EnemyAttack>[] groupAttacks = new List <EnemyAttack> [BattlePlayerBase.players.Count]; groupAttacks.Initialize(() => new List <EnemyAttack>()); for (int i = 0; i < groupAttacks.Length; i++) { foreach (EnemyBase e in aliveEnemies) { if (e.IsAlive && e.HasTargets) { e.AttackPlayer(groupAttacks[i], i); } } } //apply attack damage on the players for (int i = 0; i < players.Count; i++) { BattlePlayerBase bp = players[i]; List <EnemyAttack> hits = new List <EnemyAttack>(); bool containedMiss = false; foreach (EnemyAttack attack in groupAttacks[i]) { if (attack.hit) { hits.Add(attack); } else { containedMiss = true; attack.attacker.PlayAnimation(BattleAnimation.Attack); } } if (containedMiss) { bp.RpcMiss(); yield return(new WaitForSeconds(0.5f)); } if (hits.Count > 0) { List <BattleActorBase> attackers = new List <BattleActorBase>(); foreach (EnemyAttack hit in hits) { if (hit.apply != Stat.None) { if (bp.HasStatusEffect(Stat.Reflect)) { hit.attacker.AddStatusEffect(hit.apply, hit.attacker, hit.duration); } else { bp.AddStatusEffect(hit.apply, hit.attacker, hit.duration); } } hit.attacker.PlayAnimation(BattleAnimation.Attack); attackers.Add(hit.attacker); } bp.DispatchBlockableDamage(attackers); yield return(new WaitForSeconds(0.5f)); } } //apply damage over time status effects on enemies yield return(ApplyDOTs(aliveEnemies)); DecrementStats(aliveEnemies); DecrementStats(players); yield return(new WaitForSeconds(0.1f)); if (boss != null) { yield return(boss.ExecuteTurn()); } else if (aliveEnemies.Count > 0 && IsEnemyPhase) { StartPlayerPhase(); } }