// Token: 0x06000019 RID: 25 RVA: 0x00002E7C File Offset: 0x0000107C private void Start() { this.m_aiActor = base.GetComponent <AIActor>(); this.m_behaviorSpeculator = this.m_aiActor.behaviorSpeculator; GameObject gameObject = new GameObject("fake target"); this.m_fakeActor = gameObject.AddComponent <NonActor>(); this.m_fakeActor.HasShadow = false; this.m_fakeTargetRigidbody = gameObject.AddComponent <SpeculativeRigidbody>(); this.m_fakeTargetRigidbody.PixelColliders = new List <PixelCollider>(); this.m_fakeTargetRigidbody.CollideWithTileMap = true; this.m_fakeTargetRigidbody.CollideWithOthers = true; this.m_fakeTargetRigidbody.CanBeCarried = true; this.m_fakeTargetRigidbody.CanBePushed = true; this.m_fakeTargetRigidbody.CanCarry = true; PixelCollider pixelCollider = new PixelCollider(); pixelCollider.ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual; pixelCollider.CollisionLayer = CollisionLayer.TileBlocker; pixelCollider.ManualWidth = 4; pixelCollider.ManualHeight = 4; this.m_fakeTargetRigidbody.PixelColliders.Add(pixelCollider); this.m_aiActor.LocalTimeScale = 1.5f; foreach (MovementBehaviorBase movementBehaviorBase in this.m_behaviorSpeculator.MovementBehaviors) { bool flag = movementBehaviorBase is SeekTargetBehavior; if (flag) { SeekTargetBehavior seekTargetBehavior = movementBehaviorBase as SeekTargetBehavior; seekTargetBehavior.PathInterval = 0f; } bool flag2 = movementBehaviorBase is MoveErraticallyBehavior; if (flag2) { MoveErraticallyBehavior moveErraticallyBehavior = movementBehaviorBase as MoveErraticallyBehavior; moveErraticallyBehavior.PathInterval = 0f; } bool flag3 = movementBehaviorBase is FleeTargetBehavior; if (flag3) { FleeTargetBehavior fleeTargetBehavior = movementBehaviorBase as FleeTargetBehavior; fleeTargetBehavior.PathInterval = 0f; } } }
protected override void DoEffect(PlayerController user) { if (base.LastOwner && base.LastOwner.CurrentRoom != null && x % 4 == 1) { for (int i = 0; i < 6; i++) { try { AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("566ecca5f3b04945ac6ce1f26dedbf4f"); IntVector2?intVector = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1)); bool flag = intVector != null; if (flag) { AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true); aiactor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null); aiactor.IgnoreForRoomClear = true; aiactor.CanTargetEnemies = true; aiactor.IsHarmlessEnemy = true; aiactor.HitByEnemyBullets = true; aiactor.OverrideTarget = user.CurrentRoom.GetRandomActiveEnemy().specRigidbody; aiactor.gameObject.AddComponent <KillOnRoomClear>(); MoveErraticallyBehavior movement = new MoveErraticallyBehavior(); movement.PathInterval = 0.25f; movement.StayOnScreen = true; movement.AvoidTarget = false; aiactor.behaviorSpeculator.MovementBehaviors[0] = movement; } } catch (Exception ex) { ETGModConsole.Log(ex.Message, false); } } } else if (base.LastOwner && base.LastOwner.CurrentRoom != null && x % 4 == 2) { this.StealthEffect(); for (int i = 0; i < 5; i++) { try { AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("78a8ee40dff2477e9c2134f6990ef297"); IntVector2?intVector = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1)); bool flag = intVector != null; if (flag) { AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true); aiactor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null); aiactor.IgnoreForRoomClear = true; aiactor.CanTargetEnemies = true; aiactor.HitByEnemyBullets = true; aiactor.healthHaver.SetHealthMaximum(1f); aiactor.gameObject.AddComponent <KillOnRoomClear>(); foreach (AIActor enemy in user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All)) { if (enemy.OverrideTarget == null) { enemy.OverrideTarget = aiactor.specRigidbody; } } } } catch (Exception ex) { ETGModConsole.Log(ex.Message, false); } try { AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("78a8ee40dff2477e9c2134f6990ef297"); IntVector2?intVector = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1)); bool flag = intVector != null; if (flag) { AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true); aiactor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null); aiactor.IgnoreForRoomClear = true; aiactor.IsHarmlessEnemy = true; aiactor.HitByEnemyBullets = true; aiactor.healthHaver.SetHealthMaximum(1f); aiactor.gameObject.AddComponent <KillOnRoomClear>(); aiactor.healthHaver.OnPreDeath += this.BreakStealthFromBell; foreach (AIActor enemy in user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All)) { if (enemy.OverrideTarget == null) { enemy.OverrideTarget = aiactor.specRigidbody; } } } } catch (Exception ex) { ETGModConsole.Log(ex.Message, false); } } } else if (x % 4 == 3) { base.StartCoroutine(this.Spiral()); } else if (x % 4 == 0) { base.StartCoroutine(this.Bounce()); } x++; }