private void OnCollisionEnter2D(Collision2D collision) { if (ramming) { if (!(collision.gameObject.layer == GlobalVariables.WALL_LAYER_INDEX)) { if (!(collision.gameObject.GetComponent <LockableDoor>() != null)) { if (collision.gameObject.GetComponent <PlayerCharacter>() == null) { if ((collision.gameObject.transform.parent != null) && (collision.gameObject.transform.parent.parent != null) && (collision.gameObject.transform.parent.parent.gameObject.GetComponent <LockableDoor>() == null)) { return; } } } } //if hit player, deal damage to player if (collision.gameObject.layer == GlobalVariables.PLAYER_LAYER_INDEX) { PlayerCharacter.instance.DamagablePlayer.ModifyHealth(-damage, DamageType.Physical); //play ram hit sound ramHitSfx.Play(); } ramming = false; BossOwner.YieldPriority(); rbody.velocity = Vector2.zero; CombatHandler.WalkingSuspended = false; } }
protected override void ExecuteInnerWorkings() { ramming = true; BossOwner.AquirePriority(); rammingVector.Normalize(); StartCoroutine(DashTowards(rammingVector)); }
public override void ExecuteAbility() { if (!BossOwner.IsPriorityTaken()) { CombatHandler.WalkingSuspended = true; base.ExecuteAbility(); } }
protected override void ExecuteInnerWorkings() { if (!BossOwner.IsPriorityTaken()) { BossOwner.AquirePriority(); Animator anim = GetComponent <Animator>(); anim.SetTrigger("coneChainAbility"); } }
//this is used as event call on animation public void YieldAbilityPrio() { CombatHandler.WalkingSuspended = false; BossOwner.YieldPriority(); }