Code:
function Fighter_OnSpawn(pUnit, Event)
Fighter = pUnit
end
function Fighter_On_Gossip(pUnit, event, player)
pUnit:GossipCreateMenu(117, player, 0)
pUnit:GossipMenuAddItem(9, "I wish to fight against you!", 318, 0)
pUnit:GossipMenuAddItem(0, "I was looking for something else...", 434, 0)
pUnit:GossipSendMenu(player)
end
function Fighter_Gossip_Submenus(pUnit, event, player, id, intid, code)
if(intid == 318) then
pUnit:SetNPCFlags(2)
pUnit:RegisterEvent("Argent_Recruit_Start", 1, 1)
local name = player:GetName()
pUnit:SendChatMessage(12, 0, "Well, "..name..". Try to defeat me!")
player:GossipComplete()
end
if(intid == 434) then
player:GossipComplete()
end
end
function Argent_Recruit_Start(pUnit, Event)
pUnit:RegisterEvent("Fighter_Countdown1", 1000, 1)
pUnit:RegisterEvent("Fighter_Countdown2", 2000, 1)
pUnit:RegisterEvent("Fighter_Countdown3", 3000, 1)
pUnit:RegisterEvent("Fighter_Flags", 4000, 1)
end
function Fighter_Countdown1(pUnit, Event, player)
local player = pUnit:GetClosestPlayer()
player:SendBroadcastMessage("Duel starts in 3...")
end
function Fighter_Countdown2(pUnit, Event, player)
local player = pUnit:GetClosestPlayer()
player:SendBroadcastMessage("Duel starts in 2...")
end
function Fighter_Countdown3(pUnit, Event, player)
local player = pUnit:GetClosestPlayer()
player:SendBroadcastMessage("Duel starts in 1...")
end
function Fighter_Flags(pUnit, Event)
pUnit:SetNPCFlags(2)
pUnit:SetFaction(14)
end
function Fighter_OnCombat(pUnit, Event)
pUnit:RemoveEvents()
pUnit:RegisterEvent("Fighter_Spell1", 1000, 1)
pUnit:RegisterEvent("Fighter_End", 100, 0)
pUnit:RegisterEvent("Fighter_Check", 100, 0)
end
function Fighter_Spell1(pUnit, Event)
pUnit:CastSpell(628)
end
function Fighter_OnLeave(pUnit, Event)
pUnit:RemoveEvents()
pUnit:SetCombatCapable(0)
pUnit:SetFaction(35)
pUnit:SetNPCFlags(1)
pUnit:SetHealthPct(100)
pUnit:RemoveAllAuras()
pUnit:ReturnToSpawnPoint()
end
--[[ If Player has under 20% life ]]--
function Fighter_Check(pUnit, Event)
local player = pUnit:GetClosestPlayer()
if player:GetHealthPct() < 20 then
pUnit:RemoveEvents()
pUnit:SetFaction(35)
pUnit:SetCombatCapable(1)
pUnit:SetNPCFlags(1)
pUnit:RegisterEvent("Fighter_OnWin", 500, 1)
end
end
function Fighter_OnWin(pUnit, Event)
pUnit:CastSpell(8203)
pUnit:RegisterEvent("Fighter_InvisibleRemoveWin", 500, 1)
end
function Fighter_InvisibleRemoveWin(pUnit, Event)
pUnit:RemoveAura(8203)
pUnit:RegisterEvent("Fighter_TalkWin", 500, 1)
end
function Fighter_TalkWin(pUnit, Event, player)
pUnit:SendChatMessage(12, 0, "You lost. Return if you are strong enough.")
pUnit:Emote(1, 2000)
pUnit:RegisterEvent("Fighter_Return", 1500, 1)
end
--[[ If Argent Recruit has under 20% life ]]--
function Fighter_End(pUnit, Event)
local player = pUnit:GetClosestPlayer()
if pUnit:GetHealthPct() < 20 then
pUnit:RemoveEvents()
pUnit:SetFaction(35)
pUnit:SetNPCFlags(2)
pUnit:SetCombatCapable(1)
pUnit:RegisterEvent("Fighter_Invisible", 100, 1)
end
end
function Fighter_Invisible(pUnit, Event)
pUnit:CastSpell(8203)
pUnit:RegisterEvent("Fighter_InvisibleRemove", 500, 1)
end
function Fighter_InvisibleRemove(pUnit, Event)
pUnit:RemoveAura(8203)
pUnit:RegisterEvent("Fighter_Talk", 500, 1)
end
function Fighter_Talk(pUnit, Event, player)
pUnit:SendChatMessage(12, 0, "Gnaah! I give up. You win...")
pUnit:Emote(398, 3000)
pUnit:RegisterEvent("Fighter_Return", 4000, 1)
end
function Fighter_Return(pUnit, Event)
pUnit:SetCombatCapable(0)
pUnit:SetNPCFlags(1)
pUnit:WipeTargetList()
pUnit:RemoveAllAuras()
pUnit:ReturnToSpawnPoint()
pUnit:Despawn(3000, 5000)
end
RegisterUnitEvent(17922, 1, "Fighter_OnCombat")
RegisterUnitEvent(17922, 2, "Fighter_OnLeave")
RegisterUnitEvent(17922, 18, "Fighter_OnSpawn")
RegisterUnitGossipEvent(17922, 1, "Fighter_On_Gossip")
RegisterUnitGossipEvent(17922, 2, "Fighter_Gossip_Submenus")