public void EXPostProcessProjectile(Projectile projectile) { if (EnemyGUIDs == null | EnemyGUIDs.Count <= 0) { return; } AIActor sourceActor = EnemyDatabase.GetOrLoadByGuid(BraveUtility.RandomElement(EnemyGUIDs)); if (!sourceActor) { return; } float damageMod = m_baseDamageMod; if (projectile.sprite && projectile.sprite.renderer) { projectile.sprite.renderer.enabled = false; } if (sourceActor.EnemyGuid == "128db2f0781141bcb505d8f00f9e4d47" | sourceActor.EnemyGuid == "b54d89f9e802455cbb2b8a96a31e8259") { damageMod += 0.35f; } if (m_FiresJammedEnemies) { damageMod += 0.25f; } projectile.baseData.damage *= damageMod; if (sourceActor.EnemyGuid == "76bc43539fc24648bff4568c75c686d1") { projectile.baseData.damage /= 2f; projectile.AppliesStun = true; projectile.AppliedStunDuration = 3f; projectile.StunApplyChance = 0.4f; } if (!sourceActor.gameObject.GetComponent <ExplodeOnDeath>() && sourceActor.EnemyGuid != "76bc43539fc24648bff4568c75c686d1") { projectile.baseData.force += 5; } projectile.pierceMinorBreakables = true; Vector3 targetPosition = projectile.transform.position; AIActor targetAIActor = Instantiate(sourceActor, targetPosition, projectile.transform.rotation); if (projectile.Owner && projectile.Owner is PlayerController) { float ScaleMod = (projectile.Owner as PlayerController).BulletScaleModifier; targetAIActor.gameObject.layer = LayerMask.NameToLayer("Unpixelated"); targetAIActor.EnemyScale = new Vector2(ScaleMod, ScaleMod); SpriteOutlineManager.ChangeOutlineLayer(targetAIActor.sprite, LayerMask.NameToLayer("Unpixelated")); if (targetAIActor.EnemyScale != Vector2.one) { targetAIActor.HasShadow = false; Destroy(targetAIActor.ShadowObject); } ; } targetAIActor.specRigidbody.enabled = false; targetAIActor.IgnoreForRoomClear = true; targetAIActor.IsHarmlessEnemy = true; targetAIActor.CanTargetEnemies = true; targetAIActor.CanTargetPlayers = false; targetAIActor.procedurallyOutlined = false; if (!m_FiresJammedEnemies && targetAIActor.EnemyGuid != "76bc43539fc24648bff4568c75c686d1") { if (targetAIActor.EnemyGuid == "01972dee89fc4404a5c408d50007dad5") { targetAIActor.RegisterOverrideColor(new Color32(255, 240, 190, 220), "Pale BulletKin"); } else if (targetAIActor.EnemyGuid == "4d37ce3d666b4ddda8039929225b7ede") { targetAIActor.RegisterOverrideColor(new Color32(170, 170, 170, 190), "Pale Generic Enemy"); } else { targetAIActor.RegisterOverrideColor(new Color32(160, 160, 160, 170), "Pale Generic Enemy"); } } if (targetAIActor.specRigidbody.GetPixelCollider(ColliderType.Ground) != null) { PixelCollider EnemyCollider = targetAIActor.specRigidbody.GetPixelCollider(ColliderType.HitBox); PixelCollider NewProjCollider = ExpandUtility.DuplicatePixelCollider(EnemyCollider); NewProjCollider.CollisionLayer = CollisionLayer.Projectile; projectile.specRigidbody.PixelColliders = new List <PixelCollider>() { NewProjCollider }; projectile.specRigidbody.Reinitialize(); } targetAIActor.gameObject.transform.parent = projectile.transform; if (sourceActor.EnemyGuid == "01972dee89fc4404a5c408d50007dad5" | sourceActor.EnemyGuid == "4d37ce3d666b4ddda8039929225b7ede") { // targetPosition -= new Vector3(0.5f, 0.5f); targetAIActor.gameObject.transform.localPosition -= new Vector3(0.5f, 0.5f); } else if (sourceActor.EnemyGuid == "128db2f0781141bcb505d8f00f9e4d47" | sourceActor.EnemyGuid == "b54d89f9e802455cbb2b8a96a31e8259") { // targetPosition -= new Vector3(0.5f, 1); targetAIActor.gameObject.transform.localPosition -= new Vector3(0.5f, 1); } targetAIActor.sprite.UpdateZDepth(); if (m_FiresJammedEnemies) { targetAIActor.BecomeBlackPhantom(); } projectile.OnDestruction += OnDestruction; }