private void ClearDamageResistance(GameActorEffect effect)
 {
     if (effect != null)
     {
         effect.resistanceType   = EffectResistanceType.None;
         effect.effectIdentifier = "Setting This To Something Different Is Needed, So...";
     }
 }
Example #2
0
        private void FullRoomStatusEffect(GameActorEffect effect)
        {
            List <AIActor> activeEnemies = Owner.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);

            if (activeEnemies != null)
            {
                for (int i = 0; i < activeEnemies.Count; i++)
                {
                    AIActor aiactor = activeEnemies[i];
                    if (aiactor.IsNormalEnemy)
                    {
                        aiactor.gameActor.ApplyEffect(effect, 1f, null);
                    }
                }
            }
        }
Example #3
0
        // Token: 0x06000173 RID: 371 RVA: 0x00013268 File Offset: 0x00011468
        public static GameActorEffect CopyEffectFrom(this GameActorEffect self, GameActorEffect other)
        {
            bool            flag = self == null || other == null;
            GameActorEffect result;

            if (flag)
            {
                result = null;
            }
            else
            {
                self.AffectsPlayers     = other.AffectsPlayers;
                self.AffectsEnemies     = other.AffectsEnemies;
                self.effectIdentifier   = other.effectIdentifier;
                self.resistanceType     = other.resistanceType;
                self.stackMode          = other.stackMode;
                self.duration           = other.duration;
                self.maxStackedDuration = other.maxStackedDuration;
                self.AppliesTint        = other.AppliesTint;
                self.TintColor          = new Color
                {
                    r = other.TintColor.r,
                    g = other.TintColor.g,
                    b = other.TintColor.b
                };
                self.AppliesDeathTint = other.AppliesDeathTint;
                self.DeathTintColor   = new Color
                {
                    r = other.DeathTintColor.r,
                    g = other.DeathTintColor.g,
                    b = other.DeathTintColor.b
                };
                self.AppliesOutlineTint = other.AppliesOutlineTint;
                self.OutlineTintColor   = new Color
                {
                    r = other.OutlineTintColor.r,
                    g = other.OutlineTintColor.g,
                    b = other.OutlineTintColor.b
                };
                self.OverheadVFX     = other.OverheadVFX;
                self.PlaysVFXOnActor = other.PlaysVFXOnActor;
                result = self;
            }
            return(result);
        }
Example #4
0
        private void HandleHit(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
        {
            if (arg2.aiActor != null && !arg2.healthHaver.IsBoss && !arg2.healthHaver.IsDead && arg2.aiActor.behaviorSpeculator && !arg2.aiActor.IsHarmlessEnemy && arg2.aiActor != null)
            {
                GameActorEffect poison = arg2.aiActor.GetEffect(DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefs[0]).goopDefinition.HealthModifierEffect.effectIdentifier);
                if (poison != null)
                {
                    AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("8b43a5c59b854eb780f9ab669ec26b7a");
                    arg2.aiActor.EraseFromExistenceWithRewards(true);
                    AIActor aiactor = AIActor.Spawn(orLoadByGuid, arg2.aiActor.CenterPosition, arg2.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Awaken, true);
                    LootEngine.DoDefaultItemPoof(aiactor.CenterPosition, false, false);
                    aiactor.DiesOnCollison     = true;
                    aiactor.ImmuneToAllEffects = true;

                    //arg2.aiActor.Transmogrify(orLoadByGuid, (GameObject)ResourceCache.Acquire("Global VFX/VFX_Item_Spawn_Poof"));
                }
            }
        }
Example #5
0
        protected override void DoEffect(PlayerController user)
        {
            if (this.fleeData == null || this.fleeData.Player != base.LastOwner)
            {
                this.fleeData                = new FleePlayerData();
                this.fleeData.Player         = base.LastOwner;
                this.fleeData.StartDistance *= 10f;
            }
            base.StartCoroutine(ItemBuilder.HandleDuration(this, this.duration, user, new Action <PlayerController>(this.EndEffect)));
            base.StartCoroutine(this.HandleDuration(user));
            base.StartCoroutine(this.FearDuration(user));
            GameActorEffect greenFire = (PickupObjectDatabase.GetById(722) as Gun).DefaultModule.projectiles[0].fireEffect;

            foreach (AIActor aiactor in user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.RoomClear))
            {
                aiactor.ApplyEffect(greenFire);
            }
        }
        private void HandleHit(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
        {
            bool flag = arg2.aiActor != null && !arg2.healthHaver.IsBoss && !arg2.healthHaver.IsDead && arg2.aiActor.behaviorSpeculator && !arg2.aiActor.IsHarmlessEnemy && arg2.aiActor != null;

            if (flag)
            {
                GameActorEffect effect = arg2.aiActor.GetEffect(DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(SynergyAlchemiser.goopDefs[0]).goopDefinition.HealthModifierEffect.effectIdentifier);
                bool            flag2  = effect != null;
                if (flag2)
                {
                    AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("8b43a5c59b854eb780f9ab669ec26b7a");
                    arg2.aiActor.EraseFromExistenceWithRewards(true);
                    AIActor aiactor = AIActor.Spawn(orLoadByGuid, arg2.aiActor.CenterPosition, arg2.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Awaken, true);
                    LootEngine.DoDefaultItemPoof(aiactor.CenterPosition, false, false);
                    aiactor.DiesOnCollison     = true;
                    aiactor.ImmuneToAllEffects = true;
                }
            }
        }
Example #7
0
        private IEnumerator HandleHeatEffectsCR(float Radius, float Duration, GameActorEffect gameActorEffect, tk2dBaseSprite Psprite)
        {
            Psprite = m_owner.sprite;

            float                   elapsed     = 0f;
            RoomHandler             r           = Psprite.transform.position.GetAbsoluteRoom();
            Vector3                 tableCenter = Psprite.WorldCenter.ToVector3ZisY(0f);
            Action <AIActor, float> AuraAction  = delegate(AIActor actor, float dist)
            {
                actor.healthHaver.ApplyDamage(.1f * (m_owner.stats.GetStatModifier(PlayerStats.StatType.Damage)), Vector2.zero, "primaryPlayer");
            };

            while (elapsed < TDuration)
            {
                elapsed += BraveTime.DeltaTime;
                r.ApplyActionToNearbyEnemies(tableCenter.XY(), TRadius, AuraAction);
                yield return(null);
            }
            yield break;
        }
Example #8
0
        public static void ExplosiveHook(Action <ExplosiveModifier, Vector2, bool, CollisionData> orig, ExplosiveModifier self, Vector2 sourceNormal, bool ignoreDamageCaps = false, CollisionData cd = null)
        {
            if (self.projectile && self.projectile.Owner)
            {
                if (self.projectile.Owner is PlayerController)
                {
                    for (int i = 0; i < GameManager.Instance.AllPlayers.Length; i++)
                    {
                        PlayerController playerController = GameManager.Instance.AllPlayers[i];
                        if (playerController && playerController.specRigidbody)
                        {
                            if (playerController.HasPickupID(ETGMod.Databases.Items["Nuclear Talisman"].PickupObjectId))
                            {
                                self.explosionData.ignoreList.Remove(playerController.specRigidbody);
                                self.explosionData.damageToPlayer = 4;
                                if (playerController.HasPickupID(ETGMod.Databases.Items["Boiling Veins"].PickupObjectId) & playerController.healthHaver.GetCurrentHealth() <= 2)
                                {
                                    self.explosionData.ignoreList.Add(playerController.specRigidbody);
                                }
                            }
                            else
                            {
                                self.explosionData.ignoreList.Add(playerController.specRigidbody);
                            }
                        }
                    }
                }
                else
                {
                    self.explosionData.ignoreList.Add(self.projectile.Owner.specRigidbody);
                }
            }
            Vector3 vector = (cd == null) ? self.specRigidbody.UnitCenter.ToVector3ZUp(0f) : cd.Contact.ToVector3ZUp(0f);

            if (self.doExplosion)
            {
                CoreDamageTypes coreDamageTypes = CoreDamageTypes.None;
                if (self.explosionData.doDamage && self.explosionData.damageRadius < 10f && self.projectile)
                {
                    if (self.projectile.AppliesFreeze)
                    {
                        coreDamageTypes |= CoreDamageTypes.Ice;
                    }
                    if (self.projectile.AppliesFire)
                    {
                        coreDamageTypes |= CoreDamageTypes.Fire;
                    }
                    if (self.projectile.AppliesPoison)
                    {
                        coreDamageTypes |= CoreDamageTypes.Poison;
                    }
                    if (self.projectile.statusEffectsToApply != null)
                    {
                        for (int j = 0; j < self.projectile.statusEffectsToApply.Count; j++)
                        {
                            GameActorEffect gameActorEffect = self.projectile.statusEffectsToApply[j];
                            if (gameActorEffect is GameActorFreezeEffect)
                            {
                                coreDamageTypes |= CoreDamageTypes.Ice;
                            }
                            else if (gameActorEffect is GameActorFireEffect)
                            {
                                coreDamageTypes |= CoreDamageTypes.Fire;
                            }
                            else if (gameActorEffect is GameActorHealthEffect)
                            {
                                coreDamageTypes |= CoreDamageTypes.Poison;
                            }
                        }
                    }
                }
                Exploder.Explode(vector, self.explosionData, sourceNormal, null, self.IgnoreQueues, coreDamageTypes, ignoreDamageCaps);
            }
            if (self.doDistortionWave)
            {
                Exploder.DoDistortionWave(vector, self.distortionIntensity, self.distortionRadius, self.maxDistortionRadius, self.distortionDuration);
            }
        }