public override void Reload() { if (MagazineCurrent >= MagazineCapacity) { return; } else if (ItemDataAmmo != null) { if (ItemDataAmmo.count == 0) { return; } } else if (ItemDataAmmo == null) { } Is_Reloading = true; WeaponAnimator.SetTrigger("Reload"); }
public override void ExecuteAttack() { if (timeSinceAttack < 0) { //Set animation trigger WeaponAnimator.SetTrigger(Constants.ENEMY_FIRE_BOW); RangedWeapon weap = (RangedWeapon)weapon; //Instantiate projectile GameObject projectile = Instantiate(weap.projectile, transform.parent); projectile.transform.position = attackPos.position; Arrow arrowC = projectile.GetComponent <Arrow>(); Vector2 heading = PlayerManager.instance.transform.position - attackPos.position; float distance = heading.magnitude; arrowC.direction = heading / distance; arrowC.weapon = weap; arrowC.shooter = gameObject; arrowC.damage = (int)(weapon.damage * enemy.damageModifier); timeSinceAttack = weapon.delay * enemy.attackSpeedModifier; } }
public override void ExecuteAttack() { if (timeSinceAttack <= 0) { WeaponAnimator.SetTrigger("Attack"); //Delay hitscan by .5 seconds StartCoroutine(Util.ExecuteAfterTime(0.2f, () => { //Collect things to hit on layer Collider2D[] charactersToDamage = Physics2D.OverlapCircleAll(attackPos.position, weapon.range * enemy.sizeModifier, layer); for (int i = 0; i < charactersToDamage.Length; i++) { charactersToDamage[i].GetComponent <HitManager>().TakeDamage(weapon.damage, attackPos.position, weapon.knockback, false); } })); timeSinceAttack = weapon.delay * enemy.attackSpeedModifier; } }
public override void FireUp() { if (DestinyEngineController.main.IsGamePaused) { return; } if (Is_Cooldown | MagazineCurrent <= 0 | Is_Reloading) { return; } Is_Cooldown = true; if (MagazineCurrent > 0) { MagazineCurrent -= 1; } WeaponAnimator.SetTrigger("Fire"); SaveFlag(); Impact(); Recoil(); }