forked from GitHub-Mirrors/foundry-sw5e

DND5e Core 1.3.5 modded to SW5e System Combining with DND5e Core 1.3.2 to see one big commit since last core update DND5e Core 1.3.2 modded to SW5e System
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
/** @override */
|
|
export const measureDistances = function(segments, options={}) {
|
|
if ( !options.gridSpaces ) return BaseGrid.prototype.measureDistances.call(this, segments, options);
|
|
|
|
// Track the total number of diagonals
|
|
let nDiagonal = 0;
|
|
const rule = this.parent.diagonalRule;
|
|
const d = canvas.dimensions;
|
|
|
|
// Iterate over measured segments
|
|
return segments.map(s => {
|
|
let r = s.ray;
|
|
|
|
// Determine the total distance traveled
|
|
let nx = Math.abs(Math.ceil(r.dx / d.size));
|
|
let ny = Math.abs(Math.ceil(r.dy / d.size));
|
|
|
|
// Determine the number of straight and diagonal moves
|
|
let nd = Math.min(nx, ny);
|
|
let ns = Math.abs(ny - nx);
|
|
nDiagonal += nd;
|
|
|
|
// Alternative DMG Movement
|
|
if (rule === "5105") {
|
|
let nd10 = Math.floor(nDiagonal / 2) - Math.floor((nDiagonal - nd) / 2);
|
|
let spaces = (nd10 * 2) + (nd - nd10) + ns;
|
|
return spaces * canvas.dimensions.distance;
|
|
}
|
|
|
|
// Euclidean Measurement
|
|
else if (rule === "EUCL") {
|
|
return Math.round(Math.hypot(nx, ny) * canvas.scene.data.gridDistance);
|
|
}
|
|
|
|
// Standard PHB Movement
|
|
else return (ns + nd) * canvas.scene.data.gridDistance;
|
|
});
|
|
};
|