Created: 23 days ago on 05/27/2025, 02:12:08 AM
Description: Provo with tambourines
function GetTwoNearestHostiles()
local filter = {
rangemax = 10,
notorieties = {3, 4, 5, 6}, -- Gray, Criminal, Enemy, Murderer
dead = false
}
local enemies = Mobiles.FindByFilter(filter)
table.sort(enemies, function(a, b)
return a.Distance < b.Distance
end)
return enemies[1], enemies[2]
end
function UseTambourineIfPrompt()
Pause(500) -- Allow journal to update
if Journal.Contains("What instrument shall you play?") then
local tambourine = Items.FindByFilter({
graphics = {0x0E9D},
onground = false
})
if #tambourine > 0 then
Player.UseObject(tambourine[1].Serial)
Messages.Print("Using tambourine (0x0E9D)...")
else
Messages.Print("Tambourine not found in backpack.")
end
Journal.Clear()
end
end
function ProvokeTwoTargets()
local mob1, mob2 = GetTwoNearestHostiles()
if mob1 == nil or mob2 == nil then
Messages.Print("Not enough valid targets nearby!", 33)
return
end
Messages.Print("Provoking " .. mob1.Name .. " and " .. mob2.Name .. "...")
Journal.Clear()
if not Spells.Cast("SongOfProvocation") then
Messages.Print("Failed to cast Song of Provocation.", 33)
return
end
if not Targeting.WaitForTarget(2000) then
Messages.Print("No target cursor for first target!", 33)
return
end
Targeting.Target(mob1.Serial)
Pause(1500)
if not Targeting.WaitForTarget(2000) then
Messages.Print("No target cursor for second target!", 33)
return
end
Targeting.Target(mob2.Serial)
Messages.Print("Provocation attempt sent!", 68)
end
-- 🔁 Infinite Loop with fixed 6.7 second delay
while true do
ProvokeTwoTargets()
-- Check for tambourine prompt only after provocation attempt
UseTambourineIfPrompt()
Pause(6700)
end