diff --git a/Alleria2.lua b/Alleria2.lua index 56bb2c4..7a8f098 100644 --- a/Alleria2.lua +++ b/Alleria2.lua @@ -1,70 +1,84 @@ local Alleria = {}; - -local function CastRapidShot(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 71251, true) +function Alleria.OnEnterCombat(event, creature, target) + creature:RegisterEvent(Alleria.CastFD, 1, 1) + creature:RegisterEvent(Alleria.CastRoot, 10300, 1) + creature:RegisterEvent(Alleria.CastDisengage, 10400, 1) + creature:RegisterEvent(Alleria.CastRapidShot, 7100, 0) + creature:RegisterEvent(Alleria.CastMultiShot, 6100, 0) + creature:RegisterEvent(Alleria.CastExplosiveShot, 6600, 0) + creature:RegisterEvent(Alleria.CastBlackArrow, 15300, 0) + creature:RegisterEvent(Alleria.CastShoot, 499, 0) + creature:RegisterEvent(Alleria.ForceDespawn, 90000, 1) end -local function CastShoot(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 39079, true) +function Alleria.OnLeaveCombat(event, creature) + creature:RemoveEvents() end -local function CastMultiShot(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 59713, false) +function Alleria.OnDied(event, creature, killer) + creature:RemoveEvents() end -local function CastExplosiveShot(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 60053, false) +function Alleria.CastRapidShot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or creature:IsCastingSpell(71251) then + creature:CastSpell(victim, 71251, true) + end end -local function CastBlackArrow(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 63672, false) +function Alleria.CastShoot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCastingSpell(71251) then + creature:CastSpell(victim, 39079, true) + end end -local function CastDisengage(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 57635, false) +function Alleria.CastMultiShot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCastingSpell(71251) then + creature:CastSpell(victim, 59713, false) + end end -local function CastFD(eventId, delay, calls, creature) +function Alleria.CastExplosiveShot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCastingSpell(71251) then + creature:CastSpell(victim, 60053, false) + end +end + +function Alleria.CastBlackArrow(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCastingSpell(71251) then + creature:CastSpell(victim, 63672, false) + end +end + +function Alleria.CastDisengage(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCastingSpell(71251) then + creature:CastSpell(victim, 57635, false) + end +end + +function Alleria.CastFD(event, delay, calls, creature) + if not creature:IsCasting() or not creature:IsCastingSpell(71251) then creature:CastSpell(creature, 23604, false) end - -local function CastRoot(eventId, delay, calls, creature) -local victim = creature:GetVictim() -creature:CastSpell(victim, 50762, false) end -local function ForceDespawn(eventId, delay, calls, creature) +function Alleria.CastRoot(event, delay, calls, creature) +local victim = creature:GetVictim() +if not creature:IsCasting() or not creature:IsCastingSpell(71251) then +creature:CastSpell(victim, 50762, false) +end +end + +function Alleria.ForceDespawn(event, delay, calls, creature) creature:DespawnOrUnsummon(1) end -local function OnEnterCombat(event, creature, target) - -creature:RegisterEvent(CastFD, 1, 1) -creature:RegisterEvent(CastRoot, 10300, 1) -creature:RegisterEvent(CastDisengage, 10400, 1) -creature:RegisterEvent(CastRapidShot, 7100, 0) -creature:RegisterEvent(CastMultiShot, 6100, 0) -creature:RegisterEvent(CastExplosiveShot, 6600, 0) -creature:RegisterEvent(CastBlackArrow, 15300, 0) -creature:RegisterEvent(CastShoot, 499, 0) -creature:RegisterEvent(ForceDespawn, 90000, 1) -end - -local function OnLeaveCombat(event, creature) -creature:RemoveEvents() -end - -local function OnDied(event, creature, killer) -creature:RemoveEvents() -end - -RegisterCreatureEvent(400021, 1, OnEnterCombat) -RegisterCreatureEvent(400021, 2, OnLeaveCombat) -RegisterCreatureEvent(400021, 4, OnDied) +RegisterCreatureEvent(400021, 1, Alleria.OnEnterCombat) +RegisterCreatureEvent(400021, 2, Alleria.OnLeaveCombat) +RegisterCreatureEvent(400021, 4, Alleria.OnDied) \ No newline at end of file diff --git a/BoneWitch.lua b/BoneWitch.lua new file mode 100644 index 0000000..3ab8113 --- /dev/null +++ b/BoneWitch.lua @@ -0,0 +1,19 @@ +local BoneWitch = {}; + + +local function CastBoneShards(eventId, delay, calls, creature) + creature:CastSpell(creature, 17014, true) +end + +local function OnSpawn(event, creature, target) + creature:RegisterEvent(CastBoneShards, 100, 1) + creature:RegisterEvent(CastBoneShards, 14000, 0) + end + +local function OnDied(event, creature, killer) + creature:DespawnOrUnsummon(25000) + creature:RemoveEvents() +end + +RegisterCreatureEvent(16380, 5, OnSpawn) +RegisterCreatureEvent(16380, 4, OnDied) \ No newline at end of file diff --git a/DarkRanger.lua b/DarkRanger.lua new file mode 100644 index 0000000..d6f7af9 --- /dev/null +++ b/DarkRanger.lua @@ -0,0 +1,42 @@ +local DarkRanger = {} + +local function CastShoot(eventId, delay, calls, creature) +creature:CastSpell(target, 37770, true) -- cast shoot on target +end + + +local function CastBlackArrow(eventId, delay, calls, creature) + creature:CastSpell(creature:GetVictim(), 63671, true) +end + +local function CastExplodingShot(eventId, delay, calls, creature) + creature:CastSpell(creature:GetVictim(), 33792, true) +end + +local function CastBarrage(eventId, delay, calls, creature) + creature:CastSpell(creature:GetVictim(), 10188, true) +end + +local function OnEnterCombat(event, creature, target) + creature:RegisterEvent(CastShoot, 750, 0) + creature:RegisterEvent(CastBlackArrow, 16000, 0) + creature:RegisterEvent(CastBarrage, 10000, 0) + creature:RegisterEvent(CastExplodingShot, 7000, 0) +end + +local function OnLeaveCombat(event, creature) + creature:RemoveEvents() +end + +local function OnDied(event, creature, killer) + creature:RemoveEvents() +end + +RegisterCreatureEvent(400072, 1, OnEnterCombat) +RegisterCreatureEvent(400072, 2, OnLeaveCombat) +RegisterCreatureEvent(400072, 4, OnDied) + +RegisterCreatureEvent(400073, 1, OnEnterCombat) +RegisterCreatureEvent(400073, 2, OnLeaveCombat) +RegisterCreatureEvent(400073, 4, OnDied) + diff --git a/DingMask.lua b/DingMask.lua index e7f37e2..5f0403c 100644 --- a/DingMask.lua +++ b/DingMask.lua @@ -1,3 +1,4 @@ +--lightning local npcIds1 = { 8541, 10417, @@ -15,18 +16,18 @@ local npcIds1 = { 400015, 400016, 300018, -400029, -400032, 16383, 16394, 16423, 16422, 400036, -400056, -400049 +400049, +400048, +16437, +16438 } --- Table to store NPC IDs for group 2 +-- Rez Visual local npcIds2 = { 400013, 400014, @@ -37,7 +38,25 @@ local npcIds2 = { 400019, 400026, 400027, -400033 +400033, +400070, +400065, +400042, +400043 +} + +-- Shadowstep +local npcIds3 = { +400053, +400069, +400055, +400052, +400047, +400056, +400032, +400029, +400073, +400072 } -- Function to be executed when an NPC from group 1 is spawned @@ -62,22 +81,28 @@ local spellId = 100133 creature:CastSpell(creature, spellId, true) -- rez visual end --- Function to be executed when an NPC from both groups leaves combat -local function CastSpellOnLeaveCombat(event, creature) +-- Function to be executed when an NPC from group 3 is spawned +local function CastSpellOnSpawnGroup3(event, creature) if not creature then print("Error: creature was not set!") return end + +local spellId = 51908 +creature:CastSpell(creature, spellId, true) -- shadowstep cosmetic end -- Register the event for NPCs in group 1 for _, npcId in ipairs(npcIds1) do RegisterCreatureEvent(npcId, 5, CastSpellOnSpawnGroup1) -RegisterCreatureEvent(npcId, 21, CastSpellOnLeaveCombat) end -- Register the event for NPCs in group 2 for _, npcId in ipairs(npcIds2) do RegisterCreatureEvent(npcId, 5, CastSpellOnSpawnGroup2) -RegisterCreatureEvent(npcId, 21, CastSpellOnLeaveCombat) +end + +-- Register the event for NPCs in group 3 +for _, npcId in ipairs(npcIds3) do +RegisterCreatureEvent(npcId, 5, CastSpellOnSpawnGroup3) end \ No newline at end of file diff --git a/Dinklestone2.lua b/Dinklestone2.lua index 58dd7ec..f8bf7e3 100644 --- a/Dinklestone2.lua +++ b/Dinklestone2.lua @@ -11,13 +11,15 @@ local function OnGossipSelect(event, player, item, sender, intid, code) if (sender == 150) then -- Show Scourge Event menu player:GossipMenuAddItem(0, "|TInterface\\icons\\spell_misc_emotionhappy:37:37:-23|t|cff007d45Start Event for Bonus Lich Runes|r", 100, 0) -player:GossipMenuAddItem(0, "|TInterface\\icons\\spell_misc_emotionsad:37:37:-23|t|cffC41F3BStop Event but Die and Suffer|r", 101, 0) +player:GossipMenuAddItem(0, "|TInterface\\icons\\spell_misc_emotionsad:37:37:-23|t|cffC41F3BStop Event but Suffer|r", 101, 0) player:GossipMenuAddItem(0, "Back", 0, 0) player:GossipSendMenu(1, item) return elseif (sender == 100) then -- Start the event -if not IsGameEventActive(17) then +if IsGameEventActive(17) then +player:SendBroadcastMessage("The Scourge event is already active.") +else player:AddItem(43949, 2) StartGameEvent(17, true) player:PlayDirectSound(14797) @@ -25,7 +27,9 @@ end player:GossipComplete() elseif (sender == 101) then -- Stop the event -if IsGameEventActive(17) then +if not IsGameEventActive(17) then +player:SendBroadcastMessage("The Scourge event is not currently active.") +else StopGameEvent(17, true) player:CastSpell(player, 15007, true) player:RemoveItem(43949, 2) diff --git a/Draven.lua b/Draven.lua new file mode 100644 index 0000000..4c582c0 --- /dev/null +++ b/Draven.lua @@ -0,0 +1,37 @@ +local Draven = {}; + +function Draven.OnEnterCombat(event, creature, target) + creature:RegisterEvent(Draven.CastFanOfKnives, 10000, 0) + creature:RegisterEvent(Draven.CastSaroniteBomb, 7000, 0) + creature:RegisterEvent(Draven.CastCloakOfShadows, 11500, 0) + creature:RegisterEvent(Draven.CastBladeFlurry, 13000, 0) +end + +function Draven.OnLeaveCombat(event, creature) + creature:RemoveEvents() +end + +function Draven.OnDied(event, creature, killer) + creature:RemoveEvents() +end + +function Draven.CastFanOfKnives(event, delay, calls, creature) + creature:CastSpell(creature:GetVictim(), 51723, true) +end + +function Draven.CastSaroniteBomb(event, delay, calls, creature) + creature:CastSpell(creature:GetVictim(), 56350, true) +end + +function Draven.CastCloakOfShadows(event, delay, calls, creature) + creature:CastSpell(creature, 31224, true) +end + +function Draven.CastBladeFlurry(event, delay, calls, creature) + creature:CastSpell(creature, 13877, true) +end + +RegisterCreatureEvent(400069, 1, Draven.OnEnterCombat) +RegisterCreatureEvent(400069, 2, Draven.OnLeaveCombat) +RegisterCreatureEvent(400069, 4, Draven.OnDied) + diff --git a/FlameShocker.lua b/FlameShocker.lua new file mode 100644 index 0000000..7df144a --- /dev/null +++ b/FlameShocker.lua @@ -0,0 +1,25 @@ +local FlameShocker = {}; + + +local function CastFlameShock(eventId, delay, calls, creature) + creature:CastSpell(creature:GetVictim(), 10448, true) +end + +local function OnEnterCombat(event, creature, target) + creature:RegisterEvent(CastFlameShock, 100, 1) + creature:RegisterEvent(CastFlameShock, 8000, 0) + end + + local function OnLeaveCombat(event, creature) + creature:RemoveEvents() +end + +local function OnDied(event, creature, killer) + creature:CastSpell(killer, 28323, true) + creature:DespawnOrUnsummon(25000) + creature:RemoveEvents() +end + +RegisterCreatureEvent(16383, 1, OnEnterCombat) +RegisterCreatureEvent(16383, 2, OnLeaveCombat) +RegisterCreatureEvent(16383, 4, OnDied) \ No newline at end of file diff --git a/FrostbroodWhelp.lua b/FrostbroodWhelp.lua index 790bcb6..5268df3 100644 --- a/FrostbroodWhelp.lua +++ b/FrostbroodWhelp.lua @@ -6,3 +6,5 @@ creature:SetDisableGravity(true) end RegisterCreatureEvent(400057, 5, frostbroodWhelps.OnSpawn) + +RegisterCreatureEvent(16531, 5, frostbroodWhelps.OnSpawn) \ No newline at end of file diff --git a/NPCBrave.lua b/NPCBrave.lua index ee4383e..67337a2 100644 --- a/NPCBrave.lua +++ b/NPCBrave.lua @@ -1,4 +1,4 @@ -local BRAVE_IDS = {5412, 5511, 5512, 957, 7798, 11026, 5518, 5510, 5509, 1416, 5514, 29016, 29019, 3518, 1472, 31423, 3314, 3312, 3323, 5188, 3370, 3368, 3371, 3316, 3405, 11046, 3347, 3348, 6986} +local BRAVE_IDS = {5412, 5614, 5511, 5512, 957, 7798, 11026, 5518, 5510, 5509, 1416, 5514, 29016, 29019, 3518, 1472, 31423, 3314, 3312, 3323, 5188, 3370, 3368, 3371, 3316, 3405, 11046, 3347, 3348, 6986, 31433} local BRAVERY_DIALOGUE = { "I fear no enemy!", "I will fight to the bitter end!", diff --git a/SmolderingEmberRestrict.lua b/SmolderingEmberRestrict.lua index 13722ea..3c9e717 100644 --- a/SmolderingEmberRestrict.lua +++ b/SmolderingEmberRestrict.lua @@ -3,7 +3,7 @@ local ALLOWED_MAPS = { 1, } -local ALLOWED_SPELLS = {100150, 100160, 100161, 100177} +local ALLOWED_SPELLS = {100150, 100160, 100161, 100177, 100186} function table.indexOf(t, value) for k, v in ipairs(t) do @@ -19,15 +19,28 @@ local spellId = spell:GetEntry() local mapId = player:GetMapId() if table.indexOf(ALLOWED_SPELLS, spellId) ~= -1 then - if table.indexOf(ALLOWED_MAPS, mapId) == -1 then - spell:Cancel() - player:SendBroadcastMessage("You cannot use that here.") - else - if spellId == 100150 then - player:PlayDirectSound(20428) - end - end +if table.indexOf(ALLOWED_MAPS, mapId) == -1 then +spell:Cancel() +player:SendBroadcastMessage("You can't use that here.") +else +if spellId == 100150 then +player:PlayDirectSound(20428) +end +end end end +function OnPlayerZoneChange(event, player, newZone, newArea) +local mapId = player:GetMapId() +if table.indexOf(ALLOWED_MAPS, mapId) == -1 then +for i, allowedSpell in ipairs(ALLOWED_SPELLS) do +local aura = player:GetAura(allowedSpell) +if aura then +player:RemoveAura(allowedSpell) +end +end +end +end + +RegisterPlayerEvent(27, OnPlayerZoneChange) RegisterPlayerEvent(5, OnPlayerCastSpell) \ No newline at end of file diff --git a/StealthPot.lua b/StealthPot.lua index 05877e3..de9ff01 100644 --- a/StealthPot.lua +++ b/StealthPot.lua @@ -5,7 +5,7 @@ Draven.ITEM_ID = 60114 -- replace with the ID of the item you want to give -- Register the gossip event for the NPC function Draven.OnGossipHello(event, player, creature) -player:GossipMenuAddItem(0, "|TInterface\\Icons\\ability_stealth:50:50:-23:0|tPurchase 3 Stealth Potions.|r", 0, 1) +player:GossipMenuAddItem(0, "|TInterface\\Icons\\ability_stealth:50:50:-23:0|tPurchase 3 Stealth Potions for 75 Silver.|r", 0, 1) player:GossipSendMenu(1, creature) end @@ -27,10 +27,10 @@ end -- Send a unit yell when the NPC spawns function Draven.OnSpawn(event, creature) creature:SendUnitYell("", 0) -creature:CastSpell(creature, 20374) +creature:CastSpell(creature, 17683, true) end -- Register the gossip events with the NPC -RegisterCreatureGossipEvent(nil, 1, Draven.OnGossipHello) -RegisterCreatureGossipEvent(nil, 2, Draven.OnGossipSelect) -RegisterCreatureEvent(nil, 5, Draven.OnSpawn) \ No newline at end of file +RegisterCreatureGossipEvent(400069, 1, Draven.OnGossipHello) +RegisterCreatureGossipEvent(400069, 2, Draven.OnGossipSelect) +RegisterCreatureEvent(400069, 5, Draven.OnSpawn) \ No newline at end of file diff --git a/Sylvanas.lua b/Sylvanas.lua new file mode 100644 index 0000000..2452000 --- /dev/null +++ b/Sylvanas.lua @@ -0,0 +1,76 @@ +local Sylvanas = {}; + +function Sylvanas.OnEnterCombat(event, creature, target) + creature:RegisterEvent(Sylvanas.CastRapidShot, 7100, 0) + creature:RegisterEvent(Sylvanas.CastMultiShot, 6100, 0) + creature:RegisterEvent(Sylvanas.CastExplosiveShot, 6600, 0) + creature:RegisterEvent(Sylvanas.CastBlackArrow, 15300, 0) + creature:RegisterEvent(Sylvanas.CastShoot, 499, 0) +end + +function Sylvanas.OnLeaveCombat(event, creature) + creature:RemoveEvents() +end + +function Sylvanas.OnDied(event, creature, killer) + creature:RemoveEvents() +end + +function Sylvanas.CastRapidShot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or creature:IsCasting(71251) then + creature:CastSpell(victim, 71251, true) + end +end + +function Sylvanas.CastShoot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCasting(71251) then + creature:CastSpell(victim, 39079, true) + end +end + +function Sylvanas.CastMultiShot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCasting(71251) then + creature:CastSpell(victim, 59713, true) + end +end + +function Sylvanas.CastExplosiveShot(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCasting(71251) then + creature:CastSpell(victim, 60053, true) + end +end + +function Sylvanas.CastBlackArrow(event, delay, calls, creature) + local victim = creature:GetVictim() + if not creature:IsCasting() or not creature:IsCasting(71251) then + creature:CastSpell(victim, 63672, true) + end +end + +function Sylvanas.OnSpawn(event, creature) +creature:SendUnitSay("Hello Thrall. You didn't think I'd let you have all the fun, did you?", 0) +creature:CastSpell(creature, 51908, true) +end + +function Sylvanas.OnHealthCheck(event, creature, attacker, damage) +if (creature:GetHealth() - damage) <= 15 then +creature:RegisterEvent(Sylvanas.Shadowstep, 4800, 1) +end +end + +function Sylvanas.Shadowstep(event, delay, calls, creature) +creature:CastSpell(creature, 51908, true) +creature:CastSpell(creature, 58984, true) +creature:SendUnitYell("Thrall...I must be going. Hopefully I thinned enough of the scourge forces for you...now you can handle the rest.", 0) +creature:DespawnOrUnsummon(5000) +end + +RegisterCreatureEvent(400071, 9, Sylvanas.OnHealthCheck) +RegisterCreatureEvent(400071, 5, Sylvanas.OnSpawn) +RegisterCreatureEvent(400071, 1, Sylvanas.OnEnterCombat) +RegisterCreatureEvent(400071, 2, Sylvanas.OnLeaveCombat) +RegisterCreatureEvent(400071, 4, Sylvanas.OnDied)