Example #1
0
        private void BreakEgg(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            float value = UnityEngine.Random.Range(0.0f, 1.0f);
            bool  flag  = value < 0.15;

            if (flag && !Owner.HasPickupID(817))
            {
                PlayerController player    = this.Owner;
                float            curHealth = player.healthHaver.GetCurrentHealth();
                AkSoundEngine.PostEvent("Play_WPN_egg_impact_01", base.gameObject);

                player.PlayEffectOnActor(ResourceCache.Acquire("Global VFX/VFX_Healing_Sparkles_001") as GameObject, Vector3.zero, true, false, false);
                player.healthHaver.ForceSetCurrentHealth(curHealth + 0.5f);

                UnityEngine.Object.Destroy(base.gameObject, 1f);
                player.DropPassiveItem(this);

                PickupObject.ItemQuality itemQuality          = PickupObject.ItemQuality.D;
                PickupObject             itemOfTypeAndQuality = LootEngine.GetItemOfTypeAndQuality <PickupObject>(itemQuality, (UnityEngine.Random.value >= 0.5f) ? GameManager.Instance.RewardManager.GunsLootTable : GameManager.Instance.RewardManager.ItemsLootTable, false);
                if (itemOfTypeAndQuality)
                {
                    LootEngine.SpawnItem(itemOfTypeAndQuality.gameObject, base.transform.position, Vector2.up, 0.1f, true, false, false);
                }
            }

            else
            {
                return;
            }
        }
        private void RobotTookCrestDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            PlayerController player   = this.Owner;
            float            curArmor = player.healthHaver.Armor;

            GameManager.Instance.StartCoroutine(this.RobotCrestgain());
        }
        private void RobotTookDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            PlayerController player   = this.Owner;
            float            curArmor = player.healthHaver.Armor;

            if (curArmor > 1f)
            {
            }
        }
Example #4
0
    protected void ApplyDamage(float damage, Vector2 direction, string sourceName, CoreDamageTypes damageTypes = CoreDamageTypes.None, DamageCategory damageCategory = DamageCategory.Normal, bool ignoreInvulnerabilityFrames = false, PixelCollider hitPixelCollider = null, bool ignoreDamageCaps = false)
    {
        orig_ApplyDamage(damage, direction, sourceName, damageTypes, damageCategory, ignoreInvulnerabilityFrames, hitPixelCollider, ignoreDamageCaps);

        if (0f < currentHealth && 0f < damage && ETGModGUI.UseDamageIndicators)
        {
            ETGDamageIndicatorGUI.HealthHaverTookDamage(this, damage);
        }
    }
            private void OnDamaged(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
            {
                PlayerController player = GameManager.Instance.PrimaryPlayer;
                bool             flag   = player.CurrentRoom != null;

                if (flag)
                {
                    player.CurrentRoom.PlayerHasTakenDamageInThisRoom = false;
                }
            }
Example #6
0
        private void oof(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            bool flag3 = this.m_owner.CurrentRoom != null;

            if (flag3)
            {
                AkSoundEngine.PostEvent("Play_ENM_kali_burst_01", base.gameObject);
                this.m_owner.CurrentRoom.ApplyActionToNearbyEnemies(this.m_owner.CenterPosition, 20f, new Action <AIActor, float>(this.ProcessEnemy));
            }
        }
Example #7
0
 public void OnTakeDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     this.DamageToEnemiesInRoom = 6f;
     base.Owner.CurrentRoom.ApplyActionToNearbyEnemies(base.Owner.CenterPosition, 100f, delegate(AIActor enemy, float dist)
     {
         if (enemy && enemy.healthHaver)
         {
             enemy.healthHaver.ApplyDamage(this.DamageToEnemiesInRoom, Vector2.zero, string.Empty, CoreDamageTypes.None, DamageCategory.Normal, false, null, false);
         }
     });
 }
