private void PlaceSecretRatGrateInternal(Dungeon dungeon, DungeonPlaceableBehaviour prefabPlaceable, IntVector2 dimensions, Vector2 offset) { List <IntVector2> list = new List <IntVector2>(); for (int i = 0; i < dungeon.data.rooms.Count; i++) { RoomHandler roomHandler = dungeon.data.rooms[i]; if (!roomHandler.area.IsProceduralRoom && roomHandler.area.PrototypeRoomCategory == PrototypeDungeonRoom.RoomCategory.NORMAL && !roomHandler.OptionalDoorTopDecorable && !roomHandler.area.prototypeRoom.UseCustomMusic) { for (int j = roomHandler.area.basePosition.x; j < roomHandler.area.basePosition.x + roomHandler.area.dimensions.x; j++) { for (int k = roomHandler.area.basePosition.y; k < roomHandler.area.basePosition.y + roomHandler.area.dimensions.y; k++) { if (ClearForRatGrate(dungeon, dimensions.x, dimensions.y, j, k)) { list.Add(new IntVector2(j, k)); } } } } } if (list.Count > 0) { IntVector2 a = list[BraveRandom.GenerationRandomRange(0, list.Count)]; RoomHandler absoluteRoom = a.ToVector2().GetAbsoluteRoom(); GameObject gameObject = prefabPlaceable.InstantiateObject(absoluteRoom, a - absoluteRoom.area.basePosition, true); gameObject.AddComponent <ChaosGlitchTrapDoor>(); gameObject.transform.position = gameObject.transform.position + offset.ToVector3ZUp(0f); ChaosGlitchTrapDoor glitchTrapDoor = gameObject.GetComponent <ChaosGlitchTrapDoor>(); glitchTrapDoor.ConfigureOnPlacement(absoluteRoom); for (int m = 0; m < dimensions.x; m++) { for (int n = 0; n < dimensions.y; n++) { IntVector2 intVector = a + new IntVector2(m, n); if (dungeon.data.CheckInBoundsAndValid(intVector)) { dungeon.data[intVector].cellVisualData.floorTileOverridden = true; } } } } }
public override void Start() { if (!BraveRandom.IsInitialized()) { BraveRandom.InitializeRandom(); } // Init DRM Hooks Hooks.Init(); // Init EnemyAPI EnemyAPI.Hooks.Init(); EnemyAPI.Tools.Init(); // Set Up Commands #region Commands ETGModConsole.Commands.AddGroup("thesis", args => { Log("DR Mod is running and the experiment scenario will be created.\n" + "\tThe following sub-commands are available:\n" + "\t\tdebug - toggles debug messages for the experiment;\n"); }); ETGModConsole.Commands.GetGroup("thesis").AddUnit("debug", args => { Debug = !Debug; Log("DR Mod - Debug messages " + (Debug ? "activated" : "deactivated")); }); #endregion this.OverrideQuickStart(); Controller = ETGModMainBehaviour.Instance .gameObject.AddComponent <DynamicRandomnessController>(); Data = new PlaythroughData(Order, Time.time); Log($"{MOD_NAME} v{VERSION} started successfully.", TEXT_COLOR); Log($"Experiment Variant -> {Order}"); }
protected override void DoSetup() { base.m_shopItems = new List <GameObject>(); List <int> list = new List <int>(); Func <GameObject, float, float> weightModifier = null; if (SecretHandshakeItem.NumActive > 0) { weightModifier = delegate(GameObject prefabObject, float sourceWeight) { PickupObject component10 = prefabObject.GetComponent <PickupObject>(); float num7 = sourceWeight; if (component10 != null) { int quality = (int)component10.quality; num7 *= 1f + (float)quality / 10f; } return(num7); }; } bool flag = GameStatsManager.Instance.IsRainbowRun; for (int i = 0; i < base.spawnPositions.Length; i++) { if (flag) { base.m_shopItems.Add(null); } else { GameObject gameObject5 = this.shopItems.SubshopSelectByWeightWithoutDuplicatesFullPrereqs(this.m_shopItems, weightModifier, 1, GameManager.Instance.IsSeeded); this.m_shopItems.Add(gameObject5); } } m_itemControllers = new List <ShopItemController>(); for (int m = 0; m < base.spawnPositions.Length; m++) { Transform transform = base.spawnPositions[m]; if (!flag && !(base.m_shopItems[m] == null)) { PickupObject component4 = base.m_shopItems[m].GetComponent <PickupObject>(); if (!(component4 == null)) { GameObject gameObject6 = new GameObject("Shop item " + m.ToString()); Transform transform2 = gameObject6.transform; transform2.parent = transform; transform2.localPosition = Vector3.zero; EncounterTrackable component5 = component4.GetComponent <EncounterTrackable>(); if (component5 != null) { GameManager.Instance.ExtantShopTrackableGuids.Add(component5.EncounterGuid); } CustomShopItemController shopItemController = gameObject6.AddComponent <CustomShopItemController>(); this.AssignItemFacing(transform, shopItemController); if (!base.m_room.IsRegistered(shopItemController)) { base.m_room.RegisterInteractable(shopItemController); } shopItemController.CurrencyType = currencyType; shopItemController.customCanBuy += CustomCanBuyMethod; shopItemController.customPrice += CustomPriceMethod; shopItemController.removeCurrency += RemoveCurrencyMethod; shopItemController.OnPurchase += OnPurchaseMethod; shopItemController.OnSteal += OnStealMethod; shopItemController.customPriceSprite = this.customPriceSprite; shopItemController.Initialize(component4, this); m_itemControllers.Add(shopItemController); } } } bool flag3 = false; if (base.shopItemsGroup2 != null && base.spawnPositionsGroup2.Length > 0) { int count = base.m_shopItems.Count; for (int num2 = 0; num2 < base.spawnPositionsGroup2.Length; num2++) { if (flag) { base.m_shopItems.Add(null); } else { float num3 = base.spawnGroupTwoItem1Chance; if (num2 == 1) { num3 = base.spawnGroupTwoItem2Chance; } else if (num2 == 2) { num3 = base.spawnGroupTwoItem3Chance; } bool isSeeded = GameManager.Instance.IsSeeded; if (((!isSeeded) ? UnityEngine.Random.value : BraveRandom.GenerationRandomValue()) < num3) { float replaceFirstRewardWithPickup = GameManager.Instance.RewardManager.CurrentRewardData.ReplaceFirstRewardWithPickup; if (!flag3 && ((!isSeeded) ? UnityEngine.Random.value : BraveRandom.GenerationRandomValue()) < replaceFirstRewardWithPickup) { flag3 = true; GameObject item2 = base.shopItems.SelectByWeightWithoutDuplicatesFullPrereqs(base.m_shopItems, weightModifier, GameManager.Instance.IsSeeded); base.m_shopItems.Add(item2); } else if (!GameStatsManager.Instance.IsRainbowRun) { GameObject rewardObjectShopStyle2 = GameManager.Instance.RewardManager.GetRewardObjectShopStyle(GameManager.Instance.PrimaryPlayer, false, false, base.m_shopItems); base.m_shopItems.Add(rewardObjectShopStyle2); } else { base.m_shopItems.Add(null); } } else { base.m_shopItems.Add(null); } } } for (int num4 = 0; num4 < base.spawnPositionsGroup2.Length; num4++) { Transform transform3 = base.spawnPositionsGroup2[num4]; if (!flag && !(base.m_shopItems[count + num4] == null)) { PickupObject component8 = base.m_shopItems[count + num4].GetComponent <PickupObject>(); if (!(component8 == null)) { GameObject gameObject8 = new GameObject("Shop 2 item " + num4.ToString()); Transform transform4 = gameObject8.transform; transform4.parent = transform3; transform4.localPosition = Vector3.zero; EncounterTrackable component9 = component8.GetComponent <EncounterTrackable>(); if (component9 != null) { GameManager.Instance.ExtantShopTrackableGuids.Add(component9.EncounterGuid); } CustomShopItemController shopItemController2 = gameObject8.AddComponent <CustomShopItemController>(); this.AssignItemFacing(transform3, shopItemController2); if (!base.m_room.IsRegistered(shopItemController2)) { base.m_room.RegisterInteractable(shopItemController2); } shopItemController2.Initialize(component8, this); m_itemControllers.Add(shopItemController2); } } } } /*for (int num6 = 0; num6 < m_customShopItemControllers.Count; num6++) * { * * m_customShopItemControllers[num6].CurrencyType = currencyType; * * m_customShopItemControllers[num6].CustomCanBuy += Balls.CustomCanBuy; * m_customShopItemControllers[num6].CustomPrice += Balls.CustomPrice; * m_customShopItemControllers[num6].RemoveCurrency += Balls.RemoveCurrency; * m_customShopItemControllers[num6].customPriceSprite = this.customPriceSprite; * }*/ }