public void AIActorMods(AIActor target)
        {
            //ETGModConsole.Log("ran");

            if (target)
            {
                //ETGModConsole.Log("passed target check");

                if (target.IsBlackPhantom && target.healthHaver && !target.healthHaver.IsBoss)
                {
                    //ETGModConsole.Log("target was jammed");

                    float procChance = 1;
                    if (AllJammedState.AllJammedActive)
                    {
                        procChance = 0.5f;
                    }
                    if (UnityEngine.Random.value <= procChance)
                    {
                        // ETGModConsole.Log("procced");
                        GameActorCharmEffect charm = StatusEffectHelper.GenerateCharmEffect(13);
                        target.ApplyEffect(charm);
                        if (UnityEngine.Random.value <= 0.5f)
                        {
                            target.IgnoreForRoomClear = true;
                            KillOnRoomClear kill = target.gameObject.GetOrAddComponent <KillOnRoomClear>();
                            if (EasyEnemyTypeLists.MultiPhaseEnemies.Contains(target.EnemyGuid) || EasyEnemyTypeLists.EnemiesWithInvulnerablePhases.Contains(target.EnemyGuid))
                            {
                                EraseFromExistenceOnRoomClear destroyTrickyEnemy = target.gameObject.AddComponent <EraseFromExistenceOnRoomClear>();
                                destroyTrickyEnemy.Delay = 1f;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        private static IEnumerator ToilEnemyDupe(AIActor AIActor)
        {
            yield return(null);

            string  guid        = AIActor.EnemyGuid;
            var     enemyPrefab = EnemyDatabase.GetOrLoadByGuid(guid);
            AIActor aiactor     = AIActor.Spawn(enemyPrefab, AIActor.gameActor.CenterPosition.ToIntVector2(VectorConversions.Floor), AIActor.GetAbsoluteParentRoom(), true, AIActor.AwakenAnimationType.Default, true);

            HasBeenAffectedByCurrentChallenge challengitude = aiactor.gameObject.AddComponent <HasBeenAffectedByCurrentChallenge>();

            challengitude.linkedOther = AIActor;
            HasBeenAffectedByCurrentChallenge challengitude2 = AIActor.gameObject.AddComponent <HasBeenAffectedByCurrentChallenge>();

            challengitude2.linkedOther        = aiactor;
            aiactor.procedurallyOutlined      = true;
            AIActor.procedurallyOutlined      = true;
            aiactor.IsWorthShootingAt         = AIActor.IsWorthShootingAt;
            aiactor.IgnoreForRoomClear        = AIActor.IgnoreForRoomClear;
            aiactor.AssignedCurrencyToDrop    = AIActor.AssignedCurrencyToDrop;
            aiactor.AdditionalSafeItemDrops   = AIActor.AdditionalSafeItemDrops;
            aiactor.AdditionalSimpleItemDrops = AIActor.AdditionalSimpleItemDrops;
            aiactor.CanTargetEnemies          = AIActor.CanTargetEnemies;
            aiactor.CanTargetPlayers          = AIActor.CanTargetPlayers;
            if (AIActor.IsInReinforcementLayer)
            {
                aiactor.HandleReinforcementFallIntoRoom(0f);
            }
            if (AIActor.GetComponent <KillOnRoomClear>() != null)
            {
                KillOnRoomClear kill = aiactor.gameObject.GetOrAddComponent <KillOnRoomClear>();
                kill.overrideDeathAnim     = AIActor.GetComponent <KillOnRoomClear>().overrideDeathAnim;
                kill.preventExplodeOnDeath = AIActor.GetComponent <KillOnRoomClear>().preventExplodeOnDeath;
            }
            if (aiactor.EnemyGuid == "22fc2c2c45fb47cf9fb5f7b043a70122")
            {
                aiactor.CollisionDamage = 0f;
                aiactor.specRigidbody.AddCollisionLayerIgnoreOverride(CollisionMask.LayerToMask(CollisionLayer.PlayerHitBox));
                aiactor.specRigidbody.AddCollisionLayerIgnoreOverride(CollisionMask.LayerToMask(CollisionLayer.Projectile));
            }
            else if (aiactor.EnemyGuid == "249db525a9464e5282d02162c88e0357")
            {
                if (aiactor.gameObject.GetComponent <SpawnEnemyOnDeath>())
                {
                    UnityEngine.Object.Destroy(aiactor.gameObject.GetComponent <SpawnEnemyOnDeath>());
                }
            }
            else if (EasyEnemyTypeLists.VanillaMimics.Contains(aiactor.EnemyGuid))
            {
                if (AIActor.AdditionalSafeItemDrops != null && aiactor.AdditionalSafeItemDrops != null)
                {
                    List <PickupObject>      newDrops = new List <PickupObject>();
                    PickupObject.ItemQuality qual     = PickupObject.ItemQuality.D;
                    int itemsToReAdd = 0;
                    for (int i = (aiactor.AdditionalSafeItemDrops.Count - 1); i >= 0; i--)
                    {
                        if (!BabyGoodChanceKin.lootIDlist.Contains(aiactor.AdditionalSafeItemDrops[i].PickupObjectId))
                        {
                            qual = aiactor.AdditionalSafeItemDrops[i].quality;
                            itemsToReAdd++;
                        }
                        else
                        {
                            newDrops.Add(PickupObjectDatabase.GetById(aiactor.AdditionalSafeItemDrops[i].PickupObjectId));
                        }
                    }
                    if (itemsToReAdd > 0)
                    {
                        for (int i = 0; i < itemsToReAdd; i++)
                        {
                            PickupObject item = LootEngine.GetItemOfTypeAndQuality <PassiveItem>(qual, null, false);
                            if (UnityEngine.Random.value <= 0.5f)
                            {
                                item = LootEngine.GetItemOfTypeAndQuality <Gun>(qual, null, false);
                            }
                            newDrops.Add(item);
                        }
                        aiactor.AdditionalSafeItemDrops = newDrops;
                    }
                }
            }


            GameManager.Instance.StartCoroutine(Shrimk(aiactor));
            GameManager.Instance.StartCoroutine(Shrimk(AIActor));

            aiactor.specRigidbody.Reinitialize();
            yield break;
        }