Example #8
0
 // Token: 0x0600033C RID: 828 RVA: 0x0001E984 File Offset: 0x0001CB84
 public static void AddCurrentGunDamageTypeModifier(this Gun gun, CoreDamageTypes damageTypes, float damageMultiplier)
 {
     gun.currentGunDamageTypeModifiers = gun.currentGunDamageTypeModifiers.Concat(new DamageTypeModifier[]
     {
         new DamageTypeModifier
         {
             damageType       = damageTypes,
             damageMultiplier = damageMultiplier
         }
     }).ToArray <DamageTypeModifier>();
 }
        private void Check4LunarSyngergy(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            bool flag1 = base.LastOwner.HasPickupID(631);

            if (flag1 && !this.onCooldown)
            {
                this.onCooldown = true;
                ApplyStat(base.LastOwner, PlayerStats.StatType.Damage, 0.025f, StatModifier.ModifyMethod.ADDITIVE);
                GameManager.Instance.StartCoroutine(StartCooldown());
            }
        }
        private void PlayerTookDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            if (activeOutline == true)
            {
                GameManager.Instance.StartCoroutine(this.GainOutline());
            }

            else if (activeOutline == false)
            {
                GameManager.Instance.StartCoroutine(this.LoseOutline());
            }
        }
Example #11
0
            private IEnumerator HandleDelayedDamage(SpeculativeRigidbody targetRigidbody, float damage, Vector2 damageVec, PixelCollider hitPixelCollider)
            {
                yield return(new WaitForSeconds(0.5f));

                if (targetRigidbody && targetRigidbody.healthHaver)
                {
                    HealthHaver     healthHaver     = targetRigidbody.healthHaver;
                    string          ownerName       = this.OwnerName;
                    CoreDamageTypes coreDamageTypes = this.damageTypes;
                    DamageCategory  damageCategory  = (!this.IsBlackBullet) ? DamageCategory.Normal : DamageCategory.BlackBullet;
                    healthHaver.ApplyDamage(damage, damageVec, ownerName, coreDamageTypes, damageCategory, false, hitPixelCollider, this.ignoreDamageCaps);
                }
                yield break;
            }
Example #12
0
        private void FailContract(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            AkSoundEngine.PostEvent("Play_BOSS_lichB_intro_01", base.gameObject);
            GameStatsManager.Instance.RegisterStatChange(TrackedStats.TIMES_HIT_WITH_THE_GRIPPY, 1f);
            int num = 1;

            if (num < 1)
            {
                num = 1;
            }
            List <RoomHandler> list   = new List <RoomHandler>();
            List <RoomHandler> list2  = new List <RoomHandler>();
            PlayerController   player = base.Owner;

            list.Add(player.CurrentRoom);
            while (list.Count - 1 < num)
            {
                RoomHandler roomHandler = list[list.Count - 1];
                list2.Clear();
                foreach (RoomHandler roomHandler2 in roomHandler.connectedRooms)
                {
                    if (roomHandler2.hasEverBeenVisited && roomHandler2.distanceFromEntrance < roomHandler.distanceFromEntrance && !list.Contains(roomHandler2))
                    {
                        if (!roomHandler2.area.IsProceduralRoom || roomHandler2.area.proceduralCells == null)
                        {
                            list2.Add(roomHandler2);
                        }
                    }
                }
                if (list2.Count == 0)
                {
                    break;
                }
                list.Add(BraveUtility.RandomElement <RoomHandler>(list2));
            }
            if (list.Count > 1)
            {
                base.Owner.RespawnInPreviousRoom(false, PlayerController.EscapeSealedRoomStyle.GRIP_MASTER, true, list[list.Count - 1]);
                for (int i = 1; i < list.Count - 1; i++)
                {
                    list[i].ResetPredefinedRoomLikeDarkSouls();
                }
            }
            else
            {
                base.Owner.RespawnInPreviousRoom(false, PlayerController.EscapeSealedRoomStyle.GRIP_MASTER, true, null);
            }
            base.Owner.specRigidbody.Velocity = Vector2.zero;
            base.Owner.knockbackDoer.TriggerTemporaryKnockbackInvulnerability(1f);
        }
Example #13
0
        private void PlayerTookCrestDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            PlayerController player    = this.Owner;
            float            curHealth = player.healthHaver.GetCurrentHealth();

            if (curHealth > 0.5f)
            {
                player.healthHaver.ForceSetCurrentHealth(curHealth - 0.5f);
                GameManager.Instance.StartCoroutine(this.Crestgain());
            }
            else
            {
                return;
            }
        }
        private void TimeIsTicking(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            this.Countdown += 1f;
            bool flag = this.Countdown == 1f;

            if (flag)
            {
                string header = "";
                string text   = "";
                header = "The blood flows in...";
                text   = "The cogs start turning.";
                this.Notify(header, text);
                GameManager.Instance.StartCoroutine(TheCountdown());
            }
        }
