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); }
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); } } }
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); } } }
public int DoCollision(EnvCollisionProfile prof, ObjectGuid guid, PhysicsObj obj) { if (WorldObject != null) { obj.WeenieObj.WorldObject.HandleActionOnCollide(guid); } return(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); }
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); } } }
public int DoCollision(EnvCollisionProfile prof) { return 0; }