Files
FoundryVTT/src/macro_haste.js
2025-11-06 14:04:48 +01:00

66 lines
1.9 KiB
JavaScript

// Improved Haste Auto-Enabler for Pathfinder 1e
// Automatically enables the haste attack option when the Haste buff is active
(async () => {
// Ensure a token is selected
if (!actor) {
ui.notifications.warn("Please select a token!");
return;
}
// ============================================
// CONFIGURATION - Adjust these settings
// ============================================
const WEAPON_NAME = "YOUR WEAPON NAME HERE"; // Change to your weapon name
const DEBUG = false; // Set to true for debugging console logs
// Find the weapon on the selected actor
const weapon = actor.items.find(i =>
i.type === "attack" &&
i.name === WEAPON_NAME
);
if (!weapon) {
ui.notifications.warn(`Weapon "${WEAPON_NAME}" not found on ${actor.name}!`);
return;
}
// Check if wrapper already applied to prevent double-wrapping
if (weapon._hasteWrapperApplied) {
ui.notifications.info("Haste auto-enabler already active for this weapon!");
return;
}
// Store original use function
const originalUse = weapon.use;
// Apply wrapper to intercept attack use
weapon.use = async function(...args) {
if (DEBUG) console.log("Attack use() intercepted!");
// Check if Haste buff is active on the actor
const isHasteActive = this.actor.items.find(i =>
i.name === "Haste" &&
i.type === "buff" &&
i.system.active
);
if (isHasteActive) {
// Auto-enable haste option in attack dialog
args[0] = args[0] || {};
args[0].options = args[0].options || {};
args[0].options.haste = true;
if (DEBUG) console.log("Auto-enabled haste option!");
ui.notifications.info("⚡ Haste attack enabled!");
}
// Call original function with modified args
return originalUse.apply(this, args);
};
// Mark as wrapped to prevent duplicate wrappers
weapon._hasteWrapperApplied = true;
ui.notifications.info(`✅ Haste auto-enabler activated for ${WEAPON_NAME}!`);
})();