Example #15
0
        // Token: 0x060004F7 RID: 1271 RVA: 0x0002A6B8 File Offset: 0x000288B8
        private void PlayerTookDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            bool flag = this.activeOutline;

            if (flag)
            {
                GameManager.Instance.StartCoroutine(this.GainOutline());
            }
            else
            {
                bool flag2 = !this.activeOutline;
                if (flag2)
                {
                }
            }
        }
 private void OnDamaged(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     if ((m_attachedPlayer != null) && (m_attachedPlayer.CurrentGun != null) && (m_attachedPlayer.CurrentGun.CanActuallyBeDropped(m_attachedPlayer)))
     {
         if (CurseManager.CurseIsActive("Curse of Butterfingers"))
         {
             if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
             {
                 StartCoroutine(GoodButterfingersEffect());
             }
             else
             {
                 StartCoroutine(ButterFingersGun());
             }
         }
     }
 }
Example #17
0
 private void ChaosHole(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     {
         Projectile projectile = ((Gun)ETGMod.Databases.Items["black_hole_gun"]).DefaultModule.projectiles[0];
         GameObject gameObject = SpawnManager.SpawnProjectile(projectile.gameObject, base.Owner.sprite.WorldCenter, Quaternion.Euler(0f, 0f, (base.Owner.CurrentGun == null) ? 0f : base.Owner.CurrentGun.CurrentAngle), true);
         Projectile component  = gameObject.GetComponent <Projectile>();
         bool       flag       = component != null;
         bool       flag2      = flag;
         if (flag2)
         {
             component.Owner           = base.Owner;
             component.Shooter         = base.Owner.specRigidbody;
             component.baseData.speed  = 4f;
             component.baseData.damage = 0.1f;
         }
     }
 }
Example #18
0
        private void CompanionOnDamaged(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            m_healthRemaining    = resultValue;
            m_maxHealthRemaining = maxValue;

            if (m_canSpawnRings && RingDropChance > UnityEngine.Random.value)
            {
                if (m_extantCompanion)
                {
                    m_extantCompanion.GetComponent <AIActor>().behaviorSpeculator.Stun(1);
                    m_extantCompanion.GetComponent <AIAnimator>().PlayUntilFinished(HitAnimation);
                    int RingCount = UnityEngine.Random.Range(3, 10);
                    ExpandUtility.SpawnCustomCurrency(m_extantCompanion.GetComponent <SpeculativeRigidbody>().GetUnitCenter(ColliderType.HitBox), RingCount, SonicRing.RingID);
                    AkSoundEngine.PostEvent("Play_EX_SonicLoseRings_01", m_extantCompanion);
                }
            }
            m_canSpawnRings = false;
        }
