SHOW:
|
|
- or go back to the newest paste.
| 1 | -- The script was fixed and made working by Rochet2 of AcWeb | |
| 2 | ||
| 3 | local T = {} -- The script saves info about whether the script is running in an instance or not
| |
| 4 | - | Whitemane = |
| 4 | + | |
| 5 | - | |
| 5 | + | |
| 6 | - | function Spawnzzz(pUnit, event) |
| 6 | + | local function Accept90000(event, pPlayer, QuestId, pQuestGiver) |
| 7 | - | Whitemane = pUnit |
| 7 | + | |
| 8 | pPlayer:AddItem(159, 4) | |
| 9 | pPlayer:AddItem(4540, 4) | |
| 10 | end | |
| 11 | - | function OnQuestAccept_Whitemane90000(event, pPlayer, QuestId, pUnit) |
| 11 | + | |
| 12 | ||
| 13 | -- First quest inside | |
| 14 | function Complete90001(event, pPlayer, QuestId, pUnit) | |
| 15 | local ID = pUnit:GetInstanceID() -- Get the instance ID for the table that saves data for the spesific instances. | |
| 16 | if(QuestId == 90001 and not T[ID]) then -- If the quest completed is 90001 and none of the other quests have been done and they are not running, then | |
| 17 | local Whitemane = pPlayer:GetCreatureNearestCoords(199.408005, 121.653, 134.910004, 90010) | |
| 18 | if(Whitemane) then --If the selected npc is Whitemane the script continues. | |
| 19 | - | function OnQuestComplete_Whitemane90001(event, pPlayer, QuestId, pUnit) |
| 19 | + | |
| 20 | Whitemane:SetNPCFlags(4) -- Disable talking and make the NPC not be able to give or complete quests while walking and talking | |
| 21 | Whitemane:SendChatMessage(12, 7, "Follow me.") | |
| 22 | local Player = Whitemane:GetClosestPlayer() | |
| 23 | Player:CastSpellOnTarget(5406, pPlayer) | |
| 24 | Player:CastSpellOnTarget(49, pPlayer) | |
| 25 | Whitemane:RegisterEvent("Move01_Whitemane90001", 1000, 1) --In 1 second "1000ms" the function "Move01_Whitemane" will run.
| |
| 26 | end | |
| 27 | end | |
| 28 | end | |
| 29 | ||
| 30 | function Move01_Whitemane90001(Whitemane, event) | |
| 31 | Whitemane:MoveTo(199.556656, 108.91169, 128.522507, 4.753242) | |
| 32 | Whitemane:RegisterEvent("Move02_Whitemane90001", 4000, 1)
| |
| 33 | end | |
| 34 | ||
| 35 | function Move02_Whitemane90001(Whitemane, event) | |
| 36 | Whitemane:MoveTo(201.447388, 52.051525, 128.766281, 4.742254) | |
| 37 | Whitemane:RegisterEvent("Move03_Whitemane90001", 24000, 1)
| |
| 38 | end | |
| 39 | ||
| 40 | function Move03_Whitemane90001(Whitemane, event) | |
| 41 | Whitemane:MoveTo(209.785873, 51.152771, 128.840088, 6.267476) | |
| 42 | Whitemane:RegisterEvent("Move04_Whitemane90001", 3000, 1)
| |
| 43 | end | |
| 44 | ||
| 45 | function Move04_Whitemane90001(Whitemane, event) | |
| 46 | Whitemane:MoveTo(236.721359, 50.011505, 115.708603, 0.027489) | |
| 47 | Whitemane:RegisterEvent("Move05_Whitemane90001", 12000, 1)
| |
| 48 | end | |
| 49 | ||
| 50 | function Move05_Whitemane90001(Whitemane, event) | |
| 51 | Whitemane:MoveTo(233.375031, 41.485565, 115.707848, 4.374668) | |
| 52 | Whitemane:RegisterEvent("Move06_Whitemane90001", 3000, 1)
| |
| 53 | end | |
| 54 | ||
| 55 | function Move06_Whitemane90001(Whitemane, event) | |
| 56 | Whitemane:MoveTo(201.992569, 12.324375, 115.707878, 1.586526) | |
| 57 | Whitemane:RegisterEvent("Talk01_Whitemane90001", 19000, 1)
| |
| 58 | end | |
| 59 | ||
| 60 | function Talk01_Whitemane90001(Whitemane, event) | |
| 61 | Whitemane:SendChatMessage(12, 7, "Here we are, speak with me to begin your next test.") | |
| 62 | Whitemane:SetNPCFlags(3) -- Set the NPC to be able to give quests and talk again. | |
| 63 | T[Whitemane:GetInstanceID()][2] = false -- You can now launch the next quest | |
| 64 | -- !!NOTE!! You can no longer start or restart quest 1. | |
| 65 | end | |
| 66 | ||
| 67 | ||
| 68 | -- Second quest | |
| 69 | function OnQuestAccept_Whitemane90002(event, pPlayer, QuestId, pUnit) | |
| 70 | local ID = pUnit:GetInstanceID() -- Get the instance ID for the table that saves data for the spesific instances. | |
| 71 | if(QuestId == 90002 and T[ID] and T[ID][1] == 1 and T[ID][2] == false) then -- If the quest accepted is 90002 and quest 90001 has been completed in the instance, then | |
| 72 | T[ID] = {2, true, 0} -- Save that quest 2 was activated and that it is running. NOTE! The quests should be chained and the NPCs spawned to the right positions with the right quests. The 0 is for counting the killed undead, when it hits 5 the event finished down below.
| |
| 73 | pUnit:RegisterEvent("Quest01_Whitemane90002", 5000, 1) -- We use the questgiver (pUnit) to register events since we need him later to do stuff in the script
| |
| 74 | end | |
| 75 | end | |
| 76 | ||
| 77 | function Quest01_Whitemane90002(Whitemane, event) | |
| 78 | local Portal = Whitemane:SpawnCreature(37227, 200.697739, 59.384331, 115.708244, 1.576423, 694, 180000, 0, 0, 0, 1, 0) -- Spawns the portal | |
| 79 | Whitemane:SendChatMessage(42, 0, "The undead are coming, prepare yourself!") -- Questgiver says | |
| 80 | Whitemane:RegisterEvent("Spawn_Timer_Whitemane90002", 4000, 1) -- Spawns an NPC after 4 seconds
| |
| 81 | end | |
| 82 | ||
| 83 | function Spawn_Timer_Whitemane90002(Whitemane, event) | |
| 84 | Whitemane:RegisterEvent("Spawn01_Whitemane90002", 13000, 5) -- Spawn an NPC after 13 seconds 4 times.
| |
| 85 | end | |
| 86 | ||
| 87 | function Spawn01_Whitemane90002(Whitemane, event) -- The function that spawns the NPCs | |
| 88 | Whitemane:SpawnCreature(90012, 200.697739, 59.384331, 115.708244, 4.644086, 14, 120000, 0, 0, 0, 1, 0) -- Sets the spawned creature to the MindlessGhoul variable. (locally, so it will only exist in this function. The variable I mean.) | |
| 89 | Whitemane:RegisterEvent("Move_Ghoul90002", 2000, 1)
| |
| 90 | end | |
| 91 | ||
| 92 | function Move_Ghoul90002(Whitemane, event) -- Sends the spawned Ghoul closer to Whitemane as to make the player engage combat | |
| 93 | local Ghoul = Whitemane:GetCreatureNearestCoords(200.697739, 59.384331, 115.708244, 90012) | |
| 94 | Ghoul:MoveTo(201.975159, 21.787292, 114.983719, 4.718697) | |
| 95 | end | |
| 96 | ||
| 97 | function Spawn_On_Death(pUnit, event, pPlayer) | |
| 98 | local ID = pUnit:GetInstanceID() | |
| 99 | if(T[ID] and T[ID][1] == 2 and T[ID][2] == true and T[ID][3]) then | |
| 100 | T[ID][3] = T[ID][3] + 1 | |
| 101 | if(T[ID][3] >= 5) then | |
| 102 | local Whitemane = pPlayer:GetCreatureNearestCoords(201.992569, 12.324375, 115.707878, 90010) | |
| 103 | local Portal = Whitemane:GetCreatureNearestCoords(200.697739, 59.384331, 115.708244, 37227) | |
| 104 | Portal:Despawn(1000, 0) | |
| 105 | Whitemane:SendChatMessage(12, 7, "On to the next test, follow me.") | |
| 106 | local Player = Whitemane:GetClosestPlayer() | |
| 107 | Player:CastSpellOnTarget(5406, Whitemane:GetClosestPlayer()) | |
| 108 | Player:CastSpellOnTarget(49, Whitemane:GetClosestPlayer()) | |
| 109 | Whitemane:SetNPCFlags(4) -- Disable talking and make the NPC not be able to give or complete quests while walking and talking | |
| 110 | Whitemane:RegisterEvent("Move01_Whitemane90002", 1000, 1)
| |
| 111 | end | |
| 112 | end | |
| 113 | end | |
| 114 | ||
| 115 | function Move01_Whitemane90002(Whitemane, event) | |
| 116 | Whitemane:MoveTo(247.740143, 37.573757, 115.717438, 0.002345) | |
| 117 | Whitemane:RegisterEvent("Move02_Whitemane90002", 21000, 1)
| |
| 118 | end | |
| 119 | ||
| 120 | function Move02_Whitemane90002(Whitemane, event) | |
| 121 | Whitemane:MoveTo(262.464417, 37.656471, 115.727440, 1.606948) | |
| 122 | Whitemane:RegisterEvent("Move03_Whitemane90002", 6000, 1)
| |
| 123 | end | |
| 124 | ||
| 125 | function Move03_Whitemane90002(Whitemane, event) | |
| 126 | Whitemane:MoveTo(262.334930, 60.696800, 109.974747, 1.598312) | |
| 127 | Whitemane:RegisterEvent("Move04_Whitemane90002", 7000, 1)
| |
| 128 | end | |
| 129 | ||
| 130 | function Move04_Whitemane90002(Whitemane, event) | |
| 131 | Whitemane:MoveTo(262.259644, 101.386047, 109.971985, 1.610067) | |
| 132 | Whitemane:RegisterEvent("Move05_Whitemane90002", 20000, 1)
| |
| 133 | end | |
| 134 | ||
| 135 | function Move05_Whitemane90002(Whitemane, event) | |
| 136 | Whitemane:SetNPCFlags(3) | |
| 137 | Whitemane:SendChatMessage(12, 7, "Here we are, don't worry about the Necromancers they won't attack you for now...") | |
| 138 | end | |
| 139 | ||
| 140 | -------------Everything Below here is untested and probably not working as intended----------------- | |
| 141 | ||
| 142 | function OnQuestAccept_Whitemane90003(event, pPlayer, QuestId, pUnit) | |
| 143 | if QuestId == 90003 then | |
| 144 | local Whitemane = pPlayer:GetCreatureNearestCoords(262.259644, 101.386047, 109.971985, 90010) | |
| 145 | Whitemane:SendChatMessage(42, 0, "The Necromancers have been released!") | |
| 146 | Whitemane:SetFaction(11) | |
| 147 | Whitemane:CastSpell(43202) | |
| 148 | pUnit:RegisterEvent("Spawn_Timer_Whitemane90003", 5000, 1) -- We use the questgiver (pUnit) to register events since we need him later to do stuff in the script
| |
| 149 | end | |
| 150 | end | |
| 151 | ||
| 152 | function Spawn_Timer_Whitemane90003(Whitemane, event) | |
| 153 | Whitemane:RegisterEvent(function() Whitemane:FullCastSpell(26573) end, 10000, 2) | |
| 154 | Whitemane:RegisterEvent("Spawn_Whitemane90003", 2000, 20) -- Spawn an NPC after 2 seconds 19 times.
| |
| 155 | end | |
| 156 | ||
| 157 | function Spawn_Whitemane90003(Whitemane, event) | |
| 158 | - | Whitemane:RegisterEvent("Whitemane_Spell90003", 10000, 2)
|
| 158 | + | local choice = math.random(1,6) |
| 159 | if choice ==1 then | |
| 160 | Whitemane:SpawnCreature(90034, 246.671005, 81.976799, 110.250999, 0.931493, 14, 120000, 0, 0, 0, 1, 0):ModThreat(Whitemane, 100) | |
| 161 | elseif choice == 2 then | |
| 162 | - | function Whitemane_Spell90003(Whitemane, event) |
| 162 | + | Whitemane:SpawnCreature(90034, 247.867828, 84.609749, 109.903709, 0.862092, 14, 120000, 0, 0, 0, 1, 0):ModThreat(Whitemane, 100) |
| 163 | - | Whitemane:FullCastSpell(26573) |
| 163 | + | elseif choice == 3 then |
| 164 | Whitemane:SpawnCreature(90034, 247.351852, 101.655975, 110.166222, 6.175311, 14, 120000, 0, 0, 0, 1, 0):ModThreat(Whitemane, 100) | |
| 165 | elseif choice == 4 then | |
| 166 | Whitemane:SpawnCreature(90034, 275.648315, 101.904953, 109.98517, 3.175088, 14, 120000, 0, 0, 0, 1, 0):ModThreat(Whitemane, 100) | |
| 167 | - | local choice = math.random(1,6) |
| 167 | + | elseif choice == 5 then |
| 168 | - | if choice ==1 then |
| 168 | + | Whitemane:SpawnCreature(90034, 246.627472, 118.120979, 110.091766, 5.504576, 14, 120000, 0, 0, 0, 1, 0):ModThreat(Whitemane, 100) |
| 169 | - | Whitemane:SpawnCreature(90034, 246.671005, 81.976799, 110.250999, 0.931493, 14, 120000, 0, 0, 0, 1, 0) |
| 169 | + | elseif choice == 6 then |
| 170 | - | local Minion = Whitemane:GetCreatureNearestCoords(246.671005, 81.976799, 110.250999, 90034) |
| 170 | + | Whitemane:SpawnCreature(90034, 275.929443, 118.208099, 109.920647, 3.988760, 14, 120000, 0, 0, 0, 1, 0):ModThreat(Whitemane, 100) |
| 171 | - | Minion:ModThreat(Whitemane, 100) |
| 171 | + | |
| 172 | - | else if choice == 2 then |
| 172 | + | |
| 173 | - | Whitemane:SpawnCreature(90034, 247.867828, 84.609749, 109.903709, 0.862092, 14, 120000, 0, 0, 0, 1, 0) |
| 173 | + | |
| 174 | - | local Minion = Whitemane:GetCreatureNearestCoords(247.867828, 84.609749, 109.903709, 90034) |
| 174 | + | |
| 175 | - | Minion:ModThreat(Whitemane, 100) |
| 175 | + | |
| 176 | - | else if choice == 3 then |
| 176 | + | |
| 177 | - | Whitemane:SpawnCreature(90034, 247.351852, 101.655975, 110.166222, 6.175311, 14, 120000, 0, 0, 0, 1, 0) |
| 177 | + | |
| 178 | - | local Minion = Whitemane:GetCreatureNearestCoords(247.351852, 101.655975, 110.166222, 90034) |
| 178 | + | |
| 179 | - | Minion:ModThreat(Whitemane, 100) |
| 179 | + | |
| 180 | - | else if choice == 4 then |
| 180 | + | |
| 181 | - | Whitemane:SpawnCreature(90034, 275.648315, 101.904953, 109.98517, 3.175088, 14, 120000, 0, 0, 0, 1, 0) |
| 181 | + | RegisterServerHook(14, Accept90000) |
| 182 | - | local Minion = Whitemane:GetCreatureNearestCoords(275.648315, 101.904953, 109.98517, 90034) |
| 182 | + | RegisterServerHook(22, Complete90001) |
| 183 | - | Minion:ModThreat(Whitemane, 100) |
| 183 | + | |
| 184 | - | else if choice == 5 then |
| 184 | + | |
| 185 | - | Whitemane:SpawnCreature(90034, 246.627472, 118.120979, 110.091766, 5.504576, 14, 120000, 0, 0, 0, 1, 0) |
| 185 | + | |
| 186 | - | local Minion = Whitemane:GetCreatureNearestCoords(246.627472, 118.120979, 110.091766, 90034) |
| 186 | + | RegisterUnitEvent(90010, 18, function() return end) -- This allows the use of :RegisterEvent() for Whitemane |