示例#1
0
        public int DoCollision(EnvCollisionProfile prof, ObjectGuid guid, PhysicsObj target)
        {
            /*Console.WriteLine("EnvCollisionProfile");
             * Console.WriteLine("Source: " + WorldObject.Name);
             * Console.WriteLine("Target: " + target.WeenieObj.WorldObject.Name);
             * Console.WriteLine("Velocity: " + prof.Velocity);*/

            var wo = WorldObject;

            if (wo == null)
            {
                return(0);
            }

            if (wo is Player player)
            {
                player.HandleFallingDamage(prof);
            }
            else
            {
                wo.OnCollideEnvironment();
            }

            return(0);
        }
示例#2
0
        public void HandleFallingDamage(EnvCollisionProfile collision)
        {
            // starting with phat logic

            // jumping skill sort of used as a damping factor here
            var jumpVelocity = 0.0f;

            PhysicsObj.WeenieObj.InqJumpVelocity(1.0f, out jumpVelocity);
            jumpVelocity = 11.25434f;                                    // TODO: figure out how to scale this better

            var overspeed = jumpVelocity + PhysicsObj.Velocity.Z + 4.5f; // a little leeway

            var ratio = -overspeed / jumpVelocity;

            /*Console.WriteLine($"Jump velocity: {jumpVelocity}");
             * Console.WriteLine($"Velocity: {PhysicsObj.Velocity}");
             * Console.WriteLine($"Overspeed: {overspeed}");
             * Console.WriteLine($"Ratio: {ratio}");*/

            if (ratio > 0.0f)
            {
                //var damage = ratio * 40.0f;
                var damage = ratio * 87.293810f;
                //Console.WriteLine($"Damage: {damage}");

                // bludgeon damage
                // impact damage
                if (damage > 0.0f)
                {
                    TakeDamage_Falling(damage);
                }
            }
        }
示例#3
0
        public void HandleFallingDamage(EnvCollisionProfile collision)
        {
            // starting with phat logic
            var jumpVelocity = 0.0f;

            PhysicsObj.WeenieObj.InqJumpVelocity(1.0f, ref jumpVelocity);

            var cachedVelocity = PhysicsObj.CachedVelocity;

            var overspeed = jumpVelocity + cachedVelocity.Z + 4.5f;     // a little leeway

            var ratio = -overspeed / jumpVelocity;

            /*Console.WriteLine($"Collision velocity: {cachedVelocity}");
             * Console.WriteLine($"Jump velocity: {jumpVelocity}");
             * Console.WriteLine($"Overspeed: {overspeed}");
             * Console.WriteLine($"Ratio: {ratio}");*/

            if (ratio > 0.0f)
            {
                var damage = ratio * 40.0f;
                //Console.WriteLine($"Damage: {damage}");

                // bludgeon damage
                // impact damage
                if (damage > 0.0f && (StartJump == null || StartJump.PositionZ - PhysicsObj.Position.Frame.Origin.Z > 10.0f))
                {
                    TakeDamage_Falling(damage);
                }
            }
        }
示例#4
0
        public int DoCollision(EnvCollisionProfile prof, ObjectGuid guid, PhysicsObj obj)
        {
            if (WorldObject != null)
            {
                obj.WeenieObj.WorldObject.HandleActionOnCollide(guid);
            }

            return(0);
        }
示例#5
0
        public int DoCollision(EnvCollisionProfile prof, ObjectGuid guid, PhysicsObj target)
        {
            /*Console.WriteLine("EnvCollisionProfile");
             * Console.WriteLine("Source: " + WorldObject.Name);
             * Console.WriteLine("Target: " + obj.WeenieObj.WorldObject.Name);*/

            //if (WorldObject != null)
            //WorldObject.OnCollideEnvironment();

            return(0);
        }
示例#6
0
文件: Player_Move.cs 项目: haeal/ACE
        public void HandleFallingDamage(EnvCollisionProfile collision)
        {
            // starting with phat logic

            // jumping skill sort of used as a damping factor here
            //var jumpVelocity = 0.0f;
            //PhysicsObj.WeenieObj.InqJumpVelocity(1.0f, out jumpVelocity);
            var jumpVelocity = 11.25434f;   // TODO: figure out how to scale this better

            //var currVelocity = FastTick ? PhysicsObj.Velocity : PhysicsObj.CachedVelocity;
            var currVelocity = PhysicsObj.Velocity;

            var overspeed = jumpVelocity + currVelocity.Z + 4.5f;     // a little leeway

            var ratio = -overspeed / jumpVelocity;

            /*Console.WriteLine($"Jump velocity: {jumpVelocity}");
             * Console.WriteLine($"Velocity: {currVelocity}");
             * Console.WriteLine($"Overspeed: {overspeed}");
             * Console.WriteLine($"Ratio: {ratio}");*/

            if (ratio > 0.0f)
            {
                //var damage = ratio * 40.0f;
                var damage = ratio * 87.293810f;
                //Console.WriteLine($"Damage: {damage}");

                // bludgeon damage
                // impact damage
                //if (damage > 0.0f && (FastTick || StartJump == null || StartJump.PositionZ - PhysicsObj.Position.Frame.Origin.Z > 10.0f))
                if (damage > 0.0f)
                {
                    TakeDamage_Falling(damage);
                }
            }
        }
示例#7
0
 public int DoCollision(EnvCollisionProfile prof)
 {
     return 0;
 }