public void OnInsertItem(ItemSlot slot) { slot.m_Item.transform.parent = base.transform; slot.Deactivate(); slot.gameObject.SetActive(false); this.m_Particle.Play(); MakeFireController.Get().OnAddKindling(slot.m_Item); }
protected override void Update() { base.Update(); if (!this.m_IsInside) { return; } if (InsectsController.Get().IsActive()) { return; } if (MakeFireController.Get().IsActive()) { return; } if (CraftingController.Get().IsActive()) { return; } if (HitReactionController.Get().IsActive()) { return; } if (HarvestingAnimalController.Get().IsActive()) { return; } if (HarvestingSmallAnimalController.Get().IsActive()) { return; } Item currentItem = Player.Get().GetCurrentItem(Hand.Right); if (currentItem && currentItem.m_Info.IsTorch()) { Torch torch = (Torch)currentItem; if (torch.m_Burning) { return; } } if (Player.Get().IsDead()) { return; } if (this.m_LastTime == 0f || Time.time - this.m_LastTime > this.m_Cooldown) { InsectsController.Get().m_Sensor = this; Player.Get().StartController(PlayerControllerType.Insects); this.m_LastTime = Time.time; } }
private void UpdateStamina() { float deltaTime = Time.deltaTime; FPPController fppcontroller = this.m_Player.m_FPPController; if (!fppcontroller) { return; } if (Cheats.m_GodMode) { this.m_Stamina = this.m_MaxStamina; return; } float num = this.m_Stamina; if (fppcontroller.IsActive() && fppcontroller.IsWalking()) { num -= this.m_StaminaConsumptionWalkPerSecond * deltaTime * ((!PlayerCocaineModule.Get().m_Active) ? 1f : PlayerCocaineModule.Get().m_StaminaConsumptionMul); } else if (fppcontroller.IsActive() && fppcontroller.IsRunning()) { num -= this.m_StaminaConsumptionRunPerSecond * deltaTime * ((!PlayerCocaineModule.Get().m_Active) ? 1f : PlayerCocaineModule.Get().m_StaminaConsumptionMul); } else if (fppcontroller.IsActive() && fppcontroller.IsDepleted()) { num -= this.m_StaminaConsumptionDepletedPerSecond * deltaTime * ((!PlayerCocaineModule.Get().m_Active) ? 1f : PlayerCocaineModule.Get().m_StaminaConsumptionMul); } else if (!MakeFireController.Get().IsActive()) { num += this.m_StaminaRegenerationPerSecond * deltaTime; } if (num < this.m_Stamina || Time.time - this.m_LastDecreaseStaminaTime >= this.m_StaminaRenerationDelay) { this.m_Stamina = num; } float num2 = this.m_Stamina - this.m_PrevStamina; if (num2 < 0f) { this.m_LastDecreaseStaminaTime = Time.time; } this.m_Stamina = Mathf.Clamp(this.m_Stamina, 0f, this.m_MaxStamina); this.m_PrevStamina = this.m_Stamina; }
protected override void Update() { base.Update(); if (!this.m_IsInside) { return; } if (!DifficultySettings.ActivePreset.m_Insects) { return; } if (InsectsController.Get().IsActive()) { return; } if (MakeFireController.Get().IsActive()) { return; } if (HitReactionController.Get().IsActive()) { return; } if (HarvestingAnimalController.Get().IsActive()) { return; } if (MudMixerController.Get().IsActive()) { return; } if (HarvestingSmallAnimalController.Get().IsActive()) { return; } if (ConsciousnessController.Get().IsActive()) { return; } if (DeathController.Get().IsActive()) { return; } if (SleepController.Get().IsActive()) { return; } if (Player.Get().m_Animator.GetBool(Player.Get().m_CleanUpHash)) { return; } Item currentItem = Player.Get().GetCurrentItem(Hand.Right); if (currentItem && currentItem.m_Info.IsTorch() && ((Torch)currentItem).m_Burning) { return; } if (Player.Get().IsDead()) { return; } if (InsectsSensor.m_LastTime == 0f || Time.time - InsectsSensor.m_LastTime > this.m_Cooldown) { if (CraftingManager.Get().IsActive()) { CraftingManager.Get().Deactivate(); } InsectsController.Get().m_Sensor = this; Player.Get().StartController(PlayerControllerType.Insects); InsectsSensor.m_LastTime = Time.time; } }
public bool Activate(ItemReplacer item) { this.ResetItems(); this.m_ItemReplacer = item; this.ClearSlots(); bool flag = Player.Get().m_SwimController.IsActive(); if (item.m_ReplaceInfo.m_Craftable && !flag) { this.AddSlot(HUDItem.Action.Craft); } if (item.m_ReplaceInfo.m_CanBeAddedToInventory) { this.AddSlot(HUDItem.Action.Take); } if (item.m_ReplaceInfo.IsHeavyObject() && !item.m_ReplaceInfo.m_CanBeAddedToInventory && !MakeFireController.Get().IsActive()) { this.AddSlot(HUDItem.Action.PickUp); } if (item.m_ReplaceInfo.m_Eatable && !flag) { this.AddSlot(HUDItem.Action.Eat); } if (item.m_ReplaceInfo.CanDrink() && !flag) { this.AddSlot(HUDItem.Action.Drink); } if (item.m_ReplaceInfo.m_Harvestable && !flag) { this.AddSlot(HUDItem.Action.Harvest); } this.Activate(); return(true); }
public bool Activate(Item item) { if (!item || !item.CanExecuteActions()) { return(false); } this.ResetItems(); this.m_Item = item; this.ClearSlots(); bool flag = Player.Get().m_SwimController.IsActive(); if (this.m_Item.m_Info.m_Craftable && !this.m_Item.m_OnCraftingTable && !flag) { this.AddSlot(HUDItem.Action.Craft); } if (this.m_Item.m_Info.IsHeavyObject() && !this.m_Item.m_Info.m_CanBeAddedToInventory) { if (!MakeFireController.Get().IsActive()) { this.AddSlot(HUDItem.Action.PickUp); } } else if (this.m_Item.m_Info.m_CanEquip) { if (this.m_Item.IsFireTool()) { if (!InventoryBackpack.Get().Contains(this.m_Item)) { this.AddSlot(HUDItem.Action.Take); } this.AddSlot(HUDItem.Action.Use); } else if (this.m_Item.m_InInventory) { if (item != InventoryBackpack.Get().m_EquippedItem) { this.AddSlot(HUDItem.Action.Equip); } } else { ItemSlot exists = InventoryBackpack.Get().FindFreeSlot(this.m_Item); if (exists) { this.AddSlot(HUDItem.Action.Take); } else { this.AddSlot(HUDItem.Action.Swap); } } } else if (this.m_Item.m_Info.m_CanBeAddedToInventory && !InventoryBackpack.Get().Contains(this.m_Item)) { this.AddSlot(HUDItem.Action.Take); } if (this.m_Item.m_Info.m_Eatable && !flag) { this.AddSlot(HUDItem.Action.Eat); } if (this.m_Item.m_Info.CanDrink() && !flag) { this.AddSlot(HUDItem.Action.Drink); } if (this.m_Item.m_Info.IsLiquidContainer()) { LiquidContainerInfo liquidContainerInfo = (LiquidContainerInfo)this.m_Item.m_Info; if (liquidContainerInfo.m_Amount > 0f) { this.AddSlot(HUDItem.Action.Spill); } } if (this.m_Item.m_Info.m_Harvestable && !flag) { this.AddSlot(HUDItem.Action.Harvest); } this.Activate(); return(true); }
private void UpdateBestTrigger() { if (HUDReadableItem.Get() != null && HUDReadableItem.Get().enabled) { this.ResetTrigger(); return; } if (this.m_CameraMain == null) { this.ResetTrigger(); this.m_CameraMain = Camera.main; return; } if (CutscenesManager.Get().IsCutscenePlaying()) { this.ResetTrigger(); return; } if (MakeFireController.Get().IsActive() && (MakeFireController.Get().ShouldBlockTriggers() || !Inventory3DManager.Get().gameObject.activeSelf)) { this.ResetTrigger(); return; } if (CraftingController.Get().IsActive() && CraftingController.Get().m_InProgress) { this.ResetTrigger(); return; } if (this.m_Player.m_ActiveFightController && (this.m_Player.m_ActiveFightController.IsBlock() || this.m_Player.m_ActiveFightController.IsAttack())) { this.ResetTrigger(); return; } if (VomitingController.Get().IsActive()) { this.ResetTrigger(); return; } if (HUDItem.Get().m_Active&& HUDItem.Get().m_Item) { this.SetBestTrigger(HUDItem.Get().m_Item, HUDItem.Get().m_Item.transform.position); return; } if (Inventory3DManager.Get().gameObject.activeSelf) { if (!Inventory3DManager.Get().m_FocusedItem) { this.ResetTrigger(); return; } if (BodyInspectionController.Get().IsActive() && Inventory3DManager.Get().m_FocusedItem.IsStorage()) { this.ResetTrigger(); return; } this.SetBestTrigger(Inventory3DManager.Get().m_FocusedItem, Inventory3DManager.Get().m_FocusedItem.transform.position); return; } else { if (BodyInspectionController.Get().IsActive()) { this.ResetTrigger(); return; } if (Player.Get().m_Aim) { this.ResetTrigger(); return; } if (HUDWheel.Get().m_Active) { this.ResetTrigger(); return; } if (this.m_Animator.GetBool(Player.Get().m_CleanUpHash)) { this.ResetTrigger(); return; } if (this.m_Animator.GetBool(TriggerController.Get().m_BDrinkWater)) { this.ResetTrigger(); return; } if (WeaponSpearController.Get().IsActive() && WeaponSpearController.Get().m_ItemBody) { this.SetBestTrigger(WeaponSpearController.Get().m_ItemBody, WeaponSpearController.Get().m_ItemBody.transform.position); return; } TriggerController.s_AllPotentialTriggers.Clear(); TriggerController.s_OffCrosshairTriggers.Clear(); TriggerController.s_ColldersEnabledMap.Clear(); Vector3 crossHairOrigin = this.GetCrossHairOrigin(); Vector3 position = Player.Get().transform.position; float num = 0.8f; float num2 = -1f; float num3 = -1f; float num4 = float.MinValue; Vector3 vector = Vector3.zero; Vector3 vector2 = Vector3.zero; TriggersManager triggersManager = TriggersManager.Get(); bool flag = false; Trigger trigger = null; Vector3 hit_pos = Vector3.zero; Trigger trigger2 = null; Vector3 hit_pos2 = Vector3.zero; float num5 = float.MinValue; HashSet <Trigger> .Enumerator enumerator = triggersManager.GetActiveTriggers().GetEnumerator(); Item currentItem = Player.Get().GetCurrentItem(); while (enumerator.MoveNext()) { Trigger trigger3 = enumerator.Current; if (trigger3 != null && trigger3.enabled && !trigger3.m_IsCut && trigger3.m_Initialized && trigger3.CanTrigger() && (!currentItem || currentItem.GetInfoID() != ItemID.Fire || trigger3.IsFIrecamp() || trigger3.IsCharcoalFurnace() || trigger3.IsForge())) { Collider collider = null; trigger3.gameObject.GetComponents <Collider>(TriggerController.s_ColliderCache); if (TriggerController.s_ColliderCache.Count > 0) { collider = TriggerController.s_ColliderCache[0]; } if (collider != null) { if (trigger3.CheckInsideCollider() && collider.bounds.Contains(this.m_CameraMain.transform.position) && trigger3.IsAdditionalTrigger() && (!trigger3.CheckDot() || num4 > num3)) { hit_pos2 = collider.bounds.center; trigger2 = trigger3; num3 = num4; } float num6 = (trigger3.m_TriggerCheckRange > 0f) ? trigger3.m_TriggerCheckRange : this.m_Player.GetParams().GetTriggerCheckRange(); if (trigger3.CheckRange()) { vector2 = ((collider != null) ? collider.ClosestPointOnBounds(position) : trigger3.gameObject.transform.position); if (Vector3.Distance(position, vector2) > num6) { continue; } } vector2 = ((collider != null) ? collider.bounds.center : trigger3.gameObject.transform.position); vector = vector2 - crossHairOrigin; vector.Normalize(); if (trigger3.CheckDot()) { num4 = Vector3.Dot(this.m_CameraMain.transform.forward, vector); if (num4 < num || (trigger3.m_TriggerMaxDot > 0f && num4 < trigger3.m_TriggerMaxDot)) { continue; } } TriggerController.s_AllPotentialTriggers.Add(trigger3); if (!trigger3.OnlyInCrosshair()) { TriggerController.s_OffCrosshairTriggers.Add(trigger3); } TriggerController.s_ColldersEnabledMap[collider] = collider.enabled; collider.enabled = true; if (num6 > num5) { num5 = num6; } } } } Vector3 crossHairDir = this.GetCrossHairDir(); int num7 = (num5 > 0f) ? Physics.RaycastNonAlloc(crossHairOrigin, crossHairDir, TriggerController.s_RaycastHitCache, num5) : 0; if (num7 > 0) { TriggerController.s_CrosshairOrigin = crossHairOrigin; Array.Sort <RaycastHit>(TriggerController.s_RaycastHitCache, 0, num7, TriggerController.s_DistComparer); for (int i = 0; i < TriggerController.s_AllPotentialTriggers.Count; i++) { Trigger trigger4 = TriggerController.s_AllPotentialTriggers[i]; Collider collider2 = null; trigger4.gameObject.GetComponents <Collider>(TriggerController.s_ColliderCache); if (TriggerController.s_ColliderCache.Count > 0) { collider2 = TriggerController.s_ColliderCache[0]; } if (collider2 != null) { for (int j = 0; j < num7; j++) { RaycastHit raycastHit = TriggerController.s_RaycastHitCache[j]; if (raycastHit.collider != null && !(raycastHit.collider.gameObject == base.gameObject) && !(raycastHit.collider == FistFightController.Get().m_RightHandCollider) && !(raycastHit.collider == FistFightController.Get().m_LeftHandCollider) && !(raycastHit.collider.gameObject == this.m_Proxy.m_Controller.gameObject)) { GhostSlot ghostSlot = null; raycastHit.collider.gameObject.GetComponents <GhostSlot>(TriggerController.s_GhostSlotCache); if (TriggerController.s_GhostSlotCache.Count > 0) { ghostSlot = TriggerController.s_GhostSlotCache[0]; } if (!flag || ghostSlot != null || trigger4.IsAdditionalTrigger()) { if (collider2 == raycastHit.collider || trigger4.IsAdditionalCollider(raycastHit.collider)) { if (trigger4.IsAdditionalTrigger()) { if (!trigger4.CheckDot() || num4 > num3 || (trigger4.m_TriggerMaxDot > 0f && num4 >= trigger4.m_TriggerMaxDot)) { hit_pos2 = raycastHit.point; trigger2 = trigger4; num3 = num4; break; } break; } else { if (trigger4.CheckDot() && num4 < num2 && (trigger4.m_TriggerMaxDot <= 0f || num4 < trigger4.m_TriggerMaxDot)) { break; } hit_pos = raycastHit.point; trigger = trigger4; if (!trigger || !trigger.IsLiquidSource()) { num2 = num4; break; } break; } } else { ITriggerThrough triggerThrough = null; raycastHit.collider.gameObject.GetComponents <ITriggerThrough>(TriggerController.s_TriggerThroughCache); if (TriggerController.s_TriggerThroughCache.Count > 0) { triggerThrough = TriggerController.s_TriggerThroughCache[0]; } if (triggerThrough == null && !raycastHit.collider.gameObject.GetComponent <TriggerThrough>() && (!trigger || !trigger.IsLiquidSource() || !(trigger.gameObject == raycastHit.collider.gameObject))) { if (ghostSlot != null) { flag = true; } else { Item currentItem2 = this.m_Player.GetCurrentItem(Hand.Right); if (currentItem2 == null || !(currentItem2.gameObject == raycastHit.collider.gameObject)) { currentItem2 = this.m_Player.GetCurrentItem(Hand.Left); if ((currentItem2 == null || !(currentItem2.gameObject == raycastHit.collider.gameObject)) && !(raycastHit.collider.gameObject == this.m_Proxy.m_Controller.gameObject)) { Trigger trigger5 = null; raycastHit.collider.gameObject.GetComponents <Trigger>(TriggerController.s_OtherTriggerCache); if (TriggerController.s_OtherTriggerCache.Count > 0) { trigger5 = TriggerController.s_OtherTriggerCache[0]; } if (trigger5 == null || !trigger5.TriggerThrough()) { break; } } } } } } } } } } } } if (trigger == null || trigger.IsLiquidSource()) { TriggerController.s_CrosshairDir = crossHairDir; TriggerController.s_CrosshairOrigin = crossHairOrigin; TriggerController.s_OffCrosshairTriggers.Sort(TriggerController.s_DotComparer); bool flag2 = false; int num8 = 0; while (num8 < TriggerController.s_OffCrosshairTriggers.Count && !flag2) { Trigger trigger6 = TriggerController.s_OffCrosshairTriggers[num8]; Collider collider3 = null; trigger6.gameObject.GetComponents <Collider>(TriggerController.s_ColliderCache); if (TriggerController.s_ColliderCache.Count > 0) { collider3 = TriggerController.s_ColliderCache[0]; } if (collider3 != null) { float maxDistance = (trigger6.m_TriggerCheckRange > 0f) ? trigger6.m_TriggerCheckRange : this.m_Player.GetParams().GetTriggerCheckRange(); vector2 = ((collider3 != null) ? collider3.bounds.center : trigger6.gameObject.transform.position); vector = vector2 - crossHairOrigin; vector.Normalize(); num7 = Physics.RaycastNonAlloc(crossHairOrigin, vector, TriggerController.s_RaycastHitCache, maxDistance); if ((float)num7 > 0f) { TriggerController.s_CrosshairOrigin = crossHairOrigin; Array.Sort <RaycastHit>(TriggerController.s_RaycastHitCache, 0, num7, TriggerController.s_DistComparer); for (int k = 0; k < num7; k++) { RaycastHit raycastHit2 = TriggerController.s_RaycastHitCache[k]; if (!(raycastHit2.collider.gameObject == base.gameObject)) { GhostSlot ghostSlot2 = null; raycastHit2.collider.gameObject.GetComponents <GhostSlot>(TriggerController.s_GhostSlotCache); if (TriggerController.s_GhostSlotCache.Count > 0) { ghostSlot2 = TriggerController.s_GhostSlotCache[0]; } if (!flag || ghostSlot2 != null || trigger6.IsAdditionalTrigger()) { if (collider3 == raycastHit2.collider) { if (!trigger6.CheckDot() || num4 > num2 || (trigger6.m_TriggerMaxDot > 0f && num4 >= trigger6.m_TriggerMaxDot)) { hit_pos = raycastHit2.point; trigger = trigger6; num2 = num4; flag2 = true; break; } break; } else { ITriggerThrough triggerThrough2 = null; raycastHit2.collider.gameObject.GetComponents <ITriggerThrough>(TriggerController.s_TriggerThroughCache); if (TriggerController.s_TriggerThroughCache.Count > 0) { triggerThrough2 = TriggerController.s_TriggerThroughCache[0]; } if (triggerThrough2 == null && raycastHit2.collider.gameObject.layer != this.m_BalanceSpawnerLayer && (trigger == null || !trigger.IsLiquidSource() || !(trigger.gameObject == raycastHit2.collider.gameObject))) { if (ghostSlot2 != null) { flag = true; } else { Item currentItem3 = this.m_Player.GetCurrentItem(Hand.Right); if (currentItem3 == null || !(currentItem3.gameObject == raycastHit2.collider.gameObject)) { currentItem3 = this.m_Player.GetCurrentItem(Hand.Left); if (currentItem3 == null || !(currentItem3.gameObject == raycastHit2.collider.gameObject)) { Trigger trigger7 = null; raycastHit2.collider.gameObject.GetComponents <Trigger>(TriggerController.s_OtherTriggerCache); if (TriggerController.s_OtherTriggerCache.Count > 0) { trigger7 = TriggerController.s_OtherTriggerCache[0]; } if (trigger7 == null || !trigger7.TriggerThrough()) { if (trigger7 != null && TriggerController.s_OffCrosshairTriggers.Contains(trigger7)) { trigger = trigger7; hit_pos = raycastHit2.point; flag2 = true; break; } break; } } } } } } } } } } } num8++; } } Trigger trigger8 = null; if (trigger != this.m_BestTrigger.trigger && this.m_BestTrigger.trigger) { trigger8 = this.m_BestTrigger.trigger; } this.SetBestTrigger(trigger, hit_pos); if (trigger) { trigger.UpdateLayer(); } if (trigger8) { trigger8.UpdateLayer(); } if (this.m_AdditionalTrigger.trigger != trigger2) { if (trigger2 != this.m_AdditionalTrigger.trigger && this.m_AdditionalTrigger.trigger) { trigger8 = this.m_AdditionalTrigger.trigger; } this.m_AdditionalTrigger.trigger = trigger2; this.m_AdditionalTrigger.actions.Clear(); if (this.m_AdditionalTrigger.trigger) { this.m_AdditionalTrigger.trigger.GetActions(this.m_AdditionalTrigger.actions); } this.m_AdditionalTrigger.hit_pos = hit_pos2; if (this.m_AdditionalTrigger.trigger) { this.m_AdditionalTrigger.trigger.UpdateLayer(); } if (trigger8) { trigger8.UpdateLayer(); } } foreach (KeyValuePair <Collider, bool> keyValuePair in TriggerController.s_ColldersEnabledMap) { Collider key = keyValuePair.Key; Dictionary <Collider, bool> .Enumerator enumerator2; keyValuePair = enumerator2.Current; key.enabled = keyValuePair.Value; } return; } }
public bool CanShow() { if (GreenHellGame.Instance.m_GameMode != GameMode.Story) { return(false); } if (ScenarioManager.Get().IsBoolVariableTrue("PlayerMechGameEnding")) { return(false); } if (ConsciousnessController.Get().IsActive()) { return(false); } if (SleepController.Get().IsActive()) { return(false); } if (InsectsController.Get().IsActive()) { return(false); } if (InsectsController.Get().IsActive()) { return(false); } if (SwimController.Get().IsActive()) { return(false); } if (Player.Get().m_IsInAir) { return(false); } if (ChallengesManager.Get() && ChallengesManager.Get().IsChallengeActive()) { return(false); } if (HUDReadableItem.Get().enabled) { return(false); } if (Player.Get().m_Animator.GetBool(Player.Get().m_CleanUpHash)) { return(false); } if (Time.time - SwimController.Get().m_LastDisableTime < 0.5f) { return(false); } if (Player.Get().m_IsInAir) { return(false); } if (DeathController.Get().IsActive()) { return(false); } if (ScenarioManager.Get().IsDreamOrPreDream()) { return(false); } if (Inventory3DManager.Get().IsActive()) { return(false); } if (CutscenesManager.Get().IsCutscenePlaying()) { return(false); } if (SwimController.Get().IsActive()) { return(false); } if (BodyInspectionController.Get().IsActive()) { return(false); } if (HarvestingAnimalController.Get().IsActive()) { return(false); } if (HarvestingSmallAnimalController.Get().IsActive()) { return(false); } if (VomitingController.Get().IsActive()) { return(false); } if (MapController.Get().IsActive()) { return(false); } if (NotepadController.Get().IsActive()) { return(false); } if (MudMixerController.Get().IsActive()) { return(false); } if (MakeFireController.Get().IsActive()) { return(false); } if (HUDWheel.Get().enabled) { return(false); } if (FPPController.Get().m_Dodge) { return(false); } if (GreenHellGame.IsPadControllerActive() && HUDItem.Get().m_Active) { return(false); } int shortNameHash = Player.Get().m_Animator.GetCurrentAnimatorStateInfo(1).shortNameHash; return(shortNameHash != this.m_MapWatchHideHash && shortNameHash != this.m_MapWatchIdleHash && shortNameHash != this.m_MapWatchShowHash && shortNameHash != this.m_MapZoomHash && shortNameHash != this.m_MapHideHash && shortNameHash != this.m_MapIdleHash && shortNameHash != this.m_ShowMapHash); }
private bool ExecuteAction(HUDItem.Action action, Item item) { if (action != HUDItem.Action.Close && this.m_ItemReplacer != null) { item = this.m_ItemReplacer.ReplaceItem(); this.m_ItemReplacer = null; } switch (action) { case HUDItem.Action.Close: this.SetActive(false); break; case HUDItem.Action.Take: if (item) { item.Take(); } else if (this.m_PlantFruit) { this.m_PlantFruit.Take(); } break; case HUDItem.Action.PickUp: item.PickUp(true); break; case HUDItem.Action.Eat: if (item) { item.Eat(); } else if (this.m_PlantFruit) { this.m_PlantFruit.Eat(); } break; case HUDItem.Action.Drink: if (item) { item.Drink(); } else if (this.m_LiquidSource) { this.m_LiquidSource.Drink(); } break; case HUDItem.Action.Harvest: Player.Get().HideWeapon(); HarvestingSmallAnimalController.Get().SetItem(item); Player.Get().StartController(PlayerControllerType.HarvestingSmallAnimal); break; case HUDItem.Action.Craft: if (Player.Get().CanStartCrafting()) { if (WalkieTalkieController.Get().IsActive()) { WalkieTalkieController.Get().Stop(); } if (Player.Get().GetCurrentItem(Hand.Left) == item) { Player.Get().SetWantedItem(Hand.Left, null, true); } else if (Player.Get().GetCurrentItem(Hand.Right) == item) { Player.Get().SetWantedItem(Hand.Right, null, true); } else if (!item.m_CurrentSlot && item.m_InventorySlot && item.m_InventorySlot.m_Items.Count > 0) { item.m_InventorySlot.RemoveItem(item, false); } else if (item.m_CurrentSlot && item.m_CurrentSlot.m_InventoryStackSlot) { item.m_CurrentSlot.RemoveItem(item, false); } else if (item.m_CurrentSlot && item.m_CurrentSlot.m_WeaponRackParent) { item.m_CurrentSlot.RemoveItem(item, false); } if (InventoryBackpack.Get().m_EquippedItem == item) { InventoryBackpack.Get().m_EquippedItem = null; } InventoryBackpack.Get().RemoveItem(item, false); Storage3D.Get().RemoveItem(item, false); CraftingManager.Get().Activate(); CraftingManager.Get().AddItem(item, true); } break; case HUDItem.Action.Fill: this.m_LiquidSource.TakeLiquid(); break; case HUDItem.Action.Equip: Player.Get().Equip(item.m_CurrentSlot); break; case HUDItem.Action.Drop: if (CraftingManager.Get().gameObject.activeSelf&& CraftingManager.Get().ContainsItem(item)) { CraftingManager.Get().RemoveItem(item, false); } if (!item.m_CurrentSlot && item.m_InventorySlot && item.m_InventorySlot.m_Items.Count > 0) { item.m_InventorySlot.RemoveItem(item, false); } else if (item.m_CurrentSlot && item.m_CurrentSlot.m_InventoryStackSlot) { item.m_CurrentSlot.RemoveItem(item, false); } if (InventoryBackpack.Get().m_EquippedItem == item) { InventoryBackpack.Get().m_EquippedItem = null; } InventoryBackpack.Get().RemoveItem(item, false); Inventory3DManager.Get().DropItem(item); break; case HUDItem.Action.Swap: item.Swap(); break; case HUDItem.Action.Use: if (this.m_Item.IsStorage()) { Storage3D.Get().Activate((Storage)this.m_Item); } else if (MakeFireController.Get().IsActive()) { InventoryBackpack.Get().RemoveItem(this.m_Item, false); MakeFireController.Get().InsertItemToKindlingSlot(this.m_Item); } else { Item currentItem = Player.Get().GetCurrentItem(); if (currentItem) { InventoryBackpack.Get().InsertItem(currentItem, InventoryBackpack.Get().m_EquippedItemSlot, null, true, true, true, true, false); Player.Get().SetWantedItem(currentItem.m_Info.IsBow() ? Hand.Left : Hand.Right, null, true); if (Player.Get().m_ControllerToStart != PlayerControllerType.Unknown) { Player.Get().StartControllerInternal(); } } Player.Get().SetWantedItem(this.m_Item, true); } break; case HUDItem.Action.Spill: ((LiquidContainer)this.m_Item).Spill(-1f); break; case HUDItem.Action.Destroy: if (GreenHellGame.IsPadControllerActive() && !this.m_DestroyButton.confirm.gameObject.activeSelf) { this.m_DestroyButton.confirm.gameObject.SetActive(true); this.m_DestroyButton.confirm_sel.gameObject.SetActive(true); return(false); } if (!this.m_DestroyButton.confirm_sel.gameObject.activeSelf) { return(true); } if (CraftingManager.Get().gameObject.activeSelf&& CraftingManager.Get().ContainsItem(item)) { CraftingManager.Get().RemoveItem(item, false); } if (!item.m_CurrentSlot && item.m_InventorySlot && item.m_InventorySlot.m_Items.Count > 0) { item.m_InventorySlot.RemoveItem(item, false); } else if (item.m_CurrentSlot && item.m_CurrentSlot.m_InventoryStackSlot) { item.m_CurrentSlot.RemoveItem(item, false); } if (InventoryBackpack.Get().m_EquippedItem == item) { InventoryBackpack.Get().m_EquippedItem = null; } InventoryBackpack.Get().RemoveItem(item, false); UnityEngine.Object.Destroy(item.gameObject); break; case HUDItem.Action.Take3: if (item) { item.Take3(); } break; case HUDItem.Action.TakeAll: if (item) { item.TakeAll(); } break; case HUDItem.Action.TakeClay: if (this.m_LiquidSource) { this.m_LiquidSource.TakeClay(); } break; case HUDItem.Action.CleanUp: PlayerArmorModule.Get().SetMeshesVisible(true); BodyInspectionController.Get().OnArmorMeshesEnabled(); Player.Get().m_Animator.SetBool(Player.Get().m_CleanUpHash, false); break; case HUDItem.Action.DestroyStack: if (GreenHellGame.IsPadControllerActive() && !this.m_DestroyStackButton.confirm.gameObject.activeSelf) { this.m_DestroyStackButton.confirm.gameObject.SetActive(true); this.m_DestroyStackButton.confirm_sel.gameObject.SetActive(true); return(false); } if (!this.m_DestroyStackButton.confirm_sel.gameObject.activeSelf) { return(true); } if (!item.m_CurrentSlot && item.m_InventorySlot && item.m_InventorySlot.m_Items.Count > 0) { UnityEngine.Object.Destroy(item.gameObject); } else if (item.m_CurrentSlot && item.m_CurrentSlot.m_InventoryStackSlot) { UnityEngine.Object.Destroy(item.m_CurrentSlot.m_ItemParent.gameObject); } else if (item.m_CurrentSlot && item.m_CurrentSlot.m_BackpackSlot && item.m_CurrentSlot.IsStack()) { for (int i = 0; i < ((ItemSlotStack)item.m_CurrentSlot).m_Items.Count; i++) { UnityEngine.Object.Destroy(((ItemSlotStack)item.m_CurrentSlot).m_Items[i].gameObject); } } break; case HUDItem.Action.SwapArmor: { Limb selectedLimb = HUDBodyInspection.Get().GetSelectedLimb(); ArmorData armorData = PlayerArmorModule.Get().GetArmorData(selectedLimb); Item attachedArmor = armorData.m_AttachedArmor; ItemSlot currentSlot = attachedArmor.m_CurrentSlot; if (currentSlot != null) { currentSlot.RemoveItem(); } PlayerArmorModule.Get().ArmorCarryStarted(attachedArmor); InventoryCellsGroup inventoryCellsGroup = this.m_Item.m_Info.m_InventoryCellsGroup; InventoryBackpack.Get().RemoveItem(this.m_Item, false); if (attachedArmor.m_Info.m_InventoryRotated != this.m_Item.m_Info.m_InventoryRotated) { Inventory3DManager.Get().RotateItem(attachedArmor, false); } InventoryBackpack.Get().InsertItem(attachedArmor, null, inventoryCellsGroup, true, true, true, true, true); armorData.m_Slot.InsertItem(this.m_Item); break; } case HUDItem.Action.EquipArmor: InventoryBackpack.Get().RemoveItem(this.m_Item, false); PlayerArmorModule.Get().GetArmorData(HUDBodyInspection.Get().GetSelectedLimb()).m_Slot.InsertItem(this.m_Item); break; case HUDItem.Action.Insert: if (HUDItemSlot.Get().m_SelectedSlotData == null) { return(false); } if (!HUDItemSlot.Get().m_SelectedSlotData.slot.CanInsertItem(this.m_Item)) { ((HUDMessages)HUDManager.Get().GetHUD(typeof(HUDMessages))).AddMessage(GreenHellGame.Instance.GetLocalization().Get("HUD_CannotInsertItem", true), new Color?(Color.red), HUDMessageIcon.None, "", null); return(true); } if (this.m_Item.m_Storage) { this.m_Item.m_Storage.RemoveItem(this.m_Item, false); } InventoryBackpack.Get().RemoveItem(this.m_Item, false); HUDItemSlot.Get().m_SelectedSlotData.slot.InsertItem(this.m_Item); break; case HUDItem.Action.Pick: Inventory3DManager.Get().StartCarryItem(this.m_Item, false); break; case HUDItem.Action.TakeOffArmor: { Item attachedArmor2 = PlayerArmorModule.Get().GetArmorData(HUDBodyInspection.Get().GetSelectedLimb()).m_AttachedArmor; if (attachedArmor2) { PlayerArmorModule.Get().ArmorCarryStarted(attachedArmor2); InventoryBackpack.Get().InsertItem(attachedArmor2, null, null, true, true, true, true, true); } break; } case HUDItem.Action.Plow: { Acre acre = (this.m_Item && this.m_Item.IsAcre()) ? ((Acre)this.m_Item) : null; if (!acre) { return(true); } acre.Plow(); break; } case HUDItem.Action.PickStack: Inventory3DManager.Get().StartCarryItem(this.m_Item, true); break; } return(true); }
public bool Activate(Item item) { if (this.m_Active) { return(false); } if (!item || !item.CanExecuteActions()) { return(false); } this.ResetItems(); this.m_Item = item; this.ClearSlots(); if (GreenHellGame.IsPadControllerActive() && Inventory3DManager.Get().IsActive() && Inventory3DManager.Get().CanSetCarriedItem(true)) { this.AddSlot(HUDItem.Action.Pick); this.AddSlot(HUDItem.Action.PickStack); } if (this.m_Item.m_Info.IsArmor() && ((Armor)this.m_Item).m_Limb != Limb.None) { this.AddSlot(HUDItem.Action.TakeOffArmor); this.Activate(); return(true); } bool flag = Player.Get().m_SwimController.IsActive(); if (this.m_Item.m_Info.m_Craftable && !this.m_Item.m_OnCraftingTable && Player.Get().CanStartCrafting()) { this.AddSlot(HUDItem.Action.Craft); } if (this.m_Item.IsStorage()) { this.AddSlot(HUDItem.Action.Use); } else if (item.IsAcre()) { this.AddSlot(HUDItem.Action.Plow); } else if (this.m_Item.m_Info.IsHeavyObject() && !this.m_Item.m_Info.m_CanBeAddedToInventory) { if (!MakeFireController.Get().IsActive()) { this.AddSlot(HUDItem.Action.PickUp); } } else if (this.m_Item.m_Info.m_CanEquip) { if (this.m_Item.IsFireTool()) { if (!InventoryBackpack.Get().Contains(this.m_Item)) { this.AddSlot(HUDItem.Action.Take); } if (!MakeFireController.Get().IsActive() && !Player.Get().IsInWater()) { this.AddSlot(HUDItem.Action.Use); } } else if (this.m_Item.m_InInventory || this.m_Item.m_InStorage) { if (item != InventoryBackpack.Get().m_EquippedItem) { this.AddSlot(HUDItem.Action.Equip); } } else if (InventoryBackpack.Get().FindFreeSlot(this.m_Item)) { this.AddSlot(HUDItem.Action.Take); } else { this.AddSlot(HUDItem.Action.Swap); } } else if (this.m_Item.m_Info.m_CanBeAddedToInventory && !InventoryBackpack.Get().Contains(this.m_Item)) { this.AddSlot(HUDItem.Action.Take); } if (MakeFireController.Get().IsActive() && MakeFireController.Get().CanUseItemAsKindling(item)) { this.AddSlot(HUDItem.Action.Use); } if (this.m_Item.m_Info.m_Eatable && !flag) { this.AddSlot(HUDItem.Action.Eat); } if (this.m_Item.m_Info.CanDrink() && !flag) { this.AddSlot(HUDItem.Action.Drink); } if (this.m_Item.m_Info.IsLiquidContainer() && ((LiquidContainerInfo)this.m_Item.m_Info).CanSpill()) { this.AddSlot(HUDItem.Action.Spill); } if (this.m_Item.m_Info.m_Harvestable && !flag && (!this.m_Item.RequiresToolToHarvest() || Player.Get().HasBlade())) { this.AddSlot(HUDItem.Action.Harvest); } if (this.m_Item.m_Info.IsArmor() && BodyInspectionController.Get().IsActive()) { Limb selectedLimb = HUDBodyInspection.Get().GetSelectedLimb(); if (PlayerArmorModule.Get().IsArmorActive(selectedLimb)) { this.AddSlot(HUDItem.Action.SwapArmor); } else { this.AddSlot(HUDItem.Action.EquipArmor); } } if (HUDItemSlot.Get().m_SelectedSlotData != null && HUDItemSlot.Get().m_SelectedSlotData.slot.CanInsertItem(this.m_Item)) { this.AddSlot(HUDItem.Action.Insert); } if (GreenHellGame.IsPadControllerActive() && (item.m_InInventory || item.m_InStorage)) { this.AddSlot(HUDItem.Action.Drop); } if (this.m_Item.m_Info.IsStand()) { Stand stand = (Stand)this.m_Item; if (stand.GetNumitems() > 0) { this.AddSlot(HUDItem.Action.Take); } if (stand.GetNumitems() >= 3) { this.AddSlot(HUDItem.Action.Take3); } if (stand.GetNumitems() >= 2) { this.AddSlot(HUDItem.Action.TakeAll); } } else if (!item.m_Info.m_CantDestroy && !item.m_AttachedToSpear && item.m_Info.m_ID != ItemID.Chellange_Battery && item.m_Info.m_ID != ItemID.Chellange_WalkieTalkie && !item.IsStorage() && !item.IsAcre()) { this.AddSlot(HUDItem.Action.Destroy); if ((item.m_InventorySlot && item.m_InventorySlot.m_Items.Count > 0) || (item.m_CurrentSlot && item.m_CurrentSlot.IsStack())) { this.AddSlot(HUDItem.Action.DestroyStack); } } this.Activate(); return(true); }
protected override void Update() { base.Update(); if (this.m_LastKeyCode != this.m_InputData.m_KeyCode) { this.m_KeyText.text = KeyCodeToString.GetString(this.m_InputData.m_KeyCode); this.m_LastKeyCode = this.m_InputData.m_KeyCode; } if ((this.m_LastSelectDialogDeactivationTime == 0f || Time.time - this.m_LastSelectDialogDeactivationTime > 0.5f) && GreenHellGame.IsPCControllerActive()) { if (InputsManager.Get().IsActionActive(InputsManager.InputAction.ShowSelectDialogNode) && !DialogsManager.Get().IsAnyDialogPlaying()) { if (!HUDSelectDialog.Get().enabled&& Player.Get().m_Animator.GetCurrentAnimatorStateInfo(2).shortNameHash == this.m_IdleHash && !MakeFireController.Get().IsActive()) { HUDSelectDialog.Get().Activate(); this.m_LastSelectDialogDeactivationTime = Time.time; } } else if (HUDSelectDialog.Get().enabled&& !DialogsManager.Get().IsAnyDialogPlaying()) { HUDSelectDialog.Get().Deactivate(); this.m_LastSelectDialogDeactivationTime = Time.time; } } if (this.m_NewDialogsCount == 0 || HUDSelectDialog.Get().enabled || DialogsManager.Get().IsAnyDialogPlaying()) { if (this.m_NewDialogsObject.activeSelf) { this.m_NewDialogsObject.SetActive(false); return; } } else if (!this.m_NewDialogsObject.activeSelf) { this.m_NewDialogsObject.SetActive(true); } }
private void UpdateBestTrigger() { if (HUDReadableItem.Get().enabled) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (Camera.main == null) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (CutscenesManager.Get().IsCutscenePlaying()) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (MakeFireController.Get().IsActive() && (MakeFireController.Get().ShouldBlockTriggers() || !Inventory3DManager.Get().gameObject.activeSelf)) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (CraftingController.Get().IsActive() && CraftingController.Get().m_InProgress) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (this.m_Player.m_ActiveFightController && this.m_Player.m_ActiveFightController.IsBlock()) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (HUDItem.Get().m_Active&& HUDItem.Get().m_Item) { this.SetBestTrigger(HUDItem.Get().m_Item, HUDItem.Get().m_Item.transform.position); return; } if (Inventory3DManager.Get().gameObject.activeSelf) { if (Inventory3DManager.Get().m_FocusedItem) { this.SetBestTrigger(Inventory3DManager.Get().m_FocusedItem, Inventory3DManager.Get().m_FocusedItem.transform.position); } else { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); } return; } if (BodyInspectionController.Get().IsActive()) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (Player.Get().m_Aim) { this.m_BestTrigger.Reset(); this.m_AdditionalTrigger.Reset(); return; } if (WeaponSpearController.Get().IsActive() && WeaponSpearController.Get().m_ItemBody) { this.SetBestTrigger(WeaponSpearController.Get().m_ItemBody, WeaponSpearController.Get().m_ItemBody.transform.position); return; } TriggerController.s_AllPotentialTriggers.Clear(); TriggerController.s_OffCrosshairTriggers.Clear(); TriggerController.s_ColldersEnabledMap.Clear(); Vector3 crossHairOrigin = this.GetCrossHairOrigin(); Vector3 position = Player.Get().transform.position; float num = 0.8f; float num2 = -1f; float num3 = -1f; float num4 = float.MinValue; Vector3 vector = Vector3.zero; Vector3 vector2 = Vector3.zero; TriggersManager triggersManager = TriggersManager.Get(); bool flag = false; Trigger trigger = null; Vector3 hit_pos = Vector3.zero; Trigger trigger2 = null; Vector3 hit_pos2 = Vector3.zero; float num5 = float.MinValue; for (int i = 0; i < triggersManager.GetActiveTriggersCount(); i++) { Trigger trigger3 = triggersManager.GetTrigger(i, false); if (trigger3 && trigger3.enabled) { if (!trigger3.m_IsCut) { if (trigger3.CanTrigger()) { Collider collider = null; trigger3.gameObject.GetComponents <Collider>(TriggerController.s_ColliderCache); if (TriggerController.s_ColliderCache.Count > 0) { collider = TriggerController.s_ColliderCache[0]; } if (collider) { if (trigger3.CheckInsideCollider() && collider.bounds.Contains(Camera.main.transform.position) && trigger3.IsAdditionalTrigger() && (!trigger3.CheckDot() || num4 > num3)) { hit_pos2 = collider.bounds.center; trigger2 = trigger3; num3 = num4; } float num6 = (trigger3.m_TriggerCheckRange <= 0f) ? this.m_Player.GetParams().GetTriggerCheckRange() : trigger3.m_TriggerCheckRange; if (trigger3.CheckRange()) { vector2 = ((!collider) ? trigger3.gameObject.transform.position : collider.ClosestPointOnBounds(position)); float num7 = Vector3.Distance(position, vector2); if (num7 > num6) { goto IL_539; } } vector2 = ((!collider) ? trigger3.gameObject.transform.position : collider.bounds.center); vector = vector2 - crossHairOrigin; vector.Normalize(); if (trigger3.CheckDot()) { num4 = Vector3.Dot(Camera.main.transform.forward, vector); if (num4 < num) { goto IL_539; } } TriggerController.s_AllPotentialTriggers.Add(trigger3); if (!trigger3.OnlyInCrosshair()) { TriggerController.s_OffCrosshairTriggers.Add(trigger3); } TriggerController.s_ColldersEnabledMap[collider] = collider.enabled; collider.enabled = true; if (num6 > num5) { num5 = num6; } } } } } IL_539 :; } int num8 = Physics.RaycastNonAlloc(crossHairOrigin, this.GetCrossHairDir(), TriggerController.s_RaycastHitCache, num5); if ((float)num8 > 0f) { TriggerController.s_CrosshairOrigin = this.GetCrossHairOrigin(); Array.Sort <RaycastHit>(TriggerController.s_RaycastHitCache, 0, num8, TriggerController.s_DistComparer); for (int j = 0; j < TriggerController.s_AllPotentialTriggers.Count; j++) { Trigger trigger4 = TriggerController.s_AllPotentialTriggers[j]; Collider collider2 = null; trigger4.gameObject.GetComponents <Collider>(TriggerController.s_ColliderCache); if (TriggerController.s_ColliderCache.Count > 0) { collider2 = TriggerController.s_ColliderCache[0]; } if (collider2) { for (int k = 0; k < num8; k++) { RaycastHit raycastHit = TriggerController.s_RaycastHitCache[k]; if (raycastHit.collider) { if (!(raycastHit.collider.gameObject == base.gameObject)) { if (!(raycastHit.collider == FistFightController.Get().m_RightHandCollider)) { if (!(raycastHit.collider == FistFightController.Get().m_LeftHandCollider)) { GhostSlot x = null; raycastHit.collider.gameObject.GetComponents <GhostSlot>(TriggerController.s_GhostSlotCache); if (TriggerController.s_GhostSlotCache.Count > 0) { x = TriggerController.s_GhostSlotCache[0]; } if (!flag || !(x == null) || trigger4.IsAdditionalTrigger()) { if (collider2 == raycastHit.collider || trigger4.IsAdditionalCollider(raycastHit.collider)) { if (trigger4.IsAdditionalTrigger()) { if (!trigger4.CheckDot() || num4 > num3) { hit_pos2 = raycastHit.point; trigger2 = trigger4; num3 = num4; } } else if (!trigger4.CheckDot() || num4 > num2) { hit_pos = raycastHit.point; trigger = trigger4; if (!trigger || !trigger.IsLiquidSource()) { num2 = num4; } } break; } ITriggerThrough triggerThrough = null; raycastHit.collider.gameObject.GetComponents <ITriggerThrough>(TriggerController.s_TriggerThroughCache); if (TriggerController.s_TriggerThroughCache.Count > 0) { triggerThrough = TriggerController.s_TriggerThroughCache[0]; } if (triggerThrough == null) { if (!trigger || !trigger.IsLiquidSource() || !(trigger.gameObject == raycastHit.collider.gameObject)) { if (x != null) { flag = true; } else { Item currentItem = this.m_Player.GetCurrentItem(Hand.Right); if (!currentItem || !(currentItem.gameObject == raycastHit.collider.gameObject)) { currentItem = this.m_Player.GetCurrentItem(Hand.Left); if (!currentItem || !(currentItem.gameObject == raycastHit.collider.gameObject)) { Trigger trigger5 = null; raycastHit.collider.gameObject.GetComponents <Trigger>(TriggerController.s_OtherTriggerCache); if (TriggerController.s_OtherTriggerCache.Count > 0) { trigger5 = TriggerController.s_OtherTriggerCache[0]; } if (!trigger5 || !trigger5.TriggerThrough()) { break; } } } } } } } } } } } } } } } if (trigger == null || trigger.IsLiquidSource()) { TriggerController.s_CrosshairDir = this.GetCrossHairDir(); TriggerController.s_CrosshairOrigin = this.GetCrossHairOrigin(); TriggerController.s_OffCrosshairTriggers.Sort(TriggerController.s_DotComparer); bool flag2 = false; int num9 = 0; while (num9 < TriggerController.s_OffCrosshairTriggers.Count && !flag2) { Trigger trigger6 = TriggerController.s_OffCrosshairTriggers[num9]; Collider collider3 = null; trigger6.gameObject.GetComponents <Collider>(TriggerController.s_ColliderCache); if (TriggerController.s_ColliderCache.Count > 0) { collider3 = TriggerController.s_ColliderCache[0]; } if (collider3) { float maxDistance = (trigger6.m_TriggerCheckRange <= 0f) ? this.m_Player.GetParams().GetTriggerCheckRange() : trigger6.m_TriggerCheckRange; vector2 = ((!collider3) ? trigger6.gameObject.transform.position : collider3.bounds.center); vector = vector2 - crossHairOrigin; vector.Normalize(); num8 = Physics.RaycastNonAlloc(crossHairOrigin, vector, TriggerController.s_RaycastHitCache, maxDistance); if ((float)num8 > 0f) { TriggerController.s_CrosshairOrigin = this.GetCrossHairOrigin(); Array.Sort <RaycastHit>(TriggerController.s_RaycastHitCache, 0, num8, TriggerController.s_DistComparer); for (int l = 0; l < num8; l++) { RaycastHit raycastHit2 = TriggerController.s_RaycastHitCache[l]; if (!(raycastHit2.collider.gameObject == base.gameObject)) { GhostSlot x2 = null; raycastHit2.collider.gameObject.GetComponents <GhostSlot>(TriggerController.s_GhostSlotCache); if (TriggerController.s_GhostSlotCache.Count > 0) { x2 = TriggerController.s_GhostSlotCache[0]; } if (!flag || !(x2 == null) || trigger6.IsAdditionalTrigger()) { if (collider3 == raycastHit2.collider) { if (!trigger6.CheckDot() || num4 > num2) { hit_pos = raycastHit2.point; trigger = trigger6; num2 = num4; flag2 = true; } break; } ITriggerThrough triggerThrough2 = null; raycastHit2.collider.gameObject.GetComponents <ITriggerThrough>(TriggerController.s_TriggerThroughCache); if (TriggerController.s_TriggerThroughCache.Count > 0) { triggerThrough2 = TriggerController.s_TriggerThroughCache[0]; } if (triggerThrough2 == null) { if (raycastHit2.collider.gameObject.layer != this.m_BalanceSpawnerLayer) { if (!trigger || !trigger.IsLiquidSource() || !(trigger.gameObject == raycastHit2.collider.gameObject)) { if (x2 != null) { flag = true; } else { Item currentItem2 = this.m_Player.GetCurrentItem(Hand.Right); if (!currentItem2 || !(currentItem2.gameObject == raycastHit2.collider.gameObject)) { currentItem2 = this.m_Player.GetCurrentItem(Hand.Left); if (!currentItem2 || !(currentItem2.gameObject == raycastHit2.collider.gameObject)) { Trigger trigger7 = null; raycastHit2.collider.gameObject.GetComponents <Trigger>(TriggerController.s_OtherTriggerCache); if (TriggerController.s_OtherTriggerCache.Count > 0) { trigger7 = TriggerController.s_OtherTriggerCache[0]; } if (!trigger7 || !trigger7.TriggerThrough()) { if (trigger7 && TriggerController.s_OffCrosshairTriggers.Contains(trigger7)) { trigger = trigger7; hit_pos = raycastHit2.point; flag2 = true; } break; } } } } } } } } } } } } num9++; } } this.SetBestTrigger(trigger, hit_pos); if (this.m_AdditionalTrigger.trigger != trigger2) { this.m_AdditionalTrigger.trigger = trigger2; this.m_AdditionalTrigger.actions.Clear(); if (this.m_AdditionalTrigger.trigger) { this.m_AdditionalTrigger.trigger.GetActions(this.m_AdditionalTrigger.actions); } this.m_AdditionalTrigger.hit_pos = hit_pos2; } foreach (KeyValuePair <Collider, bool> keyValuePair in TriggerController.s_ColldersEnabledMap) { Collider key = keyValuePair.Key; Collider collider4 = key; Dictionary <Collider, bool> .Enumerator enumerator; KeyValuePair <Collider, bool> keyValuePair2 = enumerator.Current; collider4.enabled = keyValuePair2.Value; } }