public void PressInteraction() { if (_attackCooldownTimer <= 0 && !_roomInhabitant.IsBeingSuckedIntoSpace && !IsStunned) { _attackCooldownTimer = _attackCooldown; PlayEmote(AstronautEmote.Attack); GameObject attackFx = Instantiate(_attackFxPrefab, transform.position, transform.rotation); Destroy(attackFx, 3.0f); if (_roomInhabitant.CurrentDevice != null) { _roomInhabitant.CurrentDevice.TriggerInteraction(gameObject); // Always drain the battery after all interactions (if not drained already) if (_batteryComponent != null && _roomInhabitant.CurrentDevice.DrainsBatteryOnInteraction()) { _batteryComponent.DrainCharge(); } } if (_canStun) { TryWhackAstronaut(); } } }
private void TryWhackAstronaut() { for (int i = 0; i < AstronautController.Instances.Count; ++i) { AstronautController astro = AstronautController.Instances[i]; if (astro != this) { Vector3 toAstro = (astro.transform.position - transform.position).WithY(0); if (toAstro.magnitude < 2.5f) { if (_hitSound) { AudioManager.Instance.PlaySound(gameObject, _hitSound); } astro.GetWhacked(transform.position); BatteryComponent battery = GetComponent <BatteryComponent>(); if (battery != null && battery.HasCharge) { astro.RoomInhabitant.NotifySuckedIntoSpace(); battery.DrainCharge(); } return; } } } }
protected override void OnInteractionPressed(GameObject gameObject) { BatteryComponent battery = gameObject.GetComponentInChildren <BatteryComponent>(); if (battery != null && battery.HasCharge) { battery.DrainCharge(); OpenNextDoor(); } }