static void Postfix(MWS_AttackSwingBase __instance) { var hits = __instance.m_weapon.HitsForDamage; List <MeleeWeaponDamageData> sortedHits = new List <MeleeWeaponDamageData>(); Vector3 damageRefPos = __instance.m_data.m_damageRef.position; while (hits.Count > 0) { float lowest = 999999f; MeleeWeaponDamageData closestData = null; foreach (var hit in hits) { float sqrDst = (hit.hitPos - damageRefPos).sqrMagnitude; if (sqrDst <= lowest) { closestData = hit; lowest = sqrDst; } } sortedHits.Add(closestData); hits.Remove(closestData); } __instance.m_weapon.HitsForDamage = sortedHits; }
static void Postfix(MeleeWeaponFirstPerson __instance, MeleeWeaponDamageData data, bool isPush) { if (!__instance.Owner.IsLocallyOwned) { return; } Vector3 velocity = Controllers.mainControllerPose.GetVelocity() * 3f; data.sourcePos = data.hitPos - data.hitNormal * velocity.magnitude; if (isPush) { HammerEvents.HammerSmacked(0f); } else { HammerEvents.HammerSmacked(__instance.m_damageToDeal / __instance.m_damageHeavy); } }