private void HandleTriggerCollision(SpeculativeRigidbody specRigidbody, SpeculativeRigidbody sourceSpecRigidbody, CollisionData collisionData)
        {
            PlayerController player  = specRigidbody.GetComponent <PlayerController>();
            AIActor          aiActor = specRigidbody.GetComponent <AIActor>();

            if (player)
            {
                if (!player.IsOnFire && player.IsGrounded && !player.IsSlidingOverSurface && player.healthHaver && player.healthHaver.IsVulnerable)
                {
                    player.IsOnFire = true;
                    player.CurrentFireMeterValue += BraveTime.DeltaTime * 0.5f;
                    player.ApplyEffect(m_GoopDefinition.fireEffect);
                }
            }
            else if (aiActor && aiActor.GetResistanceForEffectType(EffectResistanceType.Fire) < 1f)
            {
                float num = 0f;
                if (aiActor.GetResistanceForEffectType(EffectResistanceType.Fire) < 1f)
                {
                    num += 1f * BraveTime.DeltaTime;
                }
                aiActor.ApplyEffect(m_GoopDefinition.fireEffect);
                if (num > 0f)
                {
                    aiActor.healthHaver.ApplyDamage(num, Vector2.zero, StringTableManager.GetEnemiesString("#GOOP", -1), CoreDamageTypes.Fire, DamageCategory.Environment, false, null, false);
                }
            }
        }
예제 #2
0
 protected override void DoEffect(PlayerController user)
 {
     base.DoEffect(user);
     if (user.CurrentRoom != null && user)
     {
         List <AIActor> activeEnemies = user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
         if (activeEnemies.Count != 0 && activeEnemies != null)
         {
             for (int counter = 0; counter < activeEnemies.Count; counter++)
             {
                 AIActor actor = activeEnemies[counter];
                 if (actor && actor.healthHaver && !actor.healthHaver.IsBoss && actor.gameObject.GetComponent <GhostAllyComponent>() == null && actor.healthHaver.IsVulnerable && actor.IsNormalEnemy && !actor.IsMimicEnemy && actor.GetResistanceForEffectType(EffectResistanceType.Charm) != 1)
                 {
                     List <int> Colors = new List <int>
                     {
                         7,
                         141,
                         222
                     };
                     GameActorCharmEffect ghostCharm = GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect;
                     ghostCharm.OverheadVFX  = null;
                     ghostCharm.TintColor    = new Color(Colors[0], Colors[1], Colors[2]);
                     ghostCharm.TintColor.a /= 100;
                     string  guid    = actor.EnemyGuid;
                     AIActor aiactor = BoxOTools.SummonAtRandomPosition(guid, user);
                     aiactor.AddPermanentCharm(ghostCharm);
                     aiactor.gameObject.AddComponent <GhostAllyComponent>();
                     aiactor.HandleReinforcementFallIntoRoom(counter / 10);
                 }
             }
         }
     }
 }