public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); float MathIsCool = actor.specRigidbody.UnitWidth / (effectData.instanceOverheadVFX.GetBounds().extents.x * 16); effectData.instanceOverheadVFX.transform.localScale = new Vector3(MathIsCool, MathIsCool); }
public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { base.EffectTick(actor, effectData); var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(SwordtressBloodGoop); ddgm.TimedAddGoopCircle(actor.sprite.WorldCenter, .45f, .05f); }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { actor.healthHaver.OnDeath += effectData.OnActorPreDeath; actor.healthHaver.AllDamageMultiplier += -0.3f; base.OnEffectApplied(actor, effectData, partialAmount); ShouldISpawn = true; }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); effectData.OnActorPreDeath = delegate(Vector2 dir) { if (actor is AIActor) { AIActor aiActor = actor as AIActor; if (aiActor.GetAbsoluteParentRoom() == GameManager.Instance.GetActivePlayerClosestToPoint(actor.CenterPosition).CurrentRoom&& !aiActor.IgnoreForRoomClear && !noNoGUIDs.Contains(aiActor.EnemyGuid)) { Vector2 dirVec = UnityEngine.Random.insideUnitCircle; GameObject gameObject = SpawnManager.SpawnProjectile(((Gun)ETGMod.Databases.Items[39]).DefaultModule.projectiles[0].gameObject, actor.CenterPosition, Quaternion.Euler(0, 0, 0)); Projectile proj = gameObject.GetComponent <Projectile>(); if (proj != null) { proj.Owner = actor; proj.Shooter = aiActor.specRigidbody; proj.collidesWithEnemies = false; proj.collidesWithPlayer = true; proj.MakeLookLikeEnemyBullet(true); proj.gameObject.AddComponent <PierceDeadActors>(); PlayerController closestToPos = BraveUtility.GetClosestToPosition <PlayerController>(GameManager.Instance.AllPlayers.ToList(), aiActor.CenterPosition); if (closestToPos) { dirVec = closestToPos.CenterPosition - proj.transform.position.XY(); } proj.SendInDirection(dirVec, false, true); } } } }; actor.healthHaver.OnPreDeath += effectData.OnActorPreDeath; }
public static void DestroyFlames(RuntimeGameActorEffectData effectData) { if (effectData.vfxObjects == null) { return; } if (!effectData.actor.IsFrozen) { for (int i = 0; i < effectData.vfxObjects.Count; i++) { GameObject first = effectData.vfxObjects[i].First; if (first) { first.transform.parent = SpawnManager.Instance.VFX; } } } effectData.vfxObjects.Clear(); effectData.destroyVfx = true; if (GameManager.Options.ShaderQuality == GameOptions.GenericHighMedLowOption.HIGH && effectData.actor && effectData.actor.healthHaver && effectData.actor.healthHaver.GetCurrentHealth() <= 0f && effectData.actor.specRigidbody.HitboxPixelCollider != null) { Vector2 unitBottomLeft = effectData.actor.specRigidbody.HitboxPixelCollider.UnitBottomLeft; Vector2 unitTopRight = effectData.actor.specRigidbody.HitboxPixelCollider.UnitTopRight; float num = (unitTopRight.x - unitBottomLeft.x) * (unitTopRight.y - unitBottomLeft.y); GlobalSparksDoer.DoRandomParticleBurst(Mathf.Max(1, (int)(75f * num)), unitBottomLeft, unitTopRight, new Vector3(1f, 1f, 0f), 120f, 0.75f, null, null, null, GlobalSparksDoer.SparksType.BLACK_PHANTOM_SMOKE); } }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1f) { base.OnEffectApplied(actor, effectData, partialAmount); effectData.OnActorPreDeath = delegate(Vector2 dir) { GameActorWitherEffect.DestroyFlames(effectData); }; actor.healthHaver.OnPreDeath += effectData.OnActorPreDeath; { if (effectData.vfxObjects == null) { effectData.vfxObjects = new List <Tuple <GameObject, float> >(); } effectData.OnFlameAnimationCompleted = delegate(tk2dSpriteAnimator spriteAnimator, tk2dSpriteAnimationClip clip) { if (effectData.destroyVfx || !actor) { spriteAnimator.AnimationCompleted = (Action <tk2dSpriteAnimator, tk2dSpriteAnimationClip>)Delegate.Remove(spriteAnimator.AnimationCompleted, effectData.OnFlameAnimationCompleted); UnityEngine.Object.Destroy(spriteAnimator.gameObject); return; } if (UnityEngine.Random.value < this.flameMoveChance) { Vector2 a = actor.specRigidbody.HitboxPixelCollider.UnitDimensions / 2f; Vector2 b = BraveUtility.RandomVector2(-a + this.flameBuffer, a - this.flameBuffer); Vector2 v = actor.specRigidbody.HitboxPixelCollider.UnitCenter + b; spriteAnimator.transform.position = v; } spriteAnimator.Play(clip, 0f, clip.fps * UnityEngine.Random.Range(1f - this.flameFpsVariation, 1f + this.flameFpsVariation), false); }; } }
// Token: 0x06004CA7 RID: 19623 RVA: 0x00199138 File Offset: 0x00197338 public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1f) { effectData.MovementModifier = delegate(ref Vector2 volundaryVel, ref Vector2 involuntaryVel) { float d = Mathf.Clamp01((100f - actor.FreezeAmount) / 100f); volundaryVel *= d; }; actor.MovementModifiers += effectData.MovementModifier; effectData.OnActorPreDeath = delegate(Vector2 dir) { if (actor.IsFrozen) { this.DestroyCrystals(effectData, !actor.IsFalling); AkSoundEngine.PostEvent("Play_OBJ_crystal_shatter_01", GameManager.Instance.PrimaryPlayer.gameObject); actor.FreezeAmount = 0f; if (this.ShouldVanishOnDeath(actor)) { if (actor is AIActor) { (actor as AIActor).ForceDeath(dir, false); } UnityEngine.Object.Destroy(actor.gameObject); } } }; actor.healthHaver.OnPreDeath += effectData.OnActorPreDeath; actor.FreezeAmount += this.FreezeAmount * partialAmount; }
public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { if (this.AffectsEnemies && actor is AIActor && !actor.healthHaver.IsBoss) { if (actor.healthHaver.IsDead) { if (ShouldISpawn == true) { if (actor.aiActor.EnemyGuid != "5861e5a077244905a8c25c2b7b4d6ebb") { string guid; guid = "4db03291a12144d69fe940d5a01de376"; AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid); IntVector2?intVector = new IntVector2?(actor.PlacedPosition); AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, actor.CenterPosition, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true); aiactor.CanTargetEnemies = true; aiactor.CanTargetPlayers = false; PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false); aiactor.gameObject.AddComponent <KillOnRoomClear>(); aiactor.CanDropCurrency = false; aiactor.HitByEnemyBullets = false; aiactor.CollisionDamage = 0f; aiactor.IsHarmlessEnemy = true; aiactor.IgnoreForRoomClear = true; ShouldISpawn = false; } } } } }
public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { var hand = actor.transform.Find("DemonVFX").gameObject; UnityEngine.Object.Destroy(hand); actor.DeregisterOverrideColor(vfxNamedemon); base.OnEffectRemoved(actor, effectData); }
// Token: 0x06000190 RID: 400 RVA: 0x00011064 File Offset: 0x0000F264 public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { AIActor aiActor = actor.aiActor; aiActor.MovementSpeed = aiActor.BaseMovementSpeed; aiActor.CanTargetPlayers = this.prev; base.OnEffectRemoved(actor, effectData); }
public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { if (extantConfusionDecoy) { UnityEngine.Object.Destroy(extantConfusionDecoy); } base.OnEffectRemoved(actor, effectData); }
public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { if (EasyGoopDefinitions.PlagueGoop != null) { DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlagueGoop); goop.TimedAddGoopCircle(actor.specRigidbody.UnitCenter, 1.5f, 0.75f, true); } base.EffectTick(actor, effectData); }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); AIActor Grenade = EnemyDatabase.GetOrLoadByGuid("4d37ce3d666b4ddda8039929225b7ede"); ExplodeOnDeath DoYouWantToExplode = actor.gameObject.AddComponent <ExplodeOnDeath>(); ExplosionData explosionData = Grenade.GetComponent <ExplodeOnDeath>().explosionData; explosionData.damageToPlayer = 0; DoYouWantToExplode.explosionData = explosionData; }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); effectData.OnActorPreDeath = delegate(Vector2 dir) { var ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Library.NitricAcidGoop); ddgm.TimedAddGoopCircle(actor.CenterPosition, 3.5f, .35f); }; actor.healthHaver.OnPreDeath += effectData.OnActorPreDeath; }
public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { try { actor.healthHaver.AllDamageMultiplier -= counter.HowMuchToRemove; } catch (Exception error) { error.ToString().Log(); } }
public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { var hand = actor.transform.Find("money22VFX").gameObject; UnityEngine.Object.Destroy(hand); actor.DeregisterOverrideColor(vfxNamemoney2); base.OnEffectRemoved(actor, effectData); actor.healthHaver.AllDamageMultiplier -= -0.3f; }
// Token: 0x06004CA8 RID: 19624 RVA: 0x001991DC File Offset: 0x001973DC public override void OnDarkSoulsAccumulate(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1f, Projectile sourceProjectile = null) { if (!effectData.actor.IsFrozen) { actor.FreezeAmount += this.FreezeAmount * partialAmount; if (actor.healthHaver.IsBoss) { actor.FreezeAmount = Mathf.Min(actor.FreezeAmount, 75f); } } }
public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { i++; if (i == 180) { i = 0; num = actor.healthHaver.GetCurrentHealth(); actor.healthHaver.ApplyHealing(num / 5); ETGModConsole.Log((num / 5).ToString()); } }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { if (actor && actor.specRigidbody) { GameObject newDecoy = UnityEngine.Object.Instantiate <GameObject>(Confusion.ConfusionDecoyTarget, actor.CenterPosition, Quaternion.identity); newDecoy.GetComponent <ConfusionDecoyTargetController>().surroundObject = actor.specRigidbody; extantConfusionDecoy = newDecoy; } base.OnEffectApplied(actor, effectData, partialAmount); }
public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { base.OnEffectRemoved(actor, effectData); if (actor.aiActor) { if (actor.healthHaver && (actor.healthHaver.IsBoss || actor.healthHaver.IsSubboss)) { return; } Vector2 newSize = new Vector2((actor.aiActor.EnemyScale.x / newScaleMultiplier.x), (actor.aiActor.EnemyScale.y / newScaleMultiplier.y)); actor.StartCoroutine(LerpToSize(actor.aiActor, newSize)); } }
// Token: 0x0600018F RID: 399 RVA: 0x00011000 File Offset: 0x0000F200 public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1f) { bool flag = !actor.healthHaver.IsBoss && !actor.healthHaver.IsDead; if (flag) { AIActor aiActor = actor.aiActor; this.prev = aiActor.CanTargetPlayers; aiActor.CanTargetPlayers = false; aiActor.MovementSpeed = 0f; base.OnEffectApplied(actor, effectData, partialAmount); } }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { try { actor.healthHaver.AllDamageMultiplier += initalAmount; counter.HowMuchToRemove += initalAmount; counter.TimesApplied++; counter = actor.gameObject.AddComponent <CountingComponent>(); } catch (Exception error) { error.ToString().Log(); } }
public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { base.EffectTick(actor, effectData); if (GameManager.Options.ShaderQuality == GameOptions.GenericHighMedLowOption.HIGH && effectData.actor && effectData.actor.specRigidbody.HitboxPixelCollider != null) { Vector2 unitBottomLeft = effectData.actor.specRigidbody.HitboxPixelCollider.UnitBottomLeft; Vector2 unitTopRight = effectData.actor.specRigidbody.HitboxPixelCollider.UnitTopRight; this.m_emberCounter += 30f * BraveTime.DeltaTime; if (this.m_emberCounter > 1f) { int num = Mathf.FloorToInt(this.m_emberCounter); this.m_emberCounter -= (float)num; GlobalSparksDoer.DoRandomParticleBurst(num, unitBottomLeft, unitTopRight, new Vector3(1f, 1f, 0f), 120f, 0.75f, null, null, null, GlobalSparksDoer.SparksType.BLACK_PHANTOM_SMOKE); } } if (actor && actor.specRigidbody) { Vector2 unitDimensions = actor.specRigidbody.HitboxPixelCollider.UnitDimensions; Vector2 a = unitDimensions / 2f; int num2 = Mathf.RoundToInt((float)this.flameNumPerSquareUnit * 0.5f * Mathf.Min(30f, Mathf.Min(new float[] { unitDimensions.x *unitDimensions.y }))); this.m_particleTimer += BraveTime.DeltaTime * (float)num2; if (this.m_particleTimer > 1f) { int num3 = Mathf.FloorToInt(this.m_particleTimer); Vector2 vector = actor.specRigidbody.HitboxPixelCollider.UnitBottomLeft; Vector2 vector2 = actor.specRigidbody.HitboxPixelCollider.UnitTopRight; PixelCollider pixelCollider = actor.specRigidbody.GetPixelCollider(ColliderType.Ground); if (pixelCollider != null && pixelCollider.ColliderGenerationMode == PixelCollider.PixelColliderGeneration.Manual) { vector = Vector2.Min(vector, pixelCollider.UnitBottomLeft); vector2 = Vector2.Max(vector2, pixelCollider.UnitTopRight); } vector += Vector2.Min(a * 0.15f, new Vector2(0.25f, 0.25f)); vector2 -= Vector2.Min(a * 0.15f, new Vector2(0.25f, 0.25f)); vector2.y -= Mathf.Min(a.y * 0.1f, 0.1f); GlobalSparksDoer.DoRandomParticleBurst(num3, vector, vector2, Vector3.zero, 0f, 0f, null, null, null, GlobalSparksDoer.SparksType.BLACK_PHANTOM_SMOKE); this.m_particleTimer -= Mathf.Floor(this.m_particleTimer); } } if (actor.IsGone) { effectData.elapsed = 10000f; } if ((actor.IsFalling || actor.IsGone) && effectData.vfxObjects != null && effectData.vfxObjects.Count > 0) { GameActorFireEffect.DestroyFlames(effectData); } }
public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { if (this.AffectsEnemies && actor is AIActor && !actor.healthHaver.IsBoss) { if (actor.healthHaver.IsDead) { if (ShouldISpawn == true) { LootEngine.SpawnItem(PickupObjectDatabase.GetById(70).gameObject, actor.specRigidbody.UnitCenter, actor.specRigidbody.UnitCenter, 1f, false, true, false); ShouldISpawn = false; } } } }
// Token: 0x06004CAA RID: 19626 RVA: 0x00199814 File Offset: 0x00197A14 public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData) { if (actor.IsFrozen) { actor.FreezeAmount = 0f; float resistanceForEffectType = actor.GetResistanceForEffectType(this.resistanceType); float damage = Mathf.Max(0f, actor.healthHaver.GetMaxHealth() * this.UnfreezeDamagePercent * (1f - resistanceForEffectType)); actor.healthHaver.ApplyDamage(damage, Vector2.zero, "Freezer Burn", CoreDamageTypes.Ice, DamageCategory.DamageOverTime, true, null, false); this.DestroyCrystals(effectData, !actor.healthHaver.IsDead); if (this.AppliesTint) { actor.DeregisterOverrideColor(this.effectIdentifier); } if (actor.behaviorSpeculator) { actor.behaviorSpeculator.enabled = true; } if (this.ShouldVanishOnDeath(actor)) { actor.StealthDeath = false; } actor.IsFrozen = false; } actor.MovementModifiers -= effectData.MovementModifier; actor.healthHaver.OnPreDeath -= effectData.OnActorPreDeath; if (actor.aiAnimator) { actor.aiAnimator.FpsScale = 1f; } if (actor.aiShooter) { actor.aiShooter.AimTimeScale = 1f; } if (actor.behaviorSpeculator) { actor.behaviorSpeculator.CooldownScale = 1f; } if (actor.bulletBank) { actor.bulletBank.TimeScale = 1f; } tk2dSpriteAnimator spriteAnimator = actor.spriteAnimator; if (spriteAnimator && actor.aiAnimator && spriteAnimator.CurrentClip != null && !spriteAnimator.IsPlaying(spriteAnimator.CurrentClip)) { actor.aiAnimator.PlayUntilFinished(actor.spriteAnimator.CurrentClip.name, false, null, -1f, true); } }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); if (actor.aiActor) { if (actor.healthHaver && (actor.healthHaver.IsBoss || actor.healthHaver.IsSubboss)) { return; } SpecialSizeStatModification sizeStats = actor.gameObject.GetOrAddComponent <SpecialSizeStatModification>(); sizeStats.canBeSteppedOn = true; sizeStats.adjustsSpeed = adjustsSpeed; Vector2 newSize = new Vector2((actor.aiActor.EnemyScale.x * newScaleMultiplier.x), (actor.aiActor.EnemyScale.y * newScaleMultiplier.y)); actor.StartCoroutine(LerpToSize(actor.aiActor, newSize)); } }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); effectData.OnActorPreDeath = delegate(Vector2 dir) { int amt = UnityEngine.Random.Range(5, 15); for (int i = 0; i < amt; i++) { float angle = UnityEngine.Random.Range(0, 360); GameObject obj = SpawnManager.SpawnProjectile(((Gun)ETGMod.Databases.Items[15]).DefaultModule.projectiles[0].gameObject, actor.CenterPosition, Quaternion.Euler(0, 0, angle)); Projectile proj = obj.GetComponent <Projectile>(); if (proj != null) { proj.Owner = GameManager.Instance.PrimaryPlayer; proj.gameObject.AddComponent <PreventBloatDuping>(); proj.gameObject.AddComponent <PierceDeadActors>(); } } }; actor.healthHaver.OnPreDeath += effectData.OnActorPreDeath; }
public override void OnEffectApplied(GameActor actor, RuntimeGameActorEffectData effectData, float partialAmount = 1) { base.OnEffectApplied(actor, effectData, partialAmount); try { effectData.OnActorPreDeath = delegate(Vector2 dir) { if (actor is AIActor) { AIActor aiActor = actor as AIActor; if (aiActor.GetAbsoluteParentRoom() == GameManager.Instance.GetRandomActivePlayer().CurrentRoom&& !aiActor.IgnoreForRoomClear && !noNoGUIDs.Contains(aiActor.EnemyGuid)) { GameManager.Instance.StartCoroutine(DelayedSpawnSpent(actor.CenterPosition)); } } }; actor.healthHaver.OnPreDeath += effectData.OnActorPreDeath; } catch (Exception e) { ETGModConsole.Log(e.ToString()); } }
// Token: 0x06004CA9 RID: 19625 RVA: 0x00199234 File Offset: 0x00197434 public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData) { if (actor.FreezeAmount > 0f) { actor.FreezeAmount = Mathf.Max(0f, actor.FreezeAmount - BraveTime.DeltaTime * actor.FreezeDispelFactor); if (!actor.IsFrozen) { if (actor.FreezeAmount > 100f && actor.healthHaver.IsAlive) { actor.FreezeAmount = 100f; if (this.FreezeCrystals.Count > 0) { if (effectData.vfxObjects == null) { effectData.vfxObjects = new List <global::Tuple <GameObject, float> >(); } int num = this.crystalNum; if (effectData.actor && effectData.actor.specRigidbody && effectData.actor.specRigidbody.HitboxPixelCollider != null) { float num2 = effectData.actor.specRigidbody.HitboxPixelCollider.UnitDimensions.x * effectData.actor.specRigidbody.HitboxPixelCollider.UnitDimensions.y; num = Mathf.Max(this.crystalNum, (int)((float)this.crystalNum * (0.5f + num2 / 4f))); } for (int i = 0; i < num; i++) { GameObject prefab = BraveUtility.RandomElement <GameObject>(this.FreezeCrystals); Vector2 vector = actor.specRigidbody.HitboxPixelCollider.UnitCenter; Vector2 vector2 = BraveUtility.RandomVector2(-this.crystalVariation, this.crystalVariation); vector += vector2; float num3 = BraveMathCollege.QuantizeFloat(vector2.ToAngle(), 360f / (float)this.crystalRot); Quaternion rotation = Quaternion.Euler(0f, 0f, num3); GameObject gameObject = SpawnManager.SpawnVFX(prefab, vector, rotation, true); gameObject.transform.parent = actor.transform; tk2dSprite component = gameObject.GetComponent <tk2dSprite>(); if (component) { actor.sprite.AttachRenderer(component); component.HeightOffGround = 0.1f; } if (effectData.actor && effectData.actor.specRigidbody && effectData.actor.specRigidbody.HitboxPixelCollider != null) { Vector2 unitCenter = effectData.actor.specRigidbody.HitboxPixelCollider.UnitCenter; float num4 = (float)i * (360f / (float)num); Vector2 normalized = BraveMathCollege.DegreesToVector(num4, 1f).normalized; normalized.x *= effectData.actor.specRigidbody.HitboxPixelCollider.UnitDimensions.x / 2f; normalized.y *= effectData.actor.specRigidbody.HitboxPixelCollider.UnitDimensions.y / 2f; float magnitude = normalized.magnitude; Vector2 vector3 = unitCenter + normalized; vector3 += (unitCenter - vector3).normalized * (magnitude * UnityEngine.Random.Range(0.15f, 0.85f)); gameObject.transform.position = vector3.ToVector3ZUp(0f); gameObject.transform.rotation = Quaternion.Euler(0f, 0f, num4); } effectData.vfxObjects.Add(global::Tuple.Create <GameObject, float>(gameObject, num3)); } } if (this.ShouldVanishOnDeath(actor)) { actor.StealthDeath = true; } if (actor.behaviorSpeculator) { if (actor.behaviorSpeculator.IsInterruptable) { actor.behaviorSpeculator.InterruptAndDisable(); } else { actor.behaviorSpeculator.enabled = false; } } if (actor is AIActor) { AIActor aiactor = actor as AIActor; aiactor.ClearPath(); aiactor.BehaviorOverridesVelocity = false; } actor.IsFrozen = true; } } else if (actor.IsFrozen) { if (actor.FreezeAmount <= 0f) { return; } if (actor.IsFalling) { if (effectData.vfxObjects != null && effectData.vfxObjects.Count > 0) { this.DestroyCrystals(effectData, false); } if (actor.aiAnimator) { actor.aiAnimator.FpsScale = 1f; } } } } if (!actor.healthHaver.IsDead) { float num5 = (!actor.healthHaver.IsBoss) ? 100f : 75f; float num6 = (!actor.IsFrozen) ? Mathf.Clamp01((100f - actor.FreezeAmount) / 100f) : 0f; float num7 = (!actor.IsFrozen) ? Mathf.Clamp01(actor.FreezeAmount / num5) : 1f; if (actor.aiAnimator) { actor.aiAnimator.FpsScale = ((!actor.IsFalling) ? num6 : 1f); } if (actor.aiShooter) { actor.aiShooter.AimTimeScale = num6; } if (actor.behaviorSpeculator) { actor.behaviorSpeculator.CooldownScale = num6; } if (actor.bulletBank) { actor.bulletBank.TimeScale = num6; } if (this.AppliesTint) { float num8 = actor.FreezeAmount / actor.FreezeDispelFactor; Color overrideColor = this.TintColor; if (num8 < 0.1f) { overrideColor = Color.black; } else if (num8 < 0.2f) { overrideColor = Color.white; } overrideColor.a *= num7; actor.RegisterOverrideColor(overrideColor, this.effectIdentifier); } } }
// Token: 0x06004CAC RID: 19628 RVA: 0x001999F8 File Offset: 0x00197BF8 private void DestroyCrystals(RuntimeGameActorEffectData effectData, bool playVfxExplosion = true) { if (effectData.vfxObjects == null || effectData.vfxObjects.Count == 0) { return; } Vector2 vector = Vector2.zero; GameActor actor = effectData.actor; if (actor) { vector = ((!actor.specRigidbody) ? actor.sprite.WorldCenter : actor.specRigidbody.HitboxPixelCollider.UnitCenter); } else { int num = 0; for (int i = 0; i < effectData.vfxObjects.Count; i++) { if (effectData.vfxObjects[i].First) { vector += effectData.vfxObjects[i].First.transform.position.XY(); num++; } } if (num == 0) { return; } vector /= (float)num; } if (playVfxExplosion && this.vfxExplosion) { GameObject gameObject = SpawnManager.SpawnVFX(this.vfxExplosion, vector, Quaternion.identity); tk2dSprite component = gameObject.GetComponent <tk2dSprite>(); if (actor && component) { actor.sprite.AttachRenderer(component); component.HeightOffGround = 0.1f; component.UpdateZDepth(); } } for (int j = 0; j < effectData.vfxObjects.Count; j++) { GameObject first = effectData.vfxObjects[j].First; if (first) { first.transform.parent = SpawnManager.Instance.VFX; DebrisObject orAddComponent = first.GetOrAddComponent <DebrisObject>(); if (actor) { actor.sprite.AttachRenderer(orAddComponent.sprite); } orAddComponent.sprite.IsPerpendicular = true; orAddComponent.DontSetLayer = true; orAddComponent.gameObject.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); orAddComponent.angularVelocity = Mathf.Sign(UnityEngine.Random.value - 0.5f) * 125f; orAddComponent.angularVelocityVariance = 60f; orAddComponent.decayOnBounce = 0.5f; orAddComponent.bounceCount = 1; orAddComponent.canRotate = true; float num2 = effectData.vfxObjects[j].Second + UnityEngine.Random.Range(-this.debrisAngleVariance, this.debrisAngleVariance); if (orAddComponent.name.Contains("tilt", true)) { num2 += 45f; } Vector2 vector2 = BraveMathCollege.DegreesToVector(num2, 1f) * (float)UnityEngine.Random.Range(this.debrisMinForce, this.debrisMaxForce); Vector3 startingForce = new Vector3(vector2.x, (vector2.y >= 0f) ? 0f : vector2.y, (vector2.y <= 0f) ? 0f : vector2.y); float startingHeight = (!actor) ? 0.75f : (first.transform.position.y - actor.specRigidbody.HitboxPixelCollider.UnitBottom); if (orAddComponent.minorBreakable) { orAddComponent.minorBreakable.enabled = true; } orAddComponent.Trigger(startingForce, startingHeight, 1f); } } effectData.vfxObjects.Clear(); }