Example #19
0
        public void HealthHaver_ApplyDamageHook(
            HealthHaver self, float damage, Vector2 direction, string sourceName, CoreDamageTypes damageTypes = CoreDamageTypes.None, DamageCategory damageCategory = DamageCategory.Normal,
            bool ignoreInvulnerabilityFrames = false, PixelCollider hitPixelCollider = null, bool ignoreDamageCaps = false)
        {//Killithid's ghosts spawn without correct hitboxes and crash game on hit, this method is a bandaid for that. Kills all enemies and projectiles in room
            try
            {
                self.orig_ApplyDamage(damage, direction, sourceName, damageTypes, damageCategory, ignoreInvulnerabilityFrames, hitPixelCollider, ignoreDamageCaps);
                if (0f < self.GetCurrentHealth() && 0f < damage && ETGModGUI.UseDamageIndicators)
                {
                    ETGDamageIndicatorGUI.HealthHaverTookDamage(self, damage);
                }
            }

            catch (Exception e)
            {
                Debug.Log("[Randomizer] HealthHaverHook Error" + e);
                RandomHandleEnemyInfo.DestroyEverything();
                throw;
            }
        }
        private void PlayerTookDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            AIActor component = BabyGoodModular.ModulePrefab.GetComponent <AIActor>();
            AIActor beans     = component as AIActor;

            BunnyModule.Log("start");
            Projectile projectile = ((Gun)ETGMod.Databases.Items[390]).DefaultModule.projectiles[0];
            //	Vector3 vector = player.unadjustedAimPoint - player.LockedApproximateSpriteCenter;
            //Vector3 vector2 = player.specRigidbody.UnitCenter;
            GameObject         gameObject = SpawnManager.SpawnProjectile(projectile.gameObject, beans.sprite.WorldCenter, Quaternion.Euler(0f, 0f, ((base.Owner.CurrentGun == null) ? 1.2f : base.Owner.CurrentGun.CurrentAngle) + UnityEngine.Random.Range(-180, 180)), true);
            Projectile         component1 = gameObject.GetComponent <Projectile>();
            BounceProjModifier bouncy     = component.gameObject.AddComponent <BounceProjModifier>();

            bouncy.numberOfBounces = 2;
            {
                component1.Owner   = base.Owner;
                component1.Shooter = base.Owner.specRigidbody;
            }
            //LootEngine.SpawnItem(PickupObjectDatabase.GetById(68).gameObject, beans.sprite.WorldCenter, Vector2.down, .7f, false, true, false);
            //BunnyModule.Log("end");
        }
Example #21
0
        private void OopsDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            PlayerController player = (GameManager.Instance.PrimaryPlayer);

            this.DeathMark += 1f;
            int healthInt = Convert.ToInt32(player.healthHaver.GetCurrentHealth() * 2);
            int armorInt  = Convert.ToInt32(player.healthHaver.Armor);
            int total     = healthInt + armorInt;

            if (total <= DeathMark || total == DeathMark)
            {
                int num = 1;
                if (num >= 0)
                {
                    player.healthHaver.ApplyDamage(total, Vector2.zero, StringTableManager.GetEnemiesString("#SMOKING", -1), CoreDamageTypes.Void, DamageCategory.Unstoppable, true, null, false);
                    num--;
                }

                //base.Owner.healthHaver.Die(Vector2.zero);
            }
        }
Example #22
0
 private void SwapPositions(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     if (resultValue > 0)
     {
         attempts++;
         RoomHandler absoluteRoom       = daguy.CenterPosition.GetAbsoluteRoom();
         AIActor     randomActiveEnemy2 = absoluteRoom.GetRandomActiveEnemy(false);
         while (randomActiveEnemy2 == daguy && !(attempts >= 100))
         {
             attempts           = 0;
             randomActiveEnemy2 = absoluteRoom.GetRandomActiveEnemy(false);
         }
         if (randomActiveEnemy2 != daguy)
         {
             Vector2 vector = daguy.CenterPosition;
             daguy.transform.position = randomActiveEnemy2.CenterPosition;
             randomActiveEnemy2.transform.position = vector;
             daguy.specRigidbody.Reinitialize();
             randomActiveEnemy2.specRigidbody.Reinitialize();
         }
     }
 }
Example #23
0
        private void HandleGenieSpawn(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            PlayerController player = this.Owner;

            if (ActiveGenie != true && Owner.IsInCombat)
            {
                ActiveGenie = true;
                GameManager.Instance.StartCoroutine(this.GenieTimer());
            }

            if (player.HasPickupID(369))
            {
                Projectile projectile = ((Gun)ETGMod.Databases.Items[369]).DefaultModule.projectiles[0];
                GameObject gameObject = SpawnManager.SpawnProjectile(projectile.gameObject, player.sprite.WorldCenter, Quaternion.Euler(0f, 0f, 0f), true);
                Projectile component  = gameObject.GetComponent <Projectile>();
                if (component != null)
                {
                    component.Owner              = player;
                    component.baseData.range     = 0f;
                    component.baseData.damage    = 0f;
                    component.collidesWithPlayer = true;
                }
            }
        }
        private void PlayerTookDamage(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
        {
            playerHP = Owner.healthHaver.GetCurrentHealthPercentage();
            string playerHPMSG = playerHP + "";

            if (statsChanged == true)
            {
                ETGModConsole.Log(playerHPMSG, false);
                //if (fireRateBuff <= 0) return;
                float curFireRate2 = Owner.stats.GetBaseStatValue(PlayerStats.StatType.RateOfFire);
                float newFireRate2 = curFireRate2 - fireRateBuff;
                Owner.stats.SetBaseStatValue(PlayerStats.StatType.RateOfFire, newFireRate2, Owner);
                fireRateBuff = -1;

                ETGModConsole.Log(playerHPMSG, false);
                // if (reloadBuff <= 0) return;
                float curReload2 = Owner.stats.GetBaseStatValue(PlayerStats.StatType.ReloadSpeed);
                float newReload2 = curReload2 - reloadBuff;
                Owner.stats.SetBaseStatValue(PlayerStats.StatType.RateOfFire, newReload2, Owner);
                reloadBuff = -1;
            }


            float curFireRate = Owner.stats.GetBaseStatValue(PlayerStats.StatType.RateOfFire);
            float newFireRate = curFireRate + ((1 - playerHP) * 2);

            Owner.stats.SetBaseStatValue(PlayerStats.StatType.RateOfFire, newFireRate, Owner);
            fireRateBuff = newFireRate - curFireRate;


            float curReload = Owner.stats.GetBaseStatValue(PlayerStats.StatType.ReloadSpeed);
            float newReload = curReload - ((1 - playerHP) / 4);

            Owner.stats.SetBaseStatValue(PlayerStats.StatType.ReloadSpeed, newReload, Owner);
            reloadBuff = newReload - curReload;
        }
 private void charmAll(float healthRemaining, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     if (damageTypes != CoreDamageTypes.Void)
     {
     }
 }
Example #26
0
        public static void GenerateRoomLayoutFromPNG(PrototypeDungeonRoom room, string filePath, PrototypeRoomPitEntry.PitBorderType PitBorderType = PrototypeRoomPitEntry.PitBorderType.FLAT, CoreDamageTypes DamageCellsType = CoreDamageTypes.None)
        {
            Texture2D m_TextureFromResource = ResourceExtractor.GetTextureFromResource(TextureBasePath + filePath);

            float DamageToPlayersPerTick = 0;
            float DamageToEnemiesPerTick = 0;
            float TickFrequency          = 0;
            bool  RespectsFlying         = true;
            bool  DamageCellsArePoison   = false;

            if (DamageCellsType == CoreDamageTypes.Fire)
            {
                DamageToPlayersPerTick = 0.5f;
                TickFrequency          = 1;
            }
            else if (DamageCellsType == CoreDamageTypes.Poison)
            {
                DamageCellsArePoison   = true;
                DamageToPlayersPerTick = 0.5f;
                TickFrequency          = 1;
            }

            if (m_TextureFromResource == null)
            {
                ETGModConsole.Log("[ExpandTheGungeon] GenerateRoomFromImage: Error! Requested Texture Resource is Null!");
                return;
            }

            Color WhitePixel      = new Color32(255, 255, 255, 255);    // Wall Cell
            Color PinkPixel       = new Color32(255, 0, 255, 255);      // Diagonal Wall Cell (North East)
            Color YellowPixel     = new Color32(255, 255, 0, 255);      // Diagonal Wall Cell (North West)
            Color HalfPinkPixel   = new Color32(127, 0, 127, 255);      // Diagonal Wall Cell (South East)
            Color HalfYellowPixel = new Color32(127, 127, 0, 255);      // Diagonal Wall Cell (South West)

            Color BluePixel = new Color32(0, 0, 255, 255);              // Floor Cell

            Color BlueHalfGreenPixel = new Color32(0, 127, 255, 255);   // Floor Cell (Ice Override)
            Color HalfBluePixel      = new Color32(0, 0, 127, 255);     // Floor Cell (Water Override)
            Color HalfRedPixel       = new Color32(0, 0, 127, 255);     // Floor Cell (Carpet Override)
            Color GreenHalfRBPixel   = new Color32(127, 255, 127, 255); // Floor Cell (Grass Override)
            Color HalfWhitePixel     = new Color32(127, 127, 127, 255); // Floor Cell (Bone Override)
            Color OrangePixel        = new Color32(255, 127, 0, 255);   // Floor Cell (Flesh Override)
            Color RedHalfGBPixel     = new Color32(255, 127, 127, 255); // Floor Cell (ThickGoop Override)

            Color GreenPixel = new Color32(0, 255, 0, 255);             // Damage Floor Cell

            Color RedPixel = new Color32(255, 0, 0, 255);               // Pit Cell

            int width       = room.Width;
            int height      = room.Height;
            int ArrayLength = (width * height);

            if (m_TextureFromResource.GetPixels32().Length != ArrayLength)
            {
                ETGModConsole.Log("[ExpandTheGungeon] GenerateRoomFromImage: Error! Image resolution doesn't match size of room!");
                return;
            }

            room.FullCellData = new PrototypeDungeonRoomCellData[ArrayLength];
            List <Vector2> m_Pits = new List <Vector2>();

            for (int X = 0; X < width; X++)
            {
                for (int Y = 0; Y < height; Y++)
                {
                    int                          ArrayPosition     = (Y * width + X);
                    Color?                       m_Pixel           = m_TextureFromResource.GetPixel(X, Y);
                    CellType                     cellType          = CellType.FLOOR;
                    DiagonalWallType             diagonalWallType  = DiagonalWallType.NONE;
                    CellVisualData.CellFloorType OverrideFloorType = CellVisualData.CellFloorType.Stone;
                    bool                         isDamageCell      = false;
                    bool                         cellDamagesPlayer = false;
                    if (m_Pixel.HasValue)
                    {
                        if (m_Pixel.Value == WhitePixel | m_Pixel.Value == PinkPixel |
                            m_Pixel.Value == YellowPixel | m_Pixel.Value == HalfPinkPixel |
                            m_Pixel.Value == HalfYellowPixel)
                        {
                            cellType = CellType.WALL;
                            if (m_Pixel.Value == PinkPixel)
                            {
                                diagonalWallType = DiagonalWallType.NORTHEAST;
                            }
                            else if (m_Pixel.Value == YellowPixel)
                            {
                                diagonalWallType = DiagonalWallType.NORTHWEST;
                            }
                            else if (m_Pixel.Value == HalfPinkPixel)
                            {
                                diagonalWallType = DiagonalWallType.SOUTHEAST;
                            }
                            else if (m_Pixel.Value == HalfYellowPixel)
                            {
                                diagonalWallType = DiagonalWallType.SOUTHWEST;
                            }
                        }
                        else if (m_Pixel.Value == RedPixel)
                        {
                            cellType = CellType.PIT;
                            m_Pits.Add(new Vector2(X, Y));
                        }
                        else if (m_Pixel.Value == BluePixel | m_Pixel.Value == GreenPixel |
                                 m_Pixel.Value == BlueHalfGreenPixel | m_Pixel.Value == HalfBluePixel |
                                 m_Pixel.Value == HalfRedPixel | m_Pixel.Value == GreenHalfRBPixel |
                                 m_Pixel.Value == HalfWhitePixel | m_Pixel.Value == OrangePixel |
                                 m_Pixel.Value == RedHalfGBPixel)
                        {
                            cellType = CellType.FLOOR;
                            if (m_Pixel.Value == GreenPixel)
                            {
                                isDamageCell = true;
                                if (DamageCellsType == CoreDamageTypes.Ice)
                                {
                                    cellDamagesPlayer = false;
                                }
                                else
                                {
                                    cellDamagesPlayer = true;
                                }
                            }
                            else if (m_Pixel.Value == BlueHalfGreenPixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.Ice;
                            }
                            else if (m_Pixel.Value == HalfBluePixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.Water;
                            }
                            else if (m_Pixel.Value == HalfRedPixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.Carpet;
                            }
                            else if (m_Pixel.Value == GreenHalfRBPixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.Grass;
                            }
                            else if (m_Pixel.Value == HalfWhitePixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.Bone;
                            }
                            else if (m_Pixel.Value == OrangePixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.Flesh;
                            }
                            else if (m_Pixel.Value == RedHalfGBPixel)
                            {
                                OverrideFloorType = CellVisualData.CellFloorType.ThickGoop;
                            }
                        }
                        else
                        {
                            cellType = CellType.FLOOR;
                        }
                    }
                    else
                    {
                        cellType = CellType.FLOOR;
                    }
                    if (DamageCellsType != CoreDamageTypes.None && isDamageCell)
                    {
                        room.FullCellData[ArrayPosition] = GenerateCellData(cellType, diagonalWallType, cellDamagesPlayer, DamageCellsArePoison, DamageCellsType, DamageToPlayersPerTick, DamageToEnemiesPerTick, TickFrequency, RespectsFlying);
                    }
                    else
                    {
                        room.FullCellData[ArrayPosition] = GenerateCellData(cellType, diagonalWallType, OverrideFloorType: OverrideFloorType);
                    }
                }
            }

            if (m_Pits.Count > 0)
            {
                room.pits = new List <PrototypeRoomPitEntry>()
                {
                    new PrototypeRoomPitEntry(m_Pits)
                    {
                        containedCells = m_Pits,
                        borderType     = PitBorderType
                    }
                };
            }
            room.OnBeforeSerialize();
            room.OnAfterDeserialize();
            room.UpdatePrecalculatedData();
        }
Example #27
0
        public static PrototypeDungeonRoomCellData GenerateCellData(CellType cellType, DiagonalWallType diagnalWallType = DiagonalWallType.NONE, bool DoesDamage = false, bool IsPoison = false, CoreDamageTypes DamageType = CoreDamageTypes.None, float DamageToPlayersPerTick = 0, float DamageToEnemiesPerTick = 0, float TickFrequency = 0, bool RespectsFlying = true, CellVisualData.CellFloorType OverrideFloorType = CellVisualData.CellFloorType.Stone)
        {
            PrototypeDungeonRoomCellData m_NewCellData = new PrototypeDungeonRoomCellData(string.Empty, cellType)
            {
                state            = cellType,
                diagonalWallType = diagnalWallType,
                breakable        = false,
                str = string.Empty,
                conditionalOnParentExit     = false,
                conditionalCellIsPit        = false,
                parentExitIndex             = -1,
                containsManuallyPlacedLight = false,
                lightPixelsOffsetY          = 0,
                lightStampIndex             = 0,
                doesDamage       = DoesDamage,
                damageDefinition = new CellDamageDefinition()
                {
                    damageTypes            = DamageType,
                    damageToPlayersPerTick = DamageToEnemiesPerTick,
                    damageToEnemiesPerTick = DamageToEnemiesPerTick,
                    tickFrequency          = TickFrequency,
                    respectsFlying         = RespectsFlying,
                    isPoison = IsPoison
                },
                appearance = new PrototypeDungeonRoomCellAppearance()
                {
                    overrideDungeonMaterialIndex = -1,
                    IsPhantomCarpet       = false,
                    ForceDisallowGoop     = false,
                    OverrideFloorType     = OverrideFloorType,
                    globalOverrideIndices = new PrototypeIndexOverrideData()
                    {
                        indices = new List <int>(0)
                    }
                },
                ForceTileNonDecorated         = false,
                additionalPlacedObjectIndices = new List <int>()
                {
                    -1
                },
                placedObjectRUBELIndex = -1
            };

            if (DamageType == CoreDamageTypes.Poison)
            {
                m_NewCellData.ForceTileNonDecorated        = true;
                m_NewCellData.appearance.OverrideFloorType = CellVisualData.CellFloorType.Stone;
                m_NewCellData.damageDefinition.damageTypes = CoreDamageTypes.Poison;
            }
            else if (DamageType == CoreDamageTypes.Fire)
            {
                m_NewCellData.ForceTileNonDecorated        = true;
                m_NewCellData.appearance.OverrideFloorType = CellVisualData.CellFloorType.Stone;
                m_NewCellData.damageDefinition.damageTypes = CoreDamageTypes.Fire;
            }

            return(m_NewCellData);
        }
Example #28
0
 private void OnDamaged(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     this.BreakStealth(gun.CurrentOwner as PlayerController);
 }
Example #29
0
 private void OnDamaged(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     this.BreakStealth(this.StoredPlayer);
 }
Example #30
0
 private void HandleDamaged(float resultValue, float maxValue, CoreDamageTypes damageTypes, DamageCategory damageCategory, Vector2 damageDirection)
 {
     base.healthHaver.FullHeal();
 }