mirror of
https://github.com/araxiaonline/RandomScriptsforAzerothCore.git
synced 2026-06-13 02:22:19 -04:00
209 lines
8.1 KiB
Lua
209 lines
8.1 KiB
Lua
-- place in game with .npc add 400117
|
|
|
|
local NPCID = 400117
|
|
local ANNOUNCE_MODULE = true
|
|
local BUFF_BY_LEVEL = true
|
|
local BUFF_CURE_RES = true
|
|
local BUFF_NUM_PHRASES = 19
|
|
local BUFF_NUM_WHISPERS = 14
|
|
local BUFF_MESSAGE_TIMER = 60000
|
|
local BUFF_EMOTE_SPELL = 44940
|
|
local ENABLE_BUFF_EMOTE_SPELL = false -- shoots off a firework periodically to grab attention
|
|
|
|
|
|
local phrases = {
|
|
"It's no fluff, you'll be tough, with these buffs!",
|
|
"Get empowered, not devoured, in this crucial hour!",
|
|
"Strength and might, for the fight, buffs that'll make you feel right!",
|
|
"You'll be spry, don't be shy, with these buffs you'll touch the sky!",
|
|
"Grab a buff, no need to bluff, you'll be rough and tough enough!",
|
|
"In this fray, don't delay, buffs to brighten up your day, %s!",
|
|
"Come get buffed, taste my stuff, the elven females can't get enuff!",
|
|
"With these charms, flex your arms, no more worries, no more qualms!",
|
|
"Be the talk, take a walk, show your prowess, let them gawk!",
|
|
"Power up, be the champ, with these buffs you'll break the camp!",
|
|
"Buffs are here, have no fear, you'll be strong from ear to ear!",
|
|
"Take your fill, prove your skill, let these buffs your courage instill!",
|
|
"No more stress, you'll impress, with these buffs you're sure to progress!",
|
|
"Feel the surge, let it merge, with these buffs you'll surely emerge!",
|
|
"You're no pawn, time to dawn, buffs that make you strong like brawn!",
|
|
"Rise above, like a dove, with these buffs that fit like a glove!",
|
|
"Buff your way, seize the day, show the world your strength's at play!",
|
|
"Be the bane, no more pain, with these buffs your power will gain!",
|
|
"With great cheer, have no fear, buffs are here, your path is clear!"
|
|
}
|
|
|
|
|
|
local whispers = {
|
|
"With this boost, cut them loose, show them all your inner moose, %s!",
|
|
"You'll shine bright, like a light, let your power take its flight, %s!",
|
|
"A buff for you, strong and true, in your quest, they'll see you through, %s!",
|
|
"These buffs I share, for those who dare, to face the world without despair, %s!",
|
|
"Go with grace, win the race, let these buffs keep up your pace, %s!",
|
|
"Fare thee well, give 'em hell, let your victories ring like a bell, %s!",
|
|
"Forge ahead, show your stead, with these buffs, you'll be well-fed, %s!",
|
|
"Stride with pride, side by side, let these buffs be your guide, %s!",
|
|
"Off you go, steal the show, these buffs will help your power grow, %s!",
|
|
"Now's your chance, take a stance, with these buffs, you'll enhance, %s!",
|
|
"Buffed and ready, keep it steady, face the world with blade unsteady, %s!",
|
|
"On your way, don't delay, let these buffs keep foes at bay, %s!",
|
|
"Stay brave, ride the wave, with these buffs, you're sure to save, %s!",
|
|
"Set to soar, ready for more, buffs that'll make your power roar, %s!"
|
|
|
|
}
|
|
|
|
local function Replace(str, from, to)
|
|
str = string.gsub(str, from, to)
|
|
return str
|
|
end
|
|
|
|
local function PickWhisper(Name)
|
|
local WhisperNum = math.random(1, #whispers)
|
|
local whisper = whispers[WhisperNum]
|
|
local randMsg = Replace(whisper, "%%s", Name)
|
|
return randMsg
|
|
end
|
|
|
|
local function PickPhrase()
|
|
local PhraseNum = math.random(1, #phrases)
|
|
local phrase = phrases[PhraseNum]
|
|
return phrase
|
|
end
|
|
|
|
local function OnGossipSelect(event, player, creature, sender, intid)
|
|
local PlayerName = player:GetName()
|
|
local PlayerLevel = player:GetLevel()
|
|
|
|
|
|
local vecBuffs = {48162, 43223, 48469, 48470, 48170, 43002}
|
|
|
|
|
|
if BUFF_CURE_RES and player:HasAura(15007) then
|
|
player:RemoveAura(15007)
|
|
creature:SendUnitSay("The aura of death has been lifted from you " .. PlayerName .. ". Watch yourself out there!", 0, player)
|
|
end
|
|
|
|
if PlayerLevel >= 1 and PlayerLevel < 10 then
|
|
player:CastSpell(player, 21562, true)
|
|
player:CastSpell(player, 1126, true)
|
|
player:CastSpell(player, 27683, true)
|
|
elseif PlayerLevel >= 10 and PlayerLevel < 20 then
|
|
player:CastSpell(player, 21562, true)
|
|
player:CastSpell(player, 1126, true)
|
|
player:CastSpell(player, 27683, true)
|
|
elseif PlayerLevel >= 20 and PlayerLevel < 30 then
|
|
player:CastSpell(player, 21562, true)
|
|
player:CastSpell(player, 1126, true)
|
|
player:CastSpell(player, 27683, true)
|
|
player:CastSpell(player, 13326, true)
|
|
elseif PlayerLevel >= 30 and PlayerLevel < 40 then
|
|
player:CastSpell(player, 21562, true)
|
|
player:CastSpell(player, 25898, true)
|
|
player:CastSpell(player, 1126, true)
|
|
player:CastSpell(player, 27681, true)
|
|
player:CastSpell(player, 27683, true)
|
|
player:CastSpell(player, 13326, true)
|
|
elseif PlayerLevel >= 40 and PlayerLevel < 50 then
|
|
player:CastSpell(player, 21562, true)
|
|
player:CastSpell(player, 48469, true)
|
|
player:CastSpell(player, 27681, true)
|
|
player:CastSpell(player, 48170, true)
|
|
player:CastSpell(player, 13326, true)
|
|
elseif PlayerLevel >= 50 and PlayerLevel < 60 then
|
|
player:CastSpell(player, 48162, true)
|
|
player:CastSpell(player, 43223, true)
|
|
player:CastSpell(player, 48469, true)
|
|
player:CastSpell(player, 48074, true)
|
|
player:CastSpell(player, 48170, true)
|
|
player:CastSpell(player, 36880, true)
|
|
elseif PlayerLevel >= 60 and PlayerLevel < 70 then
|
|
player:CastSpell(player, 48162, true)
|
|
player:CastSpell(player, 43223, true)
|
|
player:CastSpell(player, 48469, true)
|
|
player:CastSpell(player, 48074, true)
|
|
player:CastSpell(player, 48170, true)
|
|
player:CastSpell(player, 36880, true)
|
|
elseif PlayerLevel >= 70 and PlayerLevel < 80 then
|
|
player:CastSpell(player, 48162, true)
|
|
player:CastSpell(player, 43223, true)
|
|
player:CastSpell(player, 48469, true)
|
|
player:CastSpell(player, 48074, true)
|
|
player:CastSpell(player, 48170, true)
|
|
player:CastSpell(player, 36880, true)
|
|
else
|
|
for _, buff in ipairs(vecBuffs) do
|
|
player:CastSpell(player, buff, true)
|
|
end
|
|
end
|
|
|
|
|
|
creature:SendUnitSay(PickWhisper(PlayerName), 0)
|
|
creature:PerformEmote(71)
|
|
player:GossipComplete()
|
|
end
|
|
|
|
local function OnGossipHello(event, player, creature)
|
|
player:GossipMenuAddItem(0, "|TInterface\\icons\\spell_misc_emotionhappy:43:43:-33|t|cff007d45Buff me!|r", 1, 1)
|
|
player:GossipSendMenu(1, creature)
|
|
end
|
|
|
|
|
|
|
|
local function OnTimerEmote(eventID, delay, pCall, creature)
|
|
creature:PerformEmote(71)
|
|
if ENABLE_BUFF_EMOTE_SPELL then
|
|
creature:CastSpell(creature, BUFF_EMOTE_SPELL, true)
|
|
end
|
|
creature:SendUnitSay(PickPhrase(), 0)
|
|
creature:RegisterEvent(OnTimerEmote, BUFF_MESSAGE_TIMER, 1, creature)
|
|
end
|
|
|
|
|
|
local function OnSpawn(event, creature)
|
|
creature:RegisterEvent(OnTimerEmote, BUFF_MESSAGE_TIMER, 1, creature)
|
|
if BUFF_EMOTE_SPELL ~= 0 then
|
|
creature:AddAura(BUFF_EMOTE_SPELL, creature)
|
|
end
|
|
end
|
|
|
|
|
|
local function WrappedOnTimerEmote(eventID, delay, pCall)
|
|
local anyCreature = nil
|
|
|
|
for _, player in ipairs(GetPlayersInWorld()) do
|
|
anyCreature = player:GetNearestCreature(30, NPCID)
|
|
if anyCreature then
|
|
break
|
|
end
|
|
end
|
|
|
|
if anyCreature then
|
|
local playersInRange = anyCreature:GetPlayersInRange(100000)
|
|
for _, player in ipairs(playersInRange) do
|
|
local creature = player:GetNearestCreature(100000, NPCID)
|
|
if creature then
|
|
OnTimerEmote(eventID, delay, pCall, creature)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
local eventId = CreateLuaEvent(WrappedOnTimerEmote, BUFF_MESSAGE_TIMER, 1)
|
|
if eventId then
|
|
RegisterCreatureEvent(NPCID, 5, OnSpawn)
|
|
end
|
|
|
|
local function OnLogin(event, player)
|
|
if ANNOUNCE_MODULE then
|
|
player:SendBroadcastMessage("This server is running the |cff4CFF00BufferNPC |rmodule.")
|
|
end
|
|
local creature = player:GetNearestCreature(30, NPCID)
|
|
if creature then
|
|
creature:SetEquipmentSlots(27937, 27937, 0) -- Weapon slots. Change to whatever.
|
|
end
|
|
end
|
|
|
|
RegisterPlayerEvent(3, OnLogin)
|
|
RegisterCreatureGossipEvent(NPCID, 1, OnGossipHello)
|
|
RegisterCreatureGossipEvent(NPCID, 2, OnGossipSelect) |