コード例 #1
0
        public static void AddRandomCurse(bool doPopup = false)
        {
            List <CurseData> refinedData = new List <CurseData>();

            refinedData.AddRange(CursePrefabs);
            if (CurrentActiveCurses.Count > 0)
            {
                for (int i = (refinedData.Count - 1); i >= 0; i--)
                {
                    if (CurseManager.CurseIsActive(refinedData[i].curseName))
                    {
                        refinedData.RemoveAt(i);
                    }
                    else if (cursesLastFloor != null && cursesLastFloor.Contains(refinedData[i].curseName))
                    {
                        refinedData.RemoveAt(i);
                    }
                    else if (bannedCursesThisRun != null && bannedCursesThisRun.Contains(refinedData[i].curseName))
                    {
                        refinedData.RemoveAt(i);
                    }
                }
            }
            if (refinedData.Count > 0)
            {
                CurseData pickedCurse = BraveUtility.RandomElement(refinedData);
                AddCurse(pickedCurse.curseName, doPopup);
            }
        }
コード例 #2
0
 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());
             }
         }
     }
 }
コード例 #3
0
        public static void AddCurse(string CurseName, bool dopopup = false)
        {
            if (CurseManager.CurseIsActive(CurseName))
            {
                Debug.LogWarning("Attempted to Add Curse (" + CurseName + ") but it was already active!");
                return;
            }
            CurseData newCurse = null;

            foreach (CurseData data in CursePrefabs)
            {
                if (data.curseName == CurseName)
                {
                    newCurse = data;
                }
            }
            if (!(GameManager.Instance.AnyPlayerHasPickupID(HoleyWater.HoleyWaterID) && !GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade")))
            {
                CurrentActiveCurses.Add(newCurse);
                if (previousCursesThisRun == null)
                {
                    previousCursesThisRun = new List <string>();
                }
                if (previousCursesThisRun.Contains(newCurse.curseName))
                {
                    if (bannedCursesThisRun == null)
                    {
                        bannedCursesThisRun = new List <string>();
                    }
                    bannedCursesThisRun.Add(newCurse.curseName);
                }
                else
                {
                    previousCursesThisRun.Add(newCurse.curseName);
                }
                Debug.Log("Added New Curse: " + newCurse.curseName + " (Popup: " + dopopup + ")");
                if (dopopup)
                {
                    DoSpecificCursePopup(CurseName, newCurse.curseSubtitle, newCurse.curseIconId);
                }
            }
            InherentPostLevelCurseProcessing();
        }
コード例 #4
0
 private void EnteredCombat()
 {
     if (m_attachedPlayer && m_attachedPlayer.CurrentRoom != null)
     {
         if (CurseManager.CurseIsActive("Curse of The Flames"))
         {
             for (int i = 0; i < 5; i++)
             {
                 IntVector2 pos = (IntVector2)m_attachedPlayer.CurrentRoom.GetRandomAvailableCell(null, CellTypes.FLOOR);
                 DeadlyDeadlyGoopManager goop = null;
                 if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
                 {
                     goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlayerFriendlyFireGoop);
                 }
                 else
                 {
                     goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.EnemyFriendlyFireGoop);
                 }
                 goop.TimedAddGoopCircle(pos.ToVector2(), UnityEngine.Random.Range(2.5f, 4f), 0.75f, true);
             }
         }
     }
 }
コード例 #5
0
 public static IEnumerator HandleCurseDeathEffects(Vector2 position, string guid, float maxHP, bool isJammed)
 {
     if (CurseManager.CurseIsActive("Curse of Infestation"))
     {
         if (!string.IsNullOrEmpty(guid) && !EasyEnemyTypeLists.SmallBullats.Contains(guid))
         {
             int amt = UnityEngine.Random.Range(-1, 4);
             if (amt > 0)
             {
                 for (int i = 0; i < amt; i++)
                 {
                     if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
                     {
                         AIActor targetActor = CompanionisedEnemyUtility.SpawnCompanionisedEnemy(GameManager.Instance.PrimaryPlayer, BraveUtility.RandomElement(EasyEnemyTypeLists.SmallBullats), position.ToIntVector2(), false, Color.red, 5, 2, false, false);
                         PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(targetActor.specRigidbody, null, false);
                     }
                     else
                     {
                         var     enemyToSpawn = EnemyDatabase.GetOrLoadByGuid(BraveUtility.RandomElement(EasyEnemyTypeLists.SmallBullats));
                         AIActor TargetActor  = AIActor.Spawn(enemyToSpawn, position, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(position.ToIntVector2()), true, AIActor.AwakenAnimationType.Default, true);
                         PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
                         TargetActor.PreventBlackPhantom = true;
                     }
                 }
             }
         }
     }
     if (CurseManager.CurseIsActive("Curse of Sludge"))
     {
         if (maxHP > 0)
         {
             DeadlyDeadlyGoopManager goop = null;
             if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlayerFriendlyPoisonGoop);
             }
             else
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.EnemyFriendlyPoisonGoop);
             }
             float hpMod = maxHP;
             if (isJammed)
             {
                 hpMod /= 3.5f;
             }
             hpMod /= AIActor.BaseLevelHealthModifier;
             float radius = Math.Min((hpMod / 7.5f), 10);
             goop.TimedAddGoopCircle(position, radius, 0.75f, true);
         }
     }
     if (CurseManager.CurseIsActive("Curse of The Hive"))
     {
         if (maxHP > 0)
         {
             DeadlyDeadlyGoopManager goop = null;
             if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlayerFriendlyHoneyGoop);
             }
             else
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.HoneyGoop);
             }
             float hpMod = maxHP;
             if (isJammed)
             {
                 hpMod /= 3.5f;
             }
             hpMod /= AIActor.BaseLevelHealthModifier;
             float radius = Math.Min((hpMod / 5), 10);
             goop.TimedAddGoopCircle(position, radius, 0.75f, true);
         }
     }
     yield break;
 }