protected override void DoEffect(PlayerController user) { base.DoEffect(user); IPlayerInteractable nearestInteractable = user.CurrentRoom.GetNearestInteractable(user.CenterPosition, 1f, user); if (nearestInteractable is InteractableLock || nearestInteractable is Chest || nearestInteractable is DungeonDoorController) { if (nearestInteractable is InteractableLock) { InteractableLock interactableLock = nearestInteractable as InteractableLock; if (interactableLock.lockMode == InteractableLock.InteractableLockMode.NORMAL) { interactableLock.ForceUnlock(); user.healthHaver.ApplyDamage(1, Vector2.zero, "Blood Loss"); AkSoundEngine.PostEvent("m_OBJ_lock_pick_01", GameManager.Instance.gameObject); } return; } if (nearestInteractable is DungeonDoorController) { DungeonDoorController dungeonDoorController = nearestInteractable as DungeonDoorController; if (dungeonDoorController != null && dungeonDoorController.Mode == DungeonDoorController.DungeonDoorMode.COMPLEX && dungeonDoorController.isLocked) { dungeonDoorController.Unlock(); user.healthHaver.ApplyDamage(1, Vector2.zero, "Blood Loss"); AkSoundEngine.PostEvent("m_OBJ_lock_pick_01", GameManager.Instance.gameObject); } } else if (nearestInteractable is Chest) { Chest chest = nearestInteractable as Chest; if (chest.IsLocked) { chest.ForceUnlock(); user.healthHaver.ApplyDamage(1, Vector2.zero, "Blood Loss"); AkSoundEngine.PostEvent("m_OBJ_lock_pick_01", GameManager.Instance.gameObject); } } } }
// Token: 0x06007312 RID: 29458 RVA: 0x002CD0A0 File Offset: 0x002CB2A0 protected override void DoEffect(PlayerController user) { base.DoEffect(user); AkSoundEngine.PostEvent("Play_OBJ_paydaydrill_start_01", GameManager.Instance.gameObject); AkSoundEngine.PostEvent("Play_OBJ_paydaydrill_loop_01", GameManager.Instance.gameObject); IPlayerInteractable nearestInteractable = user.CurrentRoom.GetNearestInteractable(user.CenterPosition, 1f, user); if (nearestInteractable is InteractableLock || nearestInteractable is Chest || nearestInteractable is DungeonDoorController) { if (nearestInteractable is InteractableLock) { InteractableLock interactableLock = nearestInteractable as InteractableLock; if (interactableLock.lockMode == InteractableLock.InteractableLockMode.NORMAL) { interactableLock.ForceUnlock(); AkSoundEngine.PostEvent("m_OBJ_lock_pick_01", GameManager.Instance.gameObject); } AkSoundEngine.PostEvent("Stop_OBJ_paydaydrill_loop_01", GameManager.Instance.gameObject); return; } if (nearestInteractable is DungeonDoorController) { DungeonDoorController dungeonDoorController = nearestInteractable as DungeonDoorController; if (dungeonDoorController != null && dungeonDoorController.Mode == DungeonDoorController.DungeonDoorMode.COMPLEX && dungeonDoorController.isLocked) { dungeonDoorController.Unlock(); AkSoundEngine.PostEvent("m_OBJ_lock_pick_01", GameManager.Instance.gameObject); } AkSoundEngine.PostEvent("Stop_OBJ_paydaydrill_loop_01", GameManager.Instance.gameObject); } else if (nearestInteractable is Chest) { Chest chest = nearestInteractable as Chest; if (chest.IsLocked) { if (chest.IsLockBroken) { AkSoundEngine.PostEvent("Stop_OBJ_paydaydrill_loop_01", GameManager.Instance.gameObject); } else if (chest.IsMimic && chest.majorBreakable) { chest.majorBreakable.ApplyDamage(1000f, Vector2.zero, false, false, true); AkSoundEngine.PostEvent("Stop_OBJ_paydaydrill_loop_01", GameManager.Instance.gameObject); } else { chest.ForceKillFuse(); chest.PreventFuse = true; RoomHandler absoluteRoom = chest.transform.position.GetAbsoluteRoom(); if (absoluteRoom.area.PrototypeRoomCategory == PrototypeDungeonRoom.RoomCategory.REWARD) { GameManager.Instance.Dungeon.StartCoroutine(this.HandleSeamlessTransitionToCombatRoom(absoluteRoom, chest)); } else { //GameManager.Instance.Dungeon.StartCoroutine(this.HandleTransitionToFallbackCombatRoom(absoluteRoom, chest)); } } } } } else { AkSoundEngine.PostEvent("Stop_OBJ_paydaydrill_loop_01", GameManager.Instance.gameObject); } }