// Token: 0x06007CE5 RID: 31973 RVA: 0x00316054 File Offset: 0x00314254 public void Interact(PlayerController interactor) { if (!PassiveItem.IsFlagSetAtAll(typeof(PickpocketGuide))) { return; } PlayerController player = GameManager.Instance.PrimaryPlayer; FloorRewardData currentRewardData = GameManager.Instance.RewardManager.CurrentRewardData; LootEngine.AmmoDropType ammoDropType = LootEngine.AmmoDropType.DEFAULT_AMMO; bool flag = LootEngine.DoAmmoClipCheck(currentRewardData, out ammoDropType); string path = (ammoDropType != LootEngine.AmmoDropType.SPREAD_AMMO) ? "Ammo_Pickup" : "Ammo_Pickup_Spread"; float value = UnityEngine.Random.value; float num = currentRewardData.ChestSystem_ChestChanceLowerBound; if (value <= 0.2f) { IntVector2 bestRewardLocation = base.sprite.WorldCenter.ToIntVector2(); LootEngine.SpawnItem((GameObject)BraveResources.Load(path, ".prefab"), bestRewardLocation.ToVector3(), Vector2.up, 1f, true, true, false); } else if (value <= 0.95f) { GameObject gameObject; if (value <= 0.6f) { gameObject = currentRewardData.SingleItemRewardTable.SelectByWeight(false); } else { gameObject = ((UnityEngine.Random.value >= 0.9f) ? GameManager.Instance.RewardManager.FullHeartPrefab.gameObject : GameManager.Instance.RewardManager.HalfHeartPrefab.gameObject); } DebrisObject debrisObject = LootEngine.SpawnItem(gameObject, base.sprite.WorldCenter.ToIntVector2().ToVector3() + new Vector3(0.25f, 0f, 0f), Vector2.up, 1f, true, true, false); AkSoundEngine.PostEvent("Play_OBJ_item_spawn_01", debrisObject.gameObject); } else { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(base.sprite.WorldCenter); } this.m_room.DeregisterInteractable(this); PickpocketGuide.unstealthBehavior unstealthBehavior = player.gameObject.GetOrAddComponent <PickpocketGuide.unstealthBehavior>(); unstealthBehavior.parentItem.BreakStealth(player); }
public static void CurseRoomRewardMethod(Action <RoomHandler> orig, RoomHandler self) { bool harderlotj = JammedSquire.NoHarderLotJ; if (harderlotj) { orig(self); } else { orig(self); FloorRewardData currentRewardData = GameManager.Instance.RewardManager.CurrentRewardData; LootEngine.AmmoDropType ammoDropType = LootEngine.AmmoDropType.DEFAULT_AMMO; bool flag = LootEngine.DoAmmoClipCheck(currentRewardData, out ammoDropType); string path = (ammoDropType != LootEngine.AmmoDropType.SPREAD_AMMO) ? "Ammo_Pickup" : "Ammo_Pickup_Spread"; float value = UnityEngine.Random.value; float num = currentRewardData.ChestSystem_ChestChanceLowerBound; //float num2 = GameManager.Instance.PrimaryPlayer.stats.GetStatValue(PlayerStats.StatType.Coolness) / 100f; float num3 = (GameManager.Instance.PrimaryPlayer.stats.GetStatValue(PlayerStats.StatType.Curse) / 250f); if (GameManager.Instance.CurrentGameType == GameManager.GameType.COOP_2_PLAYER) { num3 += GameManager.Instance.SecondaryPlayer.stats.GetStatValue(PlayerStats.StatType.Curse) / 250f; } if (PassiveItem.IsFlagSetAtAll(typeof(ChamberOfEvilItem))) { num3 *= 1.25f; } num = Mathf.Clamp(num + GameManager.Instance.PrimaryPlayer.AdditionalChestSpawnChance, currentRewardData.ChestSystem_ChestChanceLowerBound, currentRewardData.ChestSystem_ChestChanceUpperBound) + num3; bool flag2 = currentRewardData.SingleItemRewardTable != null; bool flag3 = false; float num4 = 0.1f; if (!RoomHandler.HasGivenRoomChestRewardThisRun && MetaInjectionData.ForceEarlyChest) { flag3 = true; } if (flag3) { if (!RoomHandler.HasGivenRoomChestRewardThisRun && (GameManager.Instance.CurrentFloor == 1 || GameManager.Instance.CurrentFloor == -1)) { flag2 = false; num += num4; if (GameManager.Instance.PrimaryPlayer && GameManager.Instance.PrimaryPlayer.NumRoomsCleared > 4) { num = 1f; } } if (!RoomHandler.HasGivenRoomChestRewardThisRun && self.distanceFromEntrance < RoomHandler.NumberOfRoomsToPreventChestSpawning) { GameManager.Instance.Dungeon.InformRoomCleared(false, false); return; } } BraveUtility.Log("Current chest spawn chance: " + num, Color.yellow, BraveUtility.LogVerbosity.IMPORTANT); if (value > num) { if (flag) { IntVector2 bestRewardLocation = self.GetBestRewardLocation(new IntVector2(1, 1), RoomHandler.RewardLocationStyle.CameraCenter, true); LootEngine.SpawnItem((GameObject)BraveResources.Load(path, ".prefab"), bestRewardLocation.ToVector3(), Vector2.up, 1f, true, true, false); } GameManager.Instance.Dungeon.InformRoomCleared(false, false); return; } if (flag2) { float num5 = currentRewardData.PercentOfRoomClearRewardsThatAreChests; if (PassiveItem.IsFlagSetAtAll(typeof(AmazingChestAheadItem))) { num5 *= 2f; num5 = Mathf.Max(0.5f, num5); } flag2 = (UnityEngine.Random.value > num5); } if (flag2) { float num6 = (GameManager.Instance.CurrentGameType != GameManager.GameType.COOP_2_PLAYER) ? GameManager.Instance.RewardManager.SinglePlayerPickupIncrementModifier : GameManager.Instance.RewardManager.CoopPickupIncrementModifier; GameObject gameObject; if (UnityEngine.Random.value < 1f / num6) { gameObject = currentRewardData.SingleItemRewardTable.SelectByWeight(false); } else { gameObject = ((UnityEngine.Random.value >= 0.9f) ? GameManager.Instance.RewardManager.FullHeartPrefab.gameObject : GameManager.Instance.RewardManager.HalfHeartPrefab.gameObject); } UnityEngine.Debug.Log(gameObject.name + "SPAWNED"); DebrisObject debrisObject = LootEngine.SpawnItem(gameObject, self.GetBestRewardLocation(new IntVector2(1, 1), RoomHandler.RewardLocationStyle.CameraCenter, true).ToVector3() + new Vector3(0.25f, 0f, 0f), Vector2.up, 1f, true, true, false); Exploder.DoRadialPush(debrisObject.sprite.WorldCenter.ToVector3ZUp(debrisObject.sprite.WorldCenter.y), 8f, 3f); AkSoundEngine.PostEvent("Play_OBJ_item_spawn_01", debrisObject.gameObject); GameManager.Instance.Dungeon.InformRoomCleared(true, false); } else { IntVector2 bestRewardLocation = self.GetBestRewardLocation(new IntVector2(2, 1), RoomHandler.RewardLocationStyle.CameraCenter, true); bool isRainbowRun = GameStatsManager.Instance.IsRainbowRun; if (isRainbowRun) { LootEngine.SpawnBowlerNote(GameManager.Instance.RewardManager.BowlerNoteChest, bestRewardLocation.ToCenterVector2(), self, true); RoomHandler.HasGivenRoomChestRewardThisRun = true; } else { Chest exists = self.SpawnRoomRewardChest(null, bestRewardLocation); if (exists) { RoomHandler.HasGivenRoomChestRewardThisRun = true; } } GameManager.Instance.Dungeon.InformRoomCleared(true, true); } if (flag) { IntVector2 bestRewardLocation = self.GetBestRewardLocation(new IntVector2(1, 1), RoomHandler.RewardLocationStyle.CameraCenter, true); LootEngine.DelayedSpawnItem(1f, (GameObject)BraveResources.Load(path, ".prefab"), bestRewardLocation.ToVector3() + new Vector3(0.25f, 0f, 0f), Vector2.up, 1f, true, true, false); } } }