public static void PostProcessPedestal(Action <RewardPedestal> orig, RewardPedestal self)
 {
     //ETGModConsole.Log("Pedestal spawned");
     orig(self);
     if (GameManager.Instance.AnyPlayerHasPickupID(ScrollOfExactKnowledge.ScrollOfExactKnowledgeID))
     {
         if (GameManager.Instance.PrimaryPlayer != null)
         {
             foreach (PassiveItem item in GameManager.Instance.PrimaryPlayer.passiveItems)
             {
                 if (item.GetComponent <ScrollOfExactKnowledge>() != null)
                 {
                     item.GetComponent <ScrollOfExactKnowledge>().ReactToSpawnedPedestal(self);
                 }
             }
         }
         if (GameManager.Instance.SecondaryPlayer != null)
         {
             foreach (PassiveItem item in GameManager.Instance.SecondaryPlayer.passiveItems)
             {
                 if (item.GetComponent <ScrollOfExactKnowledge>() != null)
                 {
                     item.GetComponent <ScrollOfExactKnowledge>().ReactToSpawnedPedestal(self);
                 }
             }
         }
     }
 }
Example #2
0
        public static void BuildRewardPedestal()
        {
            Dungeon d = ItemBuilder.ForgeDungeonPrefab;

            foreach (WeightedGameObject weightedobj in d.sharedSettingsPrefab.ChestsForBosses.elements)
            {
                if (weightedobj != null && weightedobj.gameObject != null && weightedobj.gameObject.GetComponent <RewardPedestal>() != null)
                {
                    GameObject obj = Instantiate(weightedobj.gameObject);
                    obj.SetActive(false);
                    FakePrefab.MarkAsFakePrefab(obj);
                    DontDestroyOnLoad(obj);
                    GreenChamberRewardPedestal = obj;
                    RewardPedestal pedestal = obj.GetComponent <RewardPedestal>();
                    pedestal.MimicGuid = "";
                    pedestal.ReturnCoopPlayerOnLand = false;
                    pedestal.UsesSpecificItem       = true;
                    pedestal.SpecificItemId         = SpecialItemIds.GreenChamber;
                    pedestal.spawnAnimName          = "";
                    pedestal.VFX_PreSpawn           = null;
                    pedestal.SpawnsTertiarySet      = false;
                    break;
                }
            }
        }
 public void ReactToSpawnedPedestal(RewardPedestal pedestal)
 {
     if (pedestal.IsMimic)
     {
         TextBubble.DoAmbientTalk(base.transform, new Vector3(0.5f, 2, 0), "Be careful... that pedestal's breathing!", 2.5f);
     }
 }
        public void ReactToSpawnedPedestal(RewardPedestal pedestal)
        {
            if (this && this.Owner && this.ExtantCompanion)
            {
                //ETGModConsole.Log("Reaction ran in item");

                if (this.ExtantCompanion.GetComponent <ScrollOfExactKnowledgeBehav>() != null)
                {
                    this.ExtantCompanion.GetComponent <ScrollOfExactKnowledgeBehav>().ReactToSpawnedPedestal(pedestal);
                }
            }
        }
Example #5
0
        public RoomHandler AddRuntimeRoom()
        {
            IntVector2 dimensions = new IntVector2(24, 24);
            Dungeon    d          = GameManager.Instance.Dungeon;
            IntVector2 intVector  = new IntVector2(d.data.Width + 10, 10);
            int        newWidth   = d.data.Width + 10 + dimensions.x;
            int        newHeight  = Mathf.Max(d.data.Height, dimensions.y + 10);

            CellData[][] array    = BraveUtility.MultidimensionalArrayResize <CellData>(d.data.cellData, d.data.Width, d.data.Height, newWidth, newHeight);
            CellArea     cellArea = new CellArea(intVector, dimensions, 0);

            cellArea.IsProceduralRoom = true;
            d.data.cellData           = array;
            d.data.ClearCachedCellData();
            RoomHandler roomHandler = new RoomHandler(cellArea);

            for (int i = 0; i < dimensions.x; i++)
            {
                for (int j = 0; j < dimensions.y; j++)
                {
                    IntVector2 p        = new IntVector2(i, j) + intVector;
                    CellData   cellData = new CellData(p, CellType.FLOOR);
                    cellData.parentArea  = cellArea;
                    cellData.parentRoom  = roomHandler;
                    cellData.nearestRoom = roomHandler;
                    array[p.x][p.y]      = cellData;
                    roomHandler.RuntimeStampCellComplex(p.x, p.y, CellType.FLOOR, DiagonalWallType.NONE);
                }
            }
            d.data.rooms.Add(roomHandler);
            GameObject       obj      = Instantiate((GameObject)BraveResources.Load("Global Prefabs/CreepyEye_Room", ".prefab"), new Vector3((float)intVector.x, (float)intVector.y, 0f), Quaternion.identity);
            List <Component> children = obj.GetComponentsInChildren <Component>().ToList();

            foreach (Component component in obj.GetComponents <Component>())
            {
                if (children.Contains(component))
                {
                    children.Remove(component);
                }
            }
            foreach (Component child in children)
            {
                Destroy(child);
            }
            DeadlyDeadlyGoopManager.ReinitializeData();
            roomHandler.Entered += delegate(PlayerController p)
            {
                AdvancedGameStatsManager.Instance.SetFlag(CustomDungeonFlags.ITEMSPECIFIC_GREEN_CHAMBER, true);
                for (int i = parentRoom.area.basePosition.x; i < parentRoom.area.basePosition.x + parentRoom.area.dimensions.x; i++)
                {
                    for (int j = parentRoom.area.basePosition.y; j < parentRoom.area.basePosition.y + parentRoom.area.dimensions.y; j++)
                    {
                        CellData cellData = GameManager.Instance.Dungeon.data[i, j];
                        if (cellData != null && cellData.parentRoom == parentRoom && !cellData.isExitCell)
                        {
                            cellData.type = CellType.FLOOR;
                        }
                    }
                }
                enteredGeneratedRoom = true;
                parentRoom.AddProceduralTeleporterToRoom();
                Destroy(eye);
            };
            Transform parent = new GameObject("room's parent").transform;

            parent.position             = new Vector3((float)intVector.x, (float)intVector.y, 0f);
            roomHandler.hierarchyParent = parent;
            Transform arrivalPoint = new GameObject("Arrival").transform;

            arrivalPoint.name     = "Arrival";
            arrivalPoint.position = new Vector3((float)intVector.x + (float)dimensions.x / 2, (float)intVector.y + (float)dimensions.x / 4, 0f);
            arrivalPoint.parent   = parent;
            if (GreenChamberRewardPedestal != null)
            {
                RewardPedestal.Spawn(GreenChamberRewardPedestal.GetComponent <RewardPedestal>(), new IntVector2((intVector.x + dimensions.x / 2) - 1, (intVector.y + dimensions.x / 2) - 3));
            }
            roomHandler.PreventMinimapUpdates = true;
            return(roomHandler);
        }