mirror of
https://github.com/araxiaonline/RandomScriptsforAzerothCore.git
synced 2026-06-13 02:22:19 -04:00
Add files via upload
This commit is contained in:
209
BufferNPC.lua
Normal file
209
BufferNPC.lua
Normal file
@@ -0,0 +1,209 @@
|
||||
-- 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)
|
||||
Reference in New Issue
Block a user