示例#1
0
        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;
        }
示例#2
0
        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);
            }
        }