private static void Prefix(Collider other, TriggerWindTunnel __instance) { MonsterBall componentInParent = other.GetComponentInParent <MonsterBall>(); if (componentInParent) { componentInParent.c_rigidbody.AddForce(__instance.transform.forward * (componentInParent.c_rigidbody.mass * 80f)); } }
private static void Postfix(MonsterBall __instance) { Physics.IgnoreLayerCollision(31, 13, false); Physics.IgnoreLayerCollision(31, 22, false); Physics.IgnoreLayerCollision(31, 23, false); Physics.IgnoreLayerCollision(31, 24, false); Physics.IgnoreLayerCollision(31, 31, false); __instance.c_rigidbody.drag = 1f; __instance.c_rigidbody.mass *= 20f; }
private static void Prefix(Collision collision, MonsterBall __instance) { float d = 1f; SFXCueManager.PlayRawSoundEffectPos(SoundEffect.imp_force_field1, collision.contacts[0].point, 0.4f, UnityEngine.Random.Range(-0.3f, 0f), 0f); GameObject gameObject = collision.collider.gameObject; Player player = gameObject.GetComponent <Player>(); if (player != null) { MonsterballAddon.SetPlayer(player); } Projectile proj = gameObject.GetComponent <Projectile>(); if (proj == null || proj.m_type == ProjPrefab.none) { return; } if (proj.m_owner_player) { MonsterballAddon.SetPlayer(proj.m_owner_player); } var mb = __instance; Vector3 forward = proj.c_transform.forward; if (proj.m_type == ProjPrefab.proj_impulse) { mb.c_rigidbody.AddForce(forward.normalized * 50f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.proj_driller) { Vector3 vector = ((mb.transform.position - collision.transform.position).normalized + forward.normalized) / 2f; mb.c_rigidbody.AddForce(vector.normalized * 35f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.proj_shotgun) { Vector3 vector2 = ((mb.transform.position - collision.transform.position).normalized + forward.normalized) / 2f; mb.c_rigidbody.AddForce(vector2.normalized * 8f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.proj_flak_cannon) { mb.c_rigidbody.AddForce(forward.normalized * 20f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.proj_reflex) { Vector3 vector3 = ((mb.transform.position - collision.transform.position).normalized + forward.normalized) / 2f; mb.c_rigidbody.AddForce(vector3.normalized * 40f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.proj_beam) { Vector3 vector4 = ((mb.transform.position - collision.transform.position).normalized + forward.normalized) / 2f; mb.c_rigidbody.AddForce(vector4.normalized * 120f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_smart || proj.m_type == ProjPrefab.missile_smart_mini || proj.m_type == ProjPrefab.missile_timebomb || proj.m_type == ProjPrefab.missile_vortex) { Vector3 vector5 = ((mb.transform.position - collision.transform.position).normalized + forward.normalized) / 2f; mb.c_rigidbody.AddForce(vector5.normalized * 500f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_devastator) { Vector3 vector6 = ((mb.transform.position - collision.transform.position).normalized + forward.normalized) / 2f; mb.c_rigidbody.AddForce(vector6.normalized * 2200f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_devastator_mini) { Vector3 normalized = (mb.transform.position - collision.transform.position).normalized; mb.c_rigidbody.AddForce(normalized * 1000f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_falcon) { mb.c_rigidbody.AddForce(forward.normalized * 200f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_hunter) { mb.c_rigidbody.AddForce(forward.normalized * 100f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_pod) { mb.c_rigidbody.AddForce(forward.normalized * 50f * d, ForceMode.Impulse); } if (proj.m_type == ProjPrefab.missile_creeper) { mb.c_rigidbody.AddForce(forward.normalized * 100f * d, ForceMode.Impulse